https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115054
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- https://learn.microsoft.com/en-us/cpp/build/x64-calling-convention?view=msvc-170#parameter-passing So it uses floating point as the type. But then it is vague on those kind of type. Gcc treats _Float16 similar to how __m64 and __m128 are passed that is via integer registers.