Hao,

Segher and I do not doubt that the patch can improve the examples and
testcases.  The question is if those examples are representative of
common situations and if the patch truly improves performance overall
-- for real workloads.  Can you test the performance impact of your
patch, not only demonstrating the change in code generation?

Also, I understand about the range of constants that you wish to address, but

TARGET_MIN_ANCHOR_OFFSET (targetm.min_anchor_offset)

and

TARGET_MAX_ANCHOR_OFFSET (targetm.max_anchor_offset)

are parameters for completely different features in GCC.  I realize
that some GCC ports define the values in close proximity in the source
files, but your patch to define TARGET_ANCHOR_CONST should not define
or change the other macros.  The patch only should define
TARGET_ANCHOR_CONST.

And I believe that it should be possible to define TARGET_ANCHOR_CONST
in rs6000.c

#define TARGET_ANCHOR_CONST 0x8000

instead of using targetm.anchor_const, which would be more consistent
with the style for definitions of other values in the rs6000 port.

Thanks, David


On Wed, Mar 17, 2021 at 9:21 PM HAO CHEN GUI <guih...@linux.ibm.com> wrote:
>
> David & Segher,
>
>     Thanks so much for your explanation. My patch wants to enables the
> constant anchor on rs6000 as TARGET_ANCHOR_CONST or targetm.anchor_const
> is undefined. I realized that we have addi and addis instructions. So
> the range of the offset could be a 32 bit constant.
>
>     I put a test case at
> https://github.ibm.com/wschmidt/power-gcc/issues/1042#issuecomment-28922825.
> It shows how anchor_const can improve asm output. With anchor_const, the
> second complex constant loading can be eliminated by cse if it is within
> the range of the first one.
>
>    Thanks again and looking forward to your advice.
>
> On 18/3/2021 上午 8:57, David Edelsohn wrote:
> > On Wed, Mar 17, 2021 at 8:26 PM Segher Boessenkool
> > <seg...@kernel.crashing.org> wrote:
> >> Hi!
> >>
> >> On Wed, Mar 17, 2021 at 03:35:30PM -0400, David Edelsohn wrote:
> >>> I disagree with your new definitions and I disagree with the manner in
> >>> which you are trying to change the values.
> >> Yes.
> >>
> >>> Your patch is NOT okay without a lot more explanation and justification.
> >> Which is why I said:
> >>
> >>>>> 1) This isn't suitable for stage 4.
> >> You give a lot more reasons to not want it, but that was enough for me.
> >>
> >>>>> 2) Please add a test case, which shows what it does, that it is useful.
> >> I meant there is no way we can accept this patch if we aren't shown what
> >> it does, and that that is a good thing.
> >>
> >>>>> 3) Does this work on other OSes than Linux?  What about Darwin and AIX?
> >> And here I meant that there is no way we can accept patches that
> >> influence code generation on all platforms when we have no idea what it
> >> does on most platforms.  I did not intend to suggest the patch would be
> >> more acceptable if it was tested on other platforms; I wanted to say it
> >> is not acceptable if it is not.
> >>
> >> The main issue is 2).  We need to understand what problem this patch is
> >> trying to solve.  I'm sure Hao Chen had a reason for doing this patch,
> >> so I'd like to know what it is trying to achieve, what it is trying to
> >> improve!
> > Investigating this with Segher, I believe that there is some confusion
> > about the "ANCHOR" macros.
> >
> > TARGET_MIN_ANCHOR_OFFSET and TARGET_MAX_ANCHOR_OFFSET are not related
> > to TARGET_ANCHOR_CONST.
> >
> > Also, TARGET_ANCHOR_CONST can be defined as a macro to trigger the
> > hook, and doesn't need targetm.anchor_const.
> >
> > Any change to TARGET_ANCHOR_CONST requires extensive performance
> > testing.  Yes, it presumably fixes the testcase, but the impact on
> > overall performance is the critical question.
> >
> > Thanks, David

Reply via email to