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

--- Comment #11 from Robin Dapp <rdapp at gcc dot gnu.org> ---
When I define a vec_extract...bi pattern we don't enter the if (vec_extract) in
expmed because e.g.

bitsize = {1, 0}
bitnum = {3, 4}

and GET_MODE_BITSIZE (innermode) = {1, 0} with innermode = BImode.

This fails multiple_p (bitnum, GET_MODE_BITSIZE (innermode), &pos).

It is a multiple of course, but still dependent on the actual vector length.
(So we would also need to extract a [3 4] from the vector).

That would be the same as an extract_last with a CONST_M1 mask.  Maybe that's
an option?  So if we have an extract_last and no loop len or mask fall back to
an extract_last with a full mask?  That would delegate the length calculation
to the backend.

Reply via email to