modified_flags => 1,
},
+# "allocates" a free register
ProduceVal => {
op_flags => "c",
irn_flags => "R",
Cmp => {
irn_flags => "R",
state => "exc_pinned",
- reg_req => { in => [ "gp", "gp", "none", "gp", "gp" ] , out => [ "flags" ] },
+ reg_req => { in => [ "gp", "gp", "none", "gp", "gp" ],
+ out => [ "flags", "none", "none" ] },
ins => [ "base", "index", "mem", "left", "right" ],
- outs => [ "eflags" ],
+ outs => [ "eflags", "unused", "M" ],
am => "source,binary",
emit => '. cmp%M %binop',
attr => "int ins_permuted, int cmp_unsigned",
state => "exc_pinned",
reg_req => { in => [ "gp", "gp" ], out => [ "flags" ] },
ins => [ "left", "right" ],
- emit => '. bt%M %S0, %S1',
+ emit => '. bt%M %S1, %S0',
units => [ "GP" ],
latency => 1,
mode => $mode_flags,
attr_type => "ia32_x87_attr_t",
},
+# SSE3 fisttp instruction
+vfisttp => {
+ state => "exc_pinned",
+ reg_req => { in => [ "gp", "gp", "none", "vfp" ], out => [ "in_r4", "none" ]},
+ ins => [ "base", "index", "mem", "val" ],
+ outs => [ "res", "M" ],
+ latency => 4,
+ units => [ "VFP" ],
+ attr_type => "ia32_x87_attr_t",
+},
+
l_vfist => {
cmp_attr => "return 1;",
state => "exc_pinned",
latency => 2,
},
+# SSE3 firsttp instruction
+fisttp => {
+ state => "exc_pinned",
+ rd_constructor => "NONE",
+ reg_req => { },
+ emit => '. fisttp%M %AM',
+ mode => "mode_M",
+ attr_type => "ia32_x87_attr_t",
+ latency => 2,
+},
+
# constants
fldz => {