https://gcc.gnu.org/g:8076bc965f8aebafcb18739492432a19ee62a17c

commit r17-1448-g8076bc965f8aebafcb18739492432a19ee62a17c
Author: Artemiy Volkov <[email protected]>
Date:   Tue Jun 2 08:53:40 2026 +0000

    aarch64: use ZIP1 instead of UZP1 for concatenation [PR125550]
    
    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 ((float16) x0, 0) 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.

Diff:
---
 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/testsuite/gcc.target/aarch64/simd/mf8_data_1.c | 18 +++++++--------
 gcc/testsuite/gcc.target/aarch64/sve/pr125550.c    | 19 ++++++++++++++++
 gcc/testsuite/gcc.target/aarch64/sve/vec_init_5.c  | 26 +++++++++++-----------
 gcc/testsuite/gcc.target/aarch64/vec-init-14.c     |  4 ++--
 gcc/testsuite/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(-)

diff --git a/gcc/config/aarch64/aarch64-simd.md 
b/gcc/config/aarch64/aarch64-simd.md
index 843ad6cb0766..b2e8fe3f6a9a 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 a6b4d50f34fa..e8c975e900f9 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 39d802221424..daaccf0b8816 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 79d1ccf6f7d5..e440b899f597 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 000000000000..89186dc07c97
--- /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 2bc9a3aeba5e..0dd085a94237 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 1a2cc9fbf473..ea719f32e4f7 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 2a209509d1ba..9374da8a84d6 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 3cf05cf865e2..8fccf278d316 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) {

Reply via email to