https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111133
Bug ID: 111133 Summary: SLP of scatters not implemented Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: rguenth at gcc dot gnu.org Target Milestone: --- There is no scatter support for (single-lane) SLP. For example #define N 16 void __attribute__((noipa)) f (float *restrict y, float *restrict x, int *restrict indices) { for (int i = 0; i < N; ++i) { x[indices[i * 2]] = y[i * 2] + 1; x[indices[i * 2 + 1]] = y[i * 2 + 1] + 2; } } doesn't vectorize. Note this is also due to t.c:6:21: note: === vect_analyze_data_ref_dependences === t.c:8:25: missed: possible alias involving gather/scatter between *_10 and *_20 t.c:6:21: missed: bad data dependence. but with SLP scatters guarantee left-to-right commit so that shouldn't be an issue there and also shows why SLP is even required for this to vectorize.