On 01/22/2018 06:46 AM, Luis Machado wrote:
> The following patch adds an option to control software prefetching of memory
> references with non-constant/unknown strides.
> 
> Currently we prefetch these references if the pass thinks there is benefit to
> doing so. But, since this is all based on heuristics, it's not always the case
> that we end up with better performance.
> 
> For Falkor there is also the problem of conflicts with the hardware 
> prefetcher,
> so we need to be more conservative in terms of what we issue software prefetch
> hints for.
> 
> This also aligns GCC with what LLVM does for Falkor.
> 
> Similarly to the previous patch, the defaults guarantee no change in behavior
> for other targets and architectures.
> 
> I've regression-tested and bootstrapped it on aarch64-linux. No problems 
> found.
> 
> Ok?
> 
> 2018-01-22  Luis Machado  <luis.mach...@linaro.org>
> 
>       Introduce option to control whether the software prefetch pass should
>       issue prefetch hints for non-constant strides.
> 
>       gcc/
>       * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
>       <prefetch_dynamic_strides>: New const unsigned int field.
>       * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
>       prefetch_dynamic_strides.
>       (exynosm1_prefetch_tune): Likewise.
>       (thunderxt88_prefetch_tune): Likewise.
>       (thunderx_prefetch_tune): Likewise.
>       (thunderx2t99_prefetch_tune): Likewise.
>       (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to 0.
>       (aarch64_override_options_internal): Update to set
>       PARAM_PREFETCH_DYNAMIC_STRIDES.
>       * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
>       * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
>       * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
>       * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
>       prefetch-dynamic-strides setting.
OK for the trunk.
jeff

Reply via email to