mips.c (mips_zero_if_equal): Only use XORs if the second operand is an uns_arith_operand...

* config/mips/mips.c (mips_zero_if_equal): Only use XORs if the second
	operand is an uns_arith_operand; use subtraction otherwise.
	* config/mips/mips.md (cmpsi, cmpdi): Allow any nonmemory_operand,
	not just arith_operands.

From-SVN: r84809
This commit is contained in:
Richard Sandiford 2004-07-16 07:53:47 +00:00 committed by Richard Sandiford
parent a012718f1d
commit f128625718
3 changed files with 14 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2004-07-16 Richard Sandiford <rsandifo@redhat.com>
* config/mips/mips.c (mips_zero_if_equal): Only use XORs if the second
operand is an uns_arith_operand; use subtraction otherwise.
* config/mips/mips.md (cmpsi, cmpdi): Allow any nonmemory_operand,
not just arith_operands.
2004-07-16 Richard Sandiford <rsandifo@redhat.com>
* config/mips/mips-protos.h (gen_int_relational): Delete.

View File

@ -2776,7 +2776,11 @@ mips_zero_if_equal (rtx cmp0, rtx cmp1)
if (cmp1 == const0_rtx)
return cmp0;
return expand_binop (GET_MODE (cmp0), xor_optab,
if (uns_arith_operand (cmp1, VOIDmode))
return expand_binop (GET_MODE (cmp0), xor_optab,
cmp0, cmp1, 0, 0, OPTAB_DIRECT);
return expand_binop (GET_MODE (cmp0), sub_optab,
cmp0, cmp1, 0, 0, OPTAB_DIRECT);
}

View File

@ -5472,7 +5472,7 @@ dsrl\t%3,%3,1\n\
(define_expand "cmpsi"
[(set (cc0)
(compare:CC (match_operand:SI 0 "register_operand")
(match_operand:SI 1 "arith_operand")))]
(match_operand:SI 1 "nonmemory_operand")))]
""
{
cmp_operands[0] = operands[0];
@ -5483,7 +5483,7 @@ dsrl\t%3,%3,1\n\
(define_expand "cmpdi"
[(set (cc0)
(compare:CC (match_operand:DI 0 "register_operand")
(match_operand:DI 1 "arith_operand")))]
(match_operand:DI 1 "nonmemory_operand")))]
"TARGET_64BIT"
{
cmp_operands[0] = operands[0];