aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1993-01-19 18:50:54 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1993-01-19 18:50:54 -0500
commit0075180522d04f95a970a78f26b52a5cef36c24b (patch)
tree558ac1756b62ccd5760151193b73d35c4d986920 /gcc
parentcfcf04a6ba2d59801200aee8a17e9c6c881fe804 (diff)
downloadgcc-0075180522d04f95a970a78f26b52a5cef36c24b.zip
gcc-0075180522d04f95a970a78f26b52a5cef36c24b.tar.gz
gcc-0075180522d04f95a970a78f26b52a5cef36c24b.tar.bz2
(plus of gtu patterns): Add case to handle immediates.
From-SVN: r3285
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/rs6000/rs6000.md47
1 files changed, 28 insertions, 19 deletions
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 15a2c51..1e402f6 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -4442,38 +4442,47 @@
[(set_attr "type" "compare")])
(define_insn ""
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
- (plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "reg_or_short_operand" "rI,rI"))
- (match_operand:SI 3 "reg_or_short_operand" "r,I")))
- (clobber (match_scratch:SI 4 "=&r,&r"))]
+ [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r")
+ (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")))
+ (clobber (match_scratch:SI 4 "=&r,&r,&r"))]
""
- "sf%I2 %4,%1,%2\;sfe %4,%4,%4\;sf%I3 %0,%4,%3")
+ "@
+ 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")
(define_insn ""
- [(set (match_operand:CC 0 "cc_reg_operand" "=x,x")
+ [(set (match_operand:CC 0 "cc_reg_operand" "=x,x,x")
(compare:CC
- (plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "reg_or_short_operand" "rI,rI"))
- (match_operand:SI 3 "reg_or_short_operand" "r,I"))
+ (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"))
(const_int 0)))
- (clobber (match_scratch:SI 4 "=&r,&r"))]
+ (clobber (match_scratch:SI 4 "=&r,&r,&r"))]
""
- "sf%I2 %4,%1,%2\;sfe %4,%4,%4\;sf%I3. %4,%4,%3"
+ "@
+ 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"
[(set_attr "type" "compare")])
(define_insn ""
- [(set (match_operand:CC 5 "cc_reg_operand" "=x,x")
+ [(set (match_operand:CC 5 "cc_reg_operand" "=x,x,x")
(compare:CC
- (plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "reg_or_short_operand" "rI,rI"))
- (match_operand:SI 3 "reg_or_short_operand" "r,I"))
+ (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"))
(const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
+ (set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r")
(plus:SI (gtu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
- (clobber (match_scratch:SI 4 "=&r,&r"))]
+ (clobber (match_scratch:SI 4 "=&r,&r,&r"))]
""
- "sf%I2 %4,%1,%2\;sfe %4,%4,%4\;sf%I3. %0,%4,%3"
+ "@
+ 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"
[(set_attr "type" "compare")])
(define_insn ""