Add define_split for sign-extended PLUS of an SImode comparison;
authorRichard Kenner <kenner@gcc.gnu.org>
Fri, 27 May 1994 11:26:20 +0000 (07:26 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Fri, 27 May 1994 11:26:20 +0000 (07:26 -0400)
change comparison to DImode.

From-SVN: r7360

gcc/config/alpha/alpha.md

index c7ca0f01bae40d396fd84a5139e01aaa32d39bce..41fbe683a0b3015c170149dad1a41dc8cc204ae1 100644 (file)
   operands[5] = GEN_INT (mult);
 }")
 
+(define_split
+  [(set (match_operand:DI 0 "register_operand" "")
+       (sign_extend:DI
+        (plus:SI (match_operator:SI 1 "comparison_operator"
+                                    [(match_operand 2 "" "")
+                                     (match_operand 3 "" "")])
+                 (match_operand:SI 4 "add_operand" ""))))
+   (clobber (match_operand:DI 5 "register_operand" ""))]
+  ""
+  [(set (match_dup 5) (match_dup 6))
+   (set (match_dup 0) (sign_extend:DI (plus:SI (match_dup 7) (match_dup 4))))]
+  "
+{
+  operands[6] = gen_rtx (GET_CODE (operands[1]), DImode,
+                        operands[2], operands[3]);
+  operands[7] = gen_lowpart (SImode, operands[5]);
+}")
+
 (define_insn "adddi3"
   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r")
        (plus:DI (match_operand:DI 1 "reg_or_0_operand" "%rJ,rJ,rJ,rJ")