diff options
author | Eric Botcazou <ebotcazou@libertysurf.fr> | 2004-09-23 01:18:28 +0200 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2004-09-22 23:18:28 +0000 |
commit | ba652ba92560c4aca703d809ff2b535fdb3215cc (patch) | |
tree | b3d5bb239932ccbec603d33c9cae56018f182c41 /gcc/config/sparc | |
parent | b1247df7454f3a74b65a58eb6d79a1ac02566002 (diff) | |
download | gcc-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.md | 17 |
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 "" |