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] |
This is just the combined patch of the last three patches that have been approved for trunk. I expanded the description in rs6000-modes.def of what the 3 128-bit floating point types are and why IFmode needs to be ordered above KFmode and TFmode. These patches were individually proposed in: https://gcc.gnu.org/ml/gcc-patches/2018-06/msg00634.html https://gcc.gnu.org/ml/gcc-patches/2018-06/msg00796.html https://gcc.gnu.org/ml/gcc-patches/2018-06/msg00799.html In terms of the tests, the following tests fail if you switch the default long double format. At the moment, I don't have the GLIBC that provides native support for IEEE 128-bit long double: C tests: c-c++-common/dfp/cast.c (_Decimal128 <-> IEEE 128-bit) c-c++-common/dfp/convert-bfp-11.c (_Decimal128 <-> IEEE 128-bit) c-c++-common/dfp/convert-bfp-2.c (_Decimal128 <-> IEEE 128-bit) c-c++-common/dfp/convert-bfp-3.c (_Decimal128 <-> IEEE 128-bit) c-c++-common/dfp/convert-bfp-4.c (_Decimal128 <-> IEEE 128-bit) c-c++-common/dfp/convert-bfp-5.c (_Decimal128 <-> IEEE 128-bit) c-c++-common/dfp/convert-bfp-6.c (_Decimal128 <-> IEEE 128-bit) c-c++-common/dfp/convert-bfp.c (_Decimal128 <-> IEEE 128-bit) c-c++-common/dfp/pr39034.c (_Decimal128 <-> IEEE 128-bit) gcc.dg/nextafter-2.c (needs updated GLIBC) gcc.dg/torture/float128-nan.c (I need to investigate this) gcc.dg/tree-ssa/builtin-sprintf.c (needs updated GLIBC) gcc.dg/tree-ssa/vrp104.c (I need to investigate this) gcc.target/powerpc/clone1.c (I have patches for this) gcc.target/powerpc/clone2.c (I have patches for this) gcc.target/powerpc/divkc3-1.c (I have patches for this) gcc.target/powerpc/float128-3.c (I have patches for this) gcc.target/powerpc/float128-5.c (I have patches for this) gcc.target/powerpc/float128-complex-1.c (I have patches for this) gcc.target/powerpc/float128-mix.c (I have patches for this) gcc.target/powerpc/mulkc3-1.c (I have patches for this) gcc.target/powerpc/nan128-1.c (I need to investigate this) gcc.target/powerpc/pack02.c (I have patches for this) gcc.target/powerpc/pr57150.c (I have patches for this) gcc.target/powerpc/pr60203.c (I have patches for this) gcc.target/powerpc/pr67808.c (I have patches for this) gcc.target/powerpc/pr70117.c (bug in isnormal on IEEE 128) gcc.target/powerpc/pr78056-1.c (I have patches for this) gcc.target/powerpc/pr78056-3.c (I have patches for this) gcc.target/powerpc/pr80210-2.c (I have patches for this) gcc.target/powerpc/pr80210.c (I have patches for this) gcc.target/powerpc/pr85657-3.c (I have patches for this) gcc.target/powerpc/tfmode_off.c (I have patches for this) C++ tests: c-c++-common/dfp/cast.c (_Decimal128 <-> IEEE 128-bit) c-c++-common/dfp/convert-bfp-11.c (_Decimal128 <-> IEEE 128-bit) c-c++-common/dfp/convert-bfp-2.c (_Decimal128 <-> IEEE 128-bit) c-c++-common/dfp/convert-bfp-3.c (_Decimal128 <-> IEEE 128-bit) c-c++-common/dfp/convert-bfp-4.c (_Decimal128 <-> IEEE 128-bit) c-c++-common/dfp/convert-bfp-5.c (_Decimal128 <-> IEEE 128-bit) c-c++-common/dfp/convert-bfp-6.c (_Decimal128 <-> IEEE 128-bit) c-c++-common/dfp/convert-bfp.c (_Decimal128 <-> IEEE 128-bit) c-c++-common/dfp/pr39034.c (_Decimal128 <-> IEEE 128-bit) g++.dg/cdce3.C (needs updated GLIBC) The following Fortran tests fail. I assume most of these are library issues: gfortran.dg/erf_3.F90 gfortran.dg/fmt_en.f90 gfortran.dg/fmt_g0_7.f08 gfortran.dg/fmt_pf.f90 gfortran.dg/ieee/large_1.f90 gfortran.dg/ieee/large_3.F90 gfortran.dg/large_real_kind_1.f90 gfortran.dg/large_real_kind_2.F90 gfortran.dg/large_real_kind_3.F90 gfortran.dg/large_real_kind_form_io_1.f90 gfortran.dg/large_real_kind_form_io_2.f90 gfortran.dg/norm2_3.f90 gfortran.dg/quad_2.f90 gfortran.dg/round_2.f03 [gcc] 2018-06-18 Michael Meissner <meissner@linux.ibm.com> PR target/85358 * config/rs6000/rs6000-modes.def (toplevel): Rework the 128-bit floating point modes, so that IFmode is numerically greater than TFmode, which is greater than KFmode using FRACTIONAL_FLOAT_MODE to declare the ordering. This prevents IFmode from being converted to TFmode when long double is IEEE 128-bit on an ISA 3.0 machine. Include rs6000-modes.h to share the fractional values between genmodes* and the rest of the compiler. (IFmode): Likewise. (KFmode): Likewise. (TFmode): Likewise. * config/rs6000/rs6000-modes.h: New file. * config/rs6000/rs6000.c (rs6000_debug_reg_global): Change the meaning of rs6000_long_double_size so that 126..128 selects an appropriate 128-bit floating point type. (rs6000_option_override_internal): Likewise. * config/rs6000/rs6000.h (toplevel): Include rs6000-modes.h. (TARGET_LONG_DOUBLE_128): Change the meaning of rs6000_long_double_size so that 126..128 selects an appropriate 128-bit floating point type. (LONG_DOUBLE_TYPE_SIZE): Update comment. * config/rs6000/rs6000.md (trunciftf2): Correct the modes of the source and destination to match the standard usage. (truncifkf2): Likewise. (copysign<mode>3, IEEE iterator): Rework copysign of float128 on ISA 2.07 to use an explicit clobber, instead of passing in a temporary. (copysign<mode>3_soft): Likewise. [libgcc] 2018-06-18 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/t-float128 (FP128_CFLAGS_SW): Compile float128 support modules with -mno-gnu-attribute. * config/rs6000/t-float128-hw (FP128_CFLAGS_HW): Likewise. -- 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
Attachment:
ieee128-patch118c
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |