diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1993-04-12 15:28:24 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1993-04-12 15:28:24 -0400 |
commit | fa5679bb7f9bfd4a47059a9fa62f304aef606eaf (patch) | |
tree | f23e368b56c0b1fa28292373f41802056321dbbb /gcc | |
parent | 9854d9edf8add1f79c06a8cb48255cf6aca64c2c (diff) | |
download | gcc-fa5679bb7f9bfd4a47059a9fa62f304aef606eaf.zip gcc-fa5679bb7f9bfd4a47059a9fa62f304aef606eaf.tar.gz gcc-fa5679bb7f9bfd4a47059a9fa62f304aef606eaf.tar.bz2 |
(adddi3/subdi3): Allow immediate constants.
From-SVN: r4101
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/rs6000/rs6000.md | 20 |
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") |