aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/sparc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@libertysurf.fr>2004-09-23 01:18:28 +0200
committerEric Botcazou <ebotcazou@gcc.gnu.org>2004-09-22 23:18:28 +0000
commitba652ba92560c4aca703d809ff2b535fdb3215cc (patch)
treeb3d5bb239932ccbec603d33c9cae56018f182c41 /gcc/config/sparc
parentb1247df7454f3a74b65a58eb6d79a1ac02566002 (diff)
downloadgcc-ba652ba92560c4aca703d809ff2b535fdb3215cc.zip
gcc-ba652ba92560c4aca703d809ff2b535fdb3215cc.tar.gz
gcc-ba652ba92560c4aca703d809ff2b535fdb3215cc.tar.bz2
sparc.md (cmove splitter): Fix formatting.
* 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
Diffstat (limited to 'gcc/config/sparc')
-rw-r--r--gcc/config/sparc/sparc.md17
1 files changed, 12 insertions, 5 deletions
diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md
index 886d190..a077f8c 100644
--- a/gcc/config/sparc/sparc.md
+++ b/gcc/config/sparc/sparc.md
@@ -1209,9 +1209,10 @@
(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)
@@ -8222,19 +8223,25 @@
[(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 ""