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:
parent
a012718f1d
commit
f128625718
@ -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>
|
2004-07-16 Richard Sandiford <rsandifo@redhat.com>
|
||||||
|
|
||||||
* config/mips/mips-protos.h (gen_int_relational): Delete.
|
* config/mips/mips-protos.h (gen_int_relational): Delete.
|
||||||
|
@ -2776,8 +2776,12 @@ mips_zero_if_equal (rtx cmp0, rtx cmp1)
|
|||||||
if (cmp1 == const0_rtx)
|
if (cmp1 == const0_rtx)
|
||||||
return cmp0;
|
return cmp0;
|
||||||
|
|
||||||
|
if (uns_arith_operand (cmp1, VOIDmode))
|
||||||
return expand_binop (GET_MODE (cmp0), xor_optab,
|
return expand_binop (GET_MODE (cmp0), xor_optab,
|
||||||
cmp0, cmp1, 0, 0, OPTAB_DIRECT);
|
cmp0, cmp1, 0, 0, OPTAB_DIRECT);
|
||||||
|
|
||||||
|
return expand_binop (GET_MODE (cmp0), sub_optab,
|
||||||
|
cmp0, cmp1, 0, 0, OPTAB_DIRECT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Try comparing cmp_operands[0] and cmp_operands[1] using rtl code CODE.
|
/* Try comparing cmp_operands[0] and cmp_operands[1] using rtl code CODE.
|
||||||
|
@ -5472,7 +5472,7 @@ dsrl\t%3,%3,1\n\
|
|||||||
(define_expand "cmpsi"
|
(define_expand "cmpsi"
|
||||||
[(set (cc0)
|
[(set (cc0)
|
||||||
(compare:CC (match_operand:SI 0 "register_operand")
|
(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];
|
cmp_operands[0] = operands[0];
|
||||||
@ -5483,7 +5483,7 @@ dsrl\t%3,%3,1\n\
|
|||||||
(define_expand "cmpdi"
|
(define_expand "cmpdi"
|
||||||
[(set (cc0)
|
[(set (cc0)
|
||||||
(compare:CC (match_operand:DI 0 "register_operand")
|
(compare:CC (match_operand:DI 0 "register_operand")
|
||||||
(match_operand:DI 1 "arith_operand")))]
|
(match_operand:DI 1 "nonmemory_operand")))]
|
||||||
"TARGET_64BIT"
|
"TARGET_64BIT"
|
||||||
{
|
{
|
||||||
cmp_operands[0] = operands[0];
|
cmp_operands[0] = operands[0];
|
||||||
|
Loading…
Reference in New Issue
Block a user