https://gcc.gnu.org/g:56dd47c073cabf00771280273bae133a4864c9f6

commit r16-6519-g56dd47c073cabf00771280273bae133a4864c9f6
Author: Artemiy Volkov <[email protected]>
Date:   Fri Jan 2 11:18:19 2026 +0000

    testsuite: rework some vect/complex testcases
    
    This is the second stab at
    https://gcc.gnu.org/pipermail/gcc-patches/2026-January/704823.html, which
    concerns cleaning up some testcases in gcc.dg/vect/complex.  The original
    commit message reads:
    
    ---------------------------------------------------------------------------
    Some of the testcases in the gcc.dg/vect/complex directory try to match
    "stmt.*$internal_fn" in the slp1/vect logs, which leads to many false
    positives; this patch changes this to "add new stmt: \[^\n\r]*$internal_fn",
    making sure that the log fragments matched in this way are limited to
    single lines and correspond to actual newly created GIMPLE statements.
    This main change results in some fallout, necessitating the following
    additional tweaks:
    
    - For fast-math testcases, replace the "1"s in scan-tree-dump-times
      directives by appropriate counts.
    - XFAIL bb-slp and vect testcases featuring integral types,
      since the cadd{90,270} optabs are not implemented for integral modes.
    - Disable some FP16 tests for arm targets due to absence of cadd{90,270}
      for V8HF.
    - Replace "target { X } && ! target { Y }" selectors with the correct
      "target { X && { ! Y } }" form.
    - In bb-slp-complex-add-pattern-long.c, adjust the testcase header to
      match other tests so that different scan-tree-dump-times directives
      can be switched off selectively.
    - In bb-slp-complex-add-pattern-long.c, remove an extraneous scan for
      "Found COMPLEX_ADD_ROT90".
    - In bb-slp-complex-add-pattern-int.c, use vect_complex_add_int instead of
      vect_complex_add_byte.
    ---------------------------------------------------------------------------
    
    Following Tamar's feedback, tweaks 2 and 3 above have been fixed by these
    changes since v1:
    
    - Change what dg-add-options does for arm_v8_3a{,_fp16}_complex_neon so
      that the correct flags are returned regardless of configure-time values
      of -mfpu.
    - For integer tests, require MVE rather than AdvSIMD from the arm
      backend's side, as only that ISA has cadd{90,270} for integral modes.
    - Un-XFAIL testcases that gcc is currently able to vectorize, separately
      for the arm and aarch64 backends.
    
    Re-regtested on aarch64 (with and without SVE2) and arm.
    
    gcc/testsuite/ChangeLog:
    
            * gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c: Adjust 
testcase.
            * 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/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-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:
            * 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.
            * lib/target-supports.exp:
            (check_effective_target_arm_v8_3a_complex_neon_ok_nocache): Add
            explicit "+simd" and tighten check-compile code fragment.
            (check_effective_target_arm_v8_3a_fp16_complex_neon_ok_nocache):
            Likewise.

Diff:
---
 .../gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c    |  6 +++---
 .../gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c   | 10 +++++-----
 .../gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c  |  6 +++---
 .../vect/complex/bb-slp-complex-add-pattern-unsigned-int.c  |  6 +++---
 .../vect/complex/bb-slp-complex-add-pattern-unsigned-long.c |  6 +++---
 .../complex/bb-slp-complex-add-pattern-unsigned-short.c     |  6 +++---
 .../gcc.dg/vect/complex/complex-add-pattern-template.c      |  8 ++++----
 gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c    |  8 ++++----
 .../vect/complex/fast-math-bb-slp-complex-add-double.c      |  4 ++--
 .../vect/complex/fast-math-bb-slp-complex-add-float.c       |  4 ++--
 .../vect/complex/fast-math-bb-slp-complex-add-half-float.c  |  4 ++--
 .../complex/fast-math-bb-slp-complex-add-pattern-double.c   |  4 ++--
 .../complex/fast-math-bb-slp-complex-add-pattern-float.c    |  4 ++--
 .../fast-math-bb-slp-complex-add-pattern-half-float.c       |  4 ++--
 .../gcc.dg/vect/complex/fast-math-complex-add-double.c      |  4 ++--
 .../gcc.dg/vect/complex/fast-math-complex-add-float.c       |  4 ++--
 .../gcc.dg/vect/complex/fast-math-complex-add-half-float.c  |  4 ++--
 .../vect/complex/fast-math-complex-add-pattern-double.c     |  4 ++--
 .../vect/complex/fast-math-complex-add-pattern-float.c      |  4 ++--
 .../vect/complex/fast-math-complex-add-pattern-half-float.c |  4 ++--
 .../gcc.dg/vect/complex/vect-complex-add-pattern-byte.c     |  6 +++---
 .../gcc.dg/vect/complex/vect-complex-add-pattern-int.c      |  6 +++---
 .../gcc.dg/vect/complex/vect-complex-add-pattern-long.c     |  6 +++---
 .../gcc.dg/vect/complex/vect-complex-add-pattern-short.c    |  6 +++---
 .../vect/complex/vect-complex-add-pattern-unsigned-byte.c   |  6 +++---
 .../vect/complex/vect-complex-add-pattern-unsigned-int.c    |  6 +++---
 .../vect/complex/vect-complex-add-pattern-unsigned-long.c   |  6 +++---
 .../vect/complex/vect-complex-add-pattern-unsigned-short.c  |  6 +++---
 gcc/testsuite/lib/target-supports.exp                       | 13 +++++++++----
 29 files changed, 85 insertions(+), 80 deletions(-)

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 cead05f1cc4e..d5550165b8c1 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,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target stdint_types } */
 /* { dg-require-effective-target vect_int } */
-/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
 /* { dg-additional-options "-fno-tree-loop-vectorize" } */
 
 #define TYPE int32_t
@@ -9,7 +9,7 @@
 #include <stdint.h>
 #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 } && ! target { aarch64_sve2 } } } } */
+/* { dg-final { scan-tree-dump "add new stmt: \[^\n\r]*COMPLEX_ADD_ROT90" 
"slp1" { target { vect_complex_add_int } xfail { aarch64*-*-* } } } } */
+/* { dg-final { scan-tree-dump "add new stmt: \[^\n\r]*COMPLEX_ADD_ROT270" 
"slp1" { target { vect_complex_add_int } xfail { *-*-* } } } } */
 /* { 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 0d21f57666ed..c46e365236c7 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,8 @@
 /* { dg-do compile } */
-/* { dg-require-effective-target vect_complex_add_long } */
 /* { dg-require-effective-target stdint_types } */
-/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-require-effective-target vect_int } */
+/* { dg-additional-options "-fno-tree-loop-vectorize" } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #define UNROLL
 
@@ -10,8 +11,7 @@
 #include <stdint.h>
 #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 } && ! target { aarch64_sve2 } } } } */
+/* { dg-final { scan-tree-dump "add new stmt: \[^\n\r]*COMPLEX_ADD_ROT90" 
"slp1" { target { vect_complex_add_long } xfail { *-*-* } } } } */
+/* { dg-final { scan-tree-dump "add new stmt: \[^\n\r]*COMPLEX_ADD_ROT270" 
"slp1" { target { vect_complex_add_long } xfail { *-*-* } } } } */
 /* { 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 8928386a5174..5e16867aafba 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
@@ -2,7 +2,7 @@
 /* { dg-require-effective-target stdint_types } */
 /* { dg-require-effective-target vect_int } */
 /* { dg-additional-options "-fno-tree-loop-vectorize" } */
-/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #define UNROLL
 
@@ -11,7 +11,7 @@
 #include <stdint.h>
 #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 } && ! target { aarch64_sve2 } } } } */
+/* { dg-final { scan-tree-dump "add new stmt: \[^\n\r]*COMPLEX_ADD_ROT90" 
"slp1" { target { vect_complex_add_short } xfail { *-*-* } } } } */
+/* { dg-final { scan-tree-dump "add new stmt: \[^\n\r]*COMPLEX_ADD_ROT270" 
"slp1" { target { vect_complex_add_short } xfail { *-*-* } } } } */
 /* { 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 4ab4b9a446a8..a0d199f8e9d4 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
@@ -2,7 +2,7 @@
 /* { dg-require-effective-target stdint_types } */
 /* { dg-require-effective-target vect_int } */
 /* { dg-additional-options "-fno-tree-loop-vectorize" } */
-/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #define UNROLL
 
