},
IDiv => {
- op_flags => [ "fragile", "labeled" ],
+ op_flags => [ "fragile", "uses_memory", "labeled" ],
state => "exc_pinned",
reg_req => { in => [ "gp", "gp", "none", "gp", "eax", "edx" ],
out => [ "eax", "flags", "none", "edx", "none", "none" ] },
},
Div => {
- op_flags => [ "fragile", "labeled" ],
+ op_flags => [ "fragile", "uses_memory", "labeled" ],
state => "exc_pinned",
reg_req => { in => [ "gp", "gp", "none", "gp", "eax", "edx" ],
out => [ "eax", "flags", "none", "edx", "none", "none" ] },
# lateny of 0 for load is correct
Load => {
- op_flags => [ "fragile", "labeled" ],
+ op_flags => [ "uses_memory", "fragile", "labeled" ],
state => "exc_pinned",
reg_req => { in => [ "gp", "gp", "none" ],
out => [ "gp", "none", "none", "none", "none" ] },
},
Store => {
- op_flags => [ "fragile", "labeled" ],
+ op_flags => [ "uses_memory", "fragile", "labeled" ],
state => "exc_pinned",
reg_req => { in => [ "gp", "gp", "none", "gp" ],
out => [ "none", "none", "none" ] },
},
Store8Bit => {
- op_flags => [ "fragile", "labeled" ],
+ op_flags => [ "uses_memory", "fragile", "labeled" ],
state => "exc_pinned",
reg_req => { in => [ "gp", "gp", "none", "eax ebx ecx edx" ],
out => ["none", "none", "none" ] },
},
Call => {
- op_flags => [ "fragile" ],
+ op_flags => [ "uses_memory", "fragile" ],
state => "exc_pinned",
reg_req => {
in => [ "gp", "gp", "none", "gp", "esp", "fpcw", "eax", "ecx", "edx" ],
},
xLoad => {
- op_flags => [ "fragile", "labeled" ],
+ op_flags => [ "uses_memory", "fragile", "labeled" ],
state => "exc_pinned",
reg_req => { in => [ "gp", "gp", "none" ],
out => [ "xmm", "none", "none", "none", "none" ] },
},
xStore => {
- op_flags => [ "fragile", "labeled" ],
+ op_flags => [ "uses_memory", "fragile", "labeled" ],
state => "exc_pinned",
reg_req => { in => [ "gp", "gp", "none", "xmm" ],
out => [ "none", "none", "none" ] },
},
xStoreSimple => {
- op_flags => [ "fragile", "labeled" ],
+ op_flags => [ "uses_memory", "fragile", "labeled" ],
state => "exc_pinned",
reg_req => { in => [ "gp", "gp", "none", "xmm" ],
out => [ "none", "none", "none" ] },
},
CopyB => {
- op_flags => [ "fragile" ],
+ op_flags => [ "uses_memory", "fragile" ],
state => "pinned",
reg_req => { in => [ "edi", "esi", "ecx", "none" ],
out => [ "edi", "esi", "ecx", "none", "none", "none" ] },
},
CopyB_i => {
- op_flags => [ "fragile" ],
+ op_flags => [ "uses_memory", "fragile" ],
state => "pinned",
reg_req => { in => [ "edi", "esi", "none" ],
out => [ "edi", "esi", "none", "none", "none" ] },
},
Conv_I2I => {
- op_flags => [ "fragile" ],
+ op_flags => [ "uses_memory", "fragile" ],
state => "exc_pinned",
reg_req => { in => [ "gp", "gp", "none", "gp" ],
out => [ "gp", "none", "none", "none", "none" ] },
},
Conv_I2I8Bit => {
- op_flags => [ "fragile" ],
+ op_flags => [ "uses_memory", "fragile" ],
state => "exc_pinned",
reg_req => { in => [ "gp", "gp", "none", "eax ebx ecx edx" ],
out => [ "gp", "none", "none", "none", "none" ] },
vfld => {
irn_flags => [ "rematerializable" ],
- op_flags => [ "fragile", "labeled" ],
+ op_flags => [ "uses_memory", "fragile", "labeled" ],
state => "exc_pinned",
reg_req => { in => [ "gp", "gp", "none" ],
out => [ "vfp", "none", "none", "none", "none" ] },
vfst => {
irn_flags => [ "rematerializable" ],
- op_flags => [ "fragile", "labeled" ],
+ op_flags => [ "uses_memory", "fragile", "labeled" ],
state => "exc_pinned",
reg_req => { in => [ "gp", "gp", "none", "vfp" ],
out => [ "none", "none", "none" ] },
},
vfist => {
- op_flags => [ "fragile" ],
+ op_flags => [ "uses_memory", "fragile" ],
state => "exc_pinned",
reg_req => { in => [ "gp", "gp", "none", "vfp", "fpcw" ],
out => [ "none", "none", "none", "none" ] },
# SSE3 fisttp instruction
vfisttp => {
- op_flags => [ "fragile" ],
+ op_flags => [ "uses_memory", "fragile" ],
state => "exc_pinned",
reg_req => { in => [ "gp", "gp", "none", "vfp" ],
out => [ "in_r4", "none", "none", "none" ]},
# Spilling and reloading of SSE registers, hardcoded, not generated #
xxLoad => {
- op_flags => [ "fragile", "labeled" ],
+ op_flags => [ "uses_memory", "fragile", "labeled" ],
state => "exc_pinned",
reg_req => { in => [ "gp", "gp", "none" ],
out => [ "xmm", "none", "none", "none" ] },
},
xxStore => {
- op_flags => [ "fragile", "labeled" ],
+ op_flags => [ "uses_memory", "fragile", "labeled" ],
state => "exc_pinned",
reg_req => { in => [ "gp", "gp", "none", "xmm" ],
out => [ "none", "none", "none" ] },
die("Latency missing for op $op");
}
}
- $op_attr_init .= "attr->latency = ".$node->{latency} . ";";
+ $op_attr_init .= "ia32_init_op(op, ".$node->{latency} . ");";
$node->{op_attr_init} = $op_attr_init;
}