testsuite: Add more guards to complex tests

Message ID patch-15017-tamar@arm.com
State Committed
Commit 5914a7b5c637c9007283226f200dcab8b745abc8
Headers
Series testsuite: Add more guards to complex tests |

Commit Message

Tamar Christina Nov. 4, 2021, 1:28 p.m. UTC
  Hi All,

This test hopefully fixes all the remaining target specific test issues by

1: Unrolling all add testcases by 16 using pragma GCC unroll
2. On armhf use Adv.SIMD instead of MVE to test. MVE's autovec is too incomplete
   to be a general test target.
3. Add appropriate vect_<type> and float<size> guards on testcases.

Regtested on aarch64-none-linux-gnu, arm-none-linux-gnueabihf
x86_64-pc-linux-gnu, i368-pc-linux-gnu and no regressions.

Ok for master?

Thanks,
Tamar

gcc/testsuite/ChangeLog:

	PR testsuite/103042
	* gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c: Update guards.
	* 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.

--- 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 0f01efb49b544c4f849057b0cecbc42b3acea41b..cead05f1cc4e02790630a6cbfe8378c2de3778f3 100644


--
  

Comments

Richard Biener Nov. 4, 2021, 1:39 p.m. UTC | #1
On Thu, 4 Nov 2021, Tamar Christina wrote:

> Hi All,
> 
> This test hopefully fixes all the remaining target specific test issues by
> 
> 1: Unrolling all add testcases by 16 using pragma GCC unroll
> 2. On armhf use Adv.SIMD instead of MVE to test. MVE's autovec is too incomplete
>    to be a general test target.
> 3. Add appropriate vect_<type> and float<size> guards on testcases.
> 
> Regtested on aarch64-none-linux-gnu, arm-none-linux-gnueabihf
> x86_64-pc-linux-gnu, i368-pc-linux-gnu and no regressions.
> 
> Ok for master?

OK.

Thanks,
Richard.

> Thanks,
> Tamar
> 
> gcc/testsuite/ChangeLog:
> 
> 	PR testsuite/103042
> 	* gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c: Update guards.
> 	* 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.
> 
> --- 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 0f01efb49b544c4f849057b0cecbc42b3acea41b..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,6 +1,7 @@
>  /* { dg-do compile } */
>  /* { 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
> @@ -9,6 +10,6 @@
>  #include "complex-add-pattern-template.c"
>  
>  /* { 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 && !arch64_sve2 } } } } */
> +/* { 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 ccf165176cad5a13b7cdee78ab4a30830eb492f5..6ed561a00416b5aef2e514820ab94489df7aa86b 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,7 +1,10 @@
>  /* { dg-do compile } */
>  /* { dg-require-effective-target vect_complex_add_long } */
> +/* { dg-require-effective-target vect_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
> @@ -9,7 +12,7 @@
>  #include "complex-add-pattern-template.c"
>  
>  /* { 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 && !arch64_sve2 } } } } */
> +/* { 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" } } */
>  /* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "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-short.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c
> index 3aaa70b23b67f53d3614ecb34bf8e6eb0f206b6d..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,7 +1,10 @@
>  /* { dg-do compile } */
>  /* { dg-require-effective-target stdint_types } */
> +/* { dg-require-effective-target vect_int } */
>  /* { dg-additional-options "-fno-tree-loop-vectorize" } */
> -/* { dg-add-options arm_v8_1m_mve_fp } */
> +/* { dg-add-options arm_v8_3a_complex_neon } */
> +
> +#define UNROLL
>  
>  #define TYPE int16_t
>  #define N 16
> @@ -9,6 +12,6 @@
>  #include "complex-add-pattern-template.c"
>  
>  /* { 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 && !arch64_sve2 } } } } */
> +/* { 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 a6fd31d967b372328792d07aa52ae1f684132fa0..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,7 +1,10 @@
>  /* { dg-do compile } */
>  /* { dg-require-effective-target stdint_types } */
> +/* { dg-require-effective-target vect_int } */
>  /* { dg-additional-options "-fno-tree-loop-vectorize" } */
> -/* { dg-add-options arm_v8_1m_mve_fp } */
> +/* { dg-add-options arm_v8_3a_complex_neon } */
> +
> +#define UNROLL
>  
>  #define TYPE uint32_t
>  #define N 16
> @@ -9,6 +12,6 @@
>  #include "complex-add-pattern-template.c"
>  
>  /* { 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 && !arch64_sve2 } } } } */
> +/* { 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 a2a1b7a7e40408752dc03dfeccf2c263f39a91a0..4976bf5e50d493f0ec733d783dd4b4b7902d05ed 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,7 +1,10 @@
>  /* { dg-do compile } */
>  /* { dg-require-effective-target stdint_types } */
> +/* { dg-require-effective-target vect_long } */
>  /* { dg-additional-options "-fno-tree-loop-vectorize" } */
> -/* { dg-add-options arm_v8_1m_mve_fp } */
> +/* { dg-add-options arm_v8_3a_complex_neon } */
> +
> +#define UNROLL
>  
>  #define TYPE uint64_t
>  #define N 16
> @@ -9,6 +12,6 @@
>  #include "complex-add-pattern-template.c"
>  
>  /* { 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 && !arch64_sve2 } } } } */
> +/* { 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" } } */
>  /* { 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-short.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c
> index 938f9f7d1350ab7d8f5c45994f1486d8e793f2a6..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,7 +1,10 @@
>  /* { dg-do compile } */
>  /* { dg-require-effective-target stdint_types } */
> +/* { dg-require-effective-target vect_int } */
>  /* { dg-additional-options "-fno-tree-loop-vectorize" } */
> -/* { dg-add-options arm_v8_1m_mve_fp } */
> +/* { dg-add-options arm_v8_3a_complex_neon } */
> +
> +#define UNROLL
>  
>  #define TYPE uint16_t
>  #define N 16
> @@ -9,6 +12,6 @@
>  #include "complex-add-pattern-template.c"
>  
>  /* { 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 && !arch64_sve2 } } } } */
> +/* { 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/fast-math-bb-slp-complex-add-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c
> index 23f179a55dcf77c7cfa8f55f748c9973b5e9c646..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,8 +1,9 @@
>  /* { dg-do compile } */
>  /* { dg-require-effective-target vect_double } */
>  /* { dg-add-options arm_v8_3a_complex_neon } */
> -/* { dg-additional-options "-fno-tree-loop-vectorize -funroll-loops" } */
> -/* { dg-add-options arm_v8_1m_mve_fp } */
> +/* { dg-additional-options "-fno-tree-loop-vectorize" } */
> +
> +#define UNROLL
>  
>  #define TYPE double
>  #define N 16
> 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 cc7715160981274605b4ab21e7db33fdb373e04d..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,8 +1,9 @@
>  /* { dg-do compile } */
>  /* { dg-require-effective-target vect_float } */
>  /* { dg-add-options arm_v8_3a_complex_neon } */
> -/* { dg-additional-options "-fno-tree-loop-vectorize -funroll-loops" } */
> -/* { dg-add-options arm_v8_1m_mve_fp } */
> +/* { dg-additional-options "-fno-tree-loop-vectorize" } */
> +
> +#define UNROLL
>  
>  #define TYPE float
>  #define N 16
> 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 dc8c6bd6d0882c7fccde71c323b8bde89c2410af..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,8 +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 c79cc3b7365d8ad4a33366df275f9c8adddd1c97..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,7 +1,10 @@
>  /* { dg-do compile } */
>  /* { dg-add-options arm_v8_3a_complex_neon } */
>  /* { dg-additional-options "-fno-tree-loop-vectorize" } */
> -/* { dg-add-options arm_v8_1m_mve_fp } */
> +/* { dg-require-effective-target vect_double } */
> +/* { dg-add-options arm_v8_3a_complex_neon } */
> +
> +#define UNROLL
>  
>  #define TYPE double
>  #define N 16
> 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 fb6a1676fb4b7a766088dcec42a3a2465c3e11f9..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,8 +1,9 @@
>  /* { dg-do compile } */
>  /* { dg-require-effective-target vect_float } */
>  /* { dg-add-options arm_v8_3a_complex_neon } */
> -/* { dg-additional-options "-fno-tree-loop-vectorize -funroll-loops" } */
> -/* { dg-add-options arm_v8_1m_mve_fp } */
> +/* { dg-additional-options "-fno-tree-loop-vectorize" } */
> +
> +#define UNROLL
>  
>  #define TYPE float
>  #define N 16
> 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 4bb106a3d520c6ab2a322cc463f6a7f5c5238f95..885fd97c5d23eb5a53f358bb5d64625805704966 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,8 +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-additional-options "-fno-tree-loop-vectorize -funroll-loops" } */
> -/* { dg-add-options arm_v8_1m_mve_fp } */
> +/* { dg-additional-options "-fno-tree-loop-vectorize" } */
> +
> +#define UNROLL
>  
>  #define TYPE _Float16
>  #define N 16
> 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 99f0a5e67994f112e36a01918ac50670d302e063..462063abc3041d466e8b0261252054a46ef48e15 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,7 +1,6 @@
>  /* { 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 16
> 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 bc84cedb80129d0e0a99caa3ea463d26a7511c17..a88adc8184ece3d6d61c66a42233fde0f1721a78 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
> @@ -2,7 +2,6 @@
>  /* { dg-require-effective-target vect_complex_add_float } */
>  /* { 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 float
>  #define N 16
> 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 0fbd9172c2f3f1efb2dae2307292b5d1a7f6d80a..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,8 +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-mls-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c
> index b74ed8e1f64b3051ae423ae367b36759605ca5a6..a434fd1f1d3235392a0240b5861c85d39c48d551 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,7 +1,6 @@
>  /* { 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 16
> 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 0ae3b7ee4e40cba72820d5161fa8d5b907e7799b..b7ccbbdb75743182022465243efcb128ef97fd0c 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
> @@ -2,7 +2,6 @@
>  /* { dg-require-effective-target vect_complex_add_float } */
>  /* { dg-additional-options "-fno-tree-loop-vectorize" } */
>  /* { dg-add-options arm_v8_3a_complex_neon } */
> -/* { dg-add-options arm_v8_1m_mve_fp } */
>  
>  #define TYPE float
>  #define N 16
> 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 727bae51778ca175eb6134f3823e6716002d315e..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,8 +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-mul-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c
> index 33f194b309501ae00f6f970fa8e8e04d618b3f75..f7e9386334e1b259d43d35f4bc6b79010d020e6a 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,7 +1,6 @@
>  /* { 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 16
> 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 020336649364526142bf1d59673cc82903858871..0dc9c52555640c34f794e0f57c04f3ea0510fdc9 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
> @@ -2,7 +2,6 @@
>  /* { dg-require-effective-target vect_complex_add_float } */
>  /* { dg-additional-options "-fno-tree-loop-vectorize" } */
>  /* { dg-add-options arm_v8_3a_complex_neon } */
> -/* { dg-add-options arm_v8_1m_mve_fp } */
>  
>  #define TYPE float
>  #define N 16
> 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 332cc51e70287ee4c51e7c91f6373f13c0e4d9cc..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,8 +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-complex-add-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c
> index 5c51d232d791b987930a30583f0f4b7645e1865f..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,6 +1,6 @@
>  /* { dg-do compile } */
> +/* { 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
> 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 2850aca29ee54d67af2f3e723798124f3e109adc..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,6 +1,6 @@
>  /* { dg-do compile } */
> +/* { 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
> 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 d2de8501493be432252d52acc87165451082c570..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,6 +1,6 @@
>  /* { dg-do compile } */
> +/* { 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
> 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 c2365045d771a191686f698efc8fca26574c9ec3..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,6 +1,6 @@
>  /* { dg-do compile } */
> +/* { 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
> 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 2db785195acc86dc377bd61ea46b415ab940690b..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,6 +1,6 @@
>  /* { dg-do compile } */
> +/* { 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
> 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 094aecd959e117d7530c01db4eb4c3de5255ca6c..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,6 +1,7 @@
>  /* { dg-do compile } */
> +/* { 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
> 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 8fe90fe0c0e27c5794222d566611ac6cca75bd23..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,7 +1,6 @@
>  /* { 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
> 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 d8ef7068887c89099aca4e2a5cac2078a1edfdb6..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,7 +1,6 @@
>  /* { 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
> 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 7fa5150df022890330644c0be58471480364abac..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,6 +1,5 @@
>  /* { dg-do compile } */
>  /* { dg-add-options arm_v8_3a_fp16_complex_neon } */
> -/* { dg-add-options arm_v8_1m_mve_fp } */
>  
>  #define TYPE _Float16
>  #define N 200
> 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 2648e7874ab2b0ea3cf8c6f2f5957badf04595ad..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,6 +1,5 @@
>  /* { dg-do compile } */
>  /* { dg-add-options arm_v8_3a_complex_neon } */
> -/* { dg-add-options arm_v8_1m_mve_fp } */
>  
>  #define TYPE double
>  #define N 200
> 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 f9e285c2b92e507ab192ef82e6de1023a3254c95..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,6 +1,5 @@
>  /* { dg-do compile } */
>  /* { dg-add-options arm_v8_3a_complex_neon } */
> -/* { dg-add-options arm_v8_1m_mve_fp } */
>  
>  #define TYPE float
>  #define N 200
> 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 88f8215e7a42e916bd1f33d310603c3c926844ec..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,6 +1,5 @@
>  /* { dg-do compile } */
>  /* { dg-add-options arm_v8_3a_fp16_complex_neon } */
> -/* { dg-add-options arm_v8_1m_mve_fp } */
>  
>  #define TYPE _Float16
>  #define N 200
> 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 67d1acf340c5ac59fd86b2b039f82da50c76cfe1..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,6 +1,5 @@
>  /* { dg-do compile } */
>  /* { dg-add-options arm_v8_3a_complex_neon } */
> -/* { dg-add-options arm_v8_1m_mve_fp } */
>  
>  #define TYPE double
>  #define N 200
> 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 05740f23758c8852b4894ddffa4a256c29a41e78..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,6 +1,5 @@
>  /* { dg-do compile } */
>  /* { dg-add-options arm_v8_3a_complex_neon } */
> -/* { dg-add-options arm_v8_1m_mve_fp } */
>  
>  #define TYPE float
>  #define N 200
> 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 3d8f6851faa478f8c1a09816f34b09e863e59668..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,6 +1,5 @@
>  /* { dg-do compile } */
>  /* { dg-add-options arm_v8_3a_fp16_complex_neon } */
> -/* { dg-add-options arm_v8_1m_mve_fp } */
>  
>  #define TYPE _Float16
>  #define N 200
> 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 de065150325c2dbf6dc87434ca504f072626a08e..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,6 +1,7 @@
>  /* { dg-do compile } */
>  /* { 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
> 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 2b10bab8a5ae6036e55044f7e611a1e1bfde2a3f..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,6 +1,7 @@
>  /* { dg-do compile } */
>  /* { 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
> 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 ad045b1cf3657db32d7ebb577e57ff4f4692abb0..11a6f53ccebe685058fd486be06b9f3574531f86 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,6 +1,9 @@
>  /* { dg-do compile } */
>  /* { dg-require-effective-target stdint_types } */
> -/* { dg-add-options arm_v8_1m_mve_fp } */
> +/* { dg-require-effective-target vect_long } */
> +/* { dg-add-options arm_v8_3a_complex_neon } */
> +
> +#define UNROLL
>  
>  #define TYPE int64_t
>  #define N 200
> 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 81f0f7124bf9219a8cab8e56a52766d081039779..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,6 +1,7 @@
>  /* { dg-do compile } */
>  /* { 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
> 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 d0a73a18cd54dc3a1b6b701c2a51df08e130e14c..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,6 +1,7 @@
>  /* { dg-do compile } */
>  /* { 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
> 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 fe7f605503fba66300a871567452b60025accb2c..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,6 +1,7 @@
>  /* { dg-do compile } */
>  /* { 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
> 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 f52e7391f8bc4029def1cfc73e478bce2affe44a..796dabdb9ba9fbb2b9f1242e0f8e0efe52614f8b 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,6 +1,9 @@
>  /* { dg-do compile } */
>  /* { dg-require-effective-target stdint_types } */
> -/* { dg-add-options arm_v8_1m_mve_fp } */
> +/* { dg-require-effective-target vect_long } */
> +/* { dg-add-options arm_v8_3a_complex_neon } */
> +
> +#define UNROLL
>  
>  #define TYPE uint64_t
>  #define N 200
> 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 c6794cde224ce989cb2665273d4bf884a065cffa..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,6 +1,7 @@
>  /* { dg-do compile } */
>  /* { 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
> 
> 
>
  

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 0f01efb49b544c4f849057b0cecbc42b3acea41b..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,6 +1,7 @@ 
 /* { dg-do compile } */
 /* { 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
@@ -9,6 +10,6 @@ 
 #include "complex-add-pattern-template.c"
 
 /* { 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 && !arch64_sve2 } } } } */
+/* { 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 ccf165176cad5a13b7cdee78ab4a30830eb492f5..6ed561a00416b5aef2e514820ab94489df7aa86b 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,7 +1,10 @@ 
 /* { dg-do compile } */
 /* { dg-require-effective-target vect_complex_add_long } */
+/* { dg-require-effective-target vect_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
@@ -9,7 +12,7 @@ 
 #include "complex-add-pattern-template.c"
 
 /* { 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 && !arch64_sve2 } } } } */
+/* { 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" } } */
 /* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "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-short.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c
index 3aaa70b23b67f53d3614ecb34bf8e6eb0f206b6d..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,7 +1,10 @@ 
 /* { dg-do compile } */
 /* { dg-require-effective-target stdint_types } */
+/* { dg-require-effective-target vect_int } */
 /* { dg-additional-options "-fno-tree-loop-vectorize" } */
-/* { dg-add-options arm_v8_1m_mve_fp } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+
+#define UNROLL
 
 #define TYPE int16_t
 #define N 16
@@ -9,6 +12,6 @@ 
 #include "complex-add-pattern-template.c"
 
 /* { 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 && !arch64_sve2 } } } } */
+/* { 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 a6fd31d967b372328792d07aa52ae1f684132fa0..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,7 +1,10 @@ 
 /* { dg-do compile } */
 /* { dg-require-effective-target stdint_types } */
