I want to discuss changes that I think we need to make across the open source toochain to allow us to change the long double type on PowerPC hardware from using the IBM extended double (i.e. a pair of doubles) to the IEEE 128-bit format defined in IEEE 754.
I wasn't sure whom to address this to, so I took a scatter shot approach. I likely missed a few people, and some people were added that may not need to participate in the discussion. Sorry for either not including you initially or for including you by mistake. I added people from the following areas: PowerPC folk Langugage maintainers: At the moment, only the C/C++ front ends have code to support both 128-bit floating point types. The other languages use just the defaults provided by the machine maintainers. However, it may be we will need to think about rules for code being compiled and linked with a different long double format. Arm/x86 maintainers: It is possible that these sorts of changes might mesh with things that are being planned. For example, maybe x86 might want to explore changing the default for long double from the traditional Intel 80-bit format to IEEE 128-bit. And there might be issues with the several different 16-bit floating point formats floating around. Glibc developers: I added Tulio and Carlos, but I suspect there may be others that might want to respond. Binutils developers: I added Alan, Peter, and Nick. I don't know who else might be interested. Gdb developers: I added Pedro and Ulrich, but I don't know if there are others that may be interested. At the moment, this change is only done if you use the following option: --with-long-double-format=ieee option when configuring GCC. There will be some changes need to make this option work as intended. You will also need an up to date glibc and binutils if you want to use this option. In terms of time table, I feel that whatever changes are made NEED to be done by the time GCC 11 is released. Each topic will be done as a followup to this post, so that people can concentrate on individual features via threaded email readers, rather than wading through the whole list over time. For those of you that are not aware, the PowerPC ISA 3.0 (power9) now has instructions that implement IEEE 754 128-bit floating point directly. Over the last few releases, I have been adding support for IEEE 128-bit floating point into GCC. On power7 and power8 hardware we use soft-float emulator to emulate the IEEE 128-bit floating point format. At the moment, we are only considering doing these changes on the little endian PowerPC linux systems. In theory, it could work on big endian 64-bit PowerPC linux systems that are configured with a minimum cpu of power7. You would need to edit the libgcc and gcc support to enable IEEE 128-bit floating point on those systems and build current glibc for those systems. However, I'm not planning to do this work. In addition, the IEEE 128-bit instructions are not enabled on 32-bit systems (you can use the soft-fp emulation, just not the hardware support). This is due to the issue within GCC we don't support TImode on 32-bit systems. Some parts of GCC require a supported integer that is the same size as basic types. If somebody is motivated to do that work, that is fine, but I'm not planning to do that work. -- Michael Meissner, IBM IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA email: meiss...@linux.ibm.com, phone: +1 (978) 899-4797