Disable float128 tests on VxWorks, PR target/104253.

In PR target/104253, it was pointed out the that test case added as part
of fixing the PR does not work on VxWorks because float128 is not
supported on that system.  I have modified the three tests for float128 so
that they are manually excluded on VxWorks systems.  In looking at the
code, I also added checks in check_effective_target_ppc_ieee128_ok to
disable the systems that will never support VSX instructions which are
required for float128 support (eabi, eabispe, darwin).

I have run the tests on my usual Linux systems (little endian power10, little
endian power9, big endian power8), but I don't have access to a VxWorks
system.  Eric does this fix the failure for you?

If it does fix the failure, can I apply the patch to the master branch and
backport it to GCC 11 and GCC 10?  Sorry about the breakage.

2022-04-07   Michael Meissner  <meiss...@linux.ibm.com>

gcc/testsuite/
        PR target/104253
        * lib/target-supports.exp (check_ppc_float128_sw_available): Do
        not run float128 tests on VxWorks.
        (check_ppc_float128_hw_available): Likewise.
        (check_effective_target_ppc_ieee128_ok): Do not run float128 tests
        on VxWorks.  Also disable systems that do not support VSX
        instructions.
---
 gcc/testsuite/lib/target-supports.exp | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/gcc/testsuite/lib/target-supports.exp 
b/gcc/testsuite/lib/target-supports.exp
index ff8edbd3e17..a4142eaee27 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -2318,10 +2318,12 @@ proc check_ppc_mma_hw_available { } {
 proc check_ppc_float128_sw_available { } {
     return [check_cached_effective_target ppc_float128_sw_available {
        # Some simulators are known to not support VSX/power8/power9
-       # instructions. For now, disable on Darwin.
+       # instructions. For now, disable on Darwin.  Disable on VxWorks as
+       # well.
        if { [istarget powerpc-*-eabi]
             || [istarget powerpc*-*-eabispe]
-            || [istarget *-*-darwin*]} {
+            || [istarget *-*-darwin*]
+            || [istarget *-*-vxworks]} {
            expr 0
        } else {
            set options "-mfloat128 -mvsx"
@@ -2344,10 +2346,11 @@ proc check_ppc_float128_sw_available { } {
 proc check_ppc_float128_hw_available { } {
     return [check_cached_effective_target ppc_float128_hw_available {
        # Some simulators are known to not support VSX/power8/power9
-       # instructions. For now, disable on Darwin.
+       # instructions. For now, disable on Darwin and VxWorks.
        if { [istarget powerpc-*-eabi]
             || [istarget powerpc*-*-eabispe]
-            || [istarget *-*-darwin*]} {
+            || [istarget *-*-darwin*]
+            || [istarget *-*-vxworks]} {
            expr 0
        } else {
            set options "-mfloat128 -mvsx -mfloat128-hardware -mpower9-vector"
@@ -2370,8 +2373,12 @@ proc check_ppc_float128_hw_available { } {
 # See if the __ieee128 keyword is understood.
 proc check_effective_target_ppc_ieee128_ok { } {
     return [check_cached_effective_target ppc_ieee128_ok {
-       # disable on AIX.
-       if { [istarget *-*-aix*] } {
+       # disable on AIX, Darwin, VxWorks and targets that don't support VSX.
+       if { [istarget *-*-aix*]
+            || [istarget powerpc-*-eabi]
+            || [istarget powerpc*-*-eabispe]
+            || [istarget *-*-darwin*]
+            || [istarget *-*-vxworks]} {
            expr 0
        } else {
            set options "-mfloat128"
-- 
2.35.1


-- 
Michael Meissner, IBM
PO Box 98, Ayer, Massachusetts, USA, 01432
email: meiss...@linux.ibm.com

Reply via email to