- irn_flags => "R",
- comment => "construct Rsb: Rsb(a, b) = b - a",
- attr => "arm_shift_modifier mod, tarval *shf",
- init_attr => 'ARM_SET_SHF_MOD(attr, mod); attr->value = shf;',
- cmp_attr => 'return (attr_a->instr_fl != attr_b->instr_fl) || (attr_a->value != attr_b->value);',
- reg_req => { "in" => [ "gp", "gp" ], "out" => [ "gp" ] },
- emit => '. rsb %D0, %S0, %S1%X'
-},
-
-Rsb_i => {
- irn_flags => "R",
- comment => "construct Rsb: Rsb(a, const) = const - a",
- attr => "tarval *tv",
- init_attr => 'ARM_SET_SHF_MOD(attr, ARM_SHF_IMM); attr->value = tv;',
- reg_req => { "in" => [ "gp" ], "out" => [ "gp" ] },
- emit => '. rsb %D0, %S0, %C',
- cmp_attr => 'return attr_a->value != attr_b->value;'
-},
-
-Shl => {
- irn_flags => "R",
- comment => "construct Shl: Shl(a, b) = a << b",
- reg_req => { "in" => [ "gp", "gp" ], "out" => [ "gp" ] },
- emit => '. mov %D0, %S0, lsl %S1'
-},
-
-Shr => {
- irn_flags => "R",
- comment => "construct Shr: Shr(a, b) = a >> b",
- reg_req => { "in" => [ "gp", "gp" ], "out" => [ "in_r1" ] },
- emit => '. mov %D0, %S0, lsr %S1'
-},
-
-Shrs => {
- irn_flags => "R",
- comment => "construct Shrs: Shrs(a, b) = a >> b",
- reg_req => { "in" => [ "gp", "gp" ], "out" => [ "in_r1" ] },
- emit => '. mov %D0, %S0, asr %S1'
-},
-
-#RotR => {
-# irn_flags => "R",
-# comment => "construct RotR: RotR(a, b) = a ROTR b",
-# reg_req => { "in" => [ "gp", "gp" ], "out" => [ "gp" ] },
-# emit => '. mov %D0, %S0, ror %S1 /* RotR(%S0, %S1) -> %D0, (%A1, %A2) */'
-## emit => '. ror %S0, %S1, %D0'
-#},
-
-#RotL => {
-# irn_flags => "R",
-# comment => "construct RotL: RotL(a, b) = a ROTL b",
-# reg_req => { "in" => [ "gp", "gp" ], "out" => [ "gp" ] },
-# emit => '. rol %S0, %S1, %D0'
-#},
-
-#RotL_i => {
-# irn_flags => "R",
-# comment => "construct RotL: RotL(a, const) = a ROTL const",
-# reg_req => { "in" => [ "gp" ], "out" => [ "gp" ] },
-# emit => '. rol %S0, %C, %D0'
-#},
-
-Mov => {
- irn_flags => "R",
- comment => "construct Mov: a = b",
- attr => "arm_shift_modifier mod, tarval *shf",
- init_attr => 'ARM_SET_SHF_MOD(attr, mod); attr->value = shf;',
- cmp_attr => 'return (attr_a->instr_fl != attr_b->instr_fl) || (attr_a->value != attr_b->value);',
- reg_req => { "in" => [ "gp" ], "out" => [ "gp" ] },
- emit => '. mov %D0, %S0%X'