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.