[AArch64 costs 13/18] Improve costs for div/mod
gcc/ * config/aarch64/aarch64.c (aarch64_rtx_costs): Improve costs for DIV/MOD. Co-Authored-By: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> From-SVN: r210505
This commit is contained in:
parent
7cc2145f54
commit
4105fe3885
|
@ -1,4 +1,10 @@
|
|||
2014-03-16 James Greenhalgh <james.greenhalgh@arm.com>
|
||||
2014-05-16 James Greenhalgh <james.greenhalgh@arm.com>
|
||||
Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
|
||||
|
||||
* config/aarch64/aarch64.c (aarch64_rtx_costs): Improve costs for
|
||||
DIV/MOD.
|
||||
|
||||
2014-05-16 James Greenhalgh <james.greenhalgh@arm.com>
|
||||
Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
|
||||
|
||||
* config/aarch64/aarch64.c (aarch64_rtx_arith_op_extract_p): New.
|
||||
|
|
|
@ -5476,7 +5476,6 @@ cost_minus:
|
|||
|
||||
case MOD:
|
||||
case UMOD:
|
||||
*cost = COSTS_N_INSNS (2);
|
||||
if (speed)
|
||||
{
|
||||
if (GET_MODE_CLASS (GET_MODE (x)) == MODE_INT)
|
||||
|
@ -5493,15 +5492,15 @@ cost_minus:
|
|||
|
||||
case DIV:
|
||||
case UDIV:
|
||||
*cost = COSTS_N_INSNS (1);
|
||||
case SQRT:
|
||||
if (speed)
|
||||
{
|
||||
if (GET_MODE_CLASS (GET_MODE (x)) == MODE_INT)
|
||||
*cost += extra_cost->mult[GET_MODE (x) == DImode].idiv;
|
||||
else if (GET_MODE (x) == DFmode)
|
||||
*cost += extra_cost->fp[1].div;
|
||||
else if (GET_MODE (x) == SFmode)
|
||||
*cost += extra_cost->fp[0].div;
|
||||
if (GET_MODE_CLASS (mode) == MODE_INT)
|
||||
/* There is no integer SQRT, so only DIV and UDIV can get
|
||||
here. */
|
||||
*cost += extra_cost->mult[mode == DImode].idiv;
|
||||
else
|
||||
*cost += extra_cost->fp[mode == DFmode].div;
|
||||
}
|
||||
return false; /* All arguments need to be in registers. */
|
||||
|
||||
|
|
Loading…
Reference in New Issue