aboutsummaryrefslogtreecommitdiff
path: root/gcc/go
diff options
context:
space:
mode:
authorMichael Meissner <meissner@linux.ibm.com>2021-01-28 11:30:46 -0500
committerMichael Meissner <meissner@linux.ibm.com>2021-01-28 11:30:46 -0500
commite11e5d3889f9e54c547efee50fa1b72b50f0f265 (patch)
tree619107109b36ebadb39cbcfb7de2e9749753b0bb /gcc/go
parent6bb207b468da36d9d99c63409dc4098514759c90 (diff)
downloadgcc-e11e5d3889f9e54c547efee50fa1b72b50f0f265.zip
gcc-e11e5d3889f9e54c547efee50fa1b72b50f0f265.tar.gz
gcc-e11e5d3889f9e54c547efee50fa1b72b50f0f265.tar.bz2
Map long double built-ins correctly with IEEE 128-bit long double.
The PowerPC has two different 128-bit long double types, one that uses a pair of doubles to get more mantissa range, and the other using the IEEE 128-bit 754R binary floating point format. The pair of doubles has been used as the traditional format, and we are in the process of moving to allow an implementation to switch to using IEEE 128-bit floating point. The GLIBC and LIBSTDC++ libraries have been modified to have functions using the two different formats in their libraries with different names. This patch goes through all of the built-in functions that either take long double arguments or return long double, and changes the name from the traditional name to the IEEE 128-bit name. The minimum GLIBC version to support IEEE 128-bit floating point is 2.32. The names changed are: * <name>l is usually mapped to __<name>ieee128; * <extra>printf is mapped to __<extra>printfieee128; (and) * <extra>scanf is mapped to __isoc99_<extra>scanfieee128. A few functions have different mappings: * dreml => __remainderieee128; * gammal => __lgammaieee128; * gammal_r => __lgammaieee128_r; * lgammal_r => __lgammaieee128_r; * nexttoward => __nexttoward_to_ieee128; * nexttowardf => __nexttowardf_to_ieee128; * nexttowardl => __nexttowardl_to_ieee128; * pow10l => __exp10ieee128; * scalbl => __scalbieee128; * significandl => __significandieee128; (and) * sincosl => __sincosieee128. gcc/ 2021-01-28 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/rs6000.c (rs6000_mangle_decl_assembler_name): Add support for mapping built-in function names for long double built-in functions if long double is IEEE 128-bit. gcc/testsuite/ 2021-01-28 Michael Meissner <meissner@linux.ibm.com> * gcc.target/powerpc/float128-longdouble-math.c: New test. * gcc.target/powerpc/float128-longdouble-stdio.c: New test. * gcc.target/powerpc/float128-math.c: Adjust test for new name being generated. Add support for running test on power10. Add support for running if long double defaults to 64-bits.
Diffstat (limited to 'gcc/go')
0 files changed, 0 insertions, 0 deletions