https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110953
--- Comment #1 from cqwrteur <unlvsur at live dot com> --- TLDR: floating-point and __m128 stack XMM8 XMM7 XMM6 XMM5 XMM4 XMM3 XMM2 XMM1 XMM0 __m256 stack YMM8 YMM7 YMM6 YMM5 YMM4 YMM3 YMM2 YMM1 YMM0 __m512 stack ZMM8 ZMM7 ZMM6 ZMM5 ZMM4 ZMM3 ZMM2 ZMM1 ZMM0 bool, integer and __uint128_t/__int128_t and std::float128_t stack R19 R18 R17 R16 R9 R8 RDX RCX Aggregates (8, 16, 32, or 64 bits. 128 bits split to 2) and __m64 stack R19 R18 R17 R16 R9 R8 RDX RCX Other aggregates, as pointers stack R19 R18 R17 R16 R9 R8 RDX RCX carry flag for exception