re PR rtl-optimization/17931 (andl and testb are not combined)

PR rtl-optimization/17931
	* config/i386/i386.c (ix86_rtx_costs): Handle COMPARE with
	ZERO_EXTRACT in it.

From-SVN: r88943
This commit is contained in:
Kazu Hirata 2004-10-12 17:14:42 +00:00 committed by Kazu Hirata
parent 22de4c3dfc
commit c271ba7711
2 changed files with 21 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2004-10-12 Kazu Hirata <kazu@cs.umass.edu>
PR rtl-optimization/17931
* config/i386/i386.c (ix86_rtx_costs): Handle COMPARE with
ZERO_EXTRACT in it.
2004-10-12 Richard Earnshaw <rearnsha@arm.com>
* arm.c (arm_print_operand): Use output_operand_lossage where possible

View File

@ -14326,6 +14326,21 @@ ix86_rtx_costs (rtx x, int code, int outer_code, int *total)
*total = COSTS_N_INSNS (ix86_cost->add);
return false;
case COMPARE:
if (GET_CODE (XEXP (x, 0)) == ZERO_EXTRACT
&& XEXP (XEXP (x, 0), 1) == const1_rtx
&& GET_CODE (XEXP (XEXP (x, 0), 2)) == CONST_INT
&& XEXP (x, 1) == const0_rtx)
{
/* This kind of construct is implemented using test[bwl].
Treat it as if we had an AND. */
*total = (COSTS_N_INSNS (ix86_cost->add)
+ rtx_cost (XEXP (XEXP (x, 0), 0), outer_code)
+ rtx_cost (const1_rtx, outer_code));
return true;
}
return false;
case FLOAT_EXTEND:
if (!TARGET_SSE_MATH || !VALID_SSE_REG_MODE (mode))
*total = 0;