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"
> >

Reply via email to