On Wed, Jul 14, 2021 at 5:11 AM guojiufu via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> On 2021-07-13 23:38, Segher Boessenkool wrote:
> > On Mon, Jul 12, 2021 at 08:20:14AM +0200, Richard Biener wrote:
> >> On Fri, 9 Jul 2021, Segher Boessenkool wrote:
> >> > Almost all targets just use Pmode, but there is no such guarantee I
> >> > think, and esp. some targets that do not have machine insns for this
> >> > (but want to generate different code for this anyway) can do pretty much
> >> > anything.
> >> >
> >> > Maybe using just Pmode here is good enough though?
> >>
> >> I think Pmode is a particularly bad choice and I'd prefer word_mode
> >> if we go for any hardcoded mode.
> >
> > In many important cases you use a pointer as iteration variable.
> >
> > Is word_mode register size on most current targets?
> Had a search on the implementation, word_mode is the mode on size
> BITS_PER_WORD
> in MODE_INTs.  Actually, when targets define Pmode and BITS_PER_WORD,
> these two
> macros are aligned -:), and it seems most targets define both these two
> macros.
>
> >
> >> s390x for example seems to handle
> >> both SImode and DImode (but names the helper gen_doloop_si64
> >> for SImode?!).
> >
> > Yes, so Pmode will work fine for 390.  It would be nice if we could
> > allow multiple modes here, certainly.  Can we?
>
> :), for other IVs, multiple modes are allowed to add as candidates;
> while only one doloop iv is added.  Comparing the supporting more
> doloop IVs, it seems changing the doloop iv mode is easy relatively
> for me.  So, the patch is trying to update doloop iv.
>
> >
> >> But indeed it looks like somehow querying doloop_end
> >> is going to be difficult since the expander doesn't have any mode,
> >> so we'd have to actually try emit RTL here.
> >
> > Or add a well-designed target macro for this.  "Which modes do we like
> > for IVs", perhaps?
>
> In the new patch, a target hook preferred_doloop_mode is introduced.
> While
> this hook is only for doloop iv at this time.
> Maybe we could have preferred_iv_mode if needed. In the current code,
> IVs
> are free to be added in different types, and the cost model is applied
> to determine which IV may be better. The iv mode would be one factor for
> cost.

I guess IVOPTs could directly look at PROMOTE_MODE & friends to
decide whether the IV increment has extra cost due to subregs/extensions
and account for that.  The rest should be really driven by the cost to express
IV uses, I don't think putting another target hook in here will help
reduce GIGO.

Richard.

>
> BR,
> Jiufu
>
> >
> >
> > Segher

Reply via email to