On 20/06/16 14:57, James Greenhalgh wrote:
>
> Hi,
>
> As recently done for Cortex-A57 [1], this patch rebases the floating-point
> cost table for Cortex-A53 to be relative to the cost of a floating-point move.
> I wrote a little more on the justification for doing this in the other patch,
> but in summary this is what other targets and sub-targets do, so we should
> fall in line with that.
>
> Unlike the Cortex-A57 changes, this had no performance impact across
> Spec2000 and Spec2006. I'm posting it to keep the strategy for costs
> aligned between the two cores.
>
> Bootstrapped on aarch64-none-linux-gnu and arm-none-linux-gnueabihf with
> no issues.
>
> OK?
>
> Thanks,
> James
>
> [1]: https://gcc.gnu.org/ml/gcc-patches/2016-06/msg00251.html
>
> ---
> 2016-06-20 James Greenhalgh
>
> * config/arm/aarch-cost-tables.h (cortexa53_extra_costs): Make FP
> costs relative to the cost of a register move.
>
OK.
R.
>
> 0001-AArch64-Give-some-new-costs-for-Cortex-A53-floating-.patch
>
>
> diff --git a/gcc/config/arm/aarch-cost-tables.h
> b/gcc/config/arm/aarch-cost-tables.h
> index 5f42253..8bcfcb4 100644
> --- a/gcc/config/arm/aarch-cost-tables.h
> +++ b/gcc/config/arm/aarch-cost-tables.h
> @@ -191,35 +191,35 @@ const struct cpu_cost_table cortexa53_extra_costs =
>{
> /* FP SFmode */
> {
> - COSTS_N_INSNS (15),/* div. */
> - COSTS_N_INSNS (3), /* mult. */
> - COSTS_N_INSNS (7), /* mult_addsub. */
> - COSTS_N_INSNS (7), /* fma. */
> - COSTS_N_INSNS (3), /* addsub. */
> - COSTS_N_INSNS (1), /* fpconst. */
> - COSTS_N_INSNS (2), /* neg. */
> - COSTS_N_INSNS (1), /* compare. */
> - COSTS_N_INSNS (3), /* widen. */
> - COSTS_N_INSNS (3), /* narrow. */
> - COSTS_N_INSNS (3), /* toint. */
> - COSTS_N_INSNS (3), /* fromint. */
> - COSTS_N_INSNS (3) /* roundint. */
> + COSTS_N_INSNS (5), /* div. */
> + COSTS_N_INSNS (1), /* mult. */
> + COSTS_N_INSNS (2), /* mult_addsub. */
> + COSTS_N_INSNS (2), /* fma. */
> + COSTS_N_INSNS (1), /* addsub. */
> + 0, /* fpconst. */
> + COSTS_N_INSNS (1), /* neg. */
> + 0, /* compare. */
> + COSTS_N_INSNS (1), /* widen. */
> + COSTS_N_INSNS (1), /* narrow. */
> + COSTS_N_INSNS (1), /* toint. */
> + COSTS_N_INSNS (1), /* fromint. */
> + COSTS_N_INSNS (1) /* roundint. */
> },
> /* FP DFmode */
> {
> - COSTS_N_INSNS (30),/* div. */
> - COSTS_N_INSNS (3), /* mult. */
> - COSTS_N_INSNS (7), /* mult_addsub. */
> - COSTS_N_INSNS (7), /* fma. */
> - COSTS_N_INSNS (3), /* addsub. */
> - COSTS_N_INSNS (1), /* fpconst. */
> - COSTS_N_INSNS (2), /* neg. */
> - COSTS_N_INSNS (1), /* compare. */
> - COSTS_N_INSNS (3), /* widen. */
> - COSTS_N_INSNS (3), /* narrow. */
> - COSTS_N_INSNS (3), /* toint. */
> - COSTS_N_INSNS (3), /* fromint. */
> - COSTS_N_INSNS (3) /* roundint. */
> + COSTS_N_INSNS (10),/* div. */
> + COSTS_N_INSNS (1), /* mult. */
> + COSTS_N_INSNS (2), /* mult_addsub. */
> + COSTS_N_INSNS (2), /* fma. */
> + COSTS_N_INSNS (1), /* addsub. */
> + 0, /* fpconst. */
> + COSTS_N_INSNS (1), /* neg. */
> + 0, /* compare. */
> + COSTS_N_INSNS (1), /* widen. */
> + COSTS_N_INSNS (1), /* narrow. */
> + COSTS_N_INSNS (1), /* toint. */
> + COSTS_N_INSNS (1), /* fromint. */
> + COSTS_N_INSNS (1) /* roundint. */
> }
>},
>/* Vector */
>