https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119361

--- Comment #2 from Robin Dapp <rdapp at gcc dot gnu.org> ---
I looked into this some more and it points to a general deficiency in how we
handle the split between VLA and VLS modes.
With ...bits=zvl the RVVM1SI etc modes. become VLS modes.  In turn, this means
that whenever we expand e.g. a vector(4) int we get an RVVM1SI mode back.
But not all expanders (like vec_extract) are implemented for those modes but
just for the "real" VLS modes like V4SI.  As we "convert" back and forth
between those modes and lack some expanders the resulting code is worse.

I think a bit of an overhaul is necessary here for GCC 16.  Right now I suppose
for some cases you'll get better codegen without ...bits=zvl.  There are also
cases where zvl gets us better code, though :/

Reply via email to