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:
Rodney Brown 2002-07-17 01:36:36 +00:00 committed by Richard Henderson
parent 2aa9948d9b
commit 06ec023fb9
2 changed files with 16 additions and 2 deletions

View File

@ -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>
* Makefile.in: Delete references to enquire.

View File

@ -8666,7 +8666,6 @@ ix86_expand_int_movcc (operands)
if ((compare_code == LTU || compare_code == GEU)
&& !second_test && !bypass_test)
{
/* Detect overlap between destination and compare sources. */
rtx tmp = out;
@ -8723,7 +8722,7 @@ ix86_expand_int_movcc (operands)
/*
* cmpl op0,op1
* sbbl dest,dest
* xorl $-1, dest
* notl dest
* [addl dest, cf]
*
* Size 8 - 11.
@ -8739,11 +8738,20 @@ ix86_expand_int_movcc (operands)
/*
* cmpl op0,op1
* sbbl dest,dest
* [notl dest]
* andl cf - ct, dest
* [addl dest, ct]
*
* 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,
gen_int_mode (cf - ct, mode),