@@ -11,7 +11,7 @@
 #include <stdint.h>
 #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 } && ! target { aarch64_sve2 } } } } */
+/* { dg-final { scan-tree-dump "add new stmt: \[^\n\r]*COMPLEX_ADD_ROT90" 
"slp1" { target { vect_complex_add_int } xfail { aarch64*-*-* } } } }*/
+/* { dg-final { scan-tree-dump "add new stmt: \[^\n\r]*COMPLEX_ADD_ROT270" 
"slp1" { target { vect_complex_add_int } xfail { aarch64*-*-* } } } } */
 /* { 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 38aa9c0b9d51..c254721d5194 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,7 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target stdint_types } */
 /* { dg-additional-options "-fno-tree-loop-vectorize" } */
-/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #define UNROLL
 
@@ -10,7 +10,7 @@
 #include <stdint.h>
 #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 } && ! target { aarch64_sve2 } } } } */
+/* { dg-final { scan-tree-dump "add new stmt: \[^\n\r]*COMPLEX_ADD_ROT90" 
"slp1" { target { vect_complex_add_long } xfail { *-*-* } } } } */
+/* { dg-final { scan-tree-dump "add new stmt: \[^\n\r]*COMPLEX_ADD_ROT270" 
"slp1" { target { vect_complex_add_long } xfail { *-*-* } } } } */
 /* { 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 8846c9889fb6..015f4eaa8528 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
@@ -2,7 +2,7 @@
 /* { dg-require-effective-target stdint_types } */
 /* { dg-require-effective-target vect_int } */
 /* { dg-additional-options "-fno-tree-loop-vectorize" } */
-/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #define UNROLL
 
@@ -11,7 +11,7 @@
 #include <stdint.h>
 #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 } && ! target { aarch64_sve2 } } } } */
+/* { dg-final { scan-tree-dump "add new stmt: \[^\n\r]*COMPLEX_ADD_ROT90" 
"slp1" { target { vect_complex_add_short } xfail { aarch64*-*-* } } } } */
+/* { dg-final { scan-tree-dump "add new stmt: \[^\n\r]*COMPLEX_ADD_ROT270" 
"slp1" { target { vect_complex_add_short } xfail { aarch64*-*-* } } } } */
 /* { 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 658af294f1c8..9b9f0a4a7d8e 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
@@ -10,7 +10,7 @@ void add90 (TYPE a[restrict N], TYPE b[restrict N], TYPE 
c[restrict N])
     }
 }
 
-/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 1 "vect" } } */
 
 void add270 (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N])
 {
@@ -24,7 +24,7 @@ void add270 (TYPE a[restrict N], TYPE b[restrict N], TYPE 
c[restrict N])
     }
 }
 
-/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT270" 1 "vect" } } */
 
 void addMixed (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N])
 {
@@ -55,7 +55,7 @@ void add90HandUnrolled (TYPE a[restrict N], TYPE b[restrict 
N],
     }
 }
 
-/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 1 "vect" } } */
 
 void add90Hybrid (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N],
                  TYPE d[restrict N])
@@ -72,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" } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*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 f37ab98813fa..3870196b9fb2 100644
--- a/gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c
+++ b/gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c
@@ -20,7 +20,7 @@ void add90snd (_Complex TYPE a[restrict N], _Complex TYPE 
b[restrict N],
     c[i] = a[i] + (b[i] * I);
 }
 
-/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 1 "vect" } } */
 
 void add180snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
                _Complex TYPE c[restrict N])
@@ -42,7 +42,7 @@ void add270snd (_Complex TYPE a[restrict N], _Complex TYPE 
b[restrict N],
     c[i] = a[i] + (b[i] * I * I * I);
 }
 
-/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT270" 1 "vect" } } */
 
 void add90fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
               _Complex TYPE c[restrict N])
@@ -54,7 +54,7 @@ void add90fst (_Complex TYPE a[restrict N], _Complex TYPE 
b[restrict N],
     c[i] = (a[i] * I) + b[i];
 }
 
-/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 1 "vect" } } */
 
 void add180fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
                _Complex TYPE c[restrict N])
@@ -76,7 +76,7 @@ void add270fst (_Complex TYPE a[restrict N], _Complex TYPE 
b[restrict N],
     c[i] = (a[i] * I * I * I) + b[i];
 }
 
