https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104728
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Ever confirmed|0 |1 Last reconfirmed| |2022-03-01 Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Hmm, I've done void b (int *p) { p = (int *)__builtin_assume_aligned(p, __BIGGEST_ALIGNMENT__); int *q = p + 255; for(; p < q; ++p, --q) { int t = *p; *p = *q; *q = t; } } and on x86_64 the accesses are all vectorized as aligned. So what's not supported is aligned load + permuting elements as { 3, 2, 1, 0 } (reversing them). I can't seem to find a suitable target for dg-require-effective-target here. There's the kitchen-sink vect_perm that sparc doesn't have so I could use that I guess.