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 15:26:07 -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> <CAGWvny=MantfgrYJk3W4yegy8aOZFvmHPERridx6SFfXqc=32w at mail dot gmail dot com> <20150602182715 dot GA11379 at ibm-tiger dot the-meissners dot org>
On Tue, Jun 2, 2015 at 2:27 PM, Michael Meissner
<meissner@linux.vnet.ibm.com> wrote:
> On Tue, Jun 02, 2015 at 01:43:08PM -0400, David Edelsohn wrote:
>> 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?
>
> I was trying to avoid problems if there was no move/convert patterns for
> KFmode/IFmode. I made it when I transitioned from SPECIAL_FLOAT_MODE to
> FRACTIONAL_FLOAT_MODE. Given there are 2 fractional float modes now, if the
> compiler was automatically trying to find a larger type than DFmode, it would
> first try IFmode, then KFmode, and finally TFmode (under the old
> SPECIAL_FLOAT_MODE, it wouldn't look at those types in the normal course of
> things).
>
> With the current set of patches, there is no move or convert options for
> IFmode/KFmode, but also the emulator functions are not properly defined.
The first patch is okay. This clearly is going to require a lot of
interations with libgcc and GLIBC.
Thanks, David