This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH], Add IEEE 128-bit floating point to PowerPC, patch #1
- From: David Edelsohn <dje dot gcc at gmail dot com>
- To: Michael Meissner <meissner at linux dot vnet dot ibm dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 2 Jun 2015 13:43:08 -0400
- Subject: Re: [PATCH], Add IEEE 128-bit floating point to PowerPC, patch #1
- Authentication-results: sourceware.org; auth=none
- References: <20150522212414 dot GA25650 at ibm-tiger dot the-meissners dot org>
On Fri, May 22, 2015 at 5:24 PM, Michael Meissner
<meissner@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