-/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT270" 1 "vect" } } */
 
 void addconjfst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
                 _Complex TYPE c[restrict N])
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 fd5bd9b2da01..ec8109c9b510 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
@@ -9,8 +9,8 @@
 #define N 16
 #include "complex-add-template.c"
 
-/* { 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-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 32 "slp1" { target { vect_complex_add_double } } } 
} */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT270" 32 "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 a859b2330308..40b79f5c5d92 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
@@ -9,7 +9,7 @@
 #define N 16
 #include "complex-add-template.c"
 
-/* { 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-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 16 "slp1" { target { vect_complex_add_float } } } } 
*/
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT270" 16 "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 12df361c06d0..c486fba13d75 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
@@ -10,5 +10,5 @@
 
 /* Vectorization is failing for these cases.  They should work but for now 
ignore.  */
 
-/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { 
xfail *-*-* } } } */
-/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { 
xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump "add new stmt: \[^\n\r]*COMPLEX_ADD_ROT270" 
"slp1" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump "add new stmt: \[^\n\r]*COMPLEX_ADD_ROT90" 
"slp1" { xfail *-*-* } } } */
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 2cd7eb25b3ef..7678e26bec0d 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
@@ -9,7 +9,7 @@
 #define N 16
 #include "complex-add-pattern-template.c"
 
-/* { 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-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 20 "slp1" { target { vect_complex_add_double } } } 
} */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT270" 8 "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 6e560d8778e7..65d8c3956d99 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
@@ -9,7 +9,7 @@
 #define N 16
 #include "complex-add-pattern-template.c"
 
-/* { 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-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 10 "slp1" { target { vect_complex_add_float } } } } 
*/
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT270" 4 "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 e90d10e584f9..ae1e02e301e3 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
@@ -10,7 +10,7 @@
 #define N 16
 #include "complex-add-pattern-template.c"
 
-/* { 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-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 5 "slp1" { target { vect_complex_add_half } } } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT270" 2 "slp1" { target { vect_complex_add_half } } } } 
*/
 /* { 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-complex-add-double.c 
b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c
index c95c573d560f..32ef5faeaa86 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
@@ -7,7 +7,7 @@
 #define N 200
 #include "complex-add-template.c"
 
-/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { 
target { vect_complex_add_double } } } } */
-/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect"  { 
target { vect_complex_add_double } } } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT270" 2 "vect" { target { vect_complex_add_double } } } 
} */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*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 954644b82f93..e9fd02ea88e8 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
@@ -7,7 +7,7 @@
 #define N 200
 #include "complex-add-template.c"
 
-/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { 
target { vect_complex_add_float } } } } */
-/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { 
target { vect_complex_add_float } } } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT270" 2 "vect" { target { vect_complex_add_float } } } } 
*/
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*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 a773e796ddcd..1c8625b0e19f 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
@@ -8,5 +8,5 @@
 #define N 200
 #include "complex-add-template.c"
 
-/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */
-/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT270" 2 "vect" } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 2 "vect" } } */
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 2dede5c7639c..8e98b85f5903 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
@@ -7,7 +7,7 @@
 #define N 200
 #include "complex-add-pattern-template.c"
 
-/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "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-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 4 "vect" { target { vect_complex_add_double } } } } 
*/
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*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" "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 73f2f07d7df1..3415cc2287a0 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
@@ -7,7 +7,7 @@
 #define N 200
 #include "complex-add-pattern-template.c"
 
-/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "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-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 3 "vect" { target { vect_complex_add_float } } } } 
*/
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*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" "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 e634da938733..18e0800eb85a 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
@@ -8,8 +8,8 @@
 #define N 200
 #include "complex-add-pattern-template.c"
 
-/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { 
target { vect_complex_add_half } } } } */
-/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { 
target { vect_complex_add_half } && ! target { arm*-*-* } } } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 3 "vect" { target { vect_complex_add_half } } } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_half } } } }  
*/
 
 /* { 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-byte.c 
b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-byte.c
index bf7c135fa1a8..0f63ff4eea49 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,14 +1,14 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target stdint_types } */
 /* { dg-require-effective-target vect_int } */
