Add pattern for b%c with swapped comparisons with 0.
authorRichard Kenner <kenner@gcc.gnu.org>
Wed, 18 Sep 1996 21:47:46 +0000 (17:47 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Wed, 18 Sep 1996 21:47:46 +0000 (17:47 -0400)
Delete three unnamed cmp insns that are strict subsets of new insn.

From-SVN: r12741

gcc/config/alpha/alpha.md

index 873a72621c51bb9b7dbac9961b4b37459e83f637..5ece6079982f683696b7e79a95ab46ace6054657 100644 (file)
   "cmp%C1 %r2,%3,%0"
   [(set_attr "type" "icmp")])
 
-;; There are three important special-case that don't fit the above pattern
-;; but which we want to handle here.
-
-(define_insn ""
-  [(set (match_operand:DI 0 "register_operand" "=r")
-       (ne:DI (match_operand:DI 1 "register_operand" "r")
-              (const_int 0)))]
-  ""
-  "cmpult $31,%1,%0"
-  [(set_attr "type" "icmp")])
-
-(define_insn ""
-  [(set (match_operand:DI 0 "register_operand" "=r")
-       (gt:DI (match_operand:DI 1 "register_operand" "r")
-              (const_int 0)))]
-  ""
-  "cmplt $31,%1,%0"
-  [(set_attr "type" "icmp")])
-
 (define_insn ""
   [(set (match_operand:DI 0 "register_operand" "=r")
-       (ge:DI (match_operand:DI 1 "register_operand" "r")
-              (const_int 0)))]
+        (match_operator:DI 1 "alpha_swapped_comparison_operator"
+                          [(match_operand:DI 2 "reg_or_8bit_operand" "rI")
+                           (match_operand:DI 3 "reg_or_0_operand" "rJ")]))]
   ""
-  "cmple $31,%1,%0"
+  "cmp%c1 $r3,%2,%0"
   [(set_attr "type" "icmp")])
 
 ;; This pattern exists so conditional moves of SImode values are handled.
   "b%C1 %r2,%0"
   [(set_attr "type" "ibr")])
 
+(define_insn ""
+  [(set (pc)
+       (if_then_else
+        (match_operator 1 "signed_comparison_operator"
+                        [(const_int 0)
+                         (match_operand:DI 2 "register_operand" "r")])
+        (label_ref (match_operand 0 "" ""))
+        (pc)))]
+  ""
+  "b%c1 %2,%0"
+  [(set_attr "type" "ibr")])
+
 (define_insn ""
   [(set (pc)
        (if_then_else