On Apr 14, 2022, Alexandre Oliva <ol...@adacore.com> wrote: > * gcc.target/powerpr/pr79004.c: Add -mlong-double-128.
Just like pr79004, float128-hw.c requires -mlong-double-128 for some the expected asm opcodes to be output on target variants that have 64-bit long doubles. That's because their expanders, e.g. floatsi<mode>2 for FLOAT128 modes, are conditioned on TARGET_LONG_DOUBLE_128, which is not set on target variants that use 64-bit long double. float128-hw4.c doesn't even compile without -mlong-double-128, on 64-bit long double target variants. The error is "invalid parameter combination for AltiVec intrinsic" in get_float128_exponent, get_float128_mantissa, and set_float128_exponent_float128, presumably caused by rs6000_builtin_type_compatible's refusal to consider _Float128 compatible when TARGET_LONG_DOUBLE_128 is not set. Since these are compile tests, -mlong-double-128 doesn't hurt even on target variants that use 64-bit long double, and enables both tests to pass. Tested on x86_64-linux-gnu x ppc64-vx7r2 with gcc-11. Ok to install? for gcc/testsuite/ChangeLog * gcc.target/powerpc/float128-hw.c: Add -mlong-double-128. * gcc.target/powerpc/float128-hw4.c: Likewise. --- gcc/testsuite/gcc.target/powerpc/float128-hw.c | 2 +- gcc/testsuite/gcc.target/powerpc/float128-hw4.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gcc/testsuite/gcc.target/powerpc/float128-hw.c b/gcc/testsuite/gcc.target/powerpc/float128-hw.c index 8c9beafa90ad0..284d744c00978 100644 --- a/gcc/testsuite/gcc.target/powerpc/float128-hw.c +++ b/gcc/testsuite/gcc.target/powerpc/float128-hw.c @@ -1,7 +1,7 @@ /* { dg-do compile { target lp64 } } */ /* { dg-require-effective-target powerpc_p9vector_ok } */ /* { dg-require-effective-target float128 } */ -/* { dg-options "-mpower9-vector -O2" } */ +/* { dg-options "-mpower9-vector -O2 -mlong-double-128" } */ #ifndef TYPE #define TYPE _Float128 diff --git a/gcc/testsuite/gcc.target/powerpc/float128-hw4.c b/gcc/testsuite/gcc.target/powerpc/float128-hw4.c index fc149169bc632..d86eadbcc7d06 100644 --- a/gcc/testsuite/gcc.target/powerpc/float128-hw4.c +++ b/gcc/testsuite/gcc.target/powerpc/float128-hw4.c @@ -1,7 +1,7 @@ /* { dg-do compile { target lp64 } } */ /* { dg-require-effective-target powerpc_p9vector_ok } */ /* { dg-require-effective-target float128 } */ -/* { dg-options "-mpower9-vector -O2 -mabi=ieeelongdouble -Wno-psabi" } */ +/* { dg-options "-mpower9-vector -O2 -mlong-double-128 -mabi=ieeelongdouble -Wno-psabi" } */ /* Insure that the ISA 3.0 IEEE 128-bit floating point built-in functions can be used with long double when the default is IEEE 128-bit. */ -- Alexandre Oliva, happy hacker https://FSFLA.org/blogs/lxo/ Free Software Activist GNU Toolchain Engineer Disinformation flourishes because many people care deeply about injustice but very few check the facts. Ask me about <https://stallmansupport.org>