This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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] | |
As we have discussed on the patch submission, I'm going to be back porting the IEEE 128-bit changes that we've made recently in the trunk to the GCC 8.x branch. The motivation is to allow distributions to switch to IEEE 128-bit long double without having to wait for the GCC 9.1 compiler. I'm sending out these patches in terms of the submission to the FSF trunk. I will probably wait a few days before committing the patches just in case something major was broken. Patch #1 is the May 21st submission. Note, in this patch, we had 3 separate types activelly used (__ibm128, __float128, and long double). However we eventually decided we only wanted to use 2 types, and this changed in Patch #2. Patch #2 is the June 1-8th changes by me (Michael Meissner), Segher Boessenkool and David Edelsohn. In the second set of changed we changed this to the current two active types, one of which is the long double type, and other is the alternate type. We also changed the C++ mangling of the float128 type (and long double if it uses the IEEE 128-bit encoding) from "U10__float128" to "u9__ieee128". We put out weak aliases so that old code could still call functions compiled with the new compiler. Patch #3 is the change committed on June 18th that reworks the internal ordering of the 128-bit binary floating point types. This prevents the machine independent portions of the compiler trying to convert __ibm128 data to __float128 if you are running on a Power9 (ISA 3.0) system that has 128-bit hardware floating point support. Patch #4 will be a collection of small patches to fix some problems that were noticed in running the test suite with the long double default changed to IEEE 128-bit floating point. This is patch #3. [gcc] 2018-06-18 Michael Meissner <meissner@linux.ibm.com> Back port from trunk 2018-06-18 Michael Meissner <meissner@linux.ibm.com> PR target/85358 * config/rs6000/rs6000-modes.def (toplevel): Rework the 128-bit floating point modes, so that IFmode is numerically greater than TFmode, which is greater than KFmode using FRACTIONAL_FLOAT_MODE to declare the ordering. This prevents IFmode from being converted to TFmode when long double is IEEE 128-bit on an ISA 3.0 machine. Include rs6000-modes.h to share the fractional values between genmodes* and the rest of the compiler. (IFmode): Likewise. (KFmode): Likewise. (TFmode): Likewise. * config/rs6000/rs6000-modes.h: New file. * config/rs6000/rs6000.c (rs6000_debug_reg_global): Change the meaning of rs6000_long_double_size so that 126..128 selects an appropriate 128-bit floating point type. (rs6000_option_override_internal): Likewise. * config/rs6000/rs6000.h (toplevel): Include rs6000-modes.h. (TARGET_LONG_DOUBLE_128): Change the meaning of rs6000_long_double_size so that 126..128 selects an appropriate 128-bit floating point type. (LONG_DOUBLE_TYPE_SIZE): Update comment. * config/rs6000/rs6000.md (trunciftf2): Correct the modes of the source and destination to match the standard usage. (truncifkf2): Likewise. (copysign<mode>3, IEEE iterator): Rework copysign of float128 on ISA 2.07 to use an explicit clobber, instead of passing in a temporary. (copysign<mode>3_soft): Likewise. [libgcc] 2018-06-18 Michael Meissner <meissner@linux.ibm.com> Back port from trunk 2018-06-18 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/t-float128 (FP128_CFLAGS_SW): Compile float128 support modules with -mno-gnu-attribute. * config/rs6000/t-float128-hw (FP128_CFLAGS_HW): Likewise. -- Michael Meissner, IBM IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA email: meissner@linux.ibm.com, phone: +1 (978) 899-4797
Attachment:
ieee128-gcc8-patch003b
Description: Text document
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |