On Fri, Jul 31, 2015 at 12:43:20AM +0000, Joseph Myers wrote: > On Wed, 29 Jul 2015, Michael Meissner wrote: > > > #6 Add support for using different names for the 64/128-bit integer > > conversion to IBM extended double, to allow a future version to > > switch the default for what long double is. It is not expected that GCC > > 6.x will make this switch, but we would like to eventually use the > > standard TF names for the library when the default change is made. If > > this isn't clear, the following names use 'tf' in them, when they use > > IBM extended double: > > That would be for a completely separate ABI, incompatible with all > existing objects both static and shared, since the existing ABI defines > these names to have their existing meanings?
The OpenPower 1.1 ABI for little endian PowerPC 64-bit does not mention the names at all. This ABI leaves it open whether long double is IBM extended double or IEEE 128-bit floating point. One of the goals of these patches is someday in the future change the default. A lot of work, particularly in the library space needs to be done to change the default. Until we can make the switch, users that want IEEE 128-bit support will need to use __float128. The intention of theese changes (currently unwritten) is to change the existing problematical names that use TF in their name to be something else, and provide via a weak reference an alias for the old name. So if for example, we change the default in GCC 7.0, code compiled by GCC 6.0 would work because it uses say __gcc_ltoq to call convert a 64-bit integer to IBM extended double instead of __floatditf. Older code that refers to __floatditf would still work fine. Then sometime later (such as GCC 8.0) we could make __floatditf be a weak reference to __floatdikt. If you have any ideas of how to do this seemlessly, please let me know. Steve Monroe and David Edelsohn requested that I explore that some date in the future, we will be able to use the standard names. I tend to be skeptical that we can do it without running into some incompatibility, and I feel that we just have to live with the existing TF names, and not use TF for IEEE 128-bit. Currently, I'm using KF for the IEEE 128-bit functions, even if long double is mapped to IEEE 128-bit instead of long double. Another wrinkle is the 32-bit RTEMS port actually uses IEEE 128-bit floating point with the standard names, because they never used the IBM extended double. -- Michael Meissner, IBM IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA email: meiss...@linux.vnet.ibm.com, phone: +1 (978) 899-4797