diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-05-27 14:15:25 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-05-27 14:15:25 -0400 |
commit | d0c84fdaa3b80b4ecb0c6f7afa44082b92fa457b (patch) | |
tree | b66db21fe8945b5fb8c108ff15d9bfe289f65657 | |
parent | 7e4dc511b073113b428eaa0bd9d7cc4c2c589329 (diff) | |
download | gcc-d0c84fdaa3b80b4ecb0c6f7afa44082b92fa457b.zip gcc-d0c84fdaa3b80b4ecb0c6f7afa44082b92fa457b.tar.gz gcc-d0c84fdaa3b80b4ecb0c6f7afa44082b92fa457b.tar.bz2 |
Add define_split for sign-extended PLUS of a MULT of an SImode
comparison.
From-SVN: r7364
-rw-r--r-- | gcc/config/alpha/alpha.md | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md index 41fbe68..4d1a051 100644 --- a/gcc/config/alpha/alpha.md +++ b/gcc/config/alpha/alpha.md @@ -238,6 +238,27 @@ s%2subl %r1,%n3,%0" [(set_attr "type" "iaddlog")]) +(define_split + [(set (match_operand:DI 0 "register_operand" "") + (sign_extend:DI + (plus:SI (mult:SI (match_operator:SI 1 "comparison_operator" + [(match_operand 2 "" "") + (match_operand 3 "" "")]) + (match_operand:SI 4 "const48_operand" "")) + (match_operand:SI 5 "add_operand" "")))) + (clobber (match_operand:DI 6 "register_operand" ""))] + "" + [(set (match_dup 6) (match_dup 7)) + (set (match_dup 0) + (sign_extend:DI (plus:SI (mult:SI (match_dup 8) (match_dup 4)) + (match_dup 5))))] + " +{ + operands[7] = gen_rtx (GET_CODE (operands[1]), DImode, + operands[2], operands[3]); + operands[8] = gen_lowpart (SImode, operands[6]); +}") + (define_insn "" [(set (match_operand:DI 0 "register_operand" "=r,r") (plus:DI (mult:DI (match_operand:DI 1 "reg_or_0_operand" "rJ,rJ") |