[gcc r11-7797] testsuite/arm: Fix -mfloat-abi order in arm_v8_1m_mve_ok_nocache and arm_v8_1m_mve_fp_ok_nocache

Christophe Lyon clyon@gcc.gnu.org
Tue Mar 23 15:13:11 GMT 2021


https://gcc.gnu.org/g:165bc67beb45f0f7e0d4f41347dab1649436f08a

commit r11-7797-g165bc67beb45f0f7e0d4f41347dab1649436f08a
Author: Christophe Lyon <christophe.lyon@linaro.org>
Date:   Tue Apr 21 17:45:02 2020 +0000

    testsuite/arm: Fix -mfloat-abi order in arm_v8_1m_mve_ok_nocache and arm_v8_1m_mve_fp_ok_nocache
    
    Make the order in which we try -mfloat-abi options consistent with the
    other similar effective targets: try softfp first, then hard.
    
    This shows that a few tests implicitly rely on -mfloat-abi=hard, so we
    add this option via dg-additional-options so that it comes after any
    potential -mfloat-abi option that the preceding effective-targets
    might have added.
    
    armv8_1m-fpXX-move-1.c tests don't need arm_hard_ok because they don't
    include arm_mve.h: adding -mfloat-abi=hard when using a soft/softfp
    toolchain does not lead to the missing include gnu/stubs-*.h error.
    
    This patch makes armv8_1m-fpXX-move-1.c pass on arm-linux-gnueabi, and
    the other tests become unsupported (instead of fail) on this target.
    
    On arm-eabi with default cpu/fpu/mode and a+rm multilibs, the same
    mve/intrinsics/* tests become unsupported instead of pass because
    arm_hard_ok fails with "selected processor lacks an FPU". Since we
    also override the fpu via dg-options, we'd need another effective
    target (say arm_hard_mve_ok) that would check -mfloat-abi=hard
    -mfpu=auto -march=armv8.1-m.main+mve.fp at the same time. But we have
    already so many arm effective targets, it doesn't seem like a good way
    forward.
    
    2021-03-19  Christophe Lyon  <christophe.lyon@linaro.org>
    
            gcc/testsuite/
            * lib/target-supports.exp
            (check_effective_target_arm_v8_1m_mve_fp_ok_nocache): Fix
            -mfloat-abi= options order.
            (check_effective_target_arm_v8_1m_mve_ok_nocache): Likewise
            * gcc.target/arm/mve/intrinsics/mve_vector_float2.c: Add
            arm_hard_ok effective target and -mfloat-abi=hard additional
            option.
            * gcc.target/arm/mve/intrinsics/mve_vector_int.c: Likewise.
            * gcc.target/arm/mve/intrinsics/mve_vector_uint.c: Likewise.
            * gcc.target/arm/mve/intrinsics/mve_vector_uint1.c: Likewise.
            * gcc.target/arm/mve/intrinsics/mve_vector_uint2.c: Likewise.
            * gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c: Likewise.
            * gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c: Likewise.
            * gcc.target/arm/mve/intrinsics/vsetq_lane_s64.c: Likewise.
            * gcc.target/arm/mve/intrinsics/vsetq_lane_u64.c: Likewise.
            * gcc.target/arm/armv8_1m-fp16-move-1.c: Add -mfloat-abi=hard
            additional option.
            * gcc.target/arm/armv8_1m-fp32-move-1.c: Likewise.
            * gcc.target/arm/armv8_1m-fp64-move-1.c: Likewise.

Diff:
---
 gcc/testsuite/gcc.target/arm/armv8_1m-fp16-move-1.c             | 3 ++-
 gcc/testsuite/gcc.target/arm/armv8_1m-fp32-move-1.c             | 3 ++-
 gcc/testsuite/gcc.target/arm/armv8_1m-fp64-move-1.c             | 3 ++-
 gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float2.c | 2 ++
 gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_int.c    | 2 ++
 gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint.c   | 2 ++
 gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint1.c  | 2 ++
 gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint2.c  | 2 ++
 gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c    | 3 ++-
 gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c    | 3 ++-
 gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s64.c    | 3 ++-
 gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u64.c    | 3 ++-
 gcc/testsuite/lib/target-supports.exp                           | 4 ++--
 13 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/gcc/testsuite/gcc.target/arm/armv8_1m-fp16-move-1.c b/gcc/testsuite/gcc.target/arm/armv8_1m-fp16-move-1.c
index 67a9f416adf..f5ab6e719f4 100644
--- a/gcc/testsuite/gcc.target/arm/armv8_1m-fp16-move-1.c
+++ b/gcc/testsuite/gcc.target/arm/armv8_1m-fp16-move-1.c
@@ -1,7 +1,8 @@
 /* { dg-do compile } */
