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 })

Reply via email to