Hi James, > Did you see those patches, and did you consider whether there would be a > benefit to doing the same for Vulcan? No. I have not studied those patches yet. Currently I am working on adding vulcan scheduler as a next patch. Kindly advise on the following: Could this patch be merged now (assuming you are okay), and I will update vulcan costs based on your patch later (after vulcan scheduler)?
Thanks for your time. with regards, Virendra Pathak On Wed, Jun 29, 2016 at 4:11 PM, James Greenhalgh <james.greenha...@arm.com> wrote: > 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 >