https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119325
--- Comment #12 from Tobias Burnus <burnus at gcc dot gnu.org> ---
BTW, I added some diagnostic to the 'if' clause showing:
v64sf_fmod.c:147:109: warning: ‘__from’ (‘v2sf’ {aka ‘__vector(2) float’}):
size = 8, align = 64
v64sf_fmod.c:147:198: warning: ‘__from’ (‘v2sf’ {aka ‘__vector(2) float’}):
size = 8, align = 64
v64sf_fmod.c:147:3730: warning: ‘__from’ (‘v4sf’ {aka ‘__vector(4) float’}):
size = 16, align = 128
v64sf_fmod.c:147:3819: warning: ‘__from’ (‘v4sf’ {aka ‘__vector(4) float’}):
size = 16, align = 128
v64sf_fmod.c:147:7351: warning: ‘__from’ (‘v8sf’ {aka ‘__vector(8) float’}):
size = 32, align = 256
v64sf_fmod.c:147:7440: warning: ‘__from’ (‘v8sf’ {aka ‘__vector(8) float’}):
size = 32, align = 256
v64sf_fmod.c:147:10976: warning: ‘__from’ (‘v16sf’ {aka ‘__vector(16) float’}):
size = 64, align = 512
v64sf_fmod.c:147:11065: warning: ‘__from’ (‘v16sf’ {aka ‘__vector(16) float’}):
size = 64, align = 512
v64sf_fmod.c:147:14627: warning: ‘__from’ (‘v32sf’ {aka ‘__vector(32) float’}):
size = 128, align = 1024
v64sf_fmod.c:147:14716: warning: ‘__from’ (‘v32sf’ {aka ‘__vector(32) float’}):
size = 128, align = 1024
147 | DEF_VARIANTS2 (fmodf, sf, sf)
That's for the expansion of RESIZE_VECTOR:
amdgcn_veclib.h:89:3: warning: ‘__from’ (‘v2sf’ {aka ‘__vector(2) float’}):
size = 8, align = 64
89 | *((to_t *) &__from); \
| ^~~~~~~~~~~~~~~~~~~
i.e.
84 /* Cast between vectors with a different number of elements. */
85
86 #define RESIZE_VECTOR(to_t, from) \
87 ({ \
88 __auto_type __from = (from); \
89 *((to_t *) &__from); \
90 })