This patch fixes all the duplicates that I see when testing GCC (C
code).  Some of these were real problems with the testsuite where we
were testing the wrong thing because of typos; others are due to
laxity in the tests so that we had a degree of ambiguity in the
results.  I've mostly fixed the latter category by converting the
relevant test into a check-function-bodies test.

gcc/testsuite/ChangeLog:

        * gcc.target/arm/acle/simd32.c (test_sadd16): Scan for sadd16.
        * gcc.target/arm/armv8_2-fp16-neon-1.c (vcgtz, 128-bit): Scan for vcgt.
        * gcc.target/arm/armv8_2-fp16-neon-2.c (vcgtz, 128-bit): Scan for vcgt.
        (vmul, vmul N): Use check function bodies to avoid ambiguity.
        * gcc.target/arm/armv8_2-fp16-scalar-1.c (vrndm): Scan for vrintm.
        (vrndn): Scan for vrintn.
        (vrndp): Scan for vrintp.
        (vrndx): Scan for vrintx.
        * gcc.target/arm/asm-flag-1.c: Scan for movlt.
        * gcc.target/arm/csneg.c: Convert to check-function-bodies.
        * gcc.target/arm/mve/dlstp-compile-asm-2.c (test10): Fix comment that 
caused test9 scan
        to be run twice.
        * gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c: Convert to 
check-function-bodies.
        * gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c: Likewise.
---
 gcc/testsuite/gcc.target/arm/acle/simd32.c    |  2 +-
 .../gcc.target/arm/armv8_2-fp16-neon-1.c      |  2 +-
 .../gcc.target/arm/armv8_2-fp16-neon-2.c      | 63 ++++++++++++-------
 .../gcc.target/arm/armv8_2-fp16-scalar-1.c    |  8 +--
 gcc/testsuite/gcc.target/arm/asm-flag-1.c     |  2 +-
 gcc/testsuite/gcc.target/arm/csneg.c          | 33 ++++++++--
 .../gcc.target/arm/mve/dlstp-compile-asm-2.c  |  3 +-
 .../arm/mve/intrinsics/vgetq_lane_f16.c       | 33 ++++++++--
 .../arm/mve/intrinsics/vgetq_lane_f32.c       | 33 ++++++++--
 .../arm/mve/intrinsics/vgetq_lane_s16.c       | 31 +++++++--
 .../arm/mve/intrinsics/vgetq_lane_s32.c       | 31 +++++++--
 .../arm/mve/intrinsics/vgetq_lane_s8.c        | 31 +++++++--
 .../arm/mve/intrinsics/vgetq_lane_u16.c       | 31 +++++++--
 .../arm/mve/intrinsics/vgetq_lane_u32.c       | 31 +++++++--
 .../arm/mve/intrinsics/vgetq_lane_u8.c        | 31 +++++++--
 15 files changed, 297 insertions(+), 68 deletions(-)

diff --git a/gcc/testsuite/gcc.target/arm/acle/simd32.c 
b/gcc/testsuite/gcc.target/arm/acle/simd32.c
index d9b337da35b..50f7e775fd2 100644
--- a/gcc/testsuite/gcc.target/arm/acle/simd32.c
+++ b/gcc/testsuite/gcc.target/arm/acle/simd32.c
@@ -315,7 +315,7 @@ test_sadd16 (int16x2_t a, int16x2_t b)
   return __sadd16 (a, b);
 }
 
-/* { dg-final { scan-assembler-times "\tsadd8\t...?, ...?, ...?" 1 } } */
+/* { dg-final { scan-assembler-times "\tsadd16\t...?, ...?, ...?" 1 } } */
 
 int16x2_t
 test_sasx (int16x2_t a, int16x2_t b)
diff --git a/gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-1.c 
b/gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-1.c
index 4cdee1f4ca7..d32c723e5e3 100644
--- a/gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-1.c
+++ b/gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-1.c
@@ -142,7 +142,7 @@ VCMP1_TEST (vceqz)
 
 VCMP1_TEST (vcgtz)
 /* { dg-final { scan-assembler-times {vcgt\.f16\td[0-9]+, d[0-9]+, #0} 1 } }  
*/
-/* { dg-final { scan-assembler-times {vceq\.f16\tq[0-9]+, q[0-9]+, #0} 1 } }  
*/
+/* { dg-final { scan-assembler-times {vcgt\.f16\tq[0-9]+, q[0-9]+, #0} 1 } }  
*/
 
 VCMP1_TEST (vcgez)
 /* { dg-final { scan-assembler-times {vcge\.f16\td[0-9]+, d[0-9]+, #0} 1 } }  
*/
diff --git a/gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-2.c 
b/gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-2.c
index d65f6877461..9e783046d2b 100644
--- a/gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-2.c
+++ b/gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-2.c
@@ -2,6 +2,7 @@
 /* { dg-require-effective-target arm_v8_2a_fp16_neon_ok }  */
 /* { dg-options "-O2 -ffast-math" }  */
 /* { dg-add-options arm_v8_2a_fp16_neon }  */
+/* { dg-final { check-function-bodies "**" "" "" } }  */
 
 /* Test instructions generated for the FP16 vector intrinsics with
    -ffast-math */
