aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTorbjorn Granlund <tege@gnu.org>1995-12-14 23:08:23 +0000
committerTorbjorn Granlund <tege@gnu.org>1995-12-14 23:08:23 +0000
commit3f6ddf545624fb08c1a08de0611d00e470140ae7 (patch)
tree7e71d6f4efe39a715405df108baa10e7a063a286 /gcc
parent226a50517f06ecf64f8092bfa34feb5feca2ac2a (diff)
downloadgcc-3f6ddf545624fb08c1a08de0611d00e470140ae7.zip
gcc-3f6ddf545624fb08c1a08de0611d00e470140ae7.tar.gz
gcc-3f6ddf545624fb08c1a08de0611d00e470140ae7.tar.bz2
(ashrsi_31): New pattern.
From-SVN: r10721
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/m68k/m68k.md12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md
index 1f243ac..98d8602 100644
--- a/gcc/config/m68k/m68k.md
+++ b/gcc/config/m68k/m68k.md
@@ -4347,6 +4347,18 @@
FAIL;
} ")
+;; On all 68k models, this makes faster code in a special case.
+
+(define_insn "ashrsi_31"
+ [(set (match_operand:SI 0 "register_operand" "=d")
+ (ashiftrt:SI (match_operand:SI 1 "register_operand" "0")
+ (const_int 31)))]
+ ""
+ "*
+{
+ return \"add%.l %0,%0\;subx%.l %0,%0\";
+}")
+
(define_insn "ashrsi3"
[(set (match_operand:SI 0 "register_operand" "=d")
(ashiftrt:SI (match_operand:SI 1 "register_operand" "0")