This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] PR target/85358, v3: Make PowerPC not convert __ibm128 to __float128 if long double is IEEE 128-bit
- From: Michael Meissner <meissner at linux dot ibm dot com>
- To: Michael Meissner <meissner at linux dot ibm dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>, Segher Boessenkool <segher at kernel dot crashing dot org>, David Edelsohn <dje dot gcc at gmail dot com>, Bill Schmidt <wschmidt at linux dot vnet dot ibm dot com>, François Dumont <fdumont at gcc dot gnu dot org>, Jeff Law <law at redhat dot com>, Eric Botcazou <ebotcazou at libertysurf dot fr>, Joseph Myers <joseph at codesourcery dot com>, Richard Biener <rguenther at suse dot de>, Jakub Jelinek <jakub at redhat dot com>
- Date: Mon, 11 Jun 2018 19:35:16 -0400
- Subject: Re: [PATCH] PR target/85358, v3: Make PowerPC not convert __ibm128 to __float128 if long double is IEEE 128-bit
- References: <20180522232416.GA20583@ibm-toto.the-meissners.org> <20180611233144.GA13336@ibm-toto.the-meissners.org>
On Mon, Jun 11, 2018 at 07:31:44PM -0400, Michael Meissner wrote:
> This patch is a complete rework of the previous patch. Previously I used new
> target hooks to provide IFmode (__ibm128) from being widened by default to
> TFmode (long double) on power9 systems when long double is IEEE 128-bit.
>
> This patch reorganizes the 3 128-bit floating point types, so that IFmode is
> numerically higher than TFmode/KFmode. This means IFmode is considered the
> widest type. Since we do not define arithmetic insns for IFmode, other than
> negate/absolute value (that we define for the other types), we will not have
> undesirable widening. I needed to change long double size so that lookup of
> size would get the TFmode type and not the IFmode.
>
> Since I reorganized the modes, the compiler now uses truncif{kf,tf}2 instead of
> extend{tf,kf}if2. It turns out I had the argument modes backwards for trunc.
> I have included a fix for this thinko.
>
> I have built this on the following systems, and they bootstrapped and had no
> regressions. Can I check this into the trunk, and after a burn-in period check
> it into GCC 8.2, assuming the last build on power6 has no regressions?
>
> 1) Little endian power8 system (64-bit), --with-cpu=power8;
> 2) Big endian power8 system (64/32-bit), --with-cpu=power8;
> 3) Big endian power8 system (64/32-bit), no --with-cpu;
>
> I'm currently building it on:
>
> 4) Big endian power6 system (64/32-bit), no --with-cpu.
Whoops, I forgot I also did the following and it had no regressions:
5) Little endian power9 system (64-bit), --with-cpu=power9
--
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