On Fri, May 22, 2015 at 5:24 PM, Michael Meissner <meiss...@linux.vnet.ibm.com> wrote: > This patch is the first in a series of patches that will eventually add > support > for IEEE 128-bit floating point support to the PowerPC GCC compiler. At the > current time, we do not plan to change the default for long double. I added a > new type keyword (__float128) to get access to IEEE 128-bit floating point, > and > another (__ibm128) to get access to IBM extended double type. > > Until all of the GCC and LIBGCC patches have been committed, you will not be > able to use IEEE 128-bit floating point, and -mfloat128-software will not be > turned on by default. > > This patch adds the new modes (KFmode and IFmode) and the switches > (-mfloat128-{none,software}). > > Due to the fact that TFmode in the PowerPC compiler either represents IEEE > 128-bit floating point or the IBM extended double (double-double) format. For > most PowerPC users, the default is to use IBM extended double for long double. > Because TFmode can be either floating point format, I added new new modes: > > KFmode -- IEEE 128-bit floating point > IFmode -- IBM extended double floating point > > If the default for TFmode is ibm extended double, the port will eventually use > KFmode for IEEE 128-bit floating point. Likewise if the default for TFmode is > IEEE 128-bit floating point, the port will use TFmode for IEEE 128-bit > floating > point, and IFmode for IBM extended double. > > I have bootstraped these patches on a power7 and compared them to the > unpatched > compiler. There were no changes when running make check. Are these patches > ok > to install in the trunk?
Mike, What is the purpose of the TARGET_LONG_DOUBLE_128 change in rs6000_hard_regno_mode_ok()? + /* If we don't allow 128-bit binary floating point, disallow the 128-bit + types from going in any registers. Similarly if __float128 is not + supported, don't allow __float128/__ibm128 types. */ + if (!TARGET_LONG_DOUBLE_128 + && (mode == TFmode || mode == KFmode || mode == IFmode)) + return false; Why is this necessary now? Thanks, David