Message ID | 20220228112929.GA13209@arm.com |
---|---|
State | New |
Headers | show |
Series | [1/2] middle-end Handle difference between complex negations in SLP tree better (GCC 11 backport) | expand |
On Mon, 28 Feb 2022, Tamar Christina wrote: > Hi All, > > The GCC 12 testsuite for complex numbers pattern recognition is a lot more > exhaustive than the GCC 11 one. This backports the testsuite to GCC 11 so > any further changes to the branch prevents regressions. > > Bootstrapped Regtested on aarch64-none-linux-gnu, > x86_64-pc-linux-gnu and no regressions. > > Ok for GCC-11? OK. > Thanks, > Tamar > > gcc/testsuite/ChangeLog: > > * gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c: Update test > cases to not be UNSUPPORTED. > * gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c: Likewise. > * gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c: Likewise. > * gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-int.c: > Likewise. > * gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-long.c: > Likewise. > * gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c: > Likewise. > * gcc.dg/vect/complex/complex-add-pattern-template.c: Likewise. > * gcc.dg/vect/complex/complex-add-template.c: Likewise. > * gcc.dg/vect/complex/complex-operations-run.c: Likewise. > * gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c: Likewise. > * gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c: Likewise. > * gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c: > Likewise. > * gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c: > Likewise. > * gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c: > Likewise. > * gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c: > Likewise. > * gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c: Likewise. > * gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c: Likewise. > * gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c: > Likewise. > * gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c: Likewise. > * gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c: Likewise. > * gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c: > Likewise. > * gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c: Likewise. > * gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c: Likewise. > * gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c: > Likewise. > * gcc.dg/vect/complex/fast-math-complex-add-double.c: Likewise. > * gcc.dg/vect/complex/fast-math-complex-add-float.c: Likewise. > * gcc.dg/vect/complex/fast-math-complex-add-half-float.c: Likewise. > * gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c: Likewise. > * gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c: Likewise. > * gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c: > Likewise. > * gcc.dg/vect/complex/fast-math-complex-mla-double.c: Likewise. > * gcc.dg/vect/complex/fast-math-complex-mla-float.c: Likewise. > * gcc.dg/vect/complex/fast-math-complex-mla-half-float.c: Likewise. > * gcc.dg/vect/complex/fast-math-complex-mls-double.c: Likewise. > * gcc.dg/vect/complex/fast-math-complex-mls-float.c: Likewise. > * gcc.dg/vect/complex/fast-math-complex-mls-half-float.c: Likewise. > * gcc.dg/vect/complex/fast-math-complex-mul-double.c: Likewise. > * gcc.dg/vect/complex/fast-math-complex-mul-float.c: Likewise. > * gcc.dg/vect/complex/fast-math-complex-mul-half-float.c: Likewise. > * gcc.dg/vect/complex/vect-complex-add-pattern-byte.c: Likewise. > * gcc.dg/vect/complex/vect-complex-add-pattern-int.c: Likewise. > * gcc.dg/vect/complex/vect-complex-add-pattern-long.c: Likewise. > * gcc.dg/vect/complex/vect-complex-add-pattern-short.c: Likewise. > * gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-byte.c: > Likewise. > * gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-int.c: > Likewise. > * gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-long.c: > Likewise. > * gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-short.c: > Likewise. > * gcc.dg/vect/complex/complex.exp: Copyright year update. > > --- inline copy of patch -- > diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c > index 8eba24dc187895150ee3515d5bd2a35b46528388..cead05f1cc4e02790630a6cbfe8378c2de3778f3 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c > @@ -1,12 +1,15 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_int } */ > /* { dg-require-effective-target stdint_types } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-require-effective-target vect_int } */ > +/* { dg-add-options arm_v8_3a_complex_neon } */ > +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ > > #define TYPE int32_t > #define N 16 > #include <stdint.h> > #include "complex-add-pattern-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_byte } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_int } && ! target { aarch64_sve2 } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c > index 9275ff12e0cc4fd643c3d60d1a5ce51cd3550833..0d21f57666ed9ff918dad343cbe53fbbdd271630 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c > @@ -1,12 +1,17 @@ > /* { dg-do compile } */ > /* { dg-require-effective-target vect_complex_add_long } */ > /* { dg-require-effective-target stdint_types } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-add-options arm_v8_3a_complex_neon } */ > + > +#define UNROLL > > #define TYPE int64_t > #define N 16 > #include <stdint.h> > #include "complex-add-pattern-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_long } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_long } && ! target { aarch64_sve2 } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" { target { vect_long_long } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" { target { vect_long_long } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" { target { vect_long_long } } } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c > index 8cbbdb825ddb616cc9c3ac7c0b62ad53e0e54045..8928386a5174154719fbc86c6f11d5f886cf1f4a 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c > @@ -1,12 +1,17 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_short } */ > /* { dg-require-effective-target stdint_types } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-require-effective-target vect_int } */ > +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ > +/* { dg-add-options arm_v8_3a_complex_neon } */ > + > +#define UNROLL > > #define TYPE int16_t > #define N 16 > #include <stdint.h> > #include "complex-add-pattern-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_short } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_short } && ! target { aarch64_sve2 } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-int.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-int.c > index 270c49efbf95ffbc21ff5c3b7ae34280fa1b6059..4ab4b9a446a8f13c052a569aa694016b22bb2b3b 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-int.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-int.c > @@ -1,12 +1,17 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_int } */ > /* { dg-require-effective-target stdint_types } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-require-effective-target vect_int } */ > +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ > +/* { dg-add-options arm_v8_3a_complex_neon } */ > + > +#define UNROLL > > #define TYPE uint32_t > #define N 16 > #include <stdint.h> > #include "complex-add-pattern-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_int } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_int } && ! target { aarch64_sve2 } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-long.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-long.c > index 88144e52014d86842b16520b0940123d5448459c..38aa9c0b9d51d38e5c28c1e81ef082e0c568c8f8 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-long.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-long.c > @@ -1,12 +1,16 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_long } */ > /* { dg-require-effective-target stdint_types } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ > +/* { dg-add-options arm_v8_3a_complex_neon } */ > + > +#define UNROLL > > #define TYPE uint64_t > #define N 16 > #include <stdint.h> > #include "complex-add-pattern-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_long } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_long } && ! target { aarch64_sve2 } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" { target { vect_long_long } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" { target { vect_long_long } } } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c > index 445af3943d318c4daa69334fa6c1095592e2dec0..8846c9889fb64cdba614553e70052901039f1752 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c > @@ -1,12 +1,17 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_short } */ > /* { dg-require-effective-target stdint_types } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-require-effective-target vect_int } */ > +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ > +/* { dg-add-options arm_v8_3a_complex_neon } */ > + > +#define UNROLL > > #define TYPE uint16_t > #define N 16 > #include <stdint.h> > #include "complex-add-pattern-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_short } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_short } && ! target { aarch64_sve2 } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/complex-add-pattern-template.c b/gcc/testsuite/gcc.dg/vect/complex/complex-add-pattern-template.c > index a99a9296194472c42fed84376c4a48853073c7fd..658af294f1c81ab28fb961202e165ea8813dff88 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/complex-add-pattern-template.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/complex-add-pattern-template.c > @@ -1,5 +1,8 @@ > void add90 (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N]) > { > +#if defined (UNROLL) > +#pragma GCC unroll 16 > +#endif > for (int i=0; i < N; i+=2) > { > c[i] = a[i] - b[i+1]; > @@ -11,6 +14,9 @@ void add90 (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N]) > > void add270 (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N]) > { > +#if defined (UNROLL) > +#pragma GCC unroll 16 > +#endif > for (int i=0; i < N; i+=2) > { > c[i] = a[i] + b[i+1]; > @@ -22,6 +28,9 @@ void add270 (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N]) > > void addMixed (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N]) > { > +#if defined (UNROLL) > +#pragma GCC unroll 16 > +#endif > for (int i=0; i < N; i+=4) > { > c[i] = a[i] - b[i+1]; > @@ -34,6 +43,9 @@ void addMixed (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N]) > void add90HandUnrolled (TYPE a[restrict N], TYPE b[restrict N], > TYPE c[restrict N]) > { > +#if defined (UNROLL) > +#pragma GCC unroll 16 > +#endif > for (int i=0; i < (N /2); i+=4) > { > c[i] = a[i] - b[i+1]; > @@ -48,6 +60,9 @@ void add90HandUnrolled (TYPE a[restrict N], TYPE b[restrict N], > void add90Hybrid (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N], > TYPE d[restrict N]) > { > +#if defined (UNROLL) > +#pragma GCC unroll 16 > +#endif > for (int i=0; i < N; i+=2) > { > c[i] = a[i] - b[i+1]; > @@ -57,4 +72,4 @@ void add90Hybrid (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N], > } > } > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" } } */ > \ No newline at end of file > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c b/gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c > index 32c81e64f627b0f529e6a9129bd7ceeff727a662..f37ab98813faebfbde96fedf647099468609bfd4 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c > @@ -3,6 +3,9 @@ > void add0 (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], > _Complex TYPE c[restrict N]) > { > +#if defined (UNROLL) > +#pragma GCC unroll 16 > +#endif > for (int i=0; i < N; i++) > c[i] = a[i] + b[i]; > } > @@ -10,6 +13,9 @@ void add0 (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], > void add90snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], > _Complex TYPE c[restrict N]) > { > +#if defined (UNROLL) > +#pragma GCC unroll 16 > +#endif > for (int i=0; i < N; i++) > c[i] = a[i] + (b[i] * I); > } > @@ -19,6 +25,9 @@ void add90snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], > void add180snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], > _Complex TYPE c[restrict N]) > { > +#if defined (UNROLL) > +#pragma GCC unroll 16 > +#endif > for (int i=0; i < N; i++) > c[i] = a[i] + (b[i] * I * I); > } > @@ -26,6 +35,9 @@ void add180snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], > void add270snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], > _Complex TYPE c[restrict N]) > { > +#if defined (UNROLL) > +#pragma GCC unroll 16 > +#endif > for (int i=0; i < N; i++) > c[i] = a[i] + (b[i] * I * I * I); > } > @@ -35,6 +47,9 @@ void add270snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], > void add90fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], > _Complex TYPE c[restrict N]) > { > +#if defined (UNROLL) > +#pragma GCC unroll 16 > +#endif > for (int i=0; i < N; i++) > c[i] = (a[i] * I) + b[i]; > } > @@ -44,6 +59,9 @@ void add90fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], > void add180fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], > _Complex TYPE c[restrict N]) > { > +#if defined (UNROLL) > +#pragma GCC unroll 16 > +#endif > for (int i=0; i < N; i++) > c[i] = (a[i] * I * I) + b[i]; > } > @@ -51,6 +69,9 @@ void add180fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], > void add270fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], > _Complex TYPE c[restrict N]) > { > +#if defined (UNROLL) > +#pragma GCC unroll 16 > +#endif > for (int i=0; i < N; i++) > c[i] = (a[i] * I * I * I) + b[i]; > } > @@ -60,6 +81,9 @@ void add270fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], > void addconjfst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], > _Complex TYPE c[restrict N]) > { > +#if defined (UNROLL) > +#pragma GCC unroll 16 > +#endif > for (int i=0; i < N; i++) > c[i] = ~a[i] + b[i]; > } > @@ -67,6 +91,9 @@ void addconjfst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], > void addconjsnd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], > _Complex TYPE c[restrict N]) > { > +#if defined (UNROLL) > +#pragma GCC unroll 16 > +#endif > for (int i=0; i < N; i++) > c[i] = a[i] + ~b[i]; > } > @@ -74,6 +101,9 @@ void addconjsnd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], > void addconjboth (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], > _Complex TYPE c[restrict N]) > { > +#if defined (UNROLL) > +#pragma GCC unroll 16 > +#endif > for (int i=0; i < N; i++) > c[i] = ~a[i] + ~b[i]; > } > diff --git a/gcc/testsuite/gcc.dg/vect/complex/complex-operations-run.c b/gcc/testsuite/gcc.dg/vect/complex/complex-operations-run.c > index a0348a7041ca384104bc5ab688d941c14e5b7381..14ac512a8efa4d9af8cd274d995a8e642ac9f10f 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/complex-operations-run.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/complex-operations-run.c > @@ -1,7 +1,7 @@ > /* { dg-do run } */ > /* { dg-require-effective-target vect_complex_add_double } */ > /* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-add-options arm_v8_3a_complex_neon } */ > > #include <stdio.h> > #include <complex.h> > diff --git a/gcc/testsuite/gcc.dg/vect/complex/complex.exp b/gcc/testsuite/gcc.dg/vect/complex/complex.exp > index f94c7a8ee07c3c39670064e77b94451183871253..ea6bfcdf62f0869674a76fc8bbafab54c91d8280 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/complex.exp > +++ b/gcc/testsuite/gcc.dg/vect/complex/complex.exp > @@ -1,4 +1,4 @@ > -# Copyright (C) 1997-2021 Free Software Foundation, Inc. > +# Copyright (C) 1997-2022 Free Software Foundation, Inc. > > # This program is free software; you can redistribute it and/or modify > # it under the terms of the GNU General Public License as published by > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c > index 7bbb61adfab06a89ac36a66f848746033158c41c..2e611b77c7631b305d79fe21c4b95c8593dcc369 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c > @@ -1,12 +1,16 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_double } */ > +/* { dg-require-effective-target vect_double } */ > /* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ > + > +#define UNROLL > > #define TYPE double > #define N 16 > #include "complex-add-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_double } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_double } } } } */ > > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c > index cf99f1de31056bbaca3fe8885643289b770ad76d..1e63a5f2c5e1a478ae9ea1f49c6eb21665cfca8c 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c > @@ -1,11 +1,15 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_float } */ > +/* { dg-require-effective-target vect_float } */ > /* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ > + > +#define UNROLL > > #define TYPE float > #define N 16 > #include "complex-add-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_float } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_float } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c > index 9f535dde7c0d131c1a35e5b6b1d27530faaea88f..0ae49c16438c503ad59010a9b170e54764419c36 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c > @@ -1,7 +1,8 @@ > /* { dg-do compile } */ > /* { dg-require-effective-target vect_complex_add_half } */ > +/* { dg-require-effective-target float16 } */ > +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ > /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE _Float16 > #define N 16 > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c > index e121113320ec153a732fe8e1c0b25d06929c126b..3f5619b78ce55c83df07f22dfe58fbb6f56e66ac 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c > @@ -1,11 +1,16 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_double } */ > /* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ > +/* { dg-require-effective-target vect_double } */ > +/* { dg-add-options arm_v8_3a_complex_neon } */ > + > +#define UNROLL > > #define TYPE double > #define N 16 > #include "complex-add-pattern-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_double } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_double } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c > index 8565833887f026b732b86d2c42c3a3d7a883b8d8..a961a852775f29ade98d61100358cc36c394f3de 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c > @@ -1,11 +1,15 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_float } */ > +/* { dg-require-effective-target vect_float } */ > /* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ > + > +#define UNROLL > > #define TYPE float > #define N 16 > #include "complex-add-pattern-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_float } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_float } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c > index 857ee9de6b48407ebb1c6974d4b05cd661cd4f16..e30df0ff0b03e612ef2491f797a84bcc117df5e1 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c > @@ -1,11 +1,16 @@ > /* { dg-do compile } */ > /* { dg-require-effective-target vect_complex_add_half } */ > +/* { dg-require-effective-target float16 } */ > /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ > + > +#define UNROLL > > #define TYPE _Float16 > #define N 16 > #include "complex-add-pattern-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail arm*-*-* } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_half } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_half } && ! target { arm*-*-* } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c > index d9d13c29578f905e793e5d80f08ec7b758d09c5f..b77c847403df3253648dc4b2f493364fc1cb6959 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c > @@ -1,9 +1,11 @@ > /* { dg-do compile } */ > /* { dg-require-effective-target vect_complex_add_double } */ > /* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-additional-options "-fdump-tree-vect-details" } */ > > #define TYPE double > #define N 16 > #include "complex-mla-template.c" > > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA_CONJ" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c > index ac680cbca81b3b0bc3a51555236faa7f702e5082..cd68fd190089bc48615e4098a19450c0f374c275 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c > @@ -1,8 +1,10 @@ > /* { dg-do compile } */ > /* { dg-require-effective-target vect_complex_add_float } */ > -/* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-additional-options "-fdump-tree-vect-details" } */ > +/* { dg-add-options arm_v8_3a_fp16_complex_neon } */ > > #define TYPE float > #define N 16 > #include "complex-mla-template.c" > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA_CONJ" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c > index d0a48d007178a7464ae2e4d00720bb3b3abca18a..510092028d5697b4f48ed4e3d60d586988671d02 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c > @@ -1,9 +1,12 @@ > /* { dg-do compile } */ > /* { dg-require-effective-target vect_complex_add_half } */ > +/* { dg-require-effective-target float16 } */ > +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ > /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE _Float16 > #define N 16 > #include "complex-mla-template.c" > > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA_CONJ" "slp1" { xfail *-*-* } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "slp1" { xfail *-*-* } } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c > index d9d13c29578f905e793e5d80f08ec7b758d09c5f..9d9839417a2b09fd7715ce554d9d96827ee3f00c 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c > @@ -1,9 +1,11 @@ > /* { dg-do compile } */ > /* { dg-require-effective-target vect_complex_add_double } */ > /* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-additional-options "-fdump-tree-vect-details" } */ > > #define TYPE double > #define N 16 > -#include "complex-mla-template.c" > +#include "complex-mls-template.c" > > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS_CONJ" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c > index ac680cbca81b3b0bc3a51555236faa7f702e5082..cf540a08acd1a0ffe0b193dd2346a58afc0bfd2a 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c > @@ -1,8 +1,11 @@ > /* { dg-do compile } */ > /* { dg-require-effective-target vect_complex_add_float } */ > +/* { dg-additional-options "-fdump-tree-vect-details" } */ > /* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE float > #define N 16 > -#include "complex-mla-template.c" > +#include "complex-mls-template.c" > + > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS_CONJ" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c > index d0a48d007178a7464ae2e4d00720bb3b3abca18a..217401bae59e658c1f920c4619f0858c95cc3322 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c > @@ -1,9 +1,12 @@ > /* { dg-do compile } */ > /* { dg-require-effective-target vect_complex_add_half } */ > +/* { dg-require-effective-target float16 } */ > +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ > /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE _Float16 > #define N 16 > -#include "complex-mla-template.c" > +#include "complex-mls-template.c" > > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS_CONJ" "slp1" { xfail *-*-* } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS" "slp1" { xfail *-*-* } } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c > index ab8313f01226bfb96b2e304ff7f275cffb665b06..dcac519cd98c6dd5773117134ca1c007ae3e3856 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c > @@ -1,9 +1,11 @@ > /* { dg-do compile } */ > /* { dg-require-effective-target vect_complex_add_double } */ > /* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-additional-options "-fdump-tree-vect-details" } */ > > #define TYPE double > #define N 16 > #include "complex-mul-template.c" > > +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL_CONJ" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c > index 49bf961c7a17d266d45b9112383a89ac406a705c..827687b92fa7a8e68bf3eaa101ab67a5d07901f3 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c > @@ -1,8 +1,10 @@ > /* { dg-do compile } */ > /* { dg-require-effective-target vect_complex_add_float } */ > /* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE float > #define N 16 > #include "complex-mul-template.c" > + > +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL_CONJ" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c > index f5c23fbe20d67e88f870417d9a4bde63c169e301..309b168dfb0813aea39e144813325e4e0910c77c 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c > @@ -1,9 +1,12 @@ > /* { dg-do compile } */ > /* { dg-require-effective-target vect_complex_add_half } */ > +/* { dg-require-effective-target float16 } */ > +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ > /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE _Float16 > #define N 16 > #include "complex-mul-template.c" > > +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL_CONJ" "slp1" { xfail *-*-* } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL" "slp1" { xfail *-*-* } } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c > index 0d4d3ce8869cde8e3020b93456421cc268fb8263..f935405e3d942cc68e49b2b21ca543e23076e0c9 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c > @@ -1,11 +1,12 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_double } */ > +/* { dg-require-effective-target vect_double } */ > /* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE double > #define N 200 > #include "complex-add-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" } } */ > \ No newline at end of file > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" { target { vect_complex_add_double } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" { target { vect_complex_add_double } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-float.c > index b9866966be37ed2e2c5210a06f04474171e0d4f3..71f391db7bba8ac7c4ce090f650c32d9180ee4f9 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-float.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-float.c > @@ -1,11 +1,12 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_float } */ > +/* { dg-require-effective-target vect_float } */ > /* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE float > #define N 200 > #include "complex-add-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" } } */ > \ No newline at end of file > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" { target { vect_complex_add_float } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" { target { vect_complex_add_float } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c > index c3dca57b4f49932acf28b19ad86774f171072576..e5b826f1ca77d262c7d0a39b6b8446255a9dea36 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c > @@ -1,11 +1,10 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_half } */ > +/* { dg-require-effective-target float16 } */ > /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE _Float16 > #define N 200 > #include "complex-add-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" } } */ > \ No newline at end of file > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" { target { vect_complex_add_half } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" { target { vect_complex_add_half } } } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c > index df4d3f671f40663d779598dcb5b1f94260c6d7e3..5b70d834c2435c316bdbf119a1e2ace15f68b8e7 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c > @@ -1,11 +1,13 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_double } */ > +/* { dg-require-effective-target vect_double } */ > /* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE double > #define N 200 > #include "complex-add-pattern-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" { target { vect_complex_add_double } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_double } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c > index 6df5c6d18309723d81734429f9034e3f6b10f7fc..3ef05645a2c95ab2269276bd23f2db2afd016c1a 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c > @@ -1,11 +1,13 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_float } */ > +/* { dg-require-effective-target vect_float } */ > /* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE float > #define N 200 > #include "complex-add-pattern-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" { target { vect_complex_add_float } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_float } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c > index a72511262784b942d51fad9d0da423890bc3cd92..06a9216add747ab2880f92828483333dabb30496 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c > @@ -1,12 +1,16 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_half } */ > +/* { dg-require-effective-target vect_float } */ > +/* { dg-require-effective-target float16 } */ > /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE _Float16 > #define N 200 > #include "complex-add-pattern-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" { target { vect_complex_add_half } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_half } } } } */ > > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-double.c > index c85ff07a6cc432051b8dfc70456a31b8e485e024..3ec46e5cf6694e0ccf23d6e7db094a9df996afbd 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-double.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-double.c > @@ -1,8 +1,9 @@ > /* { dg-do compile } */ > /* { dg-require-effective-target vect_complex_add_double } */ > /* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE double > #define N 200 > #include "complex-mla-template.c" > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA_CONJ" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-float.c > index a17b91b1bd4bb0a26107e973ca1b06f7a9e4c24c..af59323023a6a15340ded60155f130671d840f68 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-float.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-float.c > @@ -1,8 +1,9 @@ > /* { dg-do compile } */ > /* { dg-require-effective-target vect_complex_add_float } */ > /* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE float > #define N 200 > #include "complex-mla-template.c" > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA_CONJ" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c > index fa81985b9085ef760737b471591065388d59aed0..34146f3d1e7f123231c7f39ccfa1aba832ee87ca 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c > @@ -1,8 +1,8 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_half } */ > /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE _Float16 > #define N 200 > #include "complex-mla-template.c" > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA_CONJ" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-double.c > index c85ff07a6cc432051b8dfc70456a31b8e485e024..0982a2b8ead9bec96f6dcbceaeac9c2ebcbda300 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-double.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-double.c > @@ -1,8 +1,10 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_double } */ > /* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE double > #define N 200 > -#include "complex-mla-template.c" > +#include "complex-mls-template.c" > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS_CONJ" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-float.c > index a17b91b1bd4bb0a26107e973ca1b06f7a9e4c24c..a069533b22a64f62bd8dd6b6bdd3b771c7b7ea4d 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-float.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-float.c > @@ -1,8 +1,10 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_float } */ > /* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE float > #define N 200 > -#include "complex-mla-template.c" > +#include "complex-mls-template.c" > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS_CONJ" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-half-float.c > index fa81985b9085ef760737b471591065388d59aed0..89ac54c2a42a114a1afb6dead0504b04c37c3f98 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-half-float.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-half-float.c > @@ -1,8 +1,9 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_half } */ > /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE _Float16 > #define N 200 > -#include "complex-mla-template.c" > +#include "complex-mls-template.c" > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS_CONJ" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-double.c > index 77c01a82bb25d62d1fcf56d5015d21d8e3417963..56a8ea4ae0232cb3051a780157902fdb03a9e942 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-double.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-double.c > @@ -1,8 +1,8 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_double } */ > /* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE double > #define N 200 > #include "complex-mul-template.c" > +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL_CONJ" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-float.c > index a8b44f2069877d354572148acf2d8efbccdf89c6..969416d7dc7779ee6feaa8e069a1a3687dd53559 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-float.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-float.c > @@ -1,8 +1,8 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_float } */ > /* { dg-add-options arm_v8_3a_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE float > #define N 200 > #include "complex-mul-template.c" > +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL_CONJ" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-half-float.c > index d57df82808d5a08b52ed905048d7a0b46af41a4b..da1b9213a6b3e1df4fdc4ecf6ffbf3645975a5ba 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-half-float.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-half-float.c > @@ -1,8 +1,8 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_half } */ > /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > > #define TYPE _Float16 > #define N 200 > #include "complex-mul-template.c" > +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL_CONJ" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-byte.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-byte.c > index 438d2192723a7b15261c346a290ccb0d9e0e02b6..bf7c135fa1a8ccf7cf23c783e8572c8d12f245bd 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-byte.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-byte.c > @@ -1,12 +1,14 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_byte } */ > /* { dg-require-effective-target stdint_types } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-require-effective-target vect_int } */ > +/* { dg-add-options arm_v8_3a_complex_neon } */ > > #define TYPE int8_t > #define N 200 > #include <stdint.h> > #include "complex-add-pattern-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_byte } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_byte } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-int.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-int.c > index 04c27dcf4102e4d53f2cc4f2aebb55a10d1fe5b1..2fd2a9f0617ab1d741826970d0db6ed9a8f393ec 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-int.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-int.c > @@ -1,12 +1,14 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_int } */ > /* { dg-require-effective-target stdint_types } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-require-effective-target vect_int } */ > +/* { dg-add-options arm_v8_3a_complex_neon } */ > > #define TYPE int32_t > #define N 200 > #include <stdint.h> > #include "complex-add-pattern-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_int } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_int } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-long.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-long.c > index 27988ad34233f23b359fa4de56cb1d2182496bcc..70977155256bf6e414f2fa5a604b0e301496a2e6 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-long.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-long.c > @@ -1,12 +1,15 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_long } */ > /* { dg-require-effective-target stdint_types } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-add-options arm_v8_3a_complex_neon } */ > + > +#define UNROLL > > #define TYPE int64_t > #define N 200 > #include <stdint.h> > #include "complex-add-pattern-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_long } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_long } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" { target { vect_long_long } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" { target { vect_long_long } } } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-short.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-short.c > index 88d225d6ff8004eabc679a51b9dc01d69be2c3b0..8cbb8ac0c19061e7fe4d2978bccc24df0990d540 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-short.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-short.c > @@ -1,12 +1,14 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_short } */ > /* { dg-require-effective-target stdint_types } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-require-effective-target vect_int } */ > +/* { dg-add-options arm_v8_3a_complex_neon } */ > > #define TYPE int16_t > #define N 200 > #include <stdint.h> > #include "complex-add-pattern-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_short } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_short } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-byte.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-byte.c > index 59109c008bb28bf65600e0427ca86935db10b55c..9477f0d92d8f8f761d84916677ecce9f2a5c6fee 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-byte.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-byte.c > @@ -1,12 +1,14 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_byte } */ > /* { dg-require-effective-target stdint_types } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-require-effective-target vect_int } */ > +/* { dg-add-options arm_v8_3a_complex_neon } */ > > #define TYPE uint8_t > #define N 200 > #include <stdint.h> > #include "complex-add-pattern-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_byte } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_byte } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-int.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-int.c > index 44d96354d6071bcd2d7e61d8e5211692560f6cbe..41f60042ee9a32c26831d1d415f6a2b4a1b20777 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-int.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-int.c > @@ -1,12 +1,14 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_int } */ > /* { dg-require-effective-target stdint_types } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-require-effective-target vect_int } */ > +/* { dg-add-options arm_v8_3a_complex_neon } */ > > #define TYPE uint32_t > #define N 200 > #include <stdint.h> > #include "complex-add-pattern-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_int } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_int } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-long.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-long.c > index 667145751cd9efbdf8019249cffea7722e1c78e5..7708ac495b8b8a626d2974f3e7070892adc0d8b1 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-long.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-long.c > @@ -1,12 +1,15 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_long } */ > /* { dg-require-effective-target stdint_types } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-add-options arm_v8_3a_complex_neon } */ > + > +#define UNROLL > > #define TYPE uint64_t > #define N 200 > #include <stdint.h> > #include "complex-add-pattern-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_long } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_long } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" { target { vect_long_long } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" { target { vect_long_long } } } } */ > diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-short.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-short.c > index 841adf830c8e1b2fa9184811b39fb54bfc1af92f..6260be4d12161b9d25d5fecd9fd13b1ba0c76dbd 100644 > --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-short.c > +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-short.c > @@ -1,12 +1,14 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target vect_complex_add_short } */ > /* { dg-require-effective-target stdint_types } */ > -/* { dg-add-options arm_v8_1m_mve_fp } */ > +/* { dg-require-effective-target vect_int } */ > +/* { dg-add-options arm_v8_3a_complex_neon } */ > > #define TYPE uint16_t > #define N 200 > #include <stdint.h> > #include "complex-add-pattern-template.c" > > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ > -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_short } } } } */ > +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_short } } } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ > +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ > > >
diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c index 8eba24dc187895150ee3515d5bd2a35b46528388..cead05f1cc4e02790630a6cbfe8378c2de3778f3 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c +++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c @@ -1,12 +1,15 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_int } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ #define TYPE int32_t #define N 16 #include <stdint.h> #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_byte } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_int } && ! target { aarch64_sve2 } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c index 9275ff12e0cc4fd643c3d60d1a5ce51cd3550833..0d21f57666ed9ff918dad343cbe53fbbdd271630 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c +++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c @@ -1,12 +1,17 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_long } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ + +#define UNROLL #define TYPE int64_t #define N 16 #include <stdint.h> #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_long } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_long } && ! target { aarch64_sve2 } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" { target { vect_long_long } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" { target { vect_long_long } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" { target { vect_long_long } } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c index 8cbbdb825ddb616cc9c3ac7c0b62ad53e0e54045..8928386a5174154719fbc86c6f11d5f886cf1f4a 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c +++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c @@ -1,12 +1,17 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_short } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ + +#define UNROLL #define TYPE int16_t #define N 16 #include <stdint.h> #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_short } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_short } && ! target { aarch64_sve2 } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-int.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-int.c index 270c49efbf95ffbc21ff5c3b7ae34280fa1b6059..4ab4b9a446a8f13c052a569aa694016b22bb2b3b 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-int.c +++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-int.c @@ -1,12 +1,17 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_int } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ + +#define UNROLL #define TYPE uint32_t #define N 16 #include <stdint.h> #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_int } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_int } && ! target { aarch64_sve2 } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-long.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-long.c index 88144e52014d86842b16520b0940123d5448459c..38aa9c0b9d51d38e5c28c1e81ef082e0c568c8f8 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-long.c +++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-long.c @@ -1,12 +1,16 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_long } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ + +#define UNROLL #define TYPE uint64_t #define N 16 #include <stdint.h> #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_long } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_long } && ! target { aarch64_sve2 } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" { target { vect_long_long } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" { target { vect_long_long } } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c index 445af3943d318c4daa69334fa6c1095592e2dec0..8846c9889fb64cdba614553e70052901039f1752 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c +++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c @@ -1,12 +1,17 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_short } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ + +#define UNROLL #define TYPE uint16_t #define N 16 #include <stdint.h> #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_short } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_short } && ! target { aarch64_sve2 } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/complex-add-pattern-template.c b/gcc/testsuite/gcc.dg/vect/complex/complex-add-pattern-template.c index a99a9296194472c42fed84376c4a48853073c7fd..658af294f1c81ab28fb961202e165ea8813dff88 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/complex-add-pattern-template.c +++ b/gcc/testsuite/gcc.dg/vect/complex/complex-add-pattern-template.c @@ -1,5 +1,8 @@ void add90 (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i+=2) { c[i] = a[i] - b[i+1]; @@ -11,6 +14,9 @@ void add90 (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N]) void add270 (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i+=2) { c[i] = a[i] + b[i+1]; @@ -22,6 +28,9 @@ void add270 (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N]) void addMixed (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i+=4) { c[i] = a[i] - b[i+1]; @@ -34,6 +43,9 @@ void addMixed (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N]) void add90HandUnrolled (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < (N /2); i+=4) { c[i] = a[i] - b[i+1]; @@ -48,6 +60,9 @@ void add90HandUnrolled (TYPE a[restrict N], TYPE b[restrict N], void add90Hybrid (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N], TYPE d[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i+=2) { c[i] = a[i] - b[i+1]; @@ -57,4 +72,4 @@ void add90Hybrid (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N], } } -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" } } */ \ No newline at end of file +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c b/gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c index 32c81e64f627b0f529e6a9129bd7ceeff727a662..f37ab98813faebfbde96fedf647099468609bfd4 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c +++ b/gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c @@ -3,6 +3,9 @@ void add0 (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], _Complex TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i++) c[i] = a[i] + b[i]; } @@ -10,6 +13,9 @@ void add0 (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], void add90snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], _Complex TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i++) c[i] = a[i] + (b[i] * I); } @@ -19,6 +25,9 @@ void add90snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], void add180snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], _Complex TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i++) c[i] = a[i] + (b[i] * I * I); } @@ -26,6 +35,9 @@ void add180snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], void add270snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], _Complex TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i++) c[i] = a[i] + (b[i] * I * I * I); } @@ -35,6 +47,9 @@ void add270snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], void add90fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], _Complex TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i++) c[i] = (a[i] * I) + b[i]; } @@ -44,6 +59,9 @@ void add90fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], void add180fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], _Complex TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i++) c[i] = (a[i] * I * I) + b[i]; } @@ -51,6 +69,9 @@ void add180fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], void add270fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], _Complex TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i++) c[i] = (a[i] * I * I * I) + b[i]; } @@ -60,6 +81,9 @@ void add270fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], void addconjfst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], _Complex TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i++) c[i] = ~a[i] + b[i]; } @@ -67,6 +91,9 @@ void addconjfst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], void addconjsnd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], _Complex TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i++) c[i] = a[i] + ~b[i]; } @@ -74,6 +101,9 @@ void addconjsnd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], void addconjboth (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], _Complex TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i++) c[i] = ~a[i] + ~b[i]; } diff --git a/gcc/testsuite/gcc.dg/vect/complex/complex-operations-run.c b/gcc/testsuite/gcc.dg/vect/complex/complex-operations-run.c index a0348a7041ca384104bc5ab688d941c14e5b7381..14ac512a8efa4d9af8cd274d995a8e642ac9f10f 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/complex-operations-run.c +++ b/gcc/testsuite/gcc.dg/vect/complex/complex-operations-run.c @@ -1,7 +1,7 @@ /* { dg-do run } */ /* { dg-require-effective-target vect_complex_add_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ #include <stdio.h> #include <complex.h> diff --git a/gcc/testsuite/gcc.dg/vect/complex/complex.exp b/gcc/testsuite/gcc.dg/vect/complex/complex.exp index f94c7a8ee07c3c39670064e77b94451183871253..ea6bfcdf62f0869674a76fc8bbafab54c91d8280 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/complex.exp +++ b/gcc/testsuite/gcc.dg/vect/complex/complex.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2021 Free Software Foundation, Inc. +# Copyright (C) 1997-2022 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c index 7bbb61adfab06a89ac36a66f848746033158c41c..2e611b77c7631b305d79fe21c4b95c8593dcc369 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c @@ -1,12 +1,16 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_double } */ +/* { dg-require-effective-target vect_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ + +#define UNROLL #define TYPE double #define N 16 #include "complex-add-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_double } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_double } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c index cf99f1de31056bbaca3fe8885643289b770ad76d..1e63a5f2c5e1a478ae9ea1f49c6eb21665cfca8c 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c @@ -1,11 +1,15 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_float } */ +/* { dg-require-effective-target vect_float } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ + +#define UNROLL #define TYPE float #define N 16 #include "complex-add-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_float } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_float } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c index 9f535dde7c0d131c1a35e5b6b1d27530faaea88f..0ae49c16438c503ad59010a9b170e54764419c36 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c @@ -1,7 +1,8 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_half } */ +/* { dg-require-effective-target float16 } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE _Float16 #define N 16 diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c index e121113320ec153a732fe8e1c0b25d06929c126b..3f5619b78ce55c83df07f22dfe58fbb6f56e66ac 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c @@ -1,11 +1,16 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ +/* { dg-require-effective-target vect_double } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ + +#define UNROLL #define TYPE double #define N 16 #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_double } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_double } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c index 8565833887f026b732b86d2c42c3a3d7a883b8d8..a961a852775f29ade98d61100358cc36c394f3de 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c @@ -1,11 +1,15 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_float } */ +/* { dg-require-effective-target vect_float } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ + +#define UNROLL #define TYPE float #define N 16 #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_float } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_float } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c index 857ee9de6b48407ebb1c6974d4b05cd661cd4f16..e30df0ff0b03e612ef2491f797a84bcc117df5e1 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c @@ -1,11 +1,16 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_half } */ +/* { dg-require-effective-target float16 } */ /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ + +#define UNROLL #define TYPE _Float16 #define N 16 #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail arm*-*-* } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_half } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_half } && ! target { arm*-*-* } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c index d9d13c29578f905e793e5d80f08ec7b758d09c5f..b77c847403df3253648dc4b2f493364fc1cb6959 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c @@ -1,9 +1,11 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-fdump-tree-vect-details" } */ #define TYPE double #define N 16 #include "complex-mla-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c index ac680cbca81b3b0bc3a51555236faa7f702e5082..cd68fd190089bc48615e4098a19450c0f374c275 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c @@ -1,8 +1,10 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_float } */ -/* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-fdump-tree-vect-details" } */ +/* { dg-add-options arm_v8_3a_fp16_complex_neon } */ #define TYPE float #define N 16 #include "complex-mla-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c index d0a48d007178a7464ae2e4d00720bb3b3abca18a..510092028d5697b4f48ed4e3d60d586988671d02 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c @@ -1,9 +1,12 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_half } */ +/* { dg-require-effective-target float16 } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE _Float16 #define N 16 #include "complex-mla-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA_CONJ" "slp1" { xfail *-*-* } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "slp1" { xfail *-*-* } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c index d9d13c29578f905e793e5d80f08ec7b758d09c5f..9d9839417a2b09fd7715ce554d9d96827ee3f00c 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c @@ -1,9 +1,11 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-fdump-tree-vect-details" } */ #define TYPE double #define N 16 -#include "complex-mla-template.c" +#include "complex-mls-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c index ac680cbca81b3b0bc3a51555236faa7f702e5082..cf540a08acd1a0ffe0b193dd2346a58afc0bfd2a 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c @@ -1,8 +1,11 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_float } */ +/* { dg-additional-options "-fdump-tree-vect-details" } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE float #define N 16 -#include "complex-mla-template.c" +#include "complex-mls-template.c" + +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c index d0a48d007178a7464ae2e4d00720bb3b3abca18a..217401bae59e658c1f920c4619f0858c95cc3322 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c @@ -1,9 +1,12 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_half } */ +/* { dg-require-effective-target float16 } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE _Float16 #define N 16 -#include "complex-mla-template.c" +#include "complex-mls-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS_CONJ" "slp1" { xfail *-*-* } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS" "slp1" { xfail *-*-* } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c index ab8313f01226bfb96b2e304ff7f275cffb665b06..dcac519cd98c6dd5773117134ca1c007ae3e3856 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c @@ -1,9 +1,11 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-fdump-tree-vect-details" } */ #define TYPE double #define N 16 #include "complex-mul-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c index 49bf961c7a17d266d45b9112383a89ac406a705c..827687b92fa7a8e68bf3eaa101ab67a5d07901f3 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c @@ -1,8 +1,10 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_float } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE float #define N 16 #include "complex-mul-template.c" + +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c index f5c23fbe20d67e88f870417d9a4bde63c169e301..309b168dfb0813aea39e144813325e4e0910c77c 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c @@ -1,9 +1,12 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_half } */ +/* { dg-require-effective-target float16 } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE _Float16 #define N 16 #include "complex-mul-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL_CONJ" "slp1" { xfail *-*-* } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL" "slp1" { xfail *-*-* } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c index 0d4d3ce8869cde8e3020b93456421cc268fb8263..f935405e3d942cc68e49b2b21ca543e23076e0c9 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c @@ -1,11 +1,12 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_double } */ +/* { dg-require-effective-target vect_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE double #define N 200 #include "complex-add-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" } } */ \ No newline at end of file +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" { target { vect_complex_add_double } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" { target { vect_complex_add_double } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-float.c index b9866966be37ed2e2c5210a06f04474171e0d4f3..71f391db7bba8ac7c4ce090f650c32d9180ee4f9 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-float.c @@ -1,11 +1,12 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_float } */ +/* { dg-require-effective-target vect_float } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE float #define N 200 #include "complex-add-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" } } */ \ No newline at end of file +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" { target { vect_complex_add_float } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" { target { vect_complex_add_float } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c index c3dca57b4f49932acf28b19ad86774f171072576..e5b826f1ca77d262c7d0a39b6b8446255a9dea36 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c @@ -1,11 +1,10 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_half } */ +/* { dg-require-effective-target float16 } */ /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE _Float16 #define N 200 #include "complex-add-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" } } */ \ No newline at end of file +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" { target { vect_complex_add_half } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" { target { vect_complex_add_half } } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c index df4d3f671f40663d779598dcb5b1f94260c6d7e3..5b70d834c2435c316bdbf119a1e2ace15f68b8e7 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c @@ -1,11 +1,13 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_double } */ +/* { dg-require-effective-target vect_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE double #define N 200 #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" { target { vect_complex_add_double } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_double } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c index 6df5c6d18309723d81734429f9034e3f6b10f7fc..3ef05645a2c95ab2269276bd23f2db2afd016c1a 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c @@ -1,11 +1,13 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_float } */ +/* { dg-require-effective-target vect_float } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE float #define N 200 #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" { target { vect_complex_add_float } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_float } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c index a72511262784b942d51fad9d0da423890bc3cd92..06a9216add747ab2880f92828483333dabb30496 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c @@ -1,12 +1,16 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_half } */ +/* { dg-require-effective-target vect_float } */ +/* { dg-require-effective-target float16 } */ /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE _Float16 #define N 200 #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" { target { vect_complex_add_half } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_half } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-double.c index c85ff07a6cc432051b8dfc70456a31b8e485e024..3ec46e5cf6694e0ccf23d6e7db094a9df996afbd 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-double.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-double.c @@ -1,8 +1,9 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE double #define N 200 #include "complex-mla-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-float.c index a17b91b1bd4bb0a26107e973ca1b06f7a9e4c24c..af59323023a6a15340ded60155f130671d840f68 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-float.c @@ -1,8 +1,9 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_float } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE float #define N 200 #include "complex-mla-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c index fa81985b9085ef760737b471591065388d59aed0..34146f3d1e7f123231c7f39ccfa1aba832ee87ca 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c @@ -1,8 +1,8 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_half } */ /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE _Float16 #define N 200 #include "complex-mla-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-double.c index c85ff07a6cc432051b8dfc70456a31b8e485e024..0982a2b8ead9bec96f6dcbceaeac9c2ebcbda300 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-double.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-double.c @@ -1,8 +1,10 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE double #define N 200 -#include "complex-mla-template.c" +#include "complex-mls-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-float.c index a17b91b1bd4bb0a26107e973ca1b06f7a9e4c24c..a069533b22a64f62bd8dd6b6bdd3b771c7b7ea4d 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-float.c @@ -1,8 +1,10 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_float } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE float #define N 200 -#include "complex-mla-template.c" +#include "complex-mls-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-half-float.c index fa81985b9085ef760737b471591065388d59aed0..89ac54c2a42a114a1afb6dead0504b04c37c3f98 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-half-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-half-float.c @@ -1,8 +1,9 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_half } */ /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE _Float16 #define N 200 -#include "complex-mla-template.c" +#include "complex-mls-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-double.c index 77c01a82bb25d62d1fcf56d5015d21d8e3417963..56a8ea4ae0232cb3051a780157902fdb03a9e942 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-double.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-double.c @@ -1,8 +1,8 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE double #define N 200 #include "complex-mul-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-float.c index a8b44f2069877d354572148acf2d8efbccdf89c6..969416d7dc7779ee6feaa8e069a1a3687dd53559 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-float.c @@ -1,8 +1,8 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_float } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE float #define N 200 #include "complex-mul-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-half-float.c index d57df82808d5a08b52ed905048d7a0b46af41a4b..da1b9213a6b3e1df4fdc4ecf6ffbf3645975a5ba 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-half-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-half-float.c @@ -1,8 +1,8 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_half } */ /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE _Float16 #define N 200 #include "complex-mul-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-byte.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-byte.c index 438d2192723a7b15261c346a290ccb0d9e0e02b6..bf7c135fa1a8ccf7cf23c783e8572c8d12f245bd 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-byte.c +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-byte.c @@ -1,12 +1,14 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_byte } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ #define TYPE int8_t #define N 200 #include <stdint.h> #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_byte } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_byte } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-int.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-int.c index 04c27dcf4102e4d53f2cc4f2aebb55a10d1fe5b1..2fd2a9f0617ab1d741826970d0db6ed9a8f393ec 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-int.c +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-int.c @@ -1,12 +1,14 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_int } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ #define TYPE int32_t #define N 200 #include <stdint.h> #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_int } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_int } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-long.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-long.c index 27988ad34233f23b359fa4de56cb1d2182496bcc..70977155256bf6e414f2fa5a604b0e301496a2e6 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-long.c +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-long.c @@ -1,12 +1,15 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_long } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ + +#define UNROLL #define TYPE int64_t #define N 200 #include <stdint.h> #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_long } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_long } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" { target { vect_long_long } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" { target { vect_long_long } } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-short.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-short.c index 88d225d6ff8004eabc679a51b9dc01d69be2c3b0..8cbb8ac0c19061e7fe4d2978bccc24df0990d540 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-short.c +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-short.c @@ -1,12 +1,14 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_short } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ #define TYPE int16_t #define N 200 #include <stdint.h> #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_short } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_short } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-byte.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-byte.c index 59109c008bb28bf65600e0427ca86935db10b55c..9477f0d92d8f8f761d84916677ecce9f2a5c6fee 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-byte.c +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-byte.c @@ -1,12 +1,14 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_byte } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ #define TYPE uint8_t #define N 200 #include <stdint.h> #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_byte } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_byte } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-int.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-int.c index 44d96354d6071bcd2d7e61d8e5211692560f6cbe..41f60042ee9a32c26831d1d415f6a2b4a1b20777 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-int.c +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-int.c @@ -1,12 +1,14 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_int } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ #define TYPE uint32_t #define N 200 #include <stdint.h> #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_int } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_int } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-long.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-long.c index 667145751cd9efbdf8019249cffea7722e1c78e5..7708ac495b8b8a626d2974f3e7070892adc0d8b1 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-long.c +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-long.c @@ -1,12 +1,15 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_long } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ + +#define UNROLL #define TYPE uint64_t #define N 200 #include <stdint.h> #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_long } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_long } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" { target { vect_long_long } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" { target { vect_long_long } } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-short.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-short.c index 841adf830c8e1b2fa9184811b39fb54bfc1af92f..6260be4d12161b9d25d5fecd9fd13b1ba0c76dbd 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-short.c +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-short.c @@ -1,12 +1,14 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_short } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ #define TYPE uint16_t #define N 200 #include <stdint.h> #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_short } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_short } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */