> -----Original Message-----
> From: Gcc-patches <gcc-patches-boun...@gcc.gnu.org> On Behalf Of
> Christophe Lyon via Gcc-patches
> Sent: 23 March 2021 14:33
> To: gcc-patches@gcc.gnu.org
> Subject: [PATCH 7/8] 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.

Ok.
Thanks,
Kyrill

> 
> 2021-03-19  Christophe Lyon  <christophe.l...@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.
> ---
>  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 67a9f41..f5ab6e7 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 1ecb839..2f62e839 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 3f81350..d236f08 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 35f83c6..6728776 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 e70cbc1..029e02f 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 0c4e763..c158100 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 fce69eb..d30fce0 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 e0d6dcb..ae68914 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 a7457f8..63b2508 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 3cbbef5..a4b900f 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 e487b73..430df66 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 ae57b9c..0e04012 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 e42d711..1af7619 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)
> --
> 2.7.4

Reply via email to