aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-05-27 07:26:20 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-05-27 07:26:20 -0400
commit5c72c15e2ec72b8be36d9b8b6cc23468d1594373 (patch)
treec96ff2b3a9f2887144c1084258b9f5371cbcf165 /gcc
parent1b0cb6fc469d36d98f81507153e505190a78efab (diff)
downloadgcc-5c72c15e2ec72b8be36d9b8b6cc23468d1594373.zip
gcc-5c72c15e2ec72b8be36d9b8b6cc23468d1594373.tar.gz
gcc-5c72c15e2ec72b8be36d9b8b6cc23468d1594373.tar.bz2
Add define_split for sign-extended PLUS of an SImode comparison;
change comparison to DImode. From-SVN: r7360
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/alpha/alpha.md18
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md
index c7ca0f0..41fbe68 100644
--- a/gcc/config/alpha/alpha.md
+++ b/gcc/config/alpha/alpha.md
@@ -165,6 +165,24 @@
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")