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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2017-03-29
                 CC|                            |jakub at gcc dot gnu.org
             Blocks|                            |53947
            Summary|sparse access to Array of   |sparse access to Array of
                   |structures does not         |structures does not
                   |vectorize                   |vectorize using gathers
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
t.cc:20:17: note: not vectorized: not suitable for gather load _2 = f3[_1].x;
t.cc:20:17: note: bad data references.

that's because vect_check_gather_scatter computes a scale of 12 which isn't
supported by the HW (index _1, scale 12).

It seems to force a SSA name info->offset (_1) and thus doesn't handle
_1 * 3 to make scale == 4 supported.  In aos2 you conveniently expose
that as a SSA name yourself.

Looks like we need to split up scale by eventually emitting a multiplication
of the index vector separately.


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53947
[Bug 53947] [meta-bug] vectorizer missed-optimizations

Reply via email to