Am 23.10.19 um 22:36 schrieb J. Gareth Moreton:
So I did a bit of reading after finding the "mpx-linux64-abi.pdf" document.  As I suspected, the System V ABI is like vectorcall when it comes to using the XMM registers... only the types __m128, __float128 and __Decimal128 use the "SSEUP" class and hence use the entire register.  The types are opaque, but both their size and alignment are 16 bytes, so I think anything that abides by those rules can be considered equivalent.

If the complex type is unaligned, the two fields get their own XMM register.  If aligned, they both go into %xmm0.  At least that is what I gathered from reading the document - it's a little unclear sometimes.

I briefly tested with god bolt (https://godbolt.org/): records of two double are passed in two xmm registers regardless of the alignment, two floats (so single) are passed in one xmm register.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to