On Fri, Jun 09, 2017 at 10:30:02AM +0300, Maxim Kuvyrkov wrote:
> > On Jun 8, 2017, at 6:13 PM, Richard Earnshaw (lists) 
> > <richard.earns...@arm.com> wrote:
> > 
> > On 08/06/17 14:47, James Greenhalgh wrote:
> >> On Mon, Jan 30, 2017 at 08:35:00AM -0800, Andrew Pinski wrote:
> >>> On Mon, Jan 30, 2017 at 3:48 AM, Maxim Kuvyrkov
> >>> <maxim.kuvyr...@linaro.org> wrote:
> >>>> This patch port prefetch configuration from aarch32 backend to aarch64.  
> >>>> There is no code-generation change from this patch.
> >>>> 
> >>>> This patch also happens to address Kyrill's comment on Andrew's 
> >>>> prefetching patch at 
> >>>> https://gcc.gnu.org/ml/gcc-patches/2017-01/msg02133.html .
> >>>> 
> >>>> This patch also fixes a minor bug in 
> >>>> aarch64_override_options_internal(), which used "selected_cpu->tune" 
> >>>> instead of "aarch64_tune_params".
> >>> 
> >>> I am not a fan of the macro at all.
> >> 
> >> I'm with Andrew for this. The precedent in the AArch64 port is for
> >> explicitly spelling this out, as we do with the branch costs, approx_modes,
> >> vector costs etc.
> >> 
> >> I'd rather we went that route than the macro you're using. I don't have
> >> any objections to the rest of your patch.
> >> 
> >> Thanks,
> >> James
> >> 
> > 
> > I disagree with having to write all these things out, but I do agree
> > that we should be self-consistent within the port.
> 
> I'm re-writing the patch with approach that James suggested, and instead of
> AARCH64_PREFETCH_NOT_BENEFICIAL there will be "&generic_prefetch_tune", so
> not much copy-paste of parameters.
> 
> > 
> > The purpose of introducing the macros in the ARM port was to avoid the
> > common problem of merging adding new parameters with adding new ports.
> > C initializers for these tables assign values sequentially  with
> > zero-padding at the end, so failing to merge such changes carefully
> > leads to real bugs in the compiler (even if just performance bugs).
> > 
> > I notice that the last entry in the current tune params table is an int,
> > rather than something that is type-checked (like the penultimate entry -
> > an enum).  Having the final entry be type checked at least ensures that
> > the right number of elements exist, even if the order is not strictly
> > checked.
> 
> If you prefer, I can move "&generic_prefetch_tune" to the bottom of "struct
> tune_params", thus enabling type checking on struct pointer.

For the zero-cost/small-benefit tradefoff it gives, I'd say "why not".

With that change in place and the obvious rebase needed for patch 6/6 in
place, both this (4/6) and patch 6/6 are OK.

Cheers,
James

Reply via email to