+/* { dg-require-effective-target vect_int } */
 /* { dg-additional-options "-fno-tree-loop-vectorize" } */
-/* { dg-add-options arm_v8_1m_mve_fp } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+
+#define UNROLL
 
 #define TYPE uint32_t
 #define N 16
@@ -9,6 +12,6 @@ 
 #include "complex-add-pattern-template.c"
 
 /* { 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 && !arch64_sve2 } } } } */
+/* { 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 a2a1b7a7e40408752dc03dfeccf2c263f39a91a0..4976bf5e50d493f0ec733d783dd4b4b7902d05ed 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,7 +1,10 @@ 
 /* { dg-do compile } */
 /* { dg-require-effective-target stdint_types } */
+/* { dg-require-effective-target vect_long } */
 /* { dg-additional-options "-fno-tree-loop-vectorize" } */
-/* { dg-add-options arm_v8_1m_mve_fp } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+
+#define UNROLL
 
 #define TYPE uint64_t
 #define N 16
@@ -9,6 +12,6 @@ 
 #include "complex-add-pattern-template.c"
 
 /* { 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 && !arch64_sve2 } } } } */
+/* { 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" } } */
 /* { 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-short.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c
index 938f9f7d1350ab7d8f5c45994f1486d8e793f2a6..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,7 +1,10 @@ 
 /* { dg-do compile } */
 /* { dg-require-effective-target stdint_types } */
