diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-12-21 14:39:36 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-12-21 14:39:36 -0500 |
commit | 54dad0c2605f905a0e78b4e88a03e7c262ef5c2f (patch) | |
tree | 722b698f5e0906a9d4640e093c71cf2d1a83bd3b /gcc | |
parent | 781e6f76683d17b29125d28f52be00151321b772 (diff) | |
download | gcc-54dad0c2605f905a0e78b4e88a03e7c262ef5c2f.zip gcc-54dad0c2605f905a0e78b4e88a03e7c262ef5c2f.tar.gz gcc-54dad0c2605f905a0e78b4e88a03e7c262ef5c2f.tar.bz2 |
(adddi3, subdi3): New patterns.
From-SVN: r8684
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/m68k/m68k.md | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md index f71e9ed..196df8b 100644 --- a/gcc/config/m68k/m68k.md +++ b/gcc/config/m68k/m68k.md @@ -1854,6 +1854,18 @@ ;; add instructions +(define_insn "adddi3" + [(set (match_operand:DI 0 "register_operand" "=d") + (plus:DI (match_operand:DI 1 "register_operand" "%0") + (match_operand:DI 2 "register_operand" "d")))] + "" + "* +{ + operands[1] = gen_rtx (REG, SImode, REGNO (operands[0]) + 1); + operands[3] = gen_rtx (REG, SImode, REGNO (operands[2]) + 1); + return \"add%.l %3,%1\;addx%.l %2,%0\"; +} ") + ;; Note that the middle two alternatives are near-duplicates ;; in order to handle insns generated by reload. ;; This is needed since they are not themselves reloaded, @@ -2274,6 +2286,18 @@ ;; subtract instructions +(define_insn "subdi3" + [(set (match_operand:DI 0 "register_operand" "=d") + (minus:DI (match_operand:DI 1 "register_operand" "0") + (match_operand:DI 2 "register_operand" "d")))] + "" + "* +{ + operands[1] = gen_rtx (REG, SImode, REGNO (operands[0]) + 1); + operands[3] = gen_rtx (REG, SImode, REGNO (operands[2]) + 1); + return \"sub%.l %3,%1\;subx%.l %2,%0\"; +} ") + (define_insn "subsi3" [(set (match_operand:SI 0 "general_operand" "=m,r") (minus:SI (match_operand:SI 1 "general_operand" "0,0") |