The following 3 patches improve __ibm128 on the PowerPC GCC compiler: The first patch allows the use of the __ibm128 keyword on non-VSX systems. Originally, the __ibm128 keyword was only enabled when the IEEE 128-bit floating point is enabled. Sometime back in the GCC 12 development period, Segher asked that the __ibm128 keyword be allowed in older systems that don't support IEEE 128-bit. This patch allows __ibm128 to be used if either IEEE 128-bit is enabled or long double used the IBM 128-bit format.
The second patch fixes PR target/105334. This PR complains that the __ibm128 keyword is not defined on a system that uses IEEE 128-bit long double, but the user used the -msoft-float option. This patch removes the checks for hardware floating point support in IBM 128-bit long double support, and also enables the __ibm128 keyword. The existing test gcc.target/powerpc/pr105334.c will now pass on a system using IEEE 128-bit long double. The third patch uses the 'w' suffix for __ibm128 constants. It turns out we had documented using the 'w' suffix for __ibm128, but we had never implemented it. I have tested these patches on the following systems: 1) LE Power10 using --with-cpu=power10 --with-long-double-format=ieee 2) LE Power10 using --with-cpu=power9 --with-long-double-format=ibm 3) LE Power10 using --with-cpu=power8 --with-long-double-format=ibm 4) LE Power10 using --with-cpu=power10 --with-long-double-format=ibm 5) LE Power9 using --with-cpu=power9 --with-long-double-format=ibm 6) BE Power8 using --with-cpu=power8 --with-long-double-format=ibm 7) BE Power8 using --with-cpu=power5 --with-long-double-format=ibm There were no regressions in the build or in the tests. On the power10 with long double using the IEEE 128-bit format, pr105334.c now runs where it previously failed. Can I check these patches into the trunk? Did we want to back port these changes to older GCC's? -- Michael Meissner, IBM PO Box 98, Ayer, Massachusetts, USA, 01432 email: meiss...@linux.ibm.com