On Wed, Oct 06, 2021 at 06:34:33PM +0200, Jakub Jelinek wrote: > On Wed, Oct 06, 2021 at 11:07:30AM -0500, Segher Boessenkool wrote: > > We can emulate it everywhere (using libquadmath for example). This can > > magically make -msoft-float work as well everywhere, btw. > > Emulation is one thing, but another one is where are those __float128 or > quad long double arguments and return values passed. On power8 le I think > they are passed in VSX registers, aren't they?
On BE just as well. And on 32 bit. > But are those available everywhere where ppc64 is supported? For ppc32 > certainly not, I don't remember for ppc64. You can use VSX registers on 32 bit just fine. > Sure, the ABI could say pass it in e.g. in a pair of integer registers... Or more, on 32-bit. It isn't very useful to try to optimise this, so it is easiest to just handle it the same as a struct for register passing. For 32-bit this means it then is passed and returned as a pointer, for the older 64-bit ABIs it means it is passed as two GPRs but returned as a pointer, and for the ELFv2 ABI (on both BE and LE) it means that it is passed as well as returned in two GPRs. Segher