This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH], PowerPC IEEE 128-bit fp, #11-rev4 (enable libgcc conversions)
- From: David Edelsohn <dje dot gcc at gmail dot com>
- To: Michael Meissner <meissner at linux dot vnet dot ibm dot com>, Joseph Myers <joseph at codesourcery dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>, Steven Munroe <munroesj at linux dot vnet dot ibm dot com>, Tulio Magno Quites Machado Filho <tulioqm at br dot ibm dot com>
- Date: Thu, 21 Jan 2016 08:28:05 -0500
- Subject: Re: [PATCH], PowerPC IEEE 128-bit fp, #11-rev4 (enable libgcc conversions)
- Authentication-results: sourceware.org; auth=none
- References: <20151229163800 dot GA29976 at ibm-tiger dot the-meissners dot org> <20160106224754 dot GA1627 at ibm-tiger dot the-meissners dot org> <alpine dot DEB dot 2 dot 10 dot 1601072147550 dot 31194 at digraph dot polyomino dot org dot uk> <20160111185547 dot GA27662 at ibm-tiger dot the-meissners dot org> <alpine dot DEB dot 2 dot 10 dot 1601120018300 dot 15518 at digraph dot polyomino dot org dot uk> <20160112183143 dot GA17279 at ibm-tiger dot the-meissners dot org> <alpine dot DEB dot 2 dot 10 dot 1601122347120 dot 26566 at digraph dot polyomino dot org dot uk> <CAGWvnynziwMRSrVYFLtMG8LXQbrTZoSxQozy6nnruZxjz6+fQg at mail dot gmail dot com> <20160114220316 dot GA23218 at ibm-tiger dot the-meissners dot org> <20160121010020 dot GA25262 at ibm-tiger dot the-meissners dot org>
On Wed, Jan 20, 2016 at 8:00 PM, Michael Meissner
<meissner@linux.vnet.ibm.com> wrote:
> This is revision 4 of the IEEE 128-bit floating point libgcc support.
>
> Since revision 3, I have removed the gcc changes that broke AIX. I rewrote the
> IBM extended double pack/unpack support to not use the builtin functions, but
> instead uses a union. The libgcc code that I wrote tickles a bug in the pack
> function. While I would like to fix the pack function bug, I will need to make
> sure I don't break AIX, so I didn't want to couple this library to getting
> those bugs fixed.
>
> I have also rewritten how the ifunc support is done, so that ifunc is only done
> if the target assembler supports ISA 3.0 instructions AND the compiler supports
> ifunc functions. This is so that the compiler can build on 64-bit systems if
> --enable-gnu-indirect-function is not specified without the ifunc functions
> being flagged.
>
> I have done bootstraps on both a big endian power7 system and a little endian
> power8 with no regressions. In addition, I have built a compiler explicitly
> disabling ifunc support, and it built and ran the ieee 128-bit floating point
> unit tests correctly.
>
> Can I install this into libgcc?
>
> Assuming I can install these changes, the one final change that I would like to
> make is to enable float128 automatically on VSX powerpc Linux systems, but not
> on other systems (AIX, *BSD, etc.) since those systems do not build float128
> emulator functions.
What does "enable" mean?
> 2016-01-20 Michael Meissner <meissner@linux.vnet.ibm.com>
> Steven Munroe <munroesj@linux.vnet.ibm.com>
> Tulio Magno Quites Machado Filho <tulioqm@br.ibm.com>
>
> * config/rs6000/float128-sed: New files to convert TF names to KF
> names for PowerPC IEEE 128-bit floating point support.
> * config/rs6000/float128-sed-hw: Likewise.
>
> * config/rs6000/float128-hw.c: New file for ISA 3.0 IEEE 128-bit
> floating point hardware support.
>
> * config/rs6000/float128-ifunc.c: New file to pick either IEEE
> 128-bit floating point software emulation or use ISA 3.0 hardware
> support if it is available.
>
> * config/rs6000/quad-float128.h: New file to support IEEE 128-bit
> floating point.
>
> * config/rs6000/extendkftf2-sw.c: New file, convert IEEE 128-bit
> floating point to IBM extended double.
>
> * config/rs6000/trunctfkf2-sw.c: New file, convert IBM extended
> double to IEEE 128-bit floating point.
>
> * config/rs6000/t-float128: New Makefile fragments to enable
> building __float128 emulation support.
> * config/rs6000/t-float128-hw: Likewise.
>
> * config/rs6000/sfp-exceptions.c: New file to provide exception
> support for IEEE 128-bit floating point.
>
> * config/rs6000/floattikf.c: New files for converting between IEEE
> 128-bit floating point and signed/unsigned 128-bit integers.
> * config/rs6000/fixunskfti.c: Likewise.
> * config/rs6000/fixkfti.c: Likewise.
> * config/rs6000/floatuntikf.c: Likewise.
>
> * config/rs6000/sfp-machine.h (_FP_W_TYPE_SIZE): Use 64-bit types
> when building on 64-bit systems, or when VSX is enabled.
> (_FP_W_TYPE): Likewise.
> (_FP_WS_TYPE): Likewise.
> (_FP_I_TYPE): Likewise.
> (TItype): Define on 64-bit systems.
> (UTItype): Likewise.
> (TI_BITS): Likewise.
> (_FP_MUL_MEAT_D): Add support for using 64-bit types.
> (_FP_MUL_MEAT_Q): Likewise.
> (_FP_DIV_MEAT_D): Likewise.
> (_FP_DIV_MEAT_Q): Likewise.
> (_FP_NANFRAC_D): Likewise.
> (_FP_NANFRAC_Q): Likewise.
> (ISA_BIT): Add exception support if we are being compiled on a
> machine with hardware floating point support to build the IEEE
> 128-bit emulation functions.
> (FP_EX_INVALID): Likewise.
> (FP_EX_OVERFLOW): Likewise.
> (FP_EX_UNDERFLOW): Likewise.
> (FP_EX_DIVZERO): Likewise.
> (FP_EX_INEXACT): Likewise.
> (FP_EX_ALL): Likewise.
> (__sfp_handle_exceptions): Likewise.
> (FP_HANDLE_EXCEPTIONS): Likewise.
> (FP_RND_NEAREST): Likewise.
> (FP_RND_ZERO): Likewise.
> (FP_RND_PINF): Likewise.
> (FP_RND_MINF): Likewise.
> (FP_RND_MASK): Likewise.
> (_FP_DECL_EX): Likewise.
> (FP_INIT_ROUNDMODE): Likewise.
> (FP_ROUNDMODE): Likewise.
>
> * libgcc/config.host (powerpc*-*-linux*): If compiler can compile
> VSX code, enable IEEE 128-bit floating point. If the compiler can
> compile IEEE 128-bit floating point code with ISA 3.0 IEEE 128-bit
> floating point hardware instructions and it supports declaring
> functions with the ifunc attribute, enable ifunc functions to
> switch between software and hardware support.
> * configure.ac (powerpc*-*-linux*): Likewise.
> * configure: Regenerate.
Okay.
Thanks, David
- References:
- Re: [PATCH], PowerPC IEEE 128-bit fp, #11-rev2 (enable libgcc conversions)
- Re: [PATCH], PowerPC IEEE 128-bit fp, #11-rev2 (enable libgcc conversions)
- Re: [PATCH], PowerPC IEEE 128-bit fp, #11-rev3 (enable libgcc conversions)
- Re: [PATCH], PowerPC IEEE 128-bit fp, #11-rev3 (enable libgcc conversions)
- Re: [PATCH], PowerPC IEEE 128-bit fp, #11-rev3 (enable libgcc conversions)
- Re: [PATCH], PowerPC IEEE 128-bit fp, #11-rev3 (enable libgcc conversions)
- Re: [PATCH], PowerPC IEEE 128-bit fp, #11-rev3 (enable libgcc conversions)
- Re: [PATCH], PowerPC IEEE 128-bit fp, #11-rev3 (enable libgcc conversions)
- Re: [PATCH], PowerPC IEEE 128-bit fp, #11-rev4 (enable libgcc conversions)