+/* { dg-require-effective-target vect_int } */
 /* { dg-additional-options "-fno-tree-loop-vectorize" } */
-/* { dg-add-options arm_v8_1m_mve_fp } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+
+#define UNROLL
 
 #define TYPE uint16_t
 #define N 16
@@ -9,6 +12,6 @@ 
 #include "complex-add-pattern-template.c"
 
 /* { 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 && !arch64_sve2 } } } } */
+/* { 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/fast-math-bb-slp-complex-add-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c
index 23f179a55dcf77c7cfa8f55f748c9973b5e9c646..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,8 +1,9 @@ 
 /* { dg-do compile } */
 /* { dg-require-effective-target vect_double } */
 /* { dg-add-options arm_v8_3a_complex_neon } */
-/* { dg-additional-options "-fno-tree-loop-vectorize -funroll-loops" } */
-/* { dg-add-options arm_v8_1m_mve_fp } */
+/* { dg-additional-options "-fno-tree-loop-vectorize" } */
+
+#define UNROLL
 
 #define TYPE double
 #define N 16
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 cc7715160981274605b4ab21e7db33fdb373e04d..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,8 +1,9 @@ 
 /* { dg-do compile } */
 /* { dg-require-effective-target vect_float } */
 /* { dg-add-options arm_v8_3a_complex_neon } */
