This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Thu, Sep 14, 2017 at 09:54:14AM -0500, Segher Boessenkool wrote: > On Wed, Sep 13, 2017 at 05:46:00PM -0400, Michael Meissner wrote: > > This patch adds support on PowerPC ISA 3.0 for the built-in function > > __builtin_sqrtf128 generating the XSSQRTQP hardware square root instruction and > > the built-in function __builtin_fmaf128 generating XSMADDQP, XSMSUBQP, > > XSNMADDQP, and XSNMSUBQP fused multiply-add instructions. > > > > While I was at it, I changed the documentation so that it no longer documents > > the 'q' built-in functions (to mirror libquadmath) but instead just documented > > the 'f128' functions that matches glibc 2.26 and the technical report that > > added the _FloatF128 date. > > > > I changed the tests that used __fabsq to use __fabsf128 instead. > > > > I also added && lp64 to float128-5.c so that it doesn't cause errors when doing > > the test for a 32-bit target. This is due to the fact that if you enable > > hardware IEEE 128-bit floating point, you eventually will need TImode > > supported, and that is not supported on 32-bit targets. > > > > I did a bootstrap and make check with subversion id 252033 on a little endian > > power8 system. The subversion id 252033 is one of the last svn ids that > > bootstrap without additional patches on the PowerPC. There were no regressions > > in this patch, and I verified the 4 new tests were run. Can I check this patch > > into the trunk? > > Yes please. A few trivial things: > > > * doc/extend.texi (RS/6000 built-in functions): Document the > > 'f128' IEEE 128-bit floating point built-in functions. Don't > > document the older 'q' versions of the functions. Document the > > built-in IEEE 128-bit floating point square root and fused > > multiply-add built-ins. > > Dot space space. > > > +/* 1 argument IEEE 128-bit floating point functions that require ISA 3.0 > > + hardware. We define both a 'q' version for libquadmath compatibility, and a > > + 'f128' for glibc 2.26. We didn't need this for FABS/COPYSIGN, since the > > + machine independent built-in support already defines the F128 versions, */ > > Dot instead of comma? > > > --- gcc/testsuite/gcc.target/powerpc/float128-5.c (revision 252730) > > +++ gcc/testsuite/gcc.target/powerpc/float128-5.c (working copy) > > @@ -1,4 +1,4 @@ > > -/* { dg-do compile { target { powerpc*-*-linux* } } } */ > > +/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */ > > Maybe add a comment why this is -m64 only? I removed the changes to the documentation that didn't pertain to the functions I was adding (we can clean that up some other time), and added a -m64 comment. I checked this into the trunk: [gcc] 2017-09-14 Michael Meissner <meissner@linux.vnet.ibm.com> * config/rs6000/rs6000-builtin.def (BU_FLOAT128_1_HW): New macros to support float128 built-in functions that require the ISA 3.0 hardware. (BU_FLOAT128_3_HW): Likewise. (SQRTF128): Add support for the IEEE 128-bit square root and fma built-in functions. (FMAF128): Likewise. (FMAQ): Likewise. * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support for built-in functions that need the ISA 3.0 IEEE 128-bit floating point instructions. (rs6000_invalid_builtin): Likewise. (rs6000_builtin_mask_names): Likewise. * config/rs6000/rs6000.h (MASK_FLOAT128_HW): Likewise. (RS6000_BTM_FLOAT128_HW): Likewise. (RS6000_BTM_COMMON): Likewise. * config/rs6000/rs6000.md (fma<mode>4_hw): Add a generator function. * doc/extend.texi (RS/6000 built-in functions): Document the 'f128' IEEE 128-bit floating point built-in functions. Don't document the older 'q' versions of the functions. Document the built-in IEEE 128-bit floating point square root and fused multiply-add built-ins. [gcc/testsuite] 2017-09-14 Michael Meissner <meissner@linux.vnet.ibm.com> * gcc.target/powerpc/abs128-1.c: Use __builtin_fabsf128 instead of __builtin_fabsq. * gcc.target/powerpc/float128-5.c: Use __builtin_fabsf128 instead of __builtin_fabsq. Prevent the test from running on 32-bit. * gcc.target/powerpc/float128-fma1.c: New test. * gcc.target/powerpc/float128-fma2.c: Likewise. * gcc.target/powerpc/float128-sqrt1.c: Likewise. * gcc.target/powerpc/float128-sqrt2.c: Likewise. -- Michael Meissner, IBM IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA email: meissner@linux.vnet.ibm.com, phone: +1 (978) 899-4797
Attachment:
ieee128-patch31b
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |