https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98542
--- Comment #3 from rguenther at suse dot de <rguenther at suse dot de> --- On Wed, 6 Jan 2021, rsandifo at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98542 > > --- Comment #2 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> > --- > With the follow-on mentioned (āiā being 32-bits rather than 64) we'd > still want to treat the structure access as a single group, even though > the fields are different sizes. Supporting that is going to be tricky though. Presumably this only works for { int, double }, not for { int, int, double } and accessing the 2nd int (or it all depends on endianess?). Anyway, one thing to look at is classify SLP load + permute as load-lanes and think of how to represent this in the SLP graph. A load-lanes is similar to a VEC_PERM node but it has a single input and multiple outputs (in contrast to VEC_PERM with multiple inputs and a single output). Guess I'd call it SCATTER and we'd have a load-permutation style specification of the output lanes (it simplifies things if we constrain it to scatter all incoming scalar lanes plus have the same number of output lanes per output). Multiple outputs do not fit the SLP node style very well (SCALAR_STMTS/DEFs is not meaningful, etc.), so it really needs some more thought on the representation side.