aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1993-04-12 15:28:24 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1993-04-12 15:28:24 -0400
commitfa5679bb7f9bfd4a47059a9fa62f304aef606eaf (patch)
treef23e368b56c0b1fa28292373f41802056321dbbb
parent9854d9edf8add1f79c06a8cb48255cf6aca64c2c (diff)
downloadgcc-fa5679bb7f9bfd4a47059a9fa62f304aef606eaf.zip
gcc-fa5679bb7f9bfd4a47059a9fa62f304aef606eaf.tar.gz
gcc-fa5679bb7f9bfd4a47059a9fa62f304aef606eaf.tar.bz2
(adddi3/subdi3): Allow immediate constants.
From-SVN: r4101
-rw-r--r--gcc/config/rs6000/rs6000.md20
1 files changed, 12 insertions, 8 deletions
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index f6a9d21..5d476ac 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -1992,18 +1992,22 @@
;; Define the DImode operations that can be done in a small number
;; of instructions.
(define_insn "adddi3"
- [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
- (plus:DI (match_operand:DI 1 "gpc_reg_operand" "%r")
- (match_operand:DI 2 "gpc_reg_operand" "r")))]
+ [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
+ (plus:DI (match_operand:DI 1 "gpc_reg_operand" "%r,r")
+ (match_operand:DI 2 "reg_or_short_operand" "r,I")))]
""
- "a %L0,%L1,%L2\;ae %0,%1,%2")
+ "@
+ a %L0,%L1,%L2\;ae %0,%1,%2
+ ai %L0,%L1,%2\;a%G2e %0,%1")
(define_insn "subdi3"
- [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
- (minus:DI (match_operand:DI 1 "gpc_reg_operand" "r")
- (match_operand:DI 2 "gpc_reg_operand" "r")))]
+ [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
+ (minus:DI (match_operand:DI 1 "reg_or_short_operand" "r,I")
+ (match_operand:DI 2 "gpc_reg_operand" "r,r")))]
""
- "sf %L0,%L2,%L1\;sfe %0,%2,%1")
+ "@
+ sf %L0,%L2,%L1\;sfe %0,%2,%1
+ sfi %L0,%L2,%1\;sf%G1e %0,%2")
(define_insn "negdi2"
[(set (match_operand:DI 0 "gpc_reg_operand" "=r")