This patch addresses the issue in PR125550, where two float16 values are
being concatenated using uzp1, i.e., this code:
svfloat16_t foo (float x0, float x1)
{
return svdupq_n_f16 (x0, x1, x0, x1, x0, x1, x0, x1);
}
is being compiled into:
fcvt h0, s0
fcvt h1, s1
uzp1 v0.4h, v0.4h, v1.4h
mov z0.s, s0
ret
causing the duplication of a 2-element vector (0, (float16) x0) into z0.
This is a copy-paste error from the original combine_internal patterns,
where UZP1 always operates on vectors of 2 elements, in which circumstance
it is equivalent to ZIP1. For smaller element sizes (and thus higher
element counts) only ZIP1 is correct.
The fix is to emit ZIP1 when concatenating values on vector registers.
For consistency, I've changed the original combine_internal patterns as
well as the ones added in r17-898-g920eeb67a3537b. Since this latter
change has nothing to do with the PR, it could have been better to split
the patch in two; I'd be happy to do that if necessary.
Both aforementioned changes required adjusting existing AdvSIMD/SVE
vec_init-related testcases; I've added pr125550.c from the PR on top of
that as well.
Bootstrapped and regtested on aarch64-linux-gnu.
PR target/125550
gcc/ChangeLog:
* config/aarch64/aarch64-simd.md
(*aarch64_combine_internal<mode>): Use zip1 instead of uzp1
to concatenate values residing in SIMD registers.
(*aarch64_combine_internal_be<mode>: Likewise.
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/ldp_stp_16.c: Adjust testcases.
* gcc.target/aarch64/pr109072_1.c: Likewise.
* gcc.target/aarch64/simd/mf8_data_1.c: Likewise.
* gcc.target/aarch64/sve/vec_init_5.c: Likewise.
* gcc.target/aarch64/vec-init-14.c: Likewise.
* gcc.target/aarch64/vec-init-23.c: Likewise.
* gcc.target/aarch64/vec-init-9.c: Likewise.
* gcc.target/aarch64/sve/pr125550.c: New test.
---
gcc/config/aarch64/aarch64-simd.md | 8 +++---
gcc/testsuite/gcc.target/aarch64/ldp_stp_16.c | 10 +++----
gcc/testsuite/gcc.target/aarch64/pr109072_1.c | 4 +--
.../gcc.target/aarch64/simd/mf8_data_1.c | 18 ++++++-------
.../gcc.target/aarch64/sve/pr125550.c | 19 ++++++++++++++
.../gcc.target/aarch64/sve/vec_init_5.c | 26 +++++++++----------
.../gcc.target/aarch64/vec-init-14.c | 4 +--
.../gcc.target/aarch64/vec-init-23.c | 26 +++++++++----------
gcc/testsuite/gcc.target/aarch64/vec-init-9.c | 12 ++++-----
9 files changed, 73 insertions(+), 54 deletions(-)
create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/pr125550.c
diff --git a/gcc/config/aarch64/aarch64-simd.md
b/gcc/config/aarch64/aarch64-simd.md
index 843ad6cb076..b2e8fe3f6a9 100644
--- a/gcc/config/aarch64/aarch64-simd.md
+++ b/gcc/config/aarch64/aarch64-simd.md
@@ -4869,7 +4869,7 @@
&& (register_operand (operands[0], <VDBL>mode)
|| register_operand (operands[2], <MODE>mode))"
{@ [ cons: =0 , 1 , 2 ; attrs: type , arch ]
- [ w , w , w ; neon_permute<dblq> , simd ]
uzp1\t%0.2<single_type>, %1.2<single_type>, %2.2<single_type>
+ [ w , w , w ; neon_permute<dblq> , simd ]
zip1\t%0.2<single_type>, %1.2<single_type>, %2.2<single_type>
[ w , 0 , ?r ; neon_from_gp<dblq> , simd ]
ins\t%0.<single_type>[1], %<single_wx>2
[ w , 0 , ?r ; f_mcr , * ]
fmov\t%0.d[1], %2
[ w , 0 , Utv ; neon_load1_one_lane<dblq> , simd ]
ld1\t{%0.<single_type>}[1], %2
@@ -4886,7 +4886,7 @@
"TARGET_FLOAT
&& !BYTES_BIG_ENDIAN"
{@ [ cons: =0 , 1 , 2 ; attrs: type , arch ]
- [ w , w , w ; neon_permute , simd ]
uzp1\t%0.<Vdduptype>, %1.<Vdduptype>, %2.<Vdduptype>
+ [ w , w , w ; neon_permute , simd ]
zip1\t%0.<Vdduptype>, %1.<Vdduptype>, %2.<Vdduptype>
[ w , 0 , w ; neon_move , simd ]
mov\t%0.<single_type>[1], %2.<single_type>[0]
[ w , 0 , Utv ; neon_load1_one_lane , simd ]
ld1\t{%0.<single_type>}[1], %2
[ w , 0 , r ; neon_from_gp , simd ]
ins\t%0.<single_type>[1], %<single_wx>2
@@ -4916,7 +4916,7 @@
&& (register_operand (operands[0], <VDBL>mode)
|| register_operand (operands[2], <MODE>mode))"
{@ [ cons: =0 , 1 , 2 ; attrs: type , arch ]
- [ w , w , w ; neon_permute<dblq> , simd ]
uzp1\t%0.2<single_type>, %1.2<single_type>, %2.2<single_type>
+ [ w , w , w ; neon_permute<dblq> , simd ]
zip1\t%0.2<single_type>, %1.2<single_type>, %2.2<single_type>
[ w , 0 , ?r ; neon_from_gp<dblq> , simd ]
ins\t%0.<single_type>[1], %<single_wx>2
[ w , 0 , ?r ; f_mcr , * ]
fmov\t%0.d[1], %2
[ w , 0 , Utv ; neon_load1_one_lane<dblq> , simd ]
ld1\t{%0.<single_type>}[1], %2
@@ -4933,7 +4933,7 @@
"TARGET_FLOAT
&& BYTES_BIG_ENDIAN"
{@ [ cons: =0 , 1 , 2 ; attrs: type , arch ]
- [ w , w , w ; neon_permute , simd ]
uzp1\t%0.<Vdduptype>, %1.<Vdduptype>, %2.<Vdduptype>
+ [ w , w , w ; neon_permute , simd ]
zip1\t%0.<Vdduptype>, %1.<Vdduptype>, %2.<Vdduptype>
[ w , 0 , w ; neon_move , simd ]
mov\t%0.<single_type>[1], %2.<single_type>[0]
[ w , 0 , Utv ; neon_load1_one_lane , simd ]
ld1\t{%0.<single_type>}[1], %2
[ w , 0 , r ; neon_from_gp , simd ]
ins\t%0.<single_type>[1], %<single_wx>2
diff --git a/gcc/testsuite/gcc.target/aarch64/ldp_stp_16.c
b/gcc/testsuite/gcc.target/aarch64/ldp_stp_16.c
index a6b4d50f34f..e8c975e900f 100644
--- a/gcc/testsuite/gcc.target/aarch64/ldp_stp_16.c
+++ b/gcc/testsuite/gcc.target/aarch64/ldp_stp_16.c
@@ -80,14 +80,14 @@ CONS2_FN (2, float);
/*
** cons2_4_float: { target aarch64_little_endian }
-** uzp1 v([0-9])\.2s, v0\.2s, v1\.2s
+** zip1 v([0-9])\.2s, v0\.2s, v1\.2s
** stp d\1, d\1, \[x0\]
** stp d\1, d\1, \[x0, #?16\]
** ret
*/
/*
** cons2_4_float: { target aarch64_big_endian }
-** uzp1 v([0-9])\.2s, v1\.2s, v0\.2s
+** zip1 v([0-9])\.2s, v1\.2s, v0\.2s
** stp d\1, d\1, \[x0\]
** stp d\1, d\1, \[x0, #?16\]
** ret
@@ -96,7 +96,7 @@ CONS2_FN (4, float);
/*
** cons2_8_float:
-** uzp1 v1\.2s, v0\.2s, v1\.2s
+** zip1 v1\.2s, v0\.2s, v1\.2s
** dup v([0-9]+)\.2d, v1\.d\[0\]
** stp q\1, q\1, \[x0\]
** stp q\1, q\1, \[x0, #?32\]
@@ -124,8 +124,8 @@ CONS4_FN (2, float);
/*
** cons4_4_float:
-** uzp1 v[0-9]+\.2s[^\n]+
-** uzp1 v[0-9]+\.2s[^\n]+
+** zip1 v[0-9]+\.2s[^\n]+
+** zip1 v[0-9]+\.2s[^\n]+
** zip1 v([0-9]+).4s, [^\n]+
** stp q\1, q\1, \[x0\]
** stp q\1, q\1, \[x0, #?32\]
diff --git a/gcc/testsuite/gcc.target/aarch64/pr109072_1.c
b/gcc/testsuite/gcc.target/aarch64/pr109072_1.c
index 39d80222142..daaccf0b881 100644
--- a/gcc/testsuite/gcc.target/aarch64/pr109072_1.c
+++ b/gcc/testsuite/gcc.target/aarch64/pr109072_1.c
@@ -54,7 +54,7 @@ f32x2_1 (float32_t x)
/*
** f32x2_2:
-** uzp1 v0\.2s, v0\.2s, v1\.2s
+** zip1 v0\.2s, v0\.2s, v1\.2s
** ret
*/
float32x2_t
@@ -166,7 +166,7 @@ f64x2_1 (float64_t x)
/*
** f64x2_2:
-** uzp1 v0\.2d, v0\.2d, v1\.2d
+** zip1 v0\.2d, v0\.2d, v1\.2d
** ret
*/
float64x2_t
diff --git a/gcc/testsuite/gcc.target/aarch64/simd/mf8_data_1.c
b/gcc/testsuite/gcc.target/aarch64/simd/mf8_data_1.c
index 79d1ccf6f7d..e440b899f59 100644
--- a/gcc/testsuite/gcc.target/aarch64/simd/mf8_data_1.c
+++ b/gcc/testsuite/gcc.target/aarch64/simd/mf8_data_1.c
@@ -66,7 +66,7 @@ mfloat8x16_t test_bslq3(mfloat8x16_t a, uint8x16_t b,
mfloat8x16_t c)
/*
** test_combine1:
-** uzp1 v0.2d, v1.2d, v2.2d
+** zip1 v0.2d, v1.2d, v2.2d
** ret
*/
mfloat8x16_t test_combine1(mfloat8_t a, mfloat8x8_t b, mfloat8x8_t c)
@@ -1397,7 +1397,7 @@ mfloat8x8_t test_tbl1(mfloat8x8_t a, uint8x8_t b)
/*
** test_tbl2:
-** uzp1 v([0-9]+).2d, v0.2d, v1.2d
+** zip1 v([0-9]+).2d, v0.2d, v1.2d
** tbl v0.8b, {v\1.16b}, v2.8b
** ret
*/
@@ -1408,7 +1408,7 @@ mfloat8x8_t test_tbl2(mfloat8x8x2_t a, uint8x8_t b)
/*
** test_tbl3:
-** uzp1 v([0-9]+).2d, v0.2d, v1.2d
+** zip1 v([0-9]+).2d, v0.2d, v1.2d
** fmov d([0-9]+), d2
** tbl v0.8b, {v\1.16b( - |, )v\2.16b}, v3.8b
** ret
@@ -1420,8 +1420,8 @@ mfloat8x8_t test_tbl3(mfloat8x8x3_t a, uint8x8_t b)
/*
** test_tbl4:
-** uzp1 v([0-9]+).2d, v0.2d, v1.2d
-** uzp1 v([0-9]+).2d, v2.2d, v3.2d
+** zip1 v([0-9]+).2d, v0.2d, v1.2d
+** zip1 v([0-9]+).2d, v2.2d, v3.2d
** tbl v0.8b, {v\1.16b( - |, )v\2.16b}, v4.8b
** ret
*/
@@ -1526,7 +1526,7 @@ mfloat8x8_t test_tbx1(mfloat8x8_t a, mfloat8x8_t b,
uint8x8_t c)
/*
** test_tbx2:
-** uzp1 v([0-9]+).2d, v1.2d, v2.2d
+** zip1 v([0-9]+).2d, v1.2d, v2.2d
** tbx v[0-9]+.8b, {v\1.16b}, v3.8b
** ret
*/
@@ -1537,7 +1537,7 @@ mfloat8x8_t test_tbx2(mfloat8x8_t a, mfloat8x8x2_t b,
uint8x8_t c)
/*
** test_tbx3:
-** uzp1 v([0-9]+).2d, v1.2d, v2.2d
+** zip1 v([0-9]+).2d, v1.2d, v2.2d
** fmov d([0-9]+), d3
** tbl v[0-9]+.8b, {v\1.16b( - |, )v\2.16b}, v4.8b
** ...
@@ -1552,8 +1552,8 @@ mfloat8x8_t test_tbx3(mfloat8x8_t a, mfloat8x8x3_t b,
uint8x8_t c)
/*
** test_tbx4:
-** uzp1 v([0-9]+).2d, v1.2d, v2.2d
-** uzp1 v([0-9]+).2d, v3.2d, v4.2d
+** zip1 v([0-9]+).2d, v1.2d, v2.2d
+** zip1 v([0-9]+).2d, v3.2d, v4.2d
** tbx v0.8b, {v\1.16b( - |, )v\2.16b}, v5.8b
** ret
*/
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pr125550.c
b/gcc/testsuite/gcc.target/aarch64/sve/pr125550.c
new file mode 100644
index 00000000000..89186dc07c9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/pr125550.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=armv9.5-a" } */
+/* { dg-final { check-function-bodies "**" "" "" } } */
+
+#include <arm_sve.h>
+
+svfloat16_t foo (float x0, float x1)
+{
+ return svdupq_n_f16 (x0, x1, x0, x1, x0, x1, x0, x1);
+}
+
+/*
+** foo:
+** fcvt h([01]), s\1
+** fcvt h([01]), s\2
+** zip1 v0\.4h, v0\.4h, v1\.4h
+** mov z0\.s, s0
+** ret
+*/
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/vec_init_5.c
b/gcc/testsuite/gcc.target/aarch64/sve/vec_init_5.c
index 2bc9a3aeba5..0dd085a9423 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/vec_init_5.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve/vec_init_5.c
@@ -183,15 +183,15 @@
** test_float16_2:
** fcvt h1, s1
** fcvt h0, s0
-** uzp1 v0\.4h, v0\.4h, v1\.4h
+** zip1 v0\.4h, v0\.4h, v1\.4h
** mov z0\.s, s0
** ret
*/
/*
** test_float16_3:
-** uzp1 v2\.2s, v0\.2s, v2\.2s
-** uzp1 v3\.2s, v1\.2s, v3\.2s
+** zip1 v2\.2s, v0\.2s, v2\.2s
+** zip1 v3\.2s, v1\.2s, v3\.2s
** zip1 v3\.4s, v2\.4s, v3\.4s
** fcvtn v3\.4h, v3\.4s
** mov z0\.d, d3
@@ -210,7 +210,7 @@
** test_float16_5:
** movi v31\.4h, #0
** fcvt h0, s0
-** uzp1 v0\.4h, v31\.4h, v0\.4h
+** zip1 v0\.4h, v31\.4h, v0\.4h
** mov z0\.s, s0
** ret
*/
@@ -221,7 +221,7 @@
** fcvt h1, s1
** fmov h31, 1.0e\+0
** fmov h2, h2
-** uzp1 v1\.4h, v1\.4h, v31\.4h
+** zip1 v1\.4h, v1\.4h, v31\.4h
** dup v0\.2s, v2\.s\[0\]
** dup v1\.2s, v1\.s\[0\]
** zip1 v0\.8h, v0\.8h, v1\.8h
@@ -235,8 +235,8 @@
** fcvt h2, s1
** movi v0\.4h, #0
** fmov h1, 1.0e\+0
-** uzp1 v1\.4h, v1\.4h, v2\.4h
-** uzp1 v0\.4h, v0\.4h, v3\.4h
+** zip1 v1\.4h, v1\.4h, v2\.4h
+** zip1 v0\.4h, v0\.4h, v3\.4h
** dup v1\.2s, v1\.s\[0\]
** dup v0\.2s, v0\.s\[0\]
** zip1 v0\.8h, v0\.8h, v1\.8h
@@ -249,7 +249,7 @@
** fcvt h1, s1
** fcvt h0, s0
** movi v31\.2s, 0x3c, lsl 24
-** uzp1 v0\.4h, v0\.4h, v1.4h
+** zip1 v0\.4h, v0\.4h, v1.4h
** dup v0\.2s, v0\.s\[0\]
** zip1 v0\.8h, v31\.8h, v0\.8h
** dup z0\.q, z0\.q\[0\]
@@ -261,8 +261,8 @@
** fcvt h1, s1
** fcvt h2, s2
** fcvt h0, s0
-** uzp1 v0\.4h, v0\.4h, v1\.4h
-** uzp1 v1\.4h, v1\.4h, v2\.4h
+** zip1 v0\.4h, v0\.4h, v1\.4h
+** zip1 v1\.4h, v1\.4h, v2\.4h
** dup v0\.2s, v0\.s\[0\]
** dup v1\.2s, v1\.s\[0\]
** zip1 v0\.8h, v0\.8h, v1\.8h
@@ -275,7 +275,7 @@
** fcvt h2, s2
** fcvt h0, s0
** fcvt h1, s1
-** uzp1 v0\.4h, v0\.4h, v2\.4h
+** zip1 v0\.4h, v0\.4h, v2\.4h
** dup v1\.4h, v1\.h\[0\]
** dup v0\.2s, v0\.s\[0\]
** zip1 v0\.8h, v0\.8h, v1\.8h
@@ -386,7 +386,7 @@
/*
** test_float32_2:
-** uzp1 v0\.2s, v0\.2s, v1\.2s
+** zip1 v0\.2s, v0\.2s, v1\.2s
** mov z0\.d, d0
** ret
*/
@@ -401,7 +401,7 @@
/*
** test_float32_4:
** movi v31\.2s, #0
-** uzp1 v0\.2s, v31\.2s, v0\.2s
+** zip1 v0\.2s, v31\.2s, v0\.2s
** mov z0\.d, d0
** ret
*/
diff --git a/gcc/testsuite/gcc.target/aarch64/vec-init-14.c
b/gcc/testsuite/gcc.target/aarch64/vec-init-14.c
index 1a2cc9fbf47..ea719f32e4f 100644
--- a/gcc/testsuite/gcc.target/aarch64/vec-init-14.c
+++ b/gcc/testsuite/gcc.target/aarch64/vec-init-14.c
@@ -67,7 +67,7 @@ int32x2_t s32_6(int32_t a0, int32_t a1) {
/*
** f32_1:
-** uzp1 v0\.2s, v0\.2s, v1\.2s
+** zip1 v0\.2s, v0\.2s, v1\.2s
** ret
*/
float32x2_t f32_1(float32_t a0, float32_t a1) {
@@ -90,7 +90,7 @@ float32x2_t f32_2(float32_t a0, float32_t *ptr) {
/*
** f32_3:
** ldr s0, \[x0\]
-** uzp1 v0\.2s, v0\.2s, v1\.2s
+** zip1 v0\.2s, v0\.2s, v1\.2s
** ret
*/
float32x2_t f32_3(float32_t a0, float32_t a1, float32_t *ptr) {
diff --git a/gcc/testsuite/gcc.target/aarch64/vec-init-23.c
b/gcc/testsuite/gcc.target/aarch64/vec-init-23.c
index 2a209509d1b..9374da8a84d 100644
--- a/gcc/testsuite/gcc.target/aarch64/vec-init-23.c
+++ b/gcc/testsuite/gcc.target/aarch64/vec-init-23.c
@@ -242,15 +242,15 @@ TEST_64(int, int64_t, s)
** test_float16_2:
** fcvt h1, s1
** fcvt h0, s0
-** uzp1 v0\.4h, v0\.4h, v1\.4h
+** zip1 v0\.4h, v0\.4h, v1\.4h
** dup v0\.4s, v0\.s\[0\]
** ret
*/
/*
** test_float16_3:
-** uzp1 v2\.2s, v0\.2s, v2\.2s
-** uzp1 v3\.2s, v1\.2s, v3\.2s
+** zip1 v2\.2s, v0\.2s, v2\.2s
+** zip1 v3\.2s, v1\.2s, v3\.2s
** zip1 v3\.4s, v2\.4s, v3\.4s
** fcvtn v3\.4h, v3\.4s
** dup v0\.2d, v3\.d\[0\]
@@ -269,7 +269,7 @@ TEST_64(int, int64_t, s)
** test_float16_5:
** movi v31\.4h, #0
** fcvt h0, s0
-** uzp1 v0\.4h, v31\.4h, v0\.4h
+** zip1 v0\.4h, v31\.4h, v0\.4h
** dup v0\.4s, v0\.s\[0\]
** ret
*/
@@ -280,7 +280,7 @@ TEST_64(int, int64_t, s)
** fcvt h1, s1
** fmov h31, 1.0e\+0
** fmov h0, h0
-** uzp1 v1\.4h, v1\.4h, v31\.4h
+** zip1 v1\.4h, v1\.4h, v31\.4h
** dup v0\.2s, v0\.s\[0\]
** dup v1\.2s, v1\.s\[0\]
** zip1 v0\.8h, v0\.8h, v1\.8h
@@ -292,9 +292,9 @@ TEST_64(int, int64_t, s)
** fcvt h0, s0
** movi v31\.4h, #0
** fcvt h1, s1
-** uzp1 v31\.4h, v31\.4h, v0\.4h
+** zip1 v31\.4h, v31\.4h, v0\.4h
** fmov h0, 1.0e\+0
-** uzp1 v0\.4h, v0\.4h, v1\.4h
+** zip1 v0\.4h, v0\.4h, v1\.4h
** dup v31\.2s, v31\.s\[0\]
** dup v0\.2s, v0\.s\[0\]
** zip1 v0\.8h, v31\.8h, v0\.8h
@@ -306,7 +306,7 @@ TEST_64(int, int64_t, s)
** fcvt h1, s1
** fcvt h0, s0
** movi v31\.2s, 0x3c, lsl 24
-** uzp1 v0\.4h, v0\.4h, v1\.4h
+** zip1 v0\.4h, v0\.4h, v1\.4h
** dup v0\.2s, v0\.s\[0\]
** zip1 v0\.8h, v31\.8h, v0\.8h
** ret
@@ -317,8 +317,8 @@ TEST_64(int, int64_t, s)
** fcvt h1, s1
** fcvt h2, s2
** fcvt h0, s0
-** uzp1 v0\.4h, v0\.4h, v1\.4h
-** uzp1 v1\.4h, v1\.4h, v2\.4h
+** zip1 v0\.4h, v0\.4h, v1\.4h
+** zip1 v1\.4h, v1\.4h, v2\.4h
** dup v0\.2s, v0\.s\[0\]
** dup v1\.2s, v1\.s\[0\]
** zip1 v0\.8h, v0\.8h, v1\.8h
@@ -330,7 +330,7 @@ TEST_64(int, int64_t, s)
** fcvt h2, s2
** fcvt h0, s0
** fcvt h1, s1
-** uzp1 v0\.4h, v0\.4h, v2\.4h
+** zip1 v0\.4h, v0\.4h, v2\.4h
** dup v1\.4h, v1\.h\[0\]
** dup v0\.2s, v0\.s\[0\]
** zip1 v0\.8h, v0\.8h, v1\.8h
@@ -434,7 +434,7 @@ TEST_64(int, int64_t, s)
/*
** test_float32_2:
-** uzp1 v0\.2s, v0\.2s, v1\.2s
+** zip1 v0\.2s, v0\.2s, v1\.2s
** dup v0\.2d, v0\.d\[0\]
** ret
*/
@@ -449,7 +449,7 @@ TEST_64(int, int64_t, s)
/*
** test_float32_4:
** movi v31\.2s, #0
-** uzp1 v0\.2s, v31\.2s, v0\.2s
+** zip1 v0\.2s, v31\.2s, v0\.2s
** dup v0\.2d, v0\.d\[0\]
** ret
*/
diff --git a/gcc/testsuite/gcc.target/aarch64/vec-init-9.c
b/gcc/testsuite/gcc.target/aarch64/vec-init-9.c
index 3cf05cf865e..8fccf278d31 100644
--- a/gcc/testsuite/gcc.target/aarch64/vec-init-9.c
+++ b/gcc/testsuite/gcc.target/aarch64/vec-init-9.c
@@ -75,7 +75,7 @@ int64x2_t s64q_6(int64_t a0, int64_t a1) {
/*
** f64q_1:
-** uzp1 v0\.2d, v0\.2d, v1\.2d
+** zip1 v0\.2d, v0\.2d, v1\.2d
** ret
*/
float64x2_t f64q_1(float64_t a0, float64_t a1) {
@@ -98,7 +98,7 @@ float64x2_t f64q_2(float64_t a0, float64_t *ptr) {
/*
** f64q_3:
** ldr d0, \[x0\]
-** uzp1 v0\.2d, v0\.2d, v1\.2d
+** zip1 v0\.2d, v0\.2d, v1\.2d
** ret
*/
float64x2_t f64q_3(float64_t a0, float64_t a1, float64_t *ptr) {
@@ -140,7 +140,7 @@ float64x2_t f64q_6(float64_t a0, float64_t a1) {
/*
** s32q_1:
-** uzp1 v0\.2d, v0\.2d, v1\.2d
+** zip1 v0\.2d, v0\.2d, v1\.2d
** ret
*/
int32x4_t s32q_1(int32x2_t a0, int32x2_t a1) {
@@ -157,7 +157,7 @@ int32x4_t s32q_2(int32x2_t a0, int32x2_t *ptr) {
/*
** s32q_3:
** ldr d0, \[x0\]
-** uzp1 v0\.2d, v0\.2d, v1\.2d
+** zip1 v0\.2d, v0\.2d, v1\.2d
** ret
*/
int32x4_t s32q_3(int32x2_t a0, int32x2_t a1, int32x2_t *ptr) {
@@ -204,7 +204,7 @@ int32x4_t s32q_6(int32x2_t a0, int32x2_t a1) {
/*
** f32q_1:
-** uzp1 v0\.2d, v0\.2d, v1\.2d
+** zip1 v0\.2d, v0\.2d, v1\.2d
** ret
*/
float32x4_t f32q_1(float32x2_t a0, float32x2_t a1) {
@@ -221,7 +221,7 @@ float32x4_t f32q_2(float32x2_t a0, float32x2_t *ptr) {
/*
** f32q_3:
** ldr d0, \[x0\]
-** uzp1 v0\.2d, v0\.2d, v1\.2d
+** zip1 v0\.2d, v0\.2d, v1\.2d
** ret
*/
float32x4_t f32q_3(float32x2_t a0, float32x2_t a1, float32x2_t *ptr) {
--
2.43.0