This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RFC Migrating PowerPC to IEEE 128-bit Floating Point


On Tue, Oct 13, 2015 at 01:06:22PM -0500, Steven Munroe wrote:
> On Wed, 2015-09-30 at 21:15 +0000, Joseph Myers wrote: 
> > (It's fine for some functions to require particular instruction set 
> > extensions, e.g. for the ABI for the __float128 entry points to be that 
> > they require VSX support.  This is not of course an issue for 
> > little-endian where VSX support is required anyway, only for big-endian if 
> > any __float128 support is added there.  The build system would need to 
> > ensure the right options are passed when building __float128 files, 
> > without adding inappropriate VSX requirements when building other files.)

In my current patches to libgcc to add the support for __float128 I added
#pragma GCC target ("vsx,float128") 

to make sure the float 128 files were built with the VSX instruction set even
if the rest of libgcc (and eventually glibc) is built with other options.

> Technically only VMX support is required for parameter passing which
> includes PowerMAC G5/970, Freescale e6500, IBM POWER6 and later.

The compiler currently requires VSX, not just Altivec to enable __float128.
I could relax it to just Altivec, but I would worry about unintential unalgined
__float128 accesses given that the Altivec loads and stores ignore the bottom 3
address bits.
 
> 
> As you say the PPC64LE will have VMX/VSX by definition.
> 
> Modern PPC32BE and PPC64BE Hard-float systems support VMX/VSX ans can
> migrate to __float128 as this work is completed.
> 
> Older POWER servers (power4 power5 power5+) without VMX/VSX are or are
> going out of service and are not supported by current distros, and so
> will not be compiling for or using __float128. We will maintain
> versioned IBM long double (which only requires hard float) to support
> existing application migrated to newer systems and distros.
> 
> The PPC32 Soft-float ABI would continue to pass by reference and could
> migrate to __float128 if they choose.

In my original work, I allowed __float128 without the VSX instruction set,
using different emulator functions depending on whether you used VSX or not,
and it worked. However, it was getting cumbersome to document and explain the
two different emulators, and I worried about user code inadvertently having
some modules compiled with VSX and some without.

If there is perceived need, we can resurect this (assuming David is willing to
allow it).

Are there actual users that are asking for __float128 on embedded and other
non-server systems?

-- 
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA
email: meissner@linux.vnet.ibm.com, phone: +1 (978) 899-4797


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]