On Thu, Oct 22, 2015 at 05:05:26PM +0100, Kyrill Tkachov wrote: > Hi all, > > This patch enables the autoprefetcher heuristic for scheduling in AArch64. > It is enabled for the Cortex-A53, Cortex-A57 cores and is off for the other > cores, > leaving their behaviour unchanged. > > When enabled, the scheduler will try to sort groups of loads or stores in > order of the offset from a common base register. > > From what I understand of the relevant scheduling hooks, there are > essentially three levels of this: > 1) Don't use the autoprefetcher heuristic > 2) Use it to order loads/stores but allow other scheduling heuristics to > reorder them again to maximise multi-issue opportunities > 3) Use it to order loads/stores and keep that order, even if it can harm > multi-issue opportunities. > > With this patch I get a 0.4% improvement in SPECINT 2006 and 1.7% improvement > in SPECFP 2006 on a Cortex-A57 as well as improvements in various streaming > workloads. > > On Cortex-A53 I see improvements to various streaming workloads and there's > no regressions or improvements on SPEC2000. > > Bootstrapped and tested on aarch64-none-linux-gnu. > > Ok for trunk?
OK. Thanks, James > 2015-10-22 Kyrylo Tkachov <kyrylo.tkac...@arm.com> > > * config/aarch64/aarch64-protos.h > (struct tune_params): Add autoprefetcher_model field. > * config/aarch64/aarch64.c: Include params.h > (generic_tunings): Specify autoprefetcher_model value. > (cortexa53_tunings): Likewise. > (cortexa57_tunings): Likewise. > (cortexa72_tunings): Likewise. > (thunderx_tunings): Likewise. > (xgene1_tunings): Likewise. > (aarch64_first_cycle_multipass_dfa_lookahead_guard): New function. > (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD): Define. > (aarch64_override_options_internal): Set > PARAM_SCHED_AUTOPREF_QUEUE_DEPTH param.