Commit c271ba77 by Kazu Hirata Committed by Kazu Hirata

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
parent 22de4c3d
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> 2004-10-12 Richard Earnshaw <rearnsha@arm.com>
* arm.c (arm_print_operand): Use output_operand_lossage where possible * arm.c (arm_print_operand): Use output_operand_lossage where possible
......
...@@ -14326,6 +14326,21 @@ ix86_rtx_costs (rtx x, int code, int outer_code, int *total) ...@@ -14326,6 +14326,21 @@ ix86_rtx_costs (rtx x, int code, int outer_code, int *total)
*total = COSTS_N_INSNS (ix86_cost->add); *total = COSTS_N_INSNS (ix86_cost->add);
return false; 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: case FLOAT_EXTEND:
if (!TARGET_SSE_MATH || !VALID_SSE_REG_MODE (mode)) if (!TARGET_SSE_MATH || !VALID_SSE_REG_MODE (mode))
*total = 0; *total = 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment