On Tue, 14 Apr 2020 at 10:38, Andre Vieira (lists) <andre.simoesdiasvie...@arm.com> wrote: > > On 10/04/2020 14:55, Christophe Lyon via Gcc-patches wrote: > > Several ARM/MVE tests can be compiled even if the toolchain does not > > support -mfloat-abi=hard (softfp is OK). > > > > Use dg-add-options arm_v8_1m_mve or arm_v8_1m_mve_fp instead of using > > dg-additional-options. > Hi Christophe, > > I think a bunch of these tests were initially meant to test hard float > abi with vectors, especially in the MVE integer cases, this is what the > scan-assemblers are meant to test. However, it seems to pass for > float-abi=softfp too ... which means these tests don't really mean > anything. I think it would be good to remove the scan-assembler tests > for now and improve these tests later with run tests, or some smarter > function body testing. > > I suggest we apply your changes and I can follow up with a patch to > remove the scan-assemblers for now, if a maintainer agrees with me that is.
Not sure why I missed that, but mve_vector_float2.c fails on arm-linux-gnueabi, because it's scan-assembler works only with mfloat-abi=hard: gcc.target/arm/mve/intrinsics/mve_vector_float2.c scan-assembler vmov\\tq[0-7], q[0-7] I checked that 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 e3cf8f8..10fe904 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,6 +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-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ +/* { dg-additional-options "-mfloat-abi=hard" } */ #include "arm_mve.h" does the trick, but I also tried the check-function-bodies route. I hoped it would be easy, but... it wasn't because the testcase is also executed in C++ mode, so the function label is no longer foo32: but _Z5foo32v: and check-function-bodies wants exact matching here. Sigh.... Christophe > > Cheers, > Andre > > 2020-04-10 Christophe Lyon <christophe.l...@linaro.org> > > > > gcc/testsuite/ > > * gcc.target/arm/mve/intrinsics/mve_vector_float.c: Use > > arm_v8_1m_mve_fp. > > * gcc.target/arm/mve/intrinsics/mve_vector_float1.c: Likewise. > > * gcc.target/arm/mve/intrinsics/mve_vector_float2.c: Likewise. > > * gcc.target/arm/mve/intrinsics/mve_vector_int.c: Use > > arm_v8_1m_mve. > > * gcc.target/arm/mve/intrinsics/mve_vector_int1.c: Likewise. > > * gcc.target/arm/mve/intrinsics/mve_vector_int2.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/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float.c | 2 +- > > gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float1.c | 2 +- > > 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_int1.c | 2 +- > > gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_int2.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 +- > > 9 files changed, 9 insertions(+), 9 deletions(-) > > > > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float.c > > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float.c > > index 881157f..6519b81 100644 > > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float.c > > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float.c > > @@ -1,6 +1,6 @@ > > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > > +/* { dg-add-options arm_v8_1m_mve_fp } */ > > /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } > > {""} } */ > > -/* { dg-additional-options "-march=armv8.1-m.main+mve.fp -mfpu=auto > > -mfloat-abi=hard -mthumb --save-temps" } */ > > > > #include "arm_mve.h" > > > > diff --git > > a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float1.c > > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float1.c > > index 9515ed6..855e3b8 100644 > > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float1.c > > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float1.c > > @@ -1,6 +1,6 @@ > > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > > +/* { dg-add-options arm_v8_1m_mve_fp } */ > > /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } > > {""} } */ > > -/* { dg-additional-options "-march=armv8.1-m.main+mve.fp -mfpu=auto > > -mfloat-abi=hard -mthumb --save-temps" } */ > > > > #include "arm_mve.h" > > > > 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 3ce8ea3..e3cf8f8 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,6 +1,6 @@ > > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > > +/* { dg-add-options arm_v8_1m_mve_fp } */ > > /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } > > {""} } */ > > -/* { dg-additional-options "-march=armv8.1-m.main+mve.fp -mfpu=auto > > -mfloat-abi=hard -mthumb --save-temps" } */ > > > > #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 dab0705..e70cbc1 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,6 +1,6 @@ > > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > > +/* { dg-add-options arm_v8_1m_mve } */ > > /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } > > {""} } */ > > -/* { dg-additional-options "-march=armv8.1-m.main+mve -mfpu=auto > > -mfloat-abi=hard -mthumb --save-temps" } */ > > > > #include "arm_mve.h" > > > > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_int1.c > > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_int1.c > > index e54516b..b13d0a8 100644 > > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_int1.c > > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_int1.c > > @@ -1,6 +1,6 @@ > > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > > +/* { dg-add-options arm_v8_1m_mve } */ > > /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } > > {""} } */ > > -/* { dg-additional-options "-march=armv8.1-m.main+mve -mfpu=auto > > -mfloat-abi=hard -mthumb --save-temps" } */ > > > > #include "arm_mve.h" > > > > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_int2.c > > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_int2.c > > index 2bd9bdf..04403ee 100644 > > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_int2.c > > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_int2.c > > @@ -1,6 +1,6 @@ > > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > > +/* { dg-add-options arm_v8_1m_mve } */ > > /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } > > {""} } */ > > -/* { dg-additional-options "-march=armv8.1-m.main+mve -mfpu=auto > > -mfloat-abi=hard -mthumb --save-temps" } */ > > > > #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 e8df1a6..0c4e763 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,6 +1,6 @@ > > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > > +/* { dg-add-options arm_v8_1m_mve } */ > > /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } > > {""} } */ > > -/* { dg-additional-options "-march=armv8.1-m.main+mve -mfpu=auto > > -mfloat-abi=hard -mthumb --save-temps" } */ > > > > #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 7ae42b9..fce69eb 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,6 +1,6 @@ > > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > > +/* { dg-add-options arm_v8_1m_mve } */ > > /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } > > {""} } */ > > -/* { dg-additional-options "-march=armv8.1-m.main+mve -mfpu=auto > > -mfloat-abi=hard -mthumb --save-temps" } */ > > > > #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 fad9daa..e0d6dcb 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,6 +1,6 @@ > > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > > +/* { dg-add-options arm_v8_1m_mve } */ > > /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } > > {""} } */ > > -/* { dg-additional-options "-march=armv8.1-m.main+mve -mfpu=auto > > -mfloat-abi=hard -mthumb --save-temps" } */ > > > > #include "arm_mve.h" > >