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

--- Comment #1 from Robin Dapp <rdapp at gcc dot gnu.org> ---
The issue is due to:

  _279 = BIT_FIELD_REF <_480, 64, 0>;
  _330 = BIT_FIELD_REF <_480, 64, 64>;

  _340 = BIT_FIELD_REF <_481, 64, 0>;
  _350 = BIT_FIELD_REF <_481, 64, 64>;

Ideally they expand to simple slidedowns (from mode V4SI to mode V2SI) but here
this doesn't happen but we redundantly use subregs.  Those subregs are long due
for fixing.  Right now, at some point, we realize that we cannot "resolve" the
subreg and unfortunately go via memory instead.

In the good case we have a (subreg:V2SI (reg:V4SI ...) while in the bad case
there is "vec_extract V4SI -> DI" and (subreg:V2SI (reg:DI ...) but of course
those should result in identical code.

Another "fun" thing is that we seem to use more "VLA" modes when compiling for
VLS...  in particular for gathers.  Is that a regression from one of the gather
patches?

Reply via email to