https://gcc.gnu.org/g:50e8cc25318493246e824f7acb6f112ddf55db66
commit 50e8cc25318493246e824f7acb6f112ddf55db66 Author: Michael Meissner <meiss...@linux.ibm.com> Date: Wed Jul 17 02:27:41 2024 -0400 Revert changes Diff: --- gcc/ChangeLog.bugs | 99 +--------------------- 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 +++--- 24 files changed, 44 insertions(+), 141 deletions(-) diff --git a/gcc/ChangeLog.bugs b/gcc/ChangeLog.bugs index 2ef69cc3e3d9..8668084757cc 100644 --- a/gcc/ChangeLog.bugs +++ b/gcc/ChangeLog.bugs @@ -1,98 +1,7 @@ -==================== Branch work171-bugs, patch #334 ==================== - -Fix typo. - -2024-07-17 Michael Meissner <meiss...@linux.ibm.com> - -gcc/testsuite/ - - PR target/115800 - PR target/113652 - * gcc.target/powerpc/pr99708.c: Use dg-require-effective-target, not - require-effective-target. - -==================== Branch work171-bugs, patch #333 ==================== - -Remove -mfloat128 on pr99708.c - -2024-07-16 Michael Meissner <meiss...@linux.ibm.com> - -gcc/testsuite/ - - PR target/115800 - PR target/113652 - * gcc.target/powerpc/pr99708.c: Remove -mfloat128 option. - -==================== Branch work171-bugs, patch #332 ==================== - -Do not add -mvsx or -mfloat128 when testing the float128 support. - -2024-07-16 Michael Meissner <meiss...@linux.ibm.com> - -gcc/testsuite/ - - PR target/115800 - PR target/113652 - * lib/target-supports.exp (check_ppc_float128_sw_available): Do not add - -mfloat128 or -mfloat128-hardware. - (check_ppc_float128_hw_available): Likewise. - (check_effective_target_ppc_ieee128_ok): Likewise. - (add_options_for___float128): Likewise. - (check_effective_target_powerpc_float128_sw_ok): Likewise. - (check_effective_target_powerpc_float128_hw_ok): Likewise. - -==================== Branch work171-bugs, patch #331 ==================== - -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. - -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. - -2024-07-16 Michael Meissner <meiss...@linux.ibm.com> - -gcc/testsuite/ - - PR target/115800 - PR target/113652 - * gcc.target/powerpc/abs128-1.c: Remove -mvsx option. Add explicit - check for the float128 support. - * 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. - (add_options_for___float128): Likewise. - (check_effective_target___float128): Likewise. - (check_effective_target_base_quadfloat_support): Likewise. +==================== Branch work171-bugs, patch #334 was reverted ==================== +==================== Branch work171-bugs, patch #333 was reverted ==================== +==================== Branch work171-bugs, patch #332 was reverted ==================== +==================== Branch work171-bugs, patch #331 was reverted ==================== ==================== Branch work171-bugs, patch #330 ==================== diff --git a/gcc/testsuite/gcc.target/powerpc/abs128-1.c b/gcc/testsuite/gcc.target/powerpc/abs128-1.c index ee4c1aa24747..fe5206daff8c 100644 --- a/gcc/testsuite/gcc.target/powerpc/abs128-1.c +++ b/gcc/testsuite/gcc.target/powerpc/abs128-1.c @@ -1,6 +1,5 @@ /* { dg-do run { target { powerpc64*-*-* && vsx_hw } } } */ -/* { dg-options "-mfloat128" } */ -/* { dg-require-effective-target ppc_float128_sw } */ +/* { dg-options "-mfloat128 -mvsx" } */ 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 081fb2e2995f..f0e03c5173d2 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,7 +2,6 @@ /* { 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 d07c5ae0a6c3..429dfc072e3b 100644 --- a/gcc/testsuite/gcc.target/powerpc/copysign128-1.c +++ b/gcc/testsuite/gcc.target/powerpc/copysign128-1.c @@ -1,6 +1,5 @@ /* { dg-do run { target { powerpc64*-*-* && vsx_hw } } } */ -/* { dg-options "-mfloat128" } */ -/* { dg-require-effective-target ppc_float128_sw } */ +/* { dg-options "-mfloat128 -mvsx" } */ void abort (); diff --git a/gcc/testsuite/gcc.target/powerpc/divkc3-1.c b/gcc/testsuite/gcc.target/powerpc/divkc3-1.c index cb79261f4014..89bf04f12a97 100644 --- a/gcc/testsuite/gcc.target/powerpc/divkc3-1.c +++ b/gcc/testsuite/gcc.target/powerpc/divkc3-1.c @@ -1,6 +1,5 @@ /* { dg-do run { target { powerpc64*-*-* && p8vector_hw } } } */ -/* { dg-options "-mfloat128" } */ -/* { dg-require-effective-target ppc_float128_sw } */ +/* { dg-options "-mfloat128 -mvsx" } */ void abort (); diff --git a/gcc/testsuite/gcc.target/powerpc/float128-3.c b/gcc/testsuite/gcc.target/powerpc/float128-3.c index d429684f50c2..e62ad5f5247f 100644 --- a/gcc/testsuite/gcc.target/powerpc/float128-3.c +++ b/gcc/testsuite/gcc.target/powerpc/float128-3.c @@ -1,7 +1,6 @@ /* { dg-do compile { target { powerpc*-*-linux* } } } */ -/* { dg-options "-O2 -mno-float128" } */ +/* { dg-options "-O2 -mvsx -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 0b17aed6b8e1..8a9eee971fbc 100644 --- a/gcc/testsuite/gcc.target/powerpc/float128-5.c +++ b/gcc/testsuite/gcc.target/powerpc/float128-5.c @@ -1,8 +1,7 @@ /* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */ -/* { dg-options "-O2 -mno-float128" } */ +/* { dg-options "-O2 -mvsx -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 8aaec3343e47..339af47f39e6 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 -mfloat128-hardware" } */ +/* { dg-options "-O2 -mvsx -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 eb5f0a838616..d1e222397187 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 "-O2 -mfloat128 -mlong-double-128 -mabi=ieeelongdouble -Wno-psabi" } */ +/* { dg-options "-mvsx -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 f3ebfe17be0a..df797e332208 100644 --- a/gcc/testsuite/gcc.target/powerpc/inf128-1.c +++ b/gcc/testsuite/gcc.target/powerpc/inf128-1.c @@ -1,6 +1,5 @@ /* { dg-do run { target { powerpc64*-*-* && vsx_hw } } } */ -/* { dg-options "-mfloat128" } */ -/* { dg-require-effective-target ppc_float128_sw } */ +/* { dg-options "-mfloat128 -mvsx" } */ void abort (); diff --git a/gcc/testsuite/gcc.target/powerpc/mulkc3-1.c b/gcc/testsuite/gcc.target/powerpc/mulkc3-1.c index e707d1057fad..b975a91dbd7a 100644 --- a/gcc/testsuite/gcc.target/powerpc/mulkc3-1.c +++ b/gcc/testsuite/gcc.target/powerpc/mulkc3-1.c @@ -1,6 +1,5 @@ /* { dg-do run { target { powerpc64*-*-* && p8vector_hw } } } */ -/* { dg-options "-mfloat128" } */ -/* { dg-require-effective-target ppc_float128_sw } */ +/* { dg-options "-mfloat128 -mvsx" } */ void abort (); diff --git a/gcc/testsuite/gcc.target/powerpc/nan128-1.c b/gcc/testsuite/gcc.target/powerpc/nan128-1.c index 631acfd15b01..e327f40f837c 100644 --- a/gcc/testsuite/gcc.target/powerpc/nan128-1.c +++ b/gcc/testsuite/gcc.target/powerpc/nan128-1.c @@ -1,6 +1,5 @@ /* { dg-do run { target { powerpc64*-*-* && vsx_hw } } } */ -/* { dg-options "-mfloat128" } */ -/* { dg-require-effective-target ppc_float128_sw } */ +/* { dg-options "-mfloat128 -mvsx" } */ #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 a4f9312be825..0994e6a8da86 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 -O3 -mfloat128" } */ +/* { dg-options "-mdejagnu-cpu=power9 -mvsx -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 ae059b3911f1..e5f9499b7c88 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 -mfloat128" } */ +/* { dg-options "-O2 -mvsx -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 7e2d7462a82f..96dc13db38cc 100644 --- a/gcc/testsuite/gcc.target/powerpc/pr70669.c +++ b/gcc/testsuite/gcc.target/powerpc/pr70669.c @@ -1,7 +1,6 @@ /* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */ -/* { dg-options "-O2 -mdejagnu-cpu=power8 -mfloat128" } */ +/* { dg-options "-O2 -mdejagnu-cpu=power8 -mvsx -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 b6c82f51fa58..60c576cd36b6 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 -O2 -mfloat128" } */ -/* { dg-require-effective-target ppc_float128_sw } */ +/* { dg-options "-mdejagnu-cpu=power9 -mvsx -O2 -mfloat128" } */ +/* { dg-require-effective-target powerpc_vsx } */ #include <math.h> diff --git a/gcc/testsuite/gcc.target/powerpc/pr79038-1.c b/gcc/testsuite/gcc.target/powerpc/pr79038-1.c index 223a74826c27..7c5500716b78 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 -O2 -mfloat128" } */ -/* { dg-require-effective-target ppc_float128_sw } */ +/* { dg-options "-mdejagnu-cpu=power9 -mvsx -O2 -mfloat128" } */ +/* { dg-require-effective-target powerpc_vsx } */ #ifndef TYPE #define TYPE _Float128 diff --git a/gcc/testsuite/gcc.target/powerpc/pr81959.c b/gcc/testsuite/gcc.target/powerpc/pr81959.c index 8008db1d9c28..0ad637eb3c96 100644 --- a/gcc/testsuite/gcc.target/powerpc/pr81959.c +++ b/gcc/testsuite/gcc.target/powerpc/pr81959.c @@ -1,8 +1,7 @@ /* { dg-do compile { target { powerpc64*-*-* && lp64 } } } */ -/* { dg-options "-O2 -mfloat128" } */ +/* { dg-options "-mvsx -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 bafca6e772fc..3337d06332d6 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 "-mfloat128 -O2 -mabi=ibmlongdouble -Wno-psabi" } */ +/* { dg-options "-mvsx -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 633d5c66b36a..33113da8f858 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 "-mfloat128 -O2 -mabi=ieeelongdouble -Wno-psabi" } */ +/* { dg-options "-mvsx -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 6232ff009494..c6aa0511b892 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* } } */ -/* { dg-require-effective-target ppc_float128_sw } */ -/* { dg-options "-O2" } */ +/* { require-effective-target ppc_float128_sw } */ +/* { dg-options "-O2 -mvsx -mfloat128" } */ /* * PR target/99708 diff --git a/gcc/testsuite/gcc.target/powerpc/signbit-1.c b/gcc/testsuite/gcc.target/powerpc/signbit-1.c index b9411170e511..a29ae0fd98b6 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 -O2 -mfloat128" } */ +/* { dg-options "-mdejagnu-cpu=power8 -mvsx -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 4715b0866d5f..a6d83458f9d2 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 -O2 -mfloat128" } */ +/* { dg-options "-mdejagnu-cpu=power9 -mvsx -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 beb8e2877e57..b7df6150bcbd 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -2979,6 +2979,7 @@ 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; @@ -2987,7 +2988,7 @@ proc check_ppc_float128_sw_available { } { __float128 z = x + y; return (z != 3.0q); } - } "" + } $options } }] } @@ -3004,6 +3005,7 @@ 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; @@ -3015,7 +3017,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 } }] } @@ -3028,13 +3030,14 @@ 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 } }] } @@ -3943,6 +3946,9 @@ proc check_effective_target___float128 { } { } proc add_options_for___float128 { flags } { + if { [istarget powerpc*-*-linux*] } { + return "$flags -mfloat128 -mvsx" + } return "$flags" } @@ -3952,7 +3958,7 @@ proc add_options_for___float128 { flags } { proc check_effective_target_base_quadfloat_support { } { if { [istarget powerpc*-*-*] } { - return [check_ppc_float128_sw_available] + return [check_vsx_hw_available] } return 1 } @@ -7211,9 +7217,8 @@ proc check_effective_target_power10_ok { } { } } -# 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. +# Return 1 if this is a PowerPC target supporting -mfloat128 via either +# software emulation on power7/power8 systems or hardware support on power9. proc check_effective_target_powerpc_float128_sw_ok { } { if { [istarget powerpc*-*-*] @@ -7229,14 +7234,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 IEEE 128-bit floating point -# via hardware support on power9 and later systems. +# Return 1 if this is a PowerPC target supporting -mfloat128 via hardware +# support on power9. proc check_effective_target_powerpc_float128_hw_ok { } { if { [istarget powerpc*-*-*] @@ -7253,7 +7258,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 }