> -----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
RE: [PATCH 7/8] testsuite/arm: Fix -mfloat-abi order in arm_v8_1m_mve_ok_nocache and arm_v8_1m_mve_fp_ok_nocache
Kyrylo Tkachov via Gcc-patches Tue, 23 Mar 2021 07:58:34 -0700
- RE: [PATCH 2/8] testsuite/arm: Add ar... Kyrylo Tkachov via Gcc-patches
- [PATCH 3/8] testsuite/arm: Remove useless ... Christophe Lyon via Gcc-patches
- RE: [PATCH 3/8] testsuite/arm: Remove... Kyrylo Tkachov via Gcc-patches
- [PATCH 4/8] testsuite/arm: Add arm_softfp_... Christophe Lyon via Gcc-patches
- RE: [PATCH 4/8] testsuite/arm: Add ar... Kyrylo Tkachov via Gcc-patches
- [PATCH 5/8] testsuite/arm: Add arm_hard_ok... Christophe Lyon via Gcc-patches
- RE: [PATCH 5/8] testsuite/arm: Add ar... Kyrylo Tkachov via Gcc-patches
- [PATCH 6/8] testsuite/arm: Fix -mfloat-abi... Christophe Lyon via Gcc-patches
- RE: [PATCH 6/8] testsuite/arm: Fix -m... Kyrylo Tkachov via Gcc-patches
- [PATCH 7/8] testsuite/arm: Fix -mfloat-abi... Christophe Lyon via Gcc-patches
- RE: [PATCH 7/8] testsuite/arm: Fix -m... Kyrylo Tkachov via Gcc-patches
- [PATCH 8/8] testsuite/arm: Add arm_dsp_ok ... Christophe Lyon via Gcc-patches
- RE: [PATCH 8/8] testsuite/arm: Add ar... Kyrylo Tkachov via Gcc-patches
- Re: [PATCH 8/8] testsuite/arm: Ad... Christophe Lyon via Gcc-patches