-/* { dg-options "-O -mfloat-abi=hard -mfp16-format=ieee" } */
+/* { dg-options "-O -mfp16-format=ieee" } */
 /* { dg-require-effective-target arm_v8_1m_mve_ok } */
 /* { dg-add-options arm_v8_1m_mve } */
+/* { dg-additional-options "-mfloat-abi=hard" } *
 /* { dg-final { check-function-bodies "**" "" } } */
 
 /*
diff --git a/gcc/testsuite/gcc.target/arm/armv8_1m-fp32-move-1.c b/gcc/testsuite/gcc.target/arm/armv8_1m-fp32-move-1.c
index 1ecb839bfe7..2f62e839545 100644
--- a/gcc/testsuite/gcc.target/arm/armv8_1m-fp32-move-1.c
+++ b/gcc/testsuite/gcc.target/arm/armv8_1m-fp32-move-1.c
@@ -1,7 +1,8 @@
 /* { dg-do compile } */
-/* { dg-options "-O -mfloat-abi=hard" } */
+/* { dg-options "-O" } */
 /* { dg-require-effective-target arm_v8_1m_mve_ok } */
 /* { dg-add-options arm_v8_1m_mve } */
+/* { dg-additional-options "-mfloat-abi=hard" } *
 /* { dg-final { check-function-bodies "**" "" } } */
 
 /*
diff --git a/gcc/testsuite/gcc.target/arm/armv8_1m-fp64-move-1.c b/gcc/testsuite/gcc.target/arm/armv8_1m-fp64-move-1.c
index 3f81350697a..d236f0826c3 100644
--- a/gcc/testsuite/gcc.target/arm/armv8_1m-fp64-move-1.c
+++ b/gcc/testsuite/gcc.target/arm/armv8_1m-fp64-move-1.c
@@ -1,7 +1,8 @@
 /* { dg-do compile } */
-/* { dg-options "-O -mfloat-abi=hard" } */
+/* { dg-options "-O" } */
 /* { dg-require-effective-target arm_v8_1m_mve_ok } */
 /* { dg-add-options arm_v8_1m_mve } */
+/* { dg-additional-options "-mfloat-abi=hard" } *
 /* { dg-final { check-function-bodies "**" "" } } */
 
 /*
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float2.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float2.c
index 35f83c6b298..6728776da28 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float2.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float2.c
@@ -1,5 +1,7 @@
+/* { dg-require-effective-target arm_hard_ok } */
 /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
 /* { dg-add-options arm_v8_1m_mve_fp } */
+/* { dg-additional-options "-mfloat-abi=hard" } */
 /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
 
 #include "arm_mve.h"
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_int.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_int.c
index e70cbc12b1a..029e02f0c6a 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_int.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_int.c
@@ -1,5 +1,7 @@
+/* { dg-require-effective-target arm_hard_ok } */
 /* { dg-require-effective-target arm_v8_1m_mve_ok } */
 /* { dg-add-options arm_v8_1m_mve } */
+/* { dg-additional-options "-mfloat-abi=hard" } */
 /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
 
 #include "arm_mve.h"
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint.c
index 0c4e763626e..c15810015b9 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint.c
@@ -1,5 +1,7 @@
+/* { dg-require-effective-target arm_hard_ok } */
 /* { dg-require-effective-target arm_v8_1m_mve_ok } */
 /* { dg-add-options arm_v8_1m_mve } */
+/* { dg-additional-options "-mfloat-abi=hard" } */
 /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
 
 #include "arm_mve.h"
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint1.c
index fce69eb276d..d30fce05f68 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint1.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint1.c
@@ -1,5 +1,7 @@
+/* { dg-require-effective-target arm_hard_ok } */
 /* { dg-require-effective-target arm_v8_1m_mve_ok } */
 /* { dg-add-options arm_v8_1m_mve } */
