https://gcc.gnu.org/g:5c2cb471b6848d9ce36cb8200bfe5768c323068c
commit 5c2cb471b6848d9ce36cb8200bfe5768c323068c Author: Michael Meissner <meiss...@linux.ibm.com> Date: Wed Jul 17 02:43:37 2024 -0400 Do not add -mvsx when testing the float128 support. In the past, we would add -mvsx when building the float128 support in libgcc. This allowed us to build the float128 support on a big endian system where the default cpu is power4. While the libgcc support can be built, given there is no glibc support for float128 available. However, adding -mvsx and building the libgcc float128 support causes problems if you set the default cpu to something like a 7540, which does not have VSX support. The assembler complains that when the code does a ".machine 7450", you cannot use VSX instructions. After patching libgcc to not build the float128 support unless the host can support float128 normally, this patch changes the GCC tests so that it will only do the IEEE 128-bit tests if the default compiler enables the VSX instruction set by default. Otherwise all of the float128 tests will fail because the libgcc support is not available. In addition to not doing the float128 tests when the compiler does not natively support float128, this patch also removes adding -mvsx, -mfloat128, and -mfloat128-hardware enable the support if the compiler did not natively enable it. 2024-07-17 Michael Meissner <meiss...@linux.ibm.com> gcc/testsuite/ PR target/115800 PR target/113652 * gcc.target/powerpc/abs128-1.c: Remove adding -mvsx, -mfloat128, and -mfloat128-hardware options to float128 test. Add explicit checks for the float128 support, rather than just using VSX as a stand in, or assuming we can silently enable VSX if the default is power4. For pr99708.c, also use the correct spelling to disable the float128 tests. * gcc.target/powerpc/bfp/scalar-insert-exp-16.c: Likewise. * gcc.target/powerpc/copysign128-1.c: Likewise. * gcc.target/powerpc/divkc3-1.c: Likewise. * gcc.target/powerpc/float128-3.c: Likewise. * gcc.target/powerpc/float128-5.c: Likewise. * gcc.target/powerpc/float128-complex-2.: Likewise. * gcc.target/powerpc/float128-math.: Likewise. * gcc.target/powerpc/inf128-1.: Likewise. * gcc.target/powerpc/mulkc3-1.c: Likewise. * gcc.target/powerpc/nan128-1.c: Likewise. * gcc.target/powerpc/p9-lxvx-stxvx-3.: Likewise. * gcc.target/powerpc/pr104253.: Likewise. * gcc.target/powerpc/pr70669.c: Likewise. * gcc.target/powerpc/pr79004.c: Likewise. * gcc.target/powerpc/pr79038-1.c: Likewise. * gcc.target/powerpc/pr81959.c: Likewise. * gcc.target/powerpc/pr85657-1.: Likewise. * gcc.target/powerpc/pr85657-2.c: Likewise. * gcc.target/powerpc/pr99708.: Likewise. * gcc.target/powerpc/signbit-1.c: Likewise. * gcc.target/powerpc/signbit-2.c: Likewise. * lib/target-supports.exp (check_ppc_float128_sw_available): Likewise. (check_ppc_float128_hw_available): Likewise. (check_effective_target_ppc_ieee128_ok): Likewise. (add_options_for___float128): Likewise. (check_effective_target___float128): Likewise. (check_effective_target_base_quadfloat_support): Likewise. (check_effective_target_powerpc_float128_sw_ok): Likewise. (check_effective_target_powerpc_float128_hw_ok): Likewise. Diff: --- gcc/testsuite/gcc.target/powerpc/abs128-1.c | 3 ++- .../gcc.target/powerpc/bfp/scalar-insert-exp-16.c | 1 + gcc/testsuite/gcc.target/powerpc/copysign128-1.c | 3 ++- gcc/testsuite/gcc.target/powerpc/divkc3-1.c | 3 ++- gcc/testsuite/gcc.target/powerpc/float128-3.c | 3 ++- gcc/testsuite/gcc.target/powerpc/float128-5.c | 3 ++- .../gcc.target/powerpc/float128-complex-2.c | 2 +- gcc/testsuite/gcc.target/powerpc/float128-math.c | 2 +- gcc/testsuite/gcc.target/powerpc/inf128-1.c | 3 ++- gcc/testsuite/gcc.target/powerpc/mulkc3-1.c | 3 ++- gcc/testsuite/gcc.target/powerpc/nan128-1.c | 3 ++- gcc/testsuite/gcc.target/powerpc/p9-lxvx-stxvx-3.c | 2 +- gcc/testsuite/gcc.target/powerpc/pr104253.c | 2 +- gcc/testsuite/gcc.target/powerpc/pr70669.c | 3 ++- gcc/testsuite/gcc.target/powerpc/pr79004.c | 4 ++-- gcc/testsuite/gcc.target/powerpc/pr79038-1.c | 4 ++-- gcc/testsuite/gcc.target/powerpc/pr81959.c | 3 ++- gcc/testsuite/gcc.target/powerpc/pr85657-1.c | 2 +- gcc/testsuite/gcc.target/powerpc/pr85657-2.c | 2 +- gcc/testsuite/gcc.target/powerpc/pr99708.c | 4 ++-- gcc/testsuite/gcc.target/powerpc/signbit-1.c | 2 +- gcc/testsuite/gcc.target/powerpc/signbit-2.c | 2 +- gcc/testsuite/lib/target-supports.exp | 27 +++++++++------------- 23 files changed, 46 insertions(+), 40 deletions(-) diff --git a/gcc/testsuite/gcc.target/powerpc/abs128-1.c b/gcc/testsuite/gcc.target/powerpc/abs128-1.c index fe5206daff8c..ee4c1aa24747 100644 --- a/gcc/testsuite/gcc.target/powerpc/abs128-1.c +++ b/gcc/testsuite/gcc.target/powerpc/abs128-1.c @@ -1,5 +1,6 @@ /* { dg-do run { target { powerpc64*-*-* && vsx_hw } } } */ -/* { dg-options "-mfloat128 -mvsx" } */ +/* { dg-options "-mfloat128" } */ +/* { dg-require-effective-target ppc_float128_sw } */ void abort (); diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-16.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-16.c index f0e03c5173d2..081fb2e2995f 100644 --- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-16.c +++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-16.c @@ -2,6 +2,7 @@ /* { dg-require-effective-target lp64 } */ /* { dg-require-effective-target p9vector_hw } */ /* { dg-options "-mdejagnu-cpu=power9 -save-temps" } */ +/* { dg-require-effective-target ppc_float128_sw } */ #include <altivec.h> #include <stdlib.h> diff --git a/gcc/testsuite/gcc.target/powerpc/copysign128-1.c b/gcc/testsuite/gcc.target/powerpc/copysign128-1.c index 429dfc072e3b..d07c5ae0a6c3 100644 --- a/gcc/testsuite/gcc.target/powerpc/copysign128-1.c +++ b/gcc/testsuite/gcc.target/powerpc/copysign128-1.c @@ -1,5 +1,6 @@ /* { dg-do run { target { powerpc64*-*-* && vsx_hw } } } */ -/* { dg-options "-mfloat128 -mvsx" } */ +/* { dg-options "-mfloat128" } */ +/* { dg-require-effective-target ppc_float128_sw } */ void abort (); diff --git a/gcc/testsuite/gcc.target/powerpc/divkc3-1.c b/gcc/testsuite/gcc.target/powerpc/divkc3-1.c index 89bf04f12a97..cb79261f4014 100644 --- a/gcc/testsuite/gcc.target/powerpc/divkc3-1.c +++ b/gcc/testsuite/gcc.target/powerpc/divkc3-1.c @@ -1,5 +1,6 @@ /* { dg-do run { target { powerpc64*-*-* && p8vector_hw } } } */ -/* { dg-options "-mfloat128 -mvsx" } */ +/* { dg-options "-mfloat128" } */ +/* { dg-require-effective-target ppc_float128_sw } */ void abort (); diff --git a/gcc/testsuite/gcc.target/powerpc/float128-3.c b/gcc/testsuite/gcc.target/powerpc/float128-3.c index e62ad5f5247f..d429684f50c2 100644 --- a/gcc/testsuite/gcc.target/powerpc/float128-3.c +++ b/gcc/testsuite/gcc.target/powerpc/float128-3.c @@ -1,6 +1,7 @@ /* { dg-do compile { target { powerpc*-*-linux* } } } */ -/* { dg-options "-O2 -mvsx -mno-float128" } */ +/* { dg-options "-O2 -mno-float128" } */ /* { dg-require-effective-target powerpc_vsx } */ +/* { dg-require-effective-target ppc_float128_sw } */ /* Test that we can use #pragma GCC target to enable -mfloat128. */ diff --git a/gcc/testsuite/gcc.target/powerpc/float128-5.c b/gcc/testsuite/gcc.target/powerpc/float128-5.c index 8a9eee971fbc..0b17aed6b8e1 100644 --- a/gcc/testsuite/gcc.target/powerpc/float128-5.c +++ b/gcc/testsuite/gcc.target/powerpc/float128-5.c @@ -1,7 +1,8 @@ /* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */ -/* { dg-options "-O2 -mvsx -mno-float128" } */ +/* { dg-options "-O2 -mno-float128" } */ /* { dg-additional-options "-mdejagnu-cpu=power9" { target { ! has_arch_pwr9 } } } */ /* { dg-require-effective-target powerpc_vsx } */ +/* { dg-require-effective-target ppc_float128_sw } */ /* Test that we can use #pragma GCC target to enable -mfloat128 and generate code on ISA 3.0 for the float128 built-in functions. Lp64 is required diff --git a/gcc/testsuite/gcc.target/powerpc/float128-complex-2.c b/gcc/testsuite/gcc.target/powerpc/float128-complex-2.c index 339af47f39e6..8aaec3343e47 100644 --- a/gcc/testsuite/gcc.target/powerpc/float128-complex-2.c +++ b/gcc/testsuite/gcc.target/powerpc/float128-complex-2.c @@ -1,6 +1,6 @@ /* { dg-do compile { target { powerpc*-*-linux* } } } */ /* { dg-require-effective-target powerpc_float128_hw_ok } */ -/* { dg-options "-O2 -mvsx -mfloat128-hardware" } */ +/* { dg-options "-O2 -mfloat128-hardware" } */ /* { dg-additional-options "-mdejagnu-cpu=power9" { target { ! has_arch_pwr9 } } } */ #ifndef NO_FLOAT diff --git a/gcc/testsuite/gcc.target/powerpc/float128-math.c b/gcc/testsuite/gcc.target/powerpc/float128-math.c index d1e222397187..eb5f0a838616 100644 --- a/gcc/testsuite/gcc.target/powerpc/float128-math.c +++ b/gcc/testsuite/gcc.target/powerpc/float128-math.c @@ -1,6 +1,6 @@ /* { dg-require-effective-target ppc_float128_sw } */ /* { dg-require-effective-target vsx_hw } */ -/* { dg-options "-mvsx -O2 -mfloat128 -mlong-double-128 -mabi=ieeelongdouble -Wno-psabi" } */ +/* { dg-options "-O2 -mfloat128 -mlong-double-128 -mabi=ieeelongdouble -Wno-psabi" } */ /* Test whether we convert __builtin_<math>l to __builtin_<math>f128 if the default long double type is IEEE 128-bit. We leave off the \M in matching diff --git a/gcc/testsuite/gcc.target/powerpc/inf128-1.c b/gcc/testsuite/gcc.target/powerpc/inf128-1.c index df797e332208..f3ebfe17be0a 100644 --- a/gcc/testsuite/gcc.target/powerpc/inf128-1.c +++ b/gcc/testsuite/gcc.target/powerpc/inf128-1.c @@ -1,5 +1,6 @@ /* { dg-do run { target { powerpc64*-*-* && vsx_hw } } } */ -/* { dg-options "-mfloat128 -mvsx" } */ +/* { dg-options "-mfloat128" } */ +/* { dg-require-effective-target ppc_float128_sw } */ void abort (); diff --git a/gcc/testsuite/gcc.target/powerpc/mulkc3-1.c b/gcc/testsuite/gcc.target/powerpc/mulkc3-1.c index b975a91dbd7a..e707d1057fad 100644 --- a/gcc/testsuite/gcc.target/powerpc/mulkc3-1.c +++ b/gcc/testsuite/gcc.target/powerpc/mulkc3-1.c @@ -1,5 +1,6 @@ /* { dg-do run { target { powerpc64*-*-* && p8vector_hw } } } */ -/* { dg-options "-mfloat128 -mvsx" } */ +/* { dg-options "-mfloat128" } */ +/* { dg-require-effective-target ppc_float128_sw } */ void abort (); diff --git a/gcc/testsuite/gcc.target/powerpc/nan128-1.c b/gcc/testsuite/gcc.target/powerpc/nan128-1.c index e327f40f837c..631acfd15b01 100644 --- a/gcc/testsuite/gcc.target/powerpc/nan128-1.c +++ b/gcc/testsuite/gcc.target/powerpc/nan128-1.c @@ -1,5 +1,6 @@ /* { dg-do run { target { powerpc64*-*-* && vsx_hw } } } */ -/* { dg-options "-mfloat128 -mvsx" } */ +/* { dg-options "-mfloat128" } */ +/* { dg-require-effective-target ppc_float128_sw } */ #include <stdio.h> diff --git a/gcc/testsuite/gcc.target/powerpc/p9-lxvx-stxvx-3.c b/gcc/testsuite/gcc.target/powerpc/p9-lxvx-stxvx-3.c index 0994e6a8da86..a4f9312be825 100644 --- a/gcc/testsuite/gcc.target/powerpc/p9-lxvx-stxvx-3.c +++ b/gcc/testsuite/gcc.target/powerpc/p9-lxvx-stxvx-3.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-mdejagnu-cpu=power9 -mvsx -O3 -mfloat128" } */ +/* { dg-options "-mdejagnu-cpu=power9 -O3 -mfloat128" } */ /* { dg-require-effective-target ppc_float128_sw } */ /* { dg-require-effective-target powerpc_vsx } */ /* { dg-final { scan-assembler "lxvx" } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/pr104253.c b/gcc/testsuite/gcc.target/powerpc/pr104253.c index e5f9499b7c88..ae059b3911f1 100644 --- a/gcc/testsuite/gcc.target/powerpc/pr104253.c +++ b/gcc/testsuite/gcc.target/powerpc/pr104253.c @@ -7,7 +7,7 @@ /* { dg-do run } */ /* { dg-require-effective-target ppc_float128_sw } */ -/* { dg-options "-O2 -mvsx -mfloat128" } */ +/* { dg-options "-O2 -mfloat128" } */ /* { dg-prune-output ".-mfloat128. option may not be fully supported" } */ /* diff --git a/gcc/testsuite/gcc.target/powerpc/pr70669.c b/gcc/testsuite/gcc.target/powerpc/pr70669.c index 96dc13db38cc..7e2d7462a82f 100644 --- a/gcc/testsuite/gcc.target/powerpc/pr70669.c +++ b/gcc/testsuite/gcc.target/powerpc/pr70669.c @@ -1,6 +1,7 @@ /* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */ -/* { dg-options "-O2 -mdejagnu-cpu=power8 -mvsx -mfloat128" } */ +/* { dg-options "-O2 -mdejagnu-cpu=power8 -mfloat128" } */ /* { dg-require-effective-target powerpc_vsx } */ +/* { dg-require-effective-target ppc_float128_sw } */ #ifndef TYPE #define TYPE __float128 diff --git a/gcc/testsuite/gcc.target/powerpc/pr79004.c b/gcc/testsuite/gcc.target/powerpc/pr79004.c index 60c576cd36b6..b6c82f51fa58 100644 --- a/gcc/testsuite/gcc.target/powerpc/pr79004.c +++ b/gcc/testsuite/gcc.target/powerpc/pr79004.c @@ -1,6 +1,6 @@ /* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ -/* { dg-options "-mdejagnu-cpu=power9 -mvsx -O2 -mfloat128" } */ -/* { dg-require-effective-target powerpc_vsx } */ +/* { dg-options "-mdejagnu-cpu=power9 -O2 -mfloat128" } */ +/* { dg-require-effective-target ppc_float128_sw } */ #include <math.h> diff --git a/gcc/testsuite/gcc.target/powerpc/pr79038-1.c b/gcc/testsuite/gcc.target/powerpc/pr79038-1.c index 7c5500716b78..223a74826c27 100644 --- a/gcc/testsuite/gcc.target/powerpc/pr79038-1.c +++ b/gcc/testsuite/gcc.target/powerpc/pr79038-1.c @@ -1,6 +1,6 @@ /* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ -/* { dg-options "-mdejagnu-cpu=power9 -mvsx -O2 -mfloat128" } */ -/* { dg-require-effective-target powerpc_vsx } */ +/* { dg-options "-mdejagnu-cpu=power9 -O2 -mfloat128" } */ +/* { dg-require-effective-target ppc_float128_sw } */ #ifndef TYPE #define TYPE _Float128 diff --git a/gcc/testsuite/gcc.target/powerpc/pr81959.c b/gcc/testsuite/gcc.target/powerpc/pr81959.c index 0ad637eb3c96..8008db1d9c28 100644 --- a/gcc/testsuite/gcc.target/powerpc/pr81959.c +++ b/gcc/testsuite/gcc.target/powerpc/pr81959.c @@ -1,7 +1,8 @@ /* { dg-do compile { target { powerpc64*-*-* && lp64 } } } */ -/* { dg-options "-mvsx -O2 -mfloat128" } */ +/* { dg-options "-O2 -mfloat128" } */ /* { dg-additional-options "-mdejagnu-cpu=power9" { target { ! has_arch_pwr9 } } } */ /* { dg-require-effective-target powerpc_vsx } */ +/* { dg-require-effective-target ppc_float128_sw } */ /* PR 81959, the compiler raised on unrecognizable insn message in converting int to __float128, where the int had a PRE_INC in the address. */ diff --git a/gcc/testsuite/gcc.target/powerpc/pr85657-1.c b/gcc/testsuite/gcc.target/powerpc/pr85657-1.c index 3337d06332d6..bafca6e772fc 100644 --- a/gcc/testsuite/gcc.target/powerpc/pr85657-1.c +++ b/gcc/testsuite/gcc.target/powerpc/pr85657-1.c @@ -1,6 +1,6 @@ /* { dg-do compile { target { powerpc*-*-linux* } } } */ /* { dg-require-effective-target ppc_float128_sw } */ -/* { dg-options "-mvsx -mfloat128 -O2 -mabi=ibmlongdouble -Wno-psabi" } */ +/* { dg-options "-mfloat128 -O2 -mabi=ibmlongdouble -Wno-psabi" } */ // PR 85657 -- make sure conversions work between each of the 128-bit floating // point types. diff --git a/gcc/testsuite/gcc.target/powerpc/pr85657-2.c b/gcc/testsuite/gcc.target/powerpc/pr85657-2.c index 33113da8f858..633d5c66b36a 100644 --- a/gcc/testsuite/gcc.target/powerpc/pr85657-2.c +++ b/gcc/testsuite/gcc.target/powerpc/pr85657-2.c @@ -1,6 +1,6 @@ /* { dg-do compile { target { powerpc*-*-linux* } } } */ /* { dg-require-effective-target ppc_float128_sw } */ -/* { dg-options "-mvsx -mfloat128 -O2 -mabi=ieeelongdouble -Wno-psabi" } */ +/* { dg-options "-mfloat128 -O2 -mabi=ieeelongdouble -Wno-psabi" } */ // PR 85657 -- make sure conversions work between each of the 128-bit floating // point types. diff --git a/gcc/testsuite/gcc.target/powerpc/pr99708.c b/gcc/testsuite/gcc.target/powerpc/pr99708.c index c6aa0511b892..6232ff009494 100644 --- a/gcc/testsuite/gcc.target/powerpc/pr99708.c +++ b/gcc/testsuite/gcc.target/powerpc/pr99708.c @@ -1,7 +1,7 @@ /* { dg-do run } */ /* { dg-skip-if "" { powerpc*-*-darwin* powerpc-ibm-aix* } } */ -/* { require-effective-target ppc_float128_sw } */ -/* { dg-options "-O2 -mvsx -mfloat128" } */ +/* { dg-require-effective-target ppc_float128_sw } */ +/* { dg-options "-O2" } */ /* * PR target/99708 diff --git a/gcc/testsuite/gcc.target/powerpc/signbit-1.c b/gcc/testsuite/gcc.target/powerpc/signbit-1.c index a29ae0fd98b6..b9411170e511 100644 --- a/gcc/testsuite/gcc.target/powerpc/signbit-1.c +++ b/gcc/testsuite/gcc.target/powerpc/signbit-1.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-mdejagnu-cpu=power8 -mvsx -O2 -mfloat128" } */ +/* { dg-options "-mdejagnu-cpu=power8 -O2 -mfloat128" } */ /* { dg-require-effective-target lp64 } */ /* { dg-require-effective-target ppc_float128_sw } */ /* { dg-require-effective-target powerpc_vsx } */ diff --git a/gcc/testsuite/gcc.target/powerpc/signbit-2.c b/gcc/testsuite/gcc.target/powerpc/signbit-2.c index a6d83458f9d2..4715b0866d5f 100644 --- a/gcc/testsuite/gcc.target/powerpc/signbit-2.c +++ b/gcc/testsuite/gcc.target/powerpc/signbit-2.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-mdejagnu-cpu=power9 -mvsx -O2 -mfloat128" } */ +/* { dg-options "-mdejagnu-cpu=power9 -O2 -mfloat128" } */ /* { dg-require-effective-target powerpc_vsx } */ /* { dg-require-effective-target ppc_float128_sw } */ diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index b7df6150bcbd..beb8e2877e57 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -2979,7 +2979,6 @@ proc check_ppc_float128_sw_available { } { || [istarget *-*-darwin*]} { expr 0 } else { - set options "-mfloat128 -mvsx" check_runtime_nocache ppc_float128_sw_available { volatile __float128 x = 1.0q; volatile __float128 y = 2.0q; @@ -2988,7 +2987,7 @@ proc check_ppc_float128_sw_available { } { __float128 z = x + y; return (z != 3.0q); } - } $options + } "" } }] } @@ -3005,7 +3004,6 @@ proc check_ppc_float128_hw_available { } { || [istarget *-*-darwin*]} { expr 0 } else { - set options "-mfloat128 -mvsx -mfloat128-hardware -mcpu=power9" check_runtime_nocache ppc_float128_hw_available { volatile __float128 x = 1.0q; volatile __float128 y = 2.0q; @@ -3017,7 +3015,7 @@ proc check_ppc_float128_hw_available { } { __asm__ ("xsaddqp %0,%1,%2" : "+v" (w) : "v" (x), "v" (y)); return ((z != 3.0q) || (z != w)); } - } $options + } "" } }] } @@ -3030,14 +3028,13 @@ proc check_effective_target_ppc_ieee128_ok { } { || [istarget *-*-vxworks*]} { expr 0 } else { - set options "-mfloat128" check_runtime_nocache ppc_ieee128_ok { int main() { __ieee128 a; return 0; } - } $options + } "" } }] } @@ -3946,9 +3943,6 @@ proc check_effective_target___float128 { } { } proc add_options_for___float128 { flags } { - if { [istarget powerpc*-*-linux*] } { - return "$flags -mfloat128 -mvsx" - } return "$flags" } @@ -3958,7 +3952,7 @@ proc add_options_for___float128 { flags } { proc check_effective_target_base_quadfloat_support { } { if { [istarget powerpc*-*-*] } { - return [check_vsx_hw_available] + return [check_ppc_float128_sw_available] } return 1 } @@ -7217,8 +7211,9 @@ proc check_effective_target_power10_ok { } { } } -# Return 1 if this is a PowerPC target supporting -mfloat128 via either -# software emulation on power7/power8 systems or hardware support on power9. +# Return 1 if this is a PowerPC target supporting IEEE 128-bit floating point +# via either software emulation on power7/power8 systems or hardware support on +# power9. proc check_effective_target_powerpc_float128_sw_ok { } { if { [istarget powerpc*-*-*] @@ -7234,14 +7229,14 @@ proc check_effective_target_powerpc_float128_sw_ok { } { __float128 z = x + y; return (z == 3.0q); } - } "-mfloat128 -mvsx"] + } ""] } else { return 0 } } -# Return 1 if this is a PowerPC target supporting -mfloat128 via hardware -# support on power9. +# Return 1 if this is a PowerPC target supporting IEEE 128-bit floating point +# via hardware support on power9 and later systems. proc check_effective_target_powerpc_float128_hw_ok { } { if { [istarget powerpc*-*-*] @@ -7258,7 +7253,7 @@ proc check_effective_target_powerpc_float128_hw_ok { } { __asm__ ("xsaddqp %0,%1,%2" : "=v" (z) : "v" (x), "v" (y)); return (z == 3.0q); } - } "-mfloat128-hardware"] + } ""] } else { return 0 }