On Tue, Sep 2, 2025 at 2:31 PM Robin Dapp <rdapp....@gmail.com> wrote:
>
> >> So even though our strided loads do support signed strides, we cannot go 
> >> via
> >> the
> >>    recognize gather
> >> -> recognize strided offset
> >> -> strided load
> >> route because the initial signed-offset gather will be unsupported :/
> >
> > I did want to relax the initial STMT_VINFO_GATHER_SCATTER_P detection
> > to not require any target support (there's emulated gather after all!).  
> > But the
> > above isn't a gather, it's a strided (group) load anyway.
>
> Yes, and I thought we wanted to recognize these as gather with index {0, 1, 2,
> 3, stride + 0, stride + 1, stride + 2, stride + 3, ...}?  Then change the
> element size to 32 so the index becomes {0, stride, stride * 2, ...}, which,
> eventually, would be emitted as strided load if supported.

Yes, that was the idea.  Though I'd never actually use that {0, 1, 2,
3, stride + ... }
thing but only ever the enlarged element size.

> >> The other option would be to have an alternative to the gather -> strided
> >> connection and additionally check for strided_load support directly?  
> >> Currently
> >> I see no way around this given the restrictions imposed by our insns.
> >
> > I think that rather than going via vect_check_gather_scatter in
> > vect_use_strided_gather_scatters_p we should directly query gather optab
> > support with the appropriate offset.  Don't you have gather optabs like
> > gatherV4SISI for SImode scalar strides already?
>
> Our gather optabs currently just have vector modes for the index.  The
> mask_len_strided_load<mode> optab just has the data mode and supports Pmode
> strides.
> The gather docs also specify the index operand as a vector.  Do we want to
> relax this and allow a scalar as well?  That way we could at least query a
> unified optab in the above case, rather than querying both gather_load and
> mask_len_strided_load.

I think it's fine to query both gather_load and mask_len_strided_load.  But
unifying the optabs, allowing scalar mode gather offset works for me as well.

Richard.

>
> --
> Regards
>  Robin
>

Reply via email to