aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1993-08-13 07:50:22 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1993-08-13 07:50:22 -0400
commit3d91674b8798be0787a3e2f356ecadc5308caffd (patch)
treea1cbfc87838ed027d389b7823aee679ae2a733b2 /gcc
parentfd5d5b94a1a2b798724fd7d92f309ecac8c2eb34 (diff)
downloadgcc-3d91674b8798be0787a3e2f356ecadc5308caffd.zip
gcc-3d91674b8798be0787a3e2f356ecadc5308caffd.tar.gz
gcc-3d91674b8798be0787a3e2f356ecadc5308caffd.tar.bz2
(subsi3): Merge alternatives.
(comparison patterns): Eliminate generation of "sfi."; no such instruction exists. From-SVN: r5151
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/rs6000/rs6000.md76
1 files changed, 34 insertions, 42 deletions
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 5de6f20..fd18904 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -236,13 +236,11 @@
"sfi %0,%1,-1")
(define_insn ""
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
- (minus:SI (match_operand:SI 1 "reg_or_short_operand" "r,I")
- (match_operand:SI 2 "gpc_reg_operand" "r,r")))]
+ [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
+ (minus:SI (match_operand:SI 1 "reg_or_short_operand" "rI")
+ (match_operand:SI 2 "gpc_reg_operand" "r")))]
""
- "@
- sf %0,%2,%1
- sfi %0,%2,%1")
+ "sf%I1 %0,%2,%1")
(define_insn ""
[(set (match_operand:CC 0 "cc_reg_operand" "=x")
@@ -4188,38 +4186,34 @@
[(set_attr "length" "12")])
(define_insn ""
- [(set (match_operand:CC 0 "cc_reg_operand" "=x,x,x,x")
+ [(set (match_operand:CC 0 "cc_reg_operand" "=x,x")
(compare:CC
- (plus:SI (ltu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
- (match_operand:SI 2 "reg_or_neg_short_operand" "r,r,P,P"))
- (match_operand:SI 3 "reg_or_short_operand" "r,I,r,I"))
+ (plus:SI (ltu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
+ (match_operand:SI 2 "reg_or_neg_short_operand" "r,P"))
+ (match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
- (clobber (match_scratch:SI 4 "=&r,r,&r,r"))]
+ (clobber (match_scratch:SI 4 "=&r,&r"))]
""
"@
- sf %4,%2,%1\;sfe %4,%4,%4\;sf%I3. %4,%4,%3
- sf %4,%2,%1\;sfe %4,%4,%4\;sf%I3. %4,%4,%3
- ai %4,%1,%n2\;sfe %4,%4,%4\;sf%I3. %4,%4,%3
- ai %4,%1,%n2\;sfe %4,%4,%4\;sf%I3. %4,%4,%3"
+ sf %4,%2,%1\;sfe %4,%4,%4\;sf. %4,%4,%3
+ ai %4,%1,%n2\;sfe %4,%4,%4\;sf. %4,%4,%3"
[(set_attr "type" "compare")
(set_attr "length" "12")])
(define_insn ""
- [(set (match_operand:CC 5 "cc_reg_operand" "=x,x,x,x")
+ [(set (match_operand:CC 5 "cc_reg_operand" "=x,x")
(compare:CC
- (plus:SI (ltu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
- (match_operand:SI 2 "reg_or_neg_short_operand" "r,r,P,P"))
- (match_operand:SI 3 "reg_or_short_operand" "r,I,r,I"))
+ (plus:SI (ltu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
+ (match_operand:SI 2 "reg_or_neg_short_operand" "r,P"))
+ (match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r")
+ (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(plus:SI (ltu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
- (clobber (match_scratch:SI 4 "=&r,r,&r,r"))]
+ (clobber (match_scratch:SI 4 "=&r,&r"))]
""
"@
- sf %4,%2,%1\;sfe %4,%4,%4\;sf%I3. %0,%4,%3
- sf %4,%2,%1\;sfe %4,%4,%4\;sf%I3. %0,%4,%3
- ai %4,%1,%n2\;sfe %4,%4,%4\;sf%I3. %0,%4,%3
- ai %4,%1,%n2\;sfe %4,%4,%4\;sf%I3. %0,%4,%3"
+ sf %4,%2,%1\;sfe %4,%4,%4\;sf. %0,%4,%3
+ ai %4,%1,%n2\;sfe %4,%4,%4\;sf. %0,%4,%3"
[(set_attr "type" "compare")
(set_attr "length" "12")])
@@ -4644,38 +4638,36 @@
[(set_attr "length" "8,12,12")])
(define_insn ""
- [(set (match_operand:CC 0 "cc_reg_operand" "=x,x,x")
+ [(set (match_operand:CC 0 "cc_reg_operand" "=x,x")
(compare:CC
- (plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r")
- (match_operand:SI 2 "reg_or_short_operand" "I,r,rI"))
- (match_operand:SI 3 "reg_or_short_operand" "r,r,I"))
+ (plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
+ (match_operand:SI 2 "reg_or_short_operand" "I,r"))
+ (match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
- (clobber (match_scratch:SI 4 "=&r,&r,&r"))]
+ (clobber (match_scratch:SI 4 "=&r,&r"))]
""
"@
ai %4,%1,%k2\;aze. %0,%3
- sf%I2 %4,%1,%2\;sfe %4,%4,%4\;sf%I3. %0,%4,%3
- sf%I2 %4,%1,%2\;sfe %4,%4,%4\;sf%I3. %0,%4,%3"
+ sf%I2 %4,%1,%2\;sfe %4,%4,%4\;sf. %0,%4,%3"
[(set_attr "type" "compare")
- (set_attr "length" "8,12,12")])
+ (set_attr "length" "8,12")])
(define_insn ""
- [(set (match_operand:CC 5 "cc_reg_operand" "=x,x,x")
+ [(set (match_operand:CC 5 "cc_reg_operand" "=x,x")
(compare:CC
- (plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r")
- (match_operand:SI 2 "reg_or_short_operand" "I,r,rI"))
- (match_operand:SI 3 "reg_or_short_operand" "r,r,I"))
+ (plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
+ (match_operand:SI 2 "reg_or_short_operand" "I,r"))
+ (match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r")
+ (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(plus:SI (gtu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
- (clobber (match_scratch:SI 4 "=&r,&r,&r"))]
+ (clobber (match_scratch:SI 4 "=&r,&r"))]
""
"@
ai %4,%1,%k2\;aze. %0,%3
- sf%I2 %4,%1,%2\;sfe %4,%4,%4\;sf%I3. %0,%4,%3
- sf%I2 %4,%1,%2\;sfe %4,%4,%4\;sf%I3. %0,%4,%3"
+ sf%I2 %4,%1,%2\;sfe %4,%4,%4\;sf. %0,%4,%3"
[(set_attr "type" "compare")
- (set_attr "length" "8,12,12")])
+ (set_attr "length" "8,12")])
(define_insn ""
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")