https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96895
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Michael Matz from comment #2) > The psABI doesn't say anything about such types, no. Maybe it could in some > additional info pages, but it's always a problem to codify behaviour > retroactively > in it, when conflicting implementations already exist. It is about > extension types, though, so we might be fine. > > FWIW, even ignoring the obvious relation of v1Xf to Xf, GCC behaviour for > float and clang behaviour for double is the most logical one: this extended > type is most > similar to a struct containing one float/double, and such are passed in XMM > registers per psABI. As this is also consistent with how a single > top-level float is passed, this choice is the most consistent one. This is > also > what the psABI _would_ say, if we had written it into it, so at least both > compilers would need a change to implement it. So vector types with element type T and N, a power-of-two, not otherwise specified are passes the same as struct S { T a[N] }; ? I guess there's mismatch then for AVX types with -mno-avx then at least (AVX512 are probably too big to be passed in registers).