diff options
Diffstat (limited to 'gcc/config/alpha/alpha.md')
-rw-r--r-- | gcc/config/alpha/alpha.md | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md index 03c70036416..5b9dd8e9459 100644 --- a/gcc/config/alpha/alpha.md +++ b/gcc/config/alpha/alpha.md @@ -2240,7 +2240,7 @@ which prevents rounding error in the final conversion to SFmode. */ emit_insn (gen_rtx_SET (VOIDmode, sticky, - gen_rtx_LTU (DImode, const0_rtx, lo))); + gen_rtx_NE (DImode, lo, const0_rtx))); emit_insn (gen_iordi3 (hi, hi, sticky)); emit_insn (gen_trunctfdf2 (tmpf, arg)); emit_insn (gen_truncdfsf2 (operands[0], tmpf)); @@ -2497,6 +2497,14 @@ (define_insn "" [(set (match_operand:DI 0 "register_operand" "=r") + (ne:DI (match_operand:DI 1 "reg_or_8bit_operand" "rI") + (const_int 0)))] + "" + "cmpult $31,%1,%0" + [(set_attr "type" "icmp")]) + +(define_insn "" + [(set (match_operand:DI 0 "register_operand" "=r") (match_operator:DI 1 "alpha_comparison_operator" [(match_operand:DI 2 "reg_or_0_operand" "rJ") (match_operand:DI 3 "reg_or_8bit_operand" "rI")]))] @@ -3314,7 +3322,9 @@ if (alpha_compare.op1 == const0_rtx) { - emit_insn (gen_sgtu (operands[0])); + operands[1] = gen_rtx_NE (DImode, alpha_compare.op0, alpha_compare.op1); + alpha_compare.op0 = alpha_compare.op1 = NULL_RTX; + emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[1])); DONE; } |