predicates.md (branch_comparison_operator): Convert from C block to conditional format.
authorDavid Edelsohn <edelsohn@gnu.org>
Fri, 4 Mar 2005 01:33:45 +0000 (01:33 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Fri, 4 Mar 2005 01:33:45 +0000 (20:33 -0500)
        * config/rs6000/predicates.md (branch_comparison_operator):
        Convert from C block to conditional format.

From-SVN: r95864

gcc/ChangeLog
gcc/config/rs6000/predicates.md

index 1b544690f48fc0734f441d1d651ae4e8980b9e63..67c26a21d4cbd26d1544edd8b2f02ca9be2085df 100644 (file)
@@ -1,3 +1,8 @@
+2005-03-03  David Edelsohn  <edelsohn@gnu.org>
+
+       * config/rs6000/predicates.md (branch_comparison_operator):
+       Convert from C block to conditional format.
+
 2005-03-03  Jan Hubicka  <jh@suse.cz>
 
        * tree-dfa.c (add_referenced_var): Don't walk initializer of external
index 5cafb4c60f6272ebbfc9c33deb188f5ee9086400..0f395612c3c03c699b30e29f14f9a3cff506c547 100644 (file)
   (match_code "smin,smax,umin,umax"))
 
 ;; Return 1 if OP is a comparison operation that is valid for a branch
-;; instruction.  We only check the opcode against the mode of the CC value.
+;; instruction.  We check the opcode against the mode of the CC value.
+;; validate_condition_mode is an assertion.
 (define_predicate "branch_comparison_operator"
-  (match_code "eq,ne,le,lt,ge,gt,leu,ltu,geu,gtu,unordered,ordered,unge,unle")
-{
-  enum rtx_code code = GET_CODE (op);
-  enum machine_mode cc_mode;
-
-  if (!COMPARISON_P (op))
-    return 0;
-
-  cc_mode = GET_MODE (XEXP (op, 0));
-  if (GET_MODE_CLASS (cc_mode) != MODE_CC)
-    return 0;
-
-  validate_condition_mode (code, cc_mode);
-
-  return 1;
-})
+  (and (match_code "eq,ne,le,lt,ge,gt,leu,ltu,geu,gtu,unordered,ordered,unge,unle")
+       (and (match_operand 0 "comparison_operator")
+           (and (match_test "GET_MODE_CLASS (GET_MODE (XEXP (op, 0))) == MODE_CC")
+                (match_test "validate_condition_mode (GET_CODE (op),
+                                                      GET_MODE (XEXP (op, 0))),
+                             1")))))
 
 ;; Return 1 if OP is a comparison operation that is valid for an SCC insn --
 ;; it must be a positive comparison.