+/* { dg-additional-options "-mfloat-abi=hard" } */
 /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
 
 #include "arm_mve.h"
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint2.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint2.c
index e0d6dcbe4bc..ae689144cd1 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint2.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint2.c
@@ -1,5 +1,7 @@
+/* { dg-require-effective-target arm_hard_ok } */
 /* { dg-require-effective-target arm_v8_1m_mve_ok } */
 /* { dg-add-options arm_v8_1m_mve } */
+/* { dg-additional-options "-mfloat-abi=hard" } */
 /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
 
 #include "arm_mve.h"
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c
index a7457f86320..63b25088eee 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c
@@ -1,7 +1,8 @@
 /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
+/* { dg-require-effective-target arm_hard_ok } */
 /* { dg-require-effective-target arm_v8_1m_mve_ok } */
 /* { dg-add-options arm_v8_1m_mve } */
-/* { dg-additional-options "-O2" } */
+/* { dg-additional-options "-mfloat-abi=hard -O2" } */
 
 #include "arm_mve.h"
 
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c
index 3cbbef520ae..a4b900fc66b 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c
@@ -1,7 +1,8 @@
 /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
+/* { dg-require-effective-target arm_hard_ok } */
 /* { dg-require-effective-target arm_v8_1m_mve_ok } */
 /* { dg-add-options arm_v8_1m_mve } */
-/* { dg-additional-options "-O2" } */
+/* { dg-additional-options "-mfloat-abi=hard -O2" } */
 
 #include "arm_mve.h"
 
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s64.c
index e487b73d417..430df669f2a 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s64.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s64.c
@@ -1,7 +1,8 @@
 /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
+/* { dg-require-effective-target arm_hard_ok } */
 /* { dg-require-effective-target arm_v8_1m_mve_ok } */
 /* { dg-add-options arm_v8_1m_mve } */
-/* { dg-additional-options "-O2" } */
+/* { dg-additional-options "-mfloat-abi=hard -O2" } */
 
 #include "arm_mve.h"
 
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u64.c
index ae57b9c947c..0e040121cf0 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u64.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u64.c
@@ -1,7 +1,8 @@
 /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
+/* { dg-require-effective-target arm_hard_ok } */
 /* { dg-require-effective-target arm_v8_1m_mve_ok } */
 /* { dg-add-options arm_v8_1m_mve } */
-/* { dg-additional-options "-O2" } */
+/* { dg-additional-options "-mfloat-abi=hard -O2" } */
 
 #include "arm_mve.h"
 
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index e42d711fe65..1af7619273f 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -5025,7 +5025,7 @@ proc check_effective_target_arm_v8_1m_mve_fp_ok_nocache { } {
 
     # Iterate through sets of options to find the compiler flags that
     # need to be added to the -march option.
-    foreach flags {"" "-mfloat-abi=hard -mfpu=auto -march=armv8.1-m.main+mve.fp" "-mfloat-abi=softfp -mfpu=auto -march=armv8.1-m.main+mve.fp"} {
+    foreach flags {"" "-mfloat-abi=softfp -mfpu=auto -march=armv8.1-m.main+mve.fp" "-mfloat-abi=hard -mfpu=auto -march=armv8.1-m.main+mve.fp"} {
 	if { [check_no_compiler_messages_nocache \
 		  arm_v8_1m_mve_fp_ok object {
 	    #include <arm_mve.h>
@@ -5208,7 +5208,7 @@ proc check_effective_target_arm_v8_1m_mve_ok_nocache { } {
 
     # Iterate through sets of options to find the compiler flags that
     # need to be added to the -march option.
-    foreach flags {"" "-mfloat-abi=hard -mfpu=auto -march=armv8.1-m.main+mve" "-mfloat-abi=softfp -mfpu=auto -march=armv8.1-m.main+mve"} {
+    foreach flags {"" "-mfloat-abi=softfp -mfpu=auto -march=armv8.1-m.main+mve" "-mfloat-abi=hard -mfpu=auto -march=armv8.1-m.main+mve"} {
         if { [check_no_compiler_messages_nocache \
                   arm_v8_1m_mve_ok object {
             #if !defined (__ARM_FEATURE_MVE)


More information about the Gcc-cvs mailing list