https://gcc.gnu.org/g:b5f934bf571d51be98b4a4c91292132df22a00a5
commit b5f934bf571d51be98b4a4c91292132df22a00a5 Author: Michael Meissner <meiss...@linux.ibm.com> Date: Fri Sep 13 03:50:23 2024 -0400 Do not add -mvsx when testing the float128 support. Currently, we add -mvsx when building the float128 support in libgcc. This allows 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. I built little endian compilers and there were no regressions. I built big endian compilers with the --with-cpu=power5 configure option, and I verified that none of the float128 support functions are built. I also built big endian compilers on a power9 with the --with-cpu=native configure option, and I verified that the float128 support functions were built, since the default compiler used the VSX instruction set. I verified that on both sets of big endian builds, that all of the float128 tests were skipped, since there is no support for float128 in glibc and the GCC compiler does not enable float128 on those systems. Can I check these patches into the trunk assuming the original bugzilla author says they fix the problem? 2024-09-13 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 | 2 +- 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 | 2 +- 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, 44 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 96fb5c212042..3ed9618c1847 100644 --- a/gcc/testsuite/gcc.target/powerpc/divkc3-1.c +++ b/gcc/testsuite/gcc.target/powerpc/divkc3-1.c @@ -1,5 +1,5 @@ /* { dg-do run { target { powerpc64*-*-* && p8vector_hw } } } */ -/* { dg-options "-mfloat128 -mvsx" } */ +/* { dg-options "-mfloat128" } */ /* { dg-additional-options "-mdejagnu-cpu=power8" { target { ! has_arch_pwr8 } } } */ 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 1b0a1e24814a..5d9235913c54 100644 --- a/gcc/testsuite/gcc.target/powerpc/mulkc3-1.c +++ b/gcc/testsuite/gcc.target/powerpc/mulkc3-1.c @@ -1,5 +1,5 @@ /* { dg-do run { target { powerpc64*-*-* && p8vector_hw } } } */ -/* { dg-options "-mfloat128 -mvsx" } */ +/* { dg-options "-mfloat128" } */ /* { dg-additional-options "-mdejagnu-cpu=power8" { target { ! has_arch_pwr8 } } } */ 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 ac89a4c9f327..b9657611db73 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 c4d2c33cf628..525b5080efe1 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -3036,7 +3036,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; @@ -3045,7 +3044,7 @@ proc check_ppc_float128_sw_available { } { __float128 z = x + y; return (z != 3.0q); } - } $options + } "" } }] } @@ -3062,7 +3061,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; @@ -3074,7 +3072,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 + } "" } }] } @@ -3087,14 +3085,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 + } "" } }] } @@ -3999,9 +3996,6 @@ proc check_effective_target___float128 { } { } proc add_options_for___float128 { flags } { - if { [istarget powerpc*-*-linux*] } { - return "$flags -mfloat128 -mvsx" - } return "$flags" } @@ -4011,7 +4005,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 } @@ -7330,8 +7324,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*-*-*] @@ -7347,14 +7342,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*-*-*] @@ -7371,7 +7366,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 }