sparc.md (cmove splitter): Fix formatting.
authorEric Botcazou <ebotcazou@libertysurf.fr>
Wed, 22 Sep 2004 23:18:28 +0000 (01:18 +0200)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Wed, 22 Sep 2004 23:18:28 +0000 (23:18 +0000)
* config/sparc/sparc.md (cmove splitter): Fix formatting.
(conditional_trap expander): Reject inappropriate CCmodes.
(conditional trap expander): Use V9 syntax if possible.

From-SVN: r87894

gcc/ChangeLog
gcc/config/sparc/sparc.md

index b0fe994abfd4eccf9a1acb523d2726d048d4ecf0..3680fead8be9ae44ce518c9f838c01a91aad769b 100644 (file)
@@ -1,3 +1,9 @@
+2004-09-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+       * config/sparc/sparc.md (cmove splitter): Fix formatting.
+       (conditional_trap expander): Reject inappropriate CCmodes.
+       (conditional trap expander): Use V9 syntax if possible.
+
 2004-09-22  Joseph S. Myers  <jsm@polyomino.org.uk>
 
        PR c/16566
index 886d190d16ade6bf8305864d2fe1b8c65f3cba05..a077f8c881ee6141d0ea5c746aae88ed74c7ae46 100644 (file)
        (match_operator:SI 2 "noov_compare_op"
                           [(match_operand 1 "icc_or_fcc_reg_operand" "")
                            (const_int 0)]))]
-  ;; 32 bit LTU/GEU are better implemented using addx/subx
-  "TARGET_V9 && REGNO (operands[1]) == SPARC_ICC_REG
+  "TARGET_V9
+   && REGNO (operands[1]) == SPARC_ICC_REG
    && (GET_MODE (operands[1]) == CCXmode
+       /* 32 bit LTU/GEU are better implemented using addx/subx.  */
        || (GET_CODE (operands[2]) != LTU && GET_CODE (operands[2]) != GEU))"
   [(set (match_dup 0) (const_int 0))
    (set (match_dup 0)
   [(set_attr "type" "trap")])
 
 (define_expand "conditional_trap"
-  [(trap_if (match_operator 0 "noov_compare_op"
-                           [(match_dup 2) (match_dup 3)])
+  [(trap_if (match_operator 0 "noov_compare_op" [(match_dup 2) (match_dup 3)])
            (match_operand:SI 1 "arith_operand" ""))]
   ""
   "operands[2] = gen_compare_reg (GET_CODE (operands[0]),
                                  sparc_compare_op0, sparc_compare_op1);
+   if (GET_MODE (operands[2]) != CCmode && GET_MODE (operands[2]) != CCXmode)
+     FAIL;
    operands[3] = const0_rtx;")
 
 (define_insn ""
   [(trap_if (match_operator 0 "noov_compare_op" [(reg:CC 100) (const_int 0)])
            (match_operand:SI 1 "arith_operand" "rM"))]
   ""
-  "t%C0\t%1"
+{
+  if (TARGET_V9)
+    return "t%C0\t%%icc, %1";
+  else
+    return "t%C0\t%1";
+}
   [(set_attr "type" "trap")])
 
 (define_insn ""