https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106106
--- Comment #5 from rsandifo at gcc dot gnu.org
---
FWIW, I agree with Richard that this seems like something that
should be fixed in RTL. In some ways it's the opposite of
what lower-subreg does: whereas lower-subreg is a bit like SRA
for RTL
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106106
--- Comment #4 from Tamar Christina ---
>
> Is the fact that float32x2x2_t is an aggregate with a field named 'val'
> part of the neon API?
Yeah, it's mandated by ACLE
https://arm-software.github.io/acle/main/acle.html#vector-array-data-types-
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106106
Richard Biener changed:
What|Removed |Added
CC||jamborm at gcc dot gnu.org,
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106106
--- Comment #2 from Tamar Christina ---
(In reply to Richard Biener from comment #1)
> SRA is eliding 'v' by doing what it does, so it essentially changes
> it looks like providing __builtin_neon_vld2_lanev2sf with float32x2x2
> argument and ret
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106106
--- Comment #1 from Richard Biener ---
SRA is eliding 'v' by doing what it does, so it essentially changes
D.22939 = __builtin_aarch64_ld2v2sf (p1_2(D));
v = D.22939;
__b = v;
D.22937 = __builtin_aarch64_ld2_lanev2sf (p2_3(D), __b, 1);