diff mbox series

[2/2] PR target/113652, Adjust tests to skip float128 unless the compiler enables them by default

Message ID Zpiq3HahmT6nSgMH@cowardly-lion.the-meissners.org
State New
Headers show
Series PR target/113652, Fix failed bootstrap on ppc unrecognized opcode: `lfiwzx' with -mcpu=7450 | expand

Commit Message

Michael Meissner July 18, 2024, 5:40 a.m. UTC
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-07-18 Michael Meissner  <meissner@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.
---
 gcc/testsuite/gcc.target/powerpc/abs128-1.c   |  3 ++-
 .../powerpc/bfp/scalar-insert-exp-16.c        |  1 +
 .../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.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.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 mbox series

Patch

diff --git a/gcc/testsuite/gcc.target/powerpc/abs128-1.c b/gcc/testsuite/gcc.target/powerpc/abs128-1.c
index fe5206daff8..ee4c1aa2474 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 f0e03c5173d..081fb2e2995 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 429dfc072e3..d07c5ae0a6c 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 89bf04f12a9..cb79261f401 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 e62ad5f5247..d429684f50c 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 8a9eee971fb..0b17aed6b8e 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 339af47f39e..8aaec3343e4 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 d1e22239718..eb5f0a83861 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 df797e33220..f3ebfe17be0 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 b975a91dbd7..e707d1057fa 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 e327f40f837..631acfd15b0 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 0994e6a8da8..a4f9312be82 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 e5f9499b7c8..ae059b3911f 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 96dc13db38c..7e2d7462a82 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 60c576cd36b..b6c82f51fa5 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 7c5500716b7..223a74826c2 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 0ad637eb3c9..8008db1d9c2 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 3337d06332d..bafca6e772f 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 33113da8f85..633d5c66b36 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 c6aa0511b89..6232ff00949 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 a29ae0fd98b..b9411170e51 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 a6d83458f9d..4715b0866d5 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 b7df6150bcb..beb8e2877e5 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
     }