(subsi3): Merge alternatives.
authorRichard Kenner <kenner@gcc.gnu.org>
Fri, 13 Aug 1993 11:50:22 +0000 (07:50 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Fri, 13 Aug 1993 11:50:22 +0000 (07:50 -0400)
(comparison patterns): Eliminate generation of "sfi."; no such instruction
exists.

From-SVN: r5151

gcc/config/rs6000/rs6000.md

index 5de6f206eb6e37c4701cb19160bf0fe0248d83be..fd18904152c97bc282c4c2bbc5d2c9bd04b7c006 100644 (file)
   "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")
  [(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")])
 
   [(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")