# ins => { "in1", "in2" } # optional, creates n_op_in1, ... consts
# mode => "mode_Iu" # optional, predefines the mode
# emit => "emit code with templates",
-# attr => "attitional attribute arguments for constructor",
+# attr => "additional attribute arguments for constructor",
# init_attr => "emit attribute initialization template",
# rd_constructor => "c source code which constructs an ir_node",
# hash_func => "name of the hash function for this operation",
modified_flags => $status_flags
},
+Xor0 => {
+ op_flags => "c",
+ irn_flags => "R",
+ reg_req => { out => [ "gp", "flags" ] },
+ outs => [ "res", "flags" ],
+ emit => ". xor%M %D0, %D0",
+ units => [ "GP" ],
+ latency => 1,
+ mode => $mode_gp,
+ modified_flags => $status_flags
+},
+
XorMem => {
irn_flags => "R",
state => "exc_pinned",
modified_flags => $status_flags
},
+Sbb0 => {
+ irn_flags => "R",
+ reg_req => { in => [ "flags" ], out => [ "gp", "flags" ] },
+ outs => [ "res", "flags" ],
+ emit => ". sbb%M %D0, %D0",
+ units => [ "GP" ],
+ latency => 1,
+ mode => $mode_gp,
+ modified_flags => $status_flags
+},
+
l_Sub => {
reg_req => { in => [ "none", "none" ], out => [ "none" ] },
ins => [ "minuend", "subtrahend" ],
out => [ "in_r1 !in_r2", "flags" ] },
ins => [ "val", "count" ],
outs => [ "res", "flags" ],
- emit => '. shl %SB1, %S0',
+ emit => '. shl%M %SB1, %S0',
units => [ "GP" ],
latency => 1,
mode => $mode_gp,
out => [ "in_r1 !in_r2", "flags" ] },
ins => [ "val", "count" ],
outs => [ "res", "flags" ],
- emit => '. shr %SB1, %S0',
+ emit => '. shr%M %SB1, %S0',
units => [ "GP" ],
mode => $mode_gp,
latency => 1,
out => [ "in_r1 !in_r2", "flags" ] },
ins => [ "val", "count" ],
outs => [ "res", "flags" ],
- emit => '. sar %SB1, %S0',
+ emit => '. sar%M %SB1, %S0',
units => [ "GP" ],
latency => 1,
mode => $mode_gp,
out => [ "in_r1 !in_r2", "flags" ] },
ins => [ "val", "count" ],
outs => [ "res", "flags" ],
- emit => '. ror %SB1, %S0',
+ emit => '. ror%M %SB1, %S0',
units => [ "GP" ],
latency => 1,
mode => $mode_gp,
out => [ "in_r1 !in_r2", "flags" ] },
ins => [ "val", "count" ],
outs => [ "res", "flags" ],
- emit => '. rol %SB1, %S0',
+ emit => '. rol%M %SB1, %S0',
units => [ "GP" ],
latency => 1,
mode => $mode_gp,
irn_flags => "R",
reg_req => { in => [ "gp" ],
out => [ "in_r1", "flags" ] },
- emit => '. neg %S0',
+ emit => '. neg%M %S0',
ins => [ "val" ],
outs => [ "res", "flags" ],
units => [ "GP" ],
out => [ "in_r1", "flags" ] },
ins => [ "val" ],
outs => [ "res", "flags" ],
- emit => '. inc %S0',
+ emit => '. inc%M %S0',
units => [ "GP" ],
mode => $mode_gp,
latency => 1,
out => [ "in_r1", "flags" ] },
ins => [ "val" ],
outs => [ "res", "flags" ],
- emit => '. dec %S0',
+ emit => '. dec%M %S0',
units => [ "GP" ],
mode => $mode_gp,
latency => 1,
out => [ "in_r1", "flags" ] },
ins => [ "val" ],
outs => [ "res", "flags" ],
- emit => '. not %S0',
+ emit => '. not%M %S0',
units => [ "GP" ],
latency => 1,
mode => $mode_gp,