-/* { dg-additional-options "-fno-tree-loop-vectorize -funroll-loops" } */
-/* { dg-add-options arm_v8_1m_mve_fp } */
+/* { dg-additional-options "-fno-tree-loop-vectorize" } */
+
+#define UNROLL
 
 #define TYPE float
 #define N 16
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 dc8c6bd6d0882c7fccde71c323b8bde89c2410af..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,8 +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 c79cc3b7365d8ad4a33366df275f9c8adddd1c97..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,7 +1,10 @@ 
 /* { dg-do compile } */
 /* { dg-add-options arm_v8_3a_complex_neon } */
 /* { dg-additional-options "-fno-tree-loop-vectorize" } */
-/* { dg-add-options arm_v8_1m_mve_fp } */
+/* { dg-require-effective-target vect_double } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+
+#define UNROLL
 
 #define TYPE double
 #define N 16
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 fb6a1676fb4b7a766088dcec42a3a2465c3e11f9..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,8 +1,9 @@ 
 /* { dg-do compile } */
 /* { dg-require-effective-target vect_float } */
 /* { dg-add-options arm_v8_3a_complex_neon } */
-/* { dg-additional-options "-fno-tree-loop-vectorize -funroll-loops" } */
-/* { dg-add-options arm_v8_1m_mve_fp } */
+/* { dg-additional-options "-fno-tree-loop-vectorize" } */
+
+#define UNROLL
 
 #define TYPE float
 #define N 16
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 4bb106a3d520c6ab2a322cc463f6a7f5c5238f95..885fd97c5d23eb5a53f358bb5d64625805704966 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,8 +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-additional-options "-fno-tree-loop-vectorize -funroll-loops" } */
-/* { dg-add-options arm_v8_1m_mve_fp } */
+/* { dg-additional-options "-fno-tree-loop-vectorize" } */
+
+#define UNROLL
 
 #define TYPE _Float16
 #define N 16
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 99f0a5e67994f112e36a01918ac50670d302e063..462063abc3041d466e8b0261252054a46ef48e15 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,7 +1,6 @@ 
 /* { 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 16
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 bc84cedb80129d0e0a99caa3ea463d26a7511c17..a88adc8184ece3d6d61c66a42233fde0f1721a78 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
@@ -2,7 +2,6 @@ 
 /* { dg-require-effective-target vect_complex_add_float } */
 /* { 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 float
 #define N 16
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 0fbd9172c2f3f1efb2dae2307292b5d1a7f6d80a..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,8 +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-mls-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c
index b74ed8e1f64b3051ae423ae367b36759605ca5a6..a434fd1f1d3235392a0240b5861c85d39c48d551 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,7 +1,6 @@ 
 /* { 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 16
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 0ae3b7ee4e40cba72820d5161fa8d5b907e7799b..b7ccbbdb75743182022465243efcb128ef97fd0c 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
@@ -2,7 +2,6 @@ 
 /* { dg-require-effective-target vect_complex_add_float } */
 /* { dg-additional-options "-fno-tree-loop-vectorize" } */
 /* { dg-add-options arm_v8_3a_complex_neon } */
-/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #define TYPE float
 #define N 16
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 727bae51778ca175eb6134f3823e6716002d315e..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,8 +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-mul-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c
index 33f194b309501ae00f6f970fa8e8e04d618b3f75..f7e9386334e1b259d43d35f4bc6b79010d020e6a 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,7 +1,6 @@ 
 /* { 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 16
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 020336649364526142bf1d59673cc82903858871..0dc9c52555640c34f794e0f57c04f3ea0510fdc9 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
@@ -2,7 +2,6 @@ 
 /* { dg-require-effective-target vect_complex_add_float } */
 /* { dg-additional-options "-fno-tree-loop-vectorize" } */
 /* { dg-add-options arm_v8_3a_complex_neon } */
-/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #define TYPE float
 #define N 16
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 332cc51e70287ee4c51e7c91f6373f13c0e4d9cc..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,8 +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-complex-add-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c
index 5c51d232d791b987930a30583f0f4b7645e1865f..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,6 +1,6 @@ 
 /* { dg-do compile } */
+/* { 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
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 2850aca29ee54d67af2f3e723798124f3e109adc..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,6 +1,6 @@ 
 /* { dg-do compile } */
+/* { 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
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 d2de8501493be432252d52acc87165451082c570..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,6 +1,6 @@ 
 /* { dg-do compile } */
+/* { 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
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 c2365045d771a191686f698efc8fca26574c9ec3..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,6 +1,6 @@ 
 /* { dg-do compile } */