-/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #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" { 
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-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 3 "vect" { target { vect_complex_add_byte } xfail { 
*-*-* } } } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_byte } xfail 
{ *-*-* } } } } */
 /* { 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 2fd2a9f0617a..346bd86feafb 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,14 +1,14 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target stdint_types } */
 /* { dg-require-effective-target vect_int } */
-/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #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" { 
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-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 3 "vect" { target { vect_complex_add_int } } } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*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 70977155256b..c3ab2be22511 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,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target stdint_types } */
-/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #define UNROLL
 
@@ -9,7 +9,7 @@
 #include <stdint.h>
 #include "complex-add-pattern-template.c"
 
-/* { 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-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 3 "vect" { target { vect_complex_add_long } xfail { 
*-*-* } } } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_long } xfail 
{ *-*-* } } } } */
 /* { 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 8cbb8ac0c190..23e63f702d3b 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,14 +1,14 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target stdint_types } */
 /* { dg-require-effective-target vect_int } */
-/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #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" { 
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-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 3 "vect" { target { vect_complex_add_short } xfail 
{ *-*-* } } } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_short } xfail 
{ *-*-* } } } } */
 /* { 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 9477f0d92d8f..ca24416cc43b 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,14 +1,14 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target stdint_types } */
 /* { dg-require-effective-target vect_int } */
-/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #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" { 
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-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 3 "vect" { target { vect_complex_add_byte } } } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*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 41f60042ee9a..260f778a4fe2 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,14 +1,14 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target stdint_types } */
 /* { dg-require-effective-target vect_int } */
-/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #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" { 
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-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 3 "vect" { target { vect_complex_add_int } } } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*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 7708ac495b8b..6a88a82f374b 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,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target stdint_types } */
-/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #define UNROLL
 
@@ -9,7 +9,7 @@
 #include <stdint.h>
 #include "complex-add-pattern-template.c"
 
-/* { 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-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 3 "vect" { target { vect_complex_add_long } xfail { 
*-*-* } } } } */
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_long } xfail 
{ *-*-* } } } } */
 /* { 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 6260be4d1216..db86837ffe72 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,14 +1,14 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target stdint_types } */
 /* { dg-require-effective-target vect_int } */
-/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
 
 #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" { 
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-times "add new stmt: 
\[^\n\r]*COMPLEX_ADD_ROT90" 3 "vect" { target { vect_complex_add_short } } } } 
*/
+/* { dg-final { scan-tree-dump-times "add new stmt: 
\[^\n\r]*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/lib/target-supports.exp 
b/gcc/testsuite/lib/target-supports.exp
index d335735382c3..dbcba42629fa 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -13735,8 +13735,9 @@ proc 
check_effective_target_arm_v8_3a_complex_neon_ok_nocache { } {
            #if !defined (__ARM_FEATURE_COMPLEX)
            #error "__ARM_FEATURE_COMPLEX not defined"
            #endif
-       } "$flags $cpu_unset -march=armv8.3-a"] } {
-           set et_arm_v8_3a_complex_neon_flags "$flags $cpu_unset 
-march=armv8.3-a"
+           #include <complex.h>
+       } "$flags $cpu_unset -march=armv8.3-a+simd"] } {
+           set et_arm_v8_3a_complex_neon_flags "$flags $cpu_unset 
-march=armv8.3-a+simd"
            return 1;
        }
     }
@@ -13782,9 +13783,13 @@ proc 
check_effective_target_arm_v8_3a_fp16_complex_neon_ok_nocache { } {
            #if !defined (__ARM_FEATURE_COMPLEX)
            #error "__ARM_FEATURE_COMPLEX not defined"
            #endif
-       } "$flags $cpu_unset -march=armv8.3-a+fp16"] } {
+           #if !defined (__ARM_FEATURE_FP16_VECTOR_ARITHMETIC)
+           #error "__ARM_FEATURE_FP16_VECTOR_ARITHMETIC not defined"
+           #endif
+           #include <complex.h>
+       } "$flags $cpu_unset -march=armv8.3-a+fp16+simd"] } {
            set et_arm_v8_3a_fp16_complex_neon_flags \
-                       "$flags $cpu_unset -march=armv8.3-a+fp16"
+                       "$flags $cpu_unset -march=armv8.3-a+fp16+simd"
            return 1;
        }
     }

Reply via email to