https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112773
--- Comment #12 from rguenther at suse dot de <rguenther at suse dot de> --- On Fri, 1 Dec 2023, rdapp at gcc dot gnu.org wrote: > 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. Hm, yeah, but is that an issue? I guess all vec_extract can end up at a variable position with VLA?