i386.c (ix86_expand_int_movcc): In the case where the comparison directly gives a mask suppress addition when...
* config/i386/i386.c (ix86_expand_int_movcc): In the case where the comparison directly gives a mask suppress addition when cf is zero by complementing the mask. From-SVN: r55505
This commit is contained in:
parent
2aa9948d9b
commit
06ec023fb9
@ -1,3 +1,9 @@
|
|||||||
|
2002-07-16 Rodney Brown <rbrown64@csc.com.au>
|
||||||
|
|
||||||
|
* config/i386/i386.c (ix86_expand_int_movcc): In the case where
|
||||||
|
the comparison directly gives a mask suppress addition when cf is
|
||||||
|
zero by complementing the mask.
|
||||||
|
|
||||||
2002-07-16 Nathanael Nerode <neroden@gcc.gnu.org>
|
2002-07-16 Nathanael Nerode <neroden@gcc.gnu.org>
|
||||||
|
|
||||||
* Makefile.in: Delete references to enquire.
|
* Makefile.in: Delete references to enquire.
|
||||||
|
@ -8666,7 +8666,6 @@ ix86_expand_int_movcc (operands)
|
|||||||
if ((compare_code == LTU || compare_code == GEU)
|
if ((compare_code == LTU || compare_code == GEU)
|
||||||
&& !second_test && !bypass_test)
|
&& !second_test && !bypass_test)
|
||||||
{
|
{
|
||||||
|
|
||||||
/* Detect overlap between destination and compare sources. */
|
/* Detect overlap between destination and compare sources. */
|
||||||
rtx tmp = out;
|
rtx tmp = out;
|
||||||
|
|
||||||
@ -8723,7 +8722,7 @@ ix86_expand_int_movcc (operands)
|
|||||||
/*
|
/*
|
||||||
* cmpl op0,op1
|
* cmpl op0,op1
|
||||||
* sbbl dest,dest
|
* sbbl dest,dest
|
||||||
* xorl $-1, dest
|
* notl dest
|
||||||
* [addl dest, cf]
|
* [addl dest, cf]
|
||||||
*
|
*
|
||||||
* Size 8 - 11.
|
* Size 8 - 11.
|
||||||
@ -8739,11 +8738,20 @@ ix86_expand_int_movcc (operands)
|
|||||||
/*
|
/*
|
||||||
* cmpl op0,op1
|
* cmpl op0,op1
|
||||||
* sbbl dest,dest
|
* sbbl dest,dest
|
||||||
|
* [notl dest]
|
||||||
* andl cf - ct, dest
|
* andl cf - ct, dest
|
||||||
* [addl dest, ct]
|
* [addl dest, ct]
|
||||||
*
|
*
|
||||||
* Size 8 - 11.
|
* Size 8 - 11.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
if (cf == 0)
|
||||||
|
{
|
||||||
|
cf = ct;
|
||||||
|
ct = 0;
|
||||||
|
tmp = expand_simple_unop (mode, NOT, tmp, tmp, 1);
|
||||||
|
}
|
||||||
|
|
||||||
tmp = expand_simple_binop (mode, AND,
|
tmp = expand_simple_binop (mode, AND,
|
||||||
tmp,
|
tmp,
|
||||||
gen_int_mode (cf - ct, mode),
|
gen_int_mode (cf - ct, mode),
|
||||||
|
Loading…
Reference in New Issue
Block a user