@@ -143,7 +144,7 @@ VCMP1_TEST (vceqz)
 
 VCMP1_TEST (vcgtz)
 /* { dg-final { scan-assembler-times {vcgt\.f16\td[0-9]+, d[0-9]+, #0} 1 } }  
*/
-/* { dg-final { scan-assembler-times {vceq\.f16\tq[0-9]+, q[0-9]+, #0} 1 } }  
*/
+/* { dg-final { scan-assembler-times {vcgt\.f16\tq[0-9]+, q[0-9]+, #0} 1 } }  
*/
 
 VCMP1_TEST (vcgez)
 /* { dg-final { scan-assembler-times {vcge\.f16\td[0-9]+, d[0-9]+, #0} 1 } }  
*/
@@ -187,43 +188,35 @@ VCVT_N_TEST (vcvt, _u16_f16, uint, float)
 
 VCVT_TEST (vcvta, _s16_f16, int, float)
 /* { dg-final { scan-assembler-times {vcvta\.s16\.f16\td[0-9]+, d[0-9]+} 1 } }
-   { dg-final { scan-assembler-times {vcvta\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } }
-*/
+   { dg-final { scan-assembler-times {vcvta\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } } 
 */
 
 VCVT_TEST (vcvta, _u16_f16, uint, float)
 /* { dg-final { scan-assembler-times {vcvta\.u16\.f16\td[0-9]+, d[0-9]+} 1 } }
-   { dg-final { scan-assembler-times {vcvta\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } }
-*/
+   { dg-final { scan-assembler-times {vcvta\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } } 
 */
 
 VCVT_TEST (vcvtm, _s16_f16, int, float)
 /* { dg-final { scan-assembler-times {vcvtm\.s16\.f16\td[0-9]+, d[0-9]+} 1 } }
-   { dg-final { scan-assembler-times {vcvtm\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } }
-*/
+   { dg-final { scan-assembler-times {vcvtm\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } } 
 */
 
 VCVT_TEST (vcvtm, _u16_f16, uint, float)
 /* { dg-final { scan-assembler-times {vcvtm\.u16\.f16\td[0-9]+, d[0-9]+} 1 } }
-   { dg-final { scan-assembler-times {vcvtm\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } }
-*/
+   { dg-final { scan-assembler-times {vcvtm\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } } 
 */
 
 VCVT_TEST (vcvtn, _s16_f16, int, float)
 /* { dg-final { scan-assembler-times {vcvtn\.s16\.f16\td[0-9]+, d[0-9]+} 1 } }
-   { dg-final { scan-assembler-times {vcvtn\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } }
-*/
+   { dg-final { scan-assembler-times {vcvtn\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } } 
 */
 
 VCVT_TEST (vcvtn, _u16_f16, uint, float)
 /* { dg-final { scan-assembler-times {vcvtn\.u16\.f16\td[0-9]+, d[0-9]+} 1 } }
-   { dg-final { scan-assembler-times {vcvtn\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } }
-*/
+   { dg-final { scan-assembler-times {vcvtn\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } } 
 */
 
 VCVT_TEST (vcvtp, _s16_f16, int, float)
 /* { dg-final { scan-assembler-times {vcvtp\.s16\.f16\td[0-9]+, d[0-9]+} 1 } }
-   { dg-final { scan-assembler-times {vcvtp\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } }
-*/
+   { dg-final { scan-assembler-times {vcvtp\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } } 
 */
 
 VCVT_TEST (vcvtp, _u16_f16, uint, float)
 /* { dg-final { scan-assembler-times {vcvtp\.u16\.f16\td[0-9]+, d[0-9]+} 1 } }
-   { dg-final { scan-assembler-times {vcvtp\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } }
-*/
+   { dg-final { scan-assembler-times {vcvtp\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } } 
 */
 
 UNOP_TEST (vabs)
 /* { dg-final { scan-assembler-times {vabs\.f16\td[0-9]+, d[0-9]+} 1 } }
@@ -326,14 +319,42 @@ BINOP_TEST (vminnm)
   { dg-final { scan-assembler-times {vminnm\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 
} }  */
 
 BINOP_TEST (vmul)
-/* { dg-final { scan-assembler-times {vmul\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 3 
} }
-   { dg-final { scan-assembler-times {vmul\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 2 
} }  */
+/*
+** test_vmul_16x4:
+**     ...
+**     vmul\.f16       d[0-9]+, d[0-9]+, d[0-9]+
+**     ...
+*/
+/*
+** test_vmul_16x8:
+**     ...
+**     vmul\.f16       q[0-9]+, q[0-9]+, q[0-9]+
+**     ...
+*/
 BINOP_LANE_TEST (vmul, 2)
 /* { dg-final { scan-assembler-times {vmul\.f16\td[0-9]+, d[0-9]+, 
d[0-9]+\[2\]} 1 } }
    { dg-final { scan-assembler-times {vmul\.f16\tq[0-9]+, q[0-9]+, 
d[0-9]+\[2\]} 1 } }  */
 BINOP_N_TEST (vmul)
-/* { dg-final { scan-assembler-times {vmul\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 3 
} }
-   { dg-final { scan-assembler-times {vmul\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 2 
} }*/
+/*
+** test_vmul_n_16x4:
+**     ...
+**     vdup\.f?16      d[0-9]+, .+
+**     ...
+**     vmul\.f16       d[0-9]+, d[0-9]+, d[0-9]+
+**     ...
+*/
+/*
+** test_vmul_n_16x8:
+**     ...
+** (
+**     vdup\.f?16      q[0-9]+, .+
+** |
+**     vld1.16 {d[0-9]+\[\], d[0-9]+\[\]}, \[(sp|r[0-9]+)\]
+** )
+**     ...
+**     vmul\.f16       q[0-9]+, q[0-9]+, q[0-9]+
+**     ...
+*/
 
 float16x4_t
 test_vpadd_16x4 (float16x4_t a, float16x4_t b)
diff --git a/gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-1.c 
b/gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-1.c
index 2eddb76f7f4..7340eebf133 100644
--- a/gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-1.c
+++ b/gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-1.c
@@ -164,16 +164,16 @@ UNOP_TEST (vrnda)
 /* { dg-final { scan-assembler-times {vrinta\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
 
 UNOP_TEST (vrndm)
-/* { dg-final { scan-assembler-times {vrinta\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
+/* { dg-final { scan-assembler-times {vrintm\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
 
 UNOP_TEST (vrndn)
-/* { dg-final { scan-assembler-times {vrinta\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
+/* { dg-final { scan-assembler-times {vrintn\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
 
 UNOP_TEST (vrndp)
-/* { dg-final { scan-assembler-times {vrinta\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
+/* { dg-final { scan-assembler-times {vrintp\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
 
 UNOP_TEST (vrndx)
-/* { dg-final { scan-assembler-times {vrinta\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
+/* { dg-final { scan-assembler-times {vrintx\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
 
 UNOP_TEST (vsqrt)
 /* { dg-final { scan-assembler-times {vsqrt\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
diff --git a/gcc/testsuite/gcc.target/arm/asm-flag-1.c 
b/gcc/testsuite/gcc.target/arm/asm-flag-1.c
index 97104d3ac73..0ecab616efe 100644
--- a/gcc/testsuite/gcc.target/arm/asm-flag-1.c
+++ b/gcc/testsuite/gcc.target/arm/asm-flag-1.c
@@ -32,6 +32,6 @@ void f(char *out)
 /* { dg-final { scan-assembler "movhi" } } */
 /* { dg-final { scan-assembler "movls" } } */
 /* { dg-final { scan-assembler "movge" } } */
-/* { dg-final { scan-assembler "movls" } } */
+/* { dg-final { scan-assembler "movlt" } } */
 /* { dg-final { scan-assembler "movgt" } } */
 /* { dg-final { scan-assembler "movle" } } */
diff --git a/gcc/testsuite/gcc.target/arm/csneg.c 
b/gcc/testsuite/gcc.target/arm/csneg.c
index cf3df13e7e4..b542f43134a 100644
--- a/gcc/testsuite/gcc.target/arm/csneg.c
+++ b/gcc/testsuite/gcc.target/arm/csneg.c
@@ -2,33 +2,54 @@
 /* { dg-require-effective-target arm_arch_v8_1m_main_ok } */
 /* { dg-options "-O2" } */
 /* { dg-add-options arm_arch_v8_1m_main } */
+/* { dg-final { check-function-bodies "**" "" "" } } */
 
+/*
+** test_csneg32_condasn1:
+**     cmp\tr0, r1
+**     csneg\tr0, r3, r2, ne
+**     bx\tlr
+*/
 int
 test_csneg32_condasn1(int w0, int w1, int w2, int w3)
 {
   int w4;
-
-  /* { dg-final { scan-assembler "csneg\tr\[0-9\]*.*ne" } } */
   w4 = (w0 == w1) ? -w2 : w3;
   return w4;
 }
 
+/*
+** test_csneg32_condasn2:
+**     cmp\tr0, r1
+**     csneg\tr0, r3, r2, eq
+**     bx\tlr
+*/
 int
 test_csneg32_condasn2(int w0, int w1, int w2, int w3)
 {
   int w4;
-
-  /* { dg-final { scan-assembler "csneg\tr\[0-9\]*.*eq" } } */
   w4 = (w0 == w1) ? w3 : -w2;
   return w4;
 }
 
+/*
+** test_csneg_uxtw: { target arm_little_endian }
+**     cmp\tr0, #0
+**     csneg\tr0, r1, r2, ne
+**     movs\tr1, #0
+**     bx\tlr
+*/
+/*
+** test_csneg_uxtw: { target { ! arm_little_endian } }
+**     cmp\tr0, #0
+**     csneg\tr1, r1, r2, ne
+**     movs\tr0, #0
+**     bx\tlr
+*/
 unsigned long long
 test_csneg_uxtw (unsigned int a, unsigned int b, unsigned int c)
 {
   unsigned int val;
-
-  /* { dg-final { scan-assembler "csneg\tr\[0-9\]*.*ne" } } */
   val = a ? b : -c;
   return val;
 }
diff --git a/gcc/testsuite/gcc.target/arm/mve/dlstp-compile-asm-2.c 
b/gcc/testsuite/gcc.target/arm/mve/dlstp-compile-asm-2.c
index 21093044708..37c54f22abc 100644
--- a/gcc/testsuite/gcc.target/arm/mve/dlstp-compile-asm-2.c
+++ b/gcc/testsuite/gcc.target/arm/mve/dlstp-compile-asm-2.c
@@ -326,8 +326,7 @@ void test10 (int32_t *a, int32_t *b, int32_t *c, int n)
 }
 /*
    We don't need that extra vctp in the loop, but we currently do not optimize
-   it away, however, it is not wrong to use it...
-*/
+   it away, however, it is not wrong to use it... */
 /*
 ** test10:
 **...
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c 
b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c
index a92e1d47393..b0811372dc7 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c
@@ -2,6 +2,7 @@
 /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
 /* { dg-add-options arm_v8_1m_mve_fp } */
 /* { dg-additional-options "-O2" } */
+/* { dg-final { check-function-bodies "**" "" "" } } */
 
 #include "arm_mve.h"
 
@@ -10,13 +11,37 @@ foo (float16x8_t a)
 {
   return vgetq_lane_f16 (a, 1);
 }
-
-/* { dg-final { scan-assembler "vmov.u16"  }  } */
+/*
+** foo:
+** (
+       -mfloat-abi=softfp
+**     vmov\td[0-9]+, r0, r1  @ v8hf
+**     vmov\td[0-9]+, r2, r3
+**     vmov\.u16\tr0, q[0-7]\[1\]
+** |
+       -mfloat-abi=hard
+**     vmov\.u16\t(r[0-9]+), q0\[1\]
+**     vmov\.f16\ts0, \1\t@ __fp16
+** )
+**     bx\tlr
+*/
 
 float16_t
 foo1 (float16x8_t a)
 {
   return vgetq_lane (a, 1);
 }
-
-/* { dg-final { scan-assembler "vmov.u16"  }  } */
+/*
+** foo1:
+** (
+       -mfloat-abi=softfp
+**     vmov\td[0-9]+, r0, r1  @ v8hf
+**     vmov\td[0-9]+, r2, r3
+**     vmov\.u16\tr0, q[0-7]\[1\]
+** |
+       -mfloat-abi=hard
+**     vmov\.u16\t(r[0-9]+), q0\[1\]
+**     vmov\.f16\ts0, \1\t@ __fp16
+** )
+**     bx\tlr
+*/
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c 
b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c
index 98319eff5c0..c923b9ecf26 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c
@@ -2,6 +2,7 @@
 /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
 /* { dg-add-options arm_v8_1m_mve_fp } */
 /* { dg-additional-options "-O2" } */
+/* { dg-final { check-function-bodies "**" "" "" } } */
 
 #include "arm_mve.h"
 
@@ -10,13 +11,37 @@ foo (float32x4_t a)
 {
   return vgetq_lane_f32 (a, 1);
 }
-
-/* { dg-final { scan-assembler "vmov.32"  }  } */
+/*
+** foo:
+** (
+       -mfloat-abi=softfp
+**     vmov\td[0-9]+, r0, r1  @ v4sf
+**     vmov\td[0-9]+, r2, r3
+**     vmov\.32\tr0, q[0-7]\[1\]
+** |
+       -mfloat-abi=hard
+**     vmov\.32\t(r[0-9]+), q0\[1\]
+**     vmov\ts0, \1
+** )
+**     bx\tlr
+*/
 
 float32_t
 foo1 (float32x4_t a)
 {
   return vgetq_lane (a, 1);
 }
-
-/* { dg-final { scan-assembler "vmov.32"  }  } */
+/*
+** foo1:
+** (
+       -mfloat-abi=softfp
+**     vmov\td[0-9]+, r0, r1  @ v4sf
+**     vmov\td[0-9]+, r2, r3
+**     vmov\.32\tr0, q[0-7]\[1\]
+** |
+       -mfloat-abi=hard
+**     vmov\.32\t(r[0-9]+), q0\[1\]
+**     vmov\ts0, \1
+** )
+**     bx\tlr
+*/
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c 
b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c
index c9eefeb9972..4a8963744f8 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c
@@ -2,6 +2,7 @@
 /* { dg-require-effective-target arm_v8_1m_mve_ok } */
 /* { dg-add-options arm_v8_1m_mve } */
 /* { dg-additional-options "-O2" } */
+/* { dg-final { check-function-bodies "**" "" "" } } */
 
 #include "arm_mve.h"
 
@@ -10,13 +11,35 @@ foo (int16x8_t a)
 {
   return vgetq_lane_s16 (a, 1);
 }
-
-/* { dg-final { scan-assembler "vmov.s16"  }  } */
+/*
+** foo:
+** (
+       -mfloat-abi=softfp
+**     vmov\td[0-9]+, r0, r1  @ v8hi
+**     vmov\td[0-9]+, r2, r3
+**     vmov\.s16\tr0, q[0-7]\[1\]
+** |
+       -mfloat-abi=hard
+**     vmov\.s16\tr0, q0\[1\]
+** )
+**     bx\tlr
+*/
 
 int16_t
 foo1 (int16x8_t a)
 {
   return vgetq_lane (a, 1);
 }
-
-/* { dg-final { scan-assembler "vmov.s16"  }  } */
+/*
+** foo1:
+** (
+       -mfloat-abi=softfp
+**     vmov\td[0-9]+, r0, r1  @ v8hi
+**     vmov\td[0-9]+, r2, r3
+**     vmov\.s16\tr0, q[0-7]\[1\]
+** |
+       -mfloat-abi=hard
+**     vmov\.s16\tr0, q0\[1\]
+** )
+**     bx\tlr
+*/
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c 
b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c
index 0925a25bb45..3a504e84382 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c
@@ -2,6 +2,7 @@
 /* { dg-require-effective-target arm_v8_1m_mve_ok } */
 /* { dg-add-options arm_v8_1m_mve } */
 /* { dg-additional-options "-O2" } */
+/* { dg-final { check-function-bodies "**" "" "" } } */
 
 #include "arm_mve.h"
 
@@ -10,13 +11,35 @@ foo (int32x4_t a)
 {
   return vgetq_lane_s32 (a, 1);
 }
-
-/* { dg-final { scan-assembler "vmov.32"  }  } */
+/*
+** foo:
+** (
+       -mfloat-abi=softfp
+**     vmov\td[0-9]+, r0, r1  @ v4si
+**     vmov\td[0-9]+, r2, r3
+**     vmov\.32\tr0, q[0-7]\[1\]
+** |
+       -mfloat-abi=hard
+**     vmov\.32\tr0, q0\[1\]
+** )
+**     bx\tlr
+*/
 
 int32_t
 foo1 (int32x4_t a)
 {
   return vgetq_lane (a, 1);
 }
-
-/* { dg-final { scan-assembler "vmov.32"  }  } */
+/*
+** foo1:
+** (
+       -mfloat-abi=softfp
+**     vmov\td[0-9]+, r0, r1  @ v4si
+**     vmov\td[0-9]+, r2, r3
+**     vmov\.32\tr0, q[0-7]\[1\]
+** |
+       -mfloat-abi=hard
+**     vmov\.32\tr0, q0\[1\]
+** )
+**     bx\tlr
+*/
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c 
b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c
index 5b76e3da556..cd014b28877 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c
@@ -2,6 +2,7 @@
 /* { dg-require-effective-target arm_v8_1m_mve_ok } */
 /* { dg-add-options arm_v8_1m_mve } */
 /* { dg-additional-options "-O2" } */
+/* { dg-final { check-function-bodies "**" "" "" } } */
 
 #include "arm_mve.h"
 
@@ -10,13 +11,35 @@ foo (int8x16_t a)
 {
   return vgetq_lane_s8 (a, 1);
 }
-
-/* { dg-final { scan-assembler "vmov.s8"  }  } */
+/*
+** foo:
+** (
+       -mfloat-abi=softfp
+**     vmov\td[0-9]+, r0, r1  @ v16qi
+**     vmov\td[0-9]+, r2, r3
+**     vmov\.s8\tr0, q[0-7]\[1\]
+** |
+       -mfloat-abi=hard
+**     vmov\.s8\tr0, q0\[1\]
+** )
+**     bx\tlr
+*/
 
 int8_t
 foo1 (int8x16_t a)
 {
   return vgetq_lane (a, 1);
 }
-
-/* { dg-final { scan-assembler "vmov.s8"  }  } */
+/*
+** foo1:
+** (
+       -mfloat-abi=softfp
+**     vmov\td[0-9]+, r0, r1  @ v16qi
+**     vmov\td[0-9]+, r2, r3
+**     vmov\.s8\tr0, q[0-7]\[1\]
+** |
+       -mfloat-abi=hard
+**     vmov\.s8\tr0, q0\[1\]
+** )
+**     bx\tlr
+*/
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c 
b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c
index c4a3fb0d379..74b734051d4 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c
@@ -2,6 +2,7 @@
 /* { dg-require-effective-target arm_v8_1m_mve_ok } */
 /* { dg-add-options arm_v8_1m_mve } */
 /* { dg-additional-options "-O2" } */
+/* { dg-final { check-function-bodies "**" "" "" } } */
 
 #include "arm_mve.h"
 
@@ -10,13 +11,35 @@ foo (uint16x8_t a)
 {
   return vgetq_lane_u16 (a, 1);
 }
-
-/* { dg-final { scan-assembler "vmov.u16"  }  } */
+/*
+** foo:
+** (
+       -mfloat-abi=softfp
+**     vmov\td[0-9]+, r0, r1  @ v8hi
+**     vmov\td[0-9]+, r2, r3
+**     vmov\.u16\tr0, q[0-7]\[1\]
+** |
+       -mfloat-abi=hard
+**     vmov\.u16\tr0, q0\[1\]
+** )
+**     bx\tlr
+*/
 
 uint16_t
 foo1 (uint16x8_t a)
 {
   return vgetq_lane (a, 1);
 }
-
-/* { dg-final { scan-assembler "vmov.u16"  }  } */
+/*
+** foo1:
+** (
+       -mfloat-abi=softfp
+**     vmov\td[0-9]+, r0, r1  @ v8hi
+**     vmov\td[0-9]+, r2, r3
+**     vmov\.u16\tr0, q[0-7]\[1\]
+** |
+       -mfloat-abi=hard
+**     vmov\.u16\tr0, q0\[1\]
+** )
+**     bx\tlr
+*/
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c 
b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c
index d7983702324..c4460e44b9a 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c
@@ -2,6 +2,7 @@
 /* { dg-require-effective-target arm_v8_1m_mve_ok } */
 /* { dg-add-options arm_v8_1m_mve } */
 /* { dg-additional-options "-O2" } */
+/* { dg-final { check-function-bodies "**" "" "" } } */
 
 #include "arm_mve.h"
 
@@ -10,13 +11,35 @@ foo (uint32x4_t a)
 {
   return vgetq_lane_u32 (a, 1);
 }
-
-/* { dg-final { scan-assembler "vmov.32"  }  } */
+/*
+** foo:
+** (
+       -mfloat-abi=softfp
+**     vmov\td[0-9]+, r0, r1  @ v4si
+**     vmov\td[0-9]+, r2, r3
+**     vmov\.32\tr0, q[0-7]\[1\]
+** |
+       -mfloat-abi=hard
+**     vmov\.32\tr0, q0\[1\]
+** )
+**     bx\tlr
+*/
 
 uint32_t
 foo1 (uint32x4_t a)
 {
   return vgetq_lane (a, 1);
 }
-
-/* { dg-final { scan-assembler "vmov.32"  }  } */
+/*
+** foo1:
+** (
+       -mfloat-abi=softfp
+**     vmov\td[0-9]+, r0, r1  @ v4si
+**     vmov\td[0-9]+, r2, r3
+**     vmov\.32\tr0, q[0-7]\[1\]
+** |
+       -mfloat-abi=hard
+**     vmov\.32\tr0, q0\[1\]
+** )
+**     bx\tlr
+*/
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c 
b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c
index 631d995dc17..f3abf1e9c56 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c
@@ -2,6 +2,7 @@
 /* { dg-require-effective-target arm_v8_1m_mve_ok } */
 /* { dg-add-options arm_v8_1m_mve } */
 /* { dg-additional-options "-O2" } */
+/* { dg-final { check-function-bodies "**" "" "" } } */
 
 #include "arm_mve.h"
 
@@ -10,13 +11,35 @@ foo (uint8x16_t a)
 {
   return vgetq_lane_u8 (a, 1);
 }
-
-/* { dg-final { scan-assembler "vmov.u8"  }  } */
+/*
+** foo:
+** (
+       -mfloat-abi=softfp
+**     vmov\td[0-9]+, r0, r1  @ v16qi
+**     vmov\td[0-9]+, r2, r3
+**     vmov\.u8\tr0, q[0-7]\[1\]
+** |
+       -mfloat-abi=hard
+**     vmov\.u8\tr0, q0\[1\]
+** )
+**     bx\tlr
+*/
 
 uint8_t
 foo1 (uint8x16_t a)
 {
   return vgetq_lane (a, 1);
 }
-
-/* { dg-final { scan-assembler "vmov.u8"  }  } */
+/*
+** foo1:
+** (
+       -mfloat-abi=softfp
+**     vmov\td[0-9]+, r0, r1  @ v16qi
+**     vmov\td[0-9]+, r2, r3
+**     vmov\.u8\tr0, q[0-7]\[1\]
+** |
+       -mfloat-abi=hard
+**     vmov\.u8\tr0, q0\[1\]
+** )
+**     bx\tlr
+*/
-- 
2.43.0

Reply via email to