Commit 5619162c by Kyrylo Tkachov Committed by Kyrylo Tkachov

arm.c (arm_new_rtx_costs): Use destination mode when handling a SET rtx.

2014-01-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

	* config/arm/arm.c (arm_new_rtx_costs): Use destination mode
	when handling a SET rtx.

From-SVN: r206521
parent 2d17b99f
2014-01-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com> 2014-01-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/arm/arm.c (arm_new_rtx_costs): Use destination mode
when handling a SET rtx.
2014-01-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/arm/arm-cores.def (cortex-a53): Specify FL_CRC32. * config/arm/arm-cores.def (cortex-a53): Specify FL_CRC32.
(cortex-a57): Likewise. (cortex-a57): Likewise.
(cortex-a57.cortex-a53): Likewise. Remove redundant flags. (cortex-a57.cortex-a53): Likewise. Remove redundant flags.
......
...@@ -9092,6 +9092,9 @@ arm_new_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer_code, ...@@ -9092,6 +9092,9 @@ arm_new_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer_code,
{ {
case SET: case SET:
*cost = 0; *cost = 0;
/* SET RTXs don't have a mode so we get it from the destination. */
mode = GET_MODE (SET_DEST (x));
if (REG_P (SET_SRC (x)) if (REG_P (SET_SRC (x))
&& REG_P (SET_DEST (x))) && REG_P (SET_DEST (x)))
{ {
...@@ -9106,6 +9109,8 @@ arm_new_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer_code, ...@@ -9106,6 +9109,8 @@ arm_new_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer_code,
in 16 bits in Thumb mode. */ in 16 bits in Thumb mode. */
if (!speed_p && TARGET_THUMB && outer_code == COND_EXEC) if (!speed_p && TARGET_THUMB && outer_code == COND_EXEC)
*cost >>= 1; *cost >>= 1;
return true;
} }
if (CONST_INT_P (SET_SRC (x))) if (CONST_INT_P (SET_SRC (x)))
...@@ -9113,7 +9118,6 @@ arm_new_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer_code, ...@@ -9113,7 +9118,6 @@ arm_new_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer_code,
/* Handle CONST_INT here, since the value doesn't have a mode /* Handle CONST_INT here, since the value doesn't have a mode
and we would otherwise be unable to work out the true cost. */ and we would otherwise be unable to work out the true cost. */
*cost = rtx_cost (SET_DEST (x), SET, 0, speed_p); *cost = rtx_cost (SET_DEST (x), SET, 0, speed_p);
mode = GET_MODE (SET_DEST (x));
outer_code = SET; outer_code = SET;
/* Slightly lower the cost of setting a core reg to a constant. /* Slightly lower the cost of setting a core reg to a constant.
This helps break up chains and allows for better scheduling. */ This helps break up chains and allows for better scheduling. */
......
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