+/* { 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
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 2db785195acc86dc377bd61ea46b415ab940690b..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,6 +1,6 @@ 
 /* { dg-do compile } */
+/* { 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
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 094aecd959e117d7530c01db4eb4c3de5255ca6c..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,6 +1,7 @@ 
 /* { dg-do compile } */
+/* { 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
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 8fe90fe0c0e27c5794222d566611ac6cca75bd23..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,7 +1,6 @@ 
 /* { 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
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 d8ef7068887c89099aca4e2a5cac2078a1edfdb6..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,7 +1,6 @@ 
 /* { 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
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 7fa5150df022890330644c0be58471480364abac..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,6 +1,5 @@ 
 /* { dg-do compile } */
 /* { dg-add-options arm_v8_3a_fp16_complex_neon } */
-/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #define TYPE _Float16
 #define N 200
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 2648e7874ab2b0ea3cf8c6f2f5957badf04595ad..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,6 +1,5 @@ 
 /* { dg-do compile } */
 /* { dg-add-options arm_v8_3a_complex_neon } */
-/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #define TYPE double
 #define N 200
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 f9e285c2b92e507ab192ef82e6de1023a3254c95..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,6 +1,5 @@ 
 /* { dg-do compile } */
 /* { dg-add-options arm_v8_3a_complex_neon } */
-/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #define TYPE float
 #define N 200
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 88f8215e7a42e916bd1f33d310603c3c926844ec..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,6 +1,5 @@ 
 /* { dg-do compile } */
 /* { dg-add-options arm_v8_3a_fp16_complex_neon } */
-/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #define TYPE _Float16
 #define N 200
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 67d1acf340c5ac59fd86b2b039f82da50c76cfe1..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,6 +1,5 @@ 
 /* { dg-do compile } */
 /* { dg-add-options arm_v8_3a_complex_neon } */
-/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #define TYPE double
 #define N 200
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 05740f23758c8852b4894ddffa4a256c29a41e78..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,6 +1,5 @@ 
 /* { dg-do compile } */
 /* { dg-add-options arm_v8_3a_complex_neon } */
-/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #define TYPE float
 #define N 200
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 3d8f6851faa478f8c1a09816f34b09e863e59668..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,6 +1,5 @@ 
 /* { dg-do compile } */
 /* { dg-add-options arm_v8_3a_fp16_complex_neon } */
-/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #define TYPE _Float16
 #define N 200
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 de065150325c2dbf6dc87434ca504f072626a08e..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,6 +1,7 @@ 
 /* { dg-do compile } */
 /* { 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
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 2b10bab8a5ae6036e55044f7e611a1e1bfde2a3f..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,6 +1,7 @@ 
 /* { dg-do compile } */
 /* { 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
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 ad045b1cf3657db32d7ebb577e57ff4f4692abb0..11a6f53ccebe685058fd486be06b9f3574531f86 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,6 +1,9 @@ 
 /* { dg-do compile } */
 /* { dg-require-effective-target stdint_types } */
-/* { dg-add-options arm_v8_1m_mve_fp } */
+/* { dg-require-effective-target vect_long } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+
+#define UNROLL
 
 #define TYPE int64_t
 #define N 200
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 81f0f7124bf9219a8cab8e56a52766d081039779..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,6 +1,7 @@ 
 /* { dg-do compile } */
 /* { 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
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 d0a73a18cd54dc3a1b6b701c2a51df08e130e14c..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,6 +1,7 @@ 
 /* { dg-do compile } */
 /* { 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
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 fe7f605503fba66300a871567452b60025accb2c..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,6 +1,7 @@ 
 /* { dg-do compile } */
 /* { 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
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 f52e7391f8bc4029def1cfc73e478bce2affe44a..796dabdb9ba9fbb2b9f1242e0f8e0efe52614f8b 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,6 +1,9 @@ 
 /* { dg-do compile } */
 /* { dg-require-effective-target stdint_types } */
-/* { dg-add-options arm_v8_1m_mve_fp } */
+/* { dg-require-effective-target vect_long } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+
+#define UNROLL
 
 #define TYPE uint64_t
 #define N 200
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 c6794cde224ce989cb2665273d4bf884a065cffa..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,6 +1,7 @@ 
 /* { dg-do compile } */
 /* { 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