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: [email protected], phone: +1 (978) 899-4797