On Thu, Jun 23, 2016 at 02:45:21PM +0530, Virendra Pathak wrote: > Hi gcc-patches group, > > Please find the patch for adding rtx_costs routine for vulcan cpu. > > Tested with compiling cross aarch64-linux-gcc , bootstrapped native > aarch64-unknown-linux-gnu > and make check (gcc). No new regression failure is added by this patch. > > Kindly review and merge the patch to trunk, if the patch is okay. > Thanks.
This is OK, but I have the same question for you as I had for the qdf24xx tuning that Jim proposed, so I won't commit it yet... > gcc/ChangeLog: > > Virendra Pathak <virendra.pat...@broadcom.com> > > * config/aarch64/aarch64-cores.def: Update vulcan COSTS. > * config/aarch64/aarch64-cost-tables.h > (vulcan_extra_costs): New variable. > * config/aarch64/aarch64.c > (vulcan_addrcost_table): Likewise. > (vulcan_regmove_cost): Likewise. > (vulcan_vector_cost): Likewise. > (vulcan_branch_cost): Likewise. > (vulcan_tunings): Likewise. > > + { > + /* FP SFmode */ > + { > + COSTS_N_INSNS (16), /* Div. */ > + COSTS_N_INSNS (6), /* Mult. */ > + COSTS_N_INSNS (6), /* Mult_addsub. */ > + COSTS_N_INSNS (6), /* Fma. */ > + COSTS_N_INSNS (6), /* Addsub. */ > + COSTS_N_INSNS (5), /* Fpconst. */ > + COSTS_N_INSNS (5), /* Neg. */ > + COSTS_N_INSNS (5), /* Compare. */ > + COSTS_N_INSNS (7), /* Widen. */ > + COSTS_N_INSNS (7), /* Narrow. */ > + COSTS_N_INSNS (7), /* Toint. */ > + COSTS_N_INSNS (7), /* Fromint. */ > + COSTS_N_INSNS (7) /* Roundint. */ > + }, > + /* FP DFmode */ > + { > + COSTS_N_INSNS (23), /* Div. */ > + COSTS_N_INSNS (6), /* Mult. */ > + COSTS_N_INSNS (6), /* Mult_addsub. */ > + COSTS_N_INSNS (6), /* Fma. */ > + COSTS_N_INSNS (6), /* Addsub. */ > + COSTS_N_INSNS (5), /* Fpconst. */ > + COSTS_N_INSNS (5), /* Neg. */ > + COSTS_N_INSNS (5), /* Compare. */ > + COSTS_N_INSNS (7), /* Widen. */ > + COSTS_N_INSNS (7), /* Narrow. */ > + COSTS_N_INSNS (7), /* Toint. */ > + COSTS_N_INSNS (7), /* Fromint. */ > + COSTS_N_INSNS (7) /* Roundint. */ > + } Recently ( https://gcc.gnu.org/ml/gcc-patches/2016-06/msg00251.html , https://gcc.gnu.org/ml/gcc-patches/2016-06/msg01418.html ), I changed the Cortex-A57 and Cortex-A53 cost tables to make the cost of a floating-point operation relative to the cost of a floating-point move. This gave some code generation benefits, particularly around conditional execution and generation of constants. Did you see those patches, and did you consider whether there would be a benefit to doing the same for Vulcan? Thanks, James