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) {
