mips.c (mips_rtx_costs): Fix cost estimate for nor (AND (NOT OP1) (NOT OP2)).

2013-10-22  Steve Ellcey  <sellcey@mips.com>

	* config/mips/mips.c (mips_rtx_costs):  Fix cost estimate for nor
	(AND (NOT OP1) (NOT OP2)).

From-SVN: r203932
This commit is contained in:
Steve Ellcey 2013-10-22 18:24:43 +00:00 committed by Steve Ellcey
parent 88f4509ce6
commit ade97eb169
2 changed files with 17 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2013-10-22 Steve Ellcey <sellcey@mips.com>
* config/mips/mips.c (mips_rtx_costs): Fix cost estimate for nor
(AND (NOT OP1) (NOT OP2)).
2013-10-22 Bill Schmidt <wschmidt@vnet.ibm.com>
* config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Reverse

View File

@ -3796,6 +3796,18 @@ mips_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED,
return true;
}
}
/* (AND (NOT op0) (NOT op1) is a nor operation that can be done in
a single instruction. */
if (!TARGET_MIPS16
&& GET_CODE (XEXP (x, 0)) == NOT
&& GET_CODE (XEXP (x, 1)) == NOT)
{
cost = GET_MODE_SIZE (mode) > UNITS_PER_WORD ? 2 : 1;
*total = (COSTS_N_INSNS (cost)
+ set_src_cost (XEXP (XEXP (x, 0), 0), speed)
+ set_src_cost (XEXP (XEXP (x, 1), 0), speed));
return true;
}
/* Fall through. */