On 06/02/2015 08:32 AM, Andreas Krebbel wrote:
-(define_insn "*<shift><mode>3"
+(define_insn "*<shift><mode>3_reg"
    [(set (match_operand:GPR 0 "register_operand" "=d")
          (SHIFT:GPR (match_operand:GPR 1 "register_operand" "<d0>")
-                   (match_operand:SI 2 "shift_count_or_setmem_operand" "Y")))]
+                   (match_operand:SI 2 "register_operand" "a")))]
    ""
-  "s<lr>l<g>\t%0,<1>%Y2"
+  "s<lr>l<g>\t%0,<1>%2"
+  [(set_attr "op_type"  "RS<E>")
+   (set_attr "atype"    "reg")])
+
+(define_insn "*<shift><mode>3_imm"
+  [(set (match_operand:GPR 0 "register_operand" "=d")
+        (SHIFT:GPR (match_operand:GPR 1 "register_operand" "<d0>")
+                   (match_operand     2 "immediate_operand" "J")))]
+  ""
+  "s<lr>l<g>\t%0,<1>%2"
+  [(set_attr "op_type"  "RS<E>")
+   (set_attr "atype"    "reg")])

These two ought not be split apart. They're simple alternatives. And why SImode? You also shouldn't drop the mode on immediate operands.

r~

+
+(define_insn "*<shift><mode>3_immreg"
+  [(set (match_operand:GPR 0 "register_operand" "=d")
+        (SHIFT:GPR (match_operand:GPR 1 "register_operand" "<d0>")
+                  (plus:SI
+                   (match_operand:SI 2 "register_operand"    "a")
+                   (match_operand    3 "immediate_operand"   "J"))))]
+  ""
+  "s<lr>l<g>\t%0,<1>%2(%3)"
    [(set_attr "op_type"  "RS<E>")
     (set_attr "atype"    "reg")])


Reply via email to