aboutsummaryrefslogtreecommitdiff
path: root/sys/crypto/openssl/aarch64/chacha-armv8-sve.S
diff options
context:
space:
mode:
Diffstat (limited to 'sys/crypto/openssl/aarch64/chacha-armv8-sve.S')
-rw-r--r--sys/crypto/openssl/aarch64/chacha-armv8-sve.S3559
1 files changed, 3559 insertions, 0 deletions
diff --git a/sys/crypto/openssl/aarch64/chacha-armv8-sve.S b/sys/crypto/openssl/aarch64/chacha-armv8-sve.S
new file mode 100644
index 000000000000..e595adf377f9
--- /dev/null
+++ b/sys/crypto/openssl/aarch64/chacha-armv8-sve.S
@@ -0,0 +1,3559 @@
+/* Do not modify. This file is auto-generated from chacha-armv8-sve.pl. */
+// Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved.
+//
+// Licensed under the Apache License 2.0 (the "License"). You may not use
+// this file except in compliance with the License. You can obtain a copy
+// in the file LICENSE in the source distribution or at
+// https://www.openssl.org/source/license.html
+//
+//
+// ChaCha20 for ARMv8 via SVE
+//
+// $output is the last argument if it looks like a file (it has an extension)
+// $flavour is the first argument if it doesn't look like a file
+#include "arm_arch.h"
+
+.arch armv8-a
+
+
+.hidden OPENSSL_armcap_P
+
+.text
+
+.section .rodata
+.align 5
+.type _chacha_sve_consts,%object
+_chacha_sve_consts:
+.Lchacha20_consts:
+.quad 0x3320646e61707865,0x6b20657479622d32 // endian-neutral
+.Lrot8:
+.word 0x02010003,0x04040404,0x02010003,0x04040404
+.size _chacha_sve_consts,.-_chacha_sve_consts
+
+.previous
+
+.globl ChaCha20_ctr32_sve
+.type ChaCha20_ctr32_sve,%function
+.align 5
+ChaCha20_ctr32_sve:
+ AARCH64_VALID_CALL_TARGET
+.inst 0x04a0e3e5 //cntw x5, ALL, MUL #1
+ cmp x2,x5,lsl #6
+ b.lt .Lreturn
+ mov x7,0
+ adrp x6,OPENSSL_armcap_P
+ ldr w6,[x6,#:lo12:OPENSSL_armcap_P]
+ tst w6,#ARMV8_SVE2
+ b.eq 1f
+ mov x7,1
+ b 2f
+1:
+ cmp x5,4
+ b.le .Lreturn
+ adrp x6,.Lrot8
+ add x6,x6,#:lo12:.Lrot8
+ ldp w9,w10,[x6]
+.inst 0x04aa4d3f //index z31.s,w9,w10
+2:
+ AARCH64_SIGN_LINK_REGISTER
+ stp d8,d9,[sp,-192]!
+ stp d10,d11,[sp,16]
+ stp d12,d13,[sp,32]
+ stp d14,d15,[sp,48]
+ stp x16,x17,[sp,64]
+ stp x18,x19,[sp,80]
+ stp x20,x21,[sp,96]
+ stp x22,x23,[sp,112]
+ stp x24,x25,[sp,128]
+ stp x26,x27,[sp,144]
+ stp x28,x29,[sp,160]
+ str x30,[sp,176]
+
+ adrp x6,.Lchacha20_consts
+ add x6,x6,#:lo12:.Lchacha20_consts
+ ldp x23,x24,[x6]
+ ldp x25,x26,[x3]
+ ldp x27,x28,[x3, 16]
+ ldp x29,x30,[x4]
+.inst 0x2599e3e0 //ptrues p0.s,ALL
+#ifdef __AARCH64EB__
+ ror x25,x25,#32
+ ror x26,x26,#32
+ ror x27,x27,#32
+ ror x28,x28,#32
+ ror x29,x29,#32
+ ror x30,x30,#32
+#endif
+ cbz x7, 1f
+.align 5
+100:
+ subs x7,x2,x5,lsl #6
+ b.lt 110f
+ mov x2,x7
+ b.eq 101f
+ cmp x2,64
+ b.lt 101f
+ mixin=1
+ lsr x8,x23,#32
+.inst 0x05a03ae0 //dup z0.s,w23
+.inst 0x05a03af9 //dup z25.s,w23
+.if mixin == 1
+ mov w7,w23
+.endif
+.inst 0x05a03904 //dup z4.s,w8
+.inst 0x05a0391a //dup z26.s,w8
+ lsr x10,x24,#32
+.inst 0x05a03b08 //dup z8.s,w24
+.inst 0x05a03b1b //dup z27.s,w24
+.if mixin == 1
+ mov w9,w24
+.endif
+.inst 0x05a0394c //dup z12.s,w10
+.inst 0x05a0395c //dup z28.s,w10
+ lsr x12,x25,#32
+.inst 0x05a03b21 //dup z1.s,w25
+.inst 0x05a03b3d //dup z29.s,w25
+.if mixin == 1
+ mov w11,w25
+.endif
+.inst 0x05a03985 //dup z5.s,w12
+.inst 0x05a0399e //dup z30.s,w12
+ lsr x14,x26,#32
+.inst 0x05a03b49 //dup z9.s,w26
+.inst 0x05a03b55 //dup z21.s,w26
+.if mixin == 1
+ mov w13,w26
+.endif
+.inst 0x05a039cd //dup z13.s,w14
+.inst 0x05a039d6 //dup z22.s,w14
+ lsr x16,x27,#32
+.inst 0x05a03b62 //dup z2.s,w27
+.inst 0x05a03b77 //dup z23.s,w27
+.if mixin == 1
+ mov w15,w27
+.endif
+.inst 0x05a03a06 //dup z6.s,w16
+.inst 0x05a03a18 //dup z24.s,w16
+ lsr x18,x28,#32
+.inst 0x05a03b8a //dup z10.s,w28
+.inst 0x05a03b91 //dup z17.s,w28
+.if mixin == 1
+ mov w17,w28
+.endif
+.inst 0x05a03a4e //dup z14.s,w18
+.inst 0x05a03a52 //dup z18.s,w18
+ lsr x22,x30,#32
+.inst 0x05a03bcb //dup z11.s,w30
+.inst 0x05a03bd4 //dup z20.s,w30
+.if mixin == 1
+ mov w21,w30
+.endif
+.inst 0x05a03acf //dup z15.s,w22
+.inst 0x05a03adf //dup z31.s,w22
+.if mixin == 1
+ add w20,w29,#1
+ mov w19,w29
+.inst 0x04a14690 //index z16.s,w20,1
+.inst 0x04a14683 //index z3.s,w20,1
+.else
+.inst 0x04a147b0 //index z16.s,w29,1
+.inst 0x04a147a3 //index z3.s,w29,1
+.endif
+ lsr x20,x29,#32
+.inst 0x05a03a87 //dup z7.s,w20
+.inst 0x05a03a93 //dup z19.s,w20
+ mov x6,#10
+10:
+.align 5
+.inst 0x04a10000 //add z0.s,z0.s,z1.s
+.if mixin == 1
+ add w7,w7,w11
+.endif
+.inst 0x04a50084 //add z4.s,z4.s,z5.s
+.if mixin == 1
+ add w8,w8,w12
+.endif
+.inst 0x04a90108 //add z8.s,z8.s,z9.s
+.if mixin == 1
+ add w9,w9,w13
+.endif
+.inst 0x04ad018c //add z12.s,z12.s,z13.s
+.if mixin == 1
+ add w10,w10,w14
+.endif
+.if mixin == 1
+ eor w19,w19,w7
+.endif
+.inst 0x04703403 //xar z3.s,z3.s,z0.s,16
+.if mixin == 1
+ ror w19,w19,16
+.endif
+.if mixin == 1
+ eor w20,w20,w8
+.endif
+.inst 0x04703487 //xar z7.s,z7.s,z4.s,16
+.if mixin == 1
+ ror w20,w20,16
+.endif
+.if mixin == 1
+ eor w21,w21,w9
+.endif
+.inst 0x0470350b //xar z11.s,z11.s,z8.s,16
+.if mixin == 1
+ ror w21,w21,16
+.endif
+.if mixin == 1
+ eor w22,w22,w10
+.endif
+.inst 0x0470358f //xar z15.s,z15.s,z12.s,16
+.if mixin == 1
+ ror w22,w22,16
+.endif
+.inst 0x04a30042 //add z2.s,z2.s,z3.s
+.if mixin == 1
+ add w15,w15,w19
+.endif
+.inst 0x04a700c6 //add z6.s,z6.s,z7.s
+.if mixin == 1
+ add w16,w16,w20
+.endif
+.inst 0x04ab014a //add z10.s,z10.s,z11.s
+.if mixin == 1
+ add w17,w17,w21
+.endif
+.inst 0x04af01ce //add z14.s,z14.s,z15.s
+.if mixin == 1
+ add w18,w18,w22
+.endif
+.if mixin == 1
+ eor w11,w11,w15
+.endif
+.inst 0x046c3441 //xar z1.s,z1.s,z2.s,20
+.if mixin == 1
+ ror w11,w11,20
+.endif
+.if mixin == 1
+ eor w12,w12,w16
+.endif
+.inst 0x046c34c5 //xar z5.s,z5.s,z6.s,20
+.if mixin == 1
+ ror w12,w12,20
+.endif
+.if mixin == 1
+ eor w13,w13,w17
+.endif
+.inst 0x046c3549 //xar z9.s,z9.s,z10.s,20
+.if mixin == 1
+ ror w13,w13,20
+.endif
+.if mixin == 1
+ eor w14,w14,w18
+.endif
+.inst 0x046c35cd //xar z13.s,z13.s,z14.s,20
+.if mixin == 1
+ ror w14,w14,20
+.endif
+.inst 0x04a10000 //add z0.s,z0.s,z1.s
+.if mixin == 1
+ add w7,w7,w11
+.endif
+.inst 0x04a50084 //add z4.s,z4.s,z5.s
+.if mixin == 1
+ add w8,w8,w12
+.endif
+.inst 0x04a90108 //add z8.s,z8.s,z9.s
+.if mixin == 1
+ add w9,w9,w13
+.endif
+.inst 0x04ad018c //add z12.s,z12.s,z13.s
+.if mixin == 1
+ add w10,w10,w14
+.endif
+.if mixin == 1
+ eor w19,w19,w7
+.endif
+.inst 0x04683403 //xar z3.s,z3.s,z0.s,24
+.if mixin == 1
+ ror w19,w19,24
+.endif
+.if mixin == 1
+ eor w20,w20,w8
+.endif
+.inst 0x04683487 //xar z7.s,z7.s,z4.s,24
+.if mixin == 1
+ ror w20,w20,24
+.endif
+.if mixin == 1
+ eor w21,w21,w9
+.endif
+.inst 0x0468350b //xar z11.s,z11.s,z8.s,24
+.if mixin == 1
+ ror w21,w21,24
+.endif
+.if mixin == 1
+ eor w22,w22,w10
+.endif
+.inst 0x0468358f //xar z15.s,z15.s,z12.s,24
+.if mixin == 1
+ ror w22,w22,24
+.endif
+.inst 0x04a30042 //add z2.s,z2.s,z3.s
+.if mixin == 1
+ add w15,w15,w19
+.endif
+.inst 0x04a700c6 //add z6.s,z6.s,z7.s
+.if mixin == 1
+ add w16,w16,w20
+.endif
+.inst 0x04ab014a //add z10.s,z10.s,z11.s
+.if mixin == 1
+ add w17,w17,w21
+.endif
+.inst 0x04af01ce //add z14.s,z14.s,z15.s
+.if mixin == 1
+ add w18,w18,w22
+.endif
+.if mixin == 1
+ eor w11,w11,w15
+.endif
+.inst 0x04673441 //xar z1.s,z1.s,z2.s,25
+.if mixin == 1
+ ror w11,w11,25
+.endif
+.if mixin == 1
+ eor w12,w12,w16
+.endif
+.inst 0x046734c5 //xar z5.s,z5.s,z6.s,25
+.if mixin == 1
+ ror w12,w12,25
+.endif
+.if mixin == 1
+ eor w13,w13,w17
+.endif
+.inst 0x04673549 //xar z9.s,z9.s,z10.s,25
+.if mixin == 1
+ ror w13,w13,25
+.endif
+.if mixin == 1
+ eor w14,w14,w18
+.endif
+.inst 0x046735cd //xar z13.s,z13.s,z14.s,25
+.if mixin == 1
+ ror w14,w14,25
+.endif
+.inst 0x04a50000 //add z0.s,z0.s,z5.s
+.if mixin == 1
+ add w7,w7,w12
+.endif
+.inst 0x04a90084 //add z4.s,z4.s,z9.s
+.if mixin == 1
+ add w8,w8,w13
+.endif
+.inst 0x04ad0108 //add z8.s,z8.s,z13.s
+.if mixin == 1
+ add w9,w9,w14
+.endif
+.inst 0x04a1018c //add z12.s,z12.s,z1.s
+.if mixin == 1
+ add w10,w10,w11
+.endif
+.if mixin == 1
+ eor w22,w22,w7
+.endif
+.inst 0x0470340f //xar z15.s,z15.s,z0.s,16
+.if mixin == 1
+ ror w22,w22,16
+.endif
+.if mixin == 1
+ eor w19,w19,w8
+.endif
+.inst 0x04703483 //xar z3.s,z3.s,z4.s,16
+.if mixin == 1
+ ror w19,w19,16
+.endif
+.if mixin == 1
+ eor w20,w20,w9
+.endif
+.inst 0x04703507 //xar z7.s,z7.s,z8.s,16
+.if mixin == 1
+ ror w20,w20,16
+.endif
+.if mixin == 1
+ eor w21,w21,w10
+.endif
+.inst 0x0470358b //xar z11.s,z11.s,z12.s,16
+.if mixin == 1
+ ror w21,w21,16
+.endif
+.inst 0x04af014a //add z10.s,z10.s,z15.s
+.if mixin == 1
+ add w17,w17,w22
+.endif
+.inst 0x04a301ce //add z14.s,z14.s,z3.s
+.if mixin == 1
+ add w18,w18,w19
+.endif
+.inst 0x04a70042 //add z2.s,z2.s,z7.s
+.if mixin == 1
+ add w15,w15,w20
+.endif
+.inst 0x04ab00c6 //add z6.s,z6.s,z11.s
+.if mixin == 1
+ add w16,w16,w21
+.endif
+.if mixin == 1
+ eor w12,w12,w17
+.endif
+.inst 0x046c3545 //xar z5.s,z5.s,z10.s,20
+.if mixin == 1
+ ror w12,w12,20
+.endif
+.if mixin == 1
+ eor w13,w13,w18
+.endif
+.inst 0x046c35c9 //xar z9.s,z9.s,z14.s,20
+.if mixin == 1
+ ror w13,w13,20
+.endif
+.if mixin == 1
+ eor w14,w14,w15
+.endif
+.inst 0x046c344d //xar z13.s,z13.s,z2.s,20
+.if mixin == 1
+ ror w14,w14,20
+.endif
+.if mixin == 1
+ eor w11,w11,w16
+.endif
+.inst 0x046c34c1 //xar z1.s,z1.s,z6.s,20
+.if mixin == 1
+ ror w11,w11,20
+.endif
+.inst 0x04a50000 //add z0.s,z0.s,z5.s
+.if mixin == 1
+ add w7,w7,w12
+.endif
+.inst 0x04a90084 //add z4.s,z4.s,z9.s
+.if mixin == 1
+ add w8,w8,w13
+.endif
+.inst 0x04ad0108 //add z8.s,z8.s,z13.s
+.if mixin == 1
+ add w9,w9,w14
+.endif
+.inst 0x04a1018c //add z12.s,z12.s,z1.s
+.if mixin == 1
+ add w10,w10,w11
+.endif
+.if mixin == 1
+ eor w22,w22,w7
+.endif
+.inst 0x0468340f //xar z15.s,z15.s,z0.s,24
+.if mixin == 1
+ ror w22,w22,24
+.endif
+.if mixin == 1
+ eor w19,w19,w8
+.endif
+.inst 0x04683483 //xar z3.s,z3.s,z4.s,24
+.if mixin == 1
+ ror w19,w19,24
+.endif
+.if mixin == 1
+ eor w20,w20,w9
+.endif
+.inst 0x04683507 //xar z7.s,z7.s,z8.s,24
+.if mixin == 1
+ ror w20,w20,24
+.endif
+.if mixin == 1
+ eor w21,w21,w10
+.endif
+.inst 0x0468358b //xar z11.s,z11.s,z12.s,24
+.if mixin == 1
+ ror w21,w21,24
+.endif
+.inst 0x04af014a //add z10.s,z10.s,z15.s
+.if mixin == 1
+ add w17,w17,w22
+.endif
+.inst 0x04a301ce //add z14.s,z14.s,z3.s
+.if mixin == 1
+ add w18,w18,w19
+.endif
+.inst 0x04a70042 //add z2.s,z2.s,z7.s
+.if mixin == 1
+ add w15,w15,w20
+.endif
+.inst 0x04ab00c6 //add z6.s,z6.s,z11.s
+.if mixin == 1
+ add w16,w16,w21
+.endif
+.if mixin == 1
+ eor w12,w12,w17
+.endif
+.inst 0x04673545 //xar z5.s,z5.s,z10.s,25
+.if mixin == 1
+ ror w12,w12,25
+.endif
+.if mixin == 1
+ eor w13,w13,w18
+.endif
+.inst 0x046735c9 //xar z9.s,z9.s,z14.s,25
+.if mixin == 1
+ ror w13,w13,25
+.endif
+.if mixin == 1
+ eor w14,w14,w15
+.endif
+.inst 0x0467344d //xar z13.s,z13.s,z2.s,25
+.if mixin == 1
+ ror w14,w14,25
+.endif
+.if mixin == 1
+ eor w11,w11,w16
+.endif
+.inst 0x046734c1 //xar z1.s,z1.s,z6.s,25
+.if mixin == 1
+ ror w11,w11,25
+.endif
+ sub x6,x6,1
+ cbnz x6,10b
+.if mixin == 1
+ add w7,w7,w23
+.endif
+.inst 0x04b90000 //add z0.s,z0.s,z25.s
+.if mixin == 1
+ add x8,x8,x23,lsr #32
+.endif
+.inst 0x04ba0084 //add z4.s,z4.s,z26.s
+.if mixin == 1
+ add x7,x7,x8,lsl #32 // pack
+.endif
+.if mixin == 1
+ add w9,w9,w24
+.endif
+.inst 0x04bb0108 //add z8.s,z8.s,z27.s
+.if mixin == 1
+ add x10,x10,x24,lsr #32
+.endif
+.inst 0x04bc018c //add z12.s,z12.s,z28.s
+.if mixin == 1
+ add x9,x9,x10,lsl #32 // pack
+.endif
+.if mixin == 1
+ ldp x8,x10,[x1],#16
+.endif
+.if mixin == 1
+ add w11,w11,w25
+.endif
+.inst 0x04bd0021 //add z1.s,z1.s,z29.s
+.if mixin == 1
+ add x12,x12,x25,lsr #32
+.endif
+.inst 0x04be00a5 //add z5.s,z5.s,z30.s
+.if mixin == 1
+ add x11,x11,x12,lsl #32 // pack
+.endif
+.if mixin == 1
+ add w13,w13,w26
+.endif
+.inst 0x04b50129 //add z9.s,z9.s,z21.s
+.if mixin == 1
+ add x14,x14,x26,lsr #32
+.endif
+.inst 0x04b601ad //add z13.s,z13.s,z22.s
+.if mixin == 1
+ add x13,x13,x14,lsl #32 // pack
+.endif
+.if mixin == 1
+ ldp x12,x14,[x1],#16
+.endif
+.if mixin == 1
+ add w15,w15,w27
+.endif
+.inst 0x04b70042 //add z2.s,z2.s,z23.s
+.if mixin == 1
+ add x16,x16,x27,lsr #32
+.endif
+.inst 0x04b800c6 //add z6.s,z6.s,z24.s
+.if mixin == 1
+ add x15,x15,x16,lsl #32 // pack
+.endif
+.if mixin == 1
+ add w17,w17,w28
+.endif
+.inst 0x04b1014a //add z10.s,z10.s,z17.s
+.if mixin == 1
+ add x18,x18,x28,lsr #32
+.endif
+.inst 0x04b201ce //add z14.s,z14.s,z18.s
+.if mixin == 1
+ add x17,x17,x18,lsl #32 // pack
+.endif
+.if mixin == 1
+ ldp x16,x18,[x1],#16
+.endif
+.if mixin == 1
+ add w19,w19,w29
+.endif
+.inst 0x04b00063 //add z3.s,z3.s,z16.s
+.if mixin == 1
+ add x20,x20,x29,lsr #32
+.endif
+.inst 0x04b300e7 //add z7.s,z7.s,z19.s
+.if mixin == 1
+ add x19,x19,x20,lsl #32 // pack
+.endif
+.if mixin == 1
+ add w21,w21,w30
+.endif
+.inst 0x04b4016b //add z11.s,z11.s,z20.s
+.if mixin == 1
+ add x22,x22,x30,lsr #32
+.endif
+.inst 0x04bf01ef //add z15.s,z15.s,z31.s
+.if mixin == 1
+ add x21,x21,x22,lsl #32 // pack
+.endif
+.if mixin == 1
+ ldp x20,x22,[x1],#16
+.endif
+#ifdef __AARCH64EB__
+ rev x7,x7
+.inst 0x05a48000 //revb z0.s,p0/m,z0.s
+.inst 0x05a48084 //revb z4.s,p0/m,z4.s
+ rev x9,x9
+.inst 0x05a48108 //revb z8.s,p0/m,z8.s
+.inst 0x05a4818c //revb z12.s,p0/m,z12.s
+ rev x11,x11
+.inst 0x05a48021 //revb z1.s,p0/m,z1.s
+.inst 0x05a480a5 //revb z5.s,p0/m,z5.s
+ rev x13,x13
+.inst 0x05a48129 //revb z9.s,p0/m,z9.s
+.inst 0x05a481ad //revb z13.s,p0/m,z13.s
+ rev x15,x15
+.inst 0x05a48042 //revb z2.s,p0/m,z2.s
+.inst 0x05a480c6 //revb z6.s,p0/m,z6.s
+ rev x17,x17
+.inst 0x05a4814a //revb z10.s,p0/m,z10.s
+.inst 0x05a481ce //revb z14.s,p0/m,z14.s
+ rev x19,x19
+.inst 0x05a48063 //revb z3.s,p0/m,z3.s
+.inst 0x05a480e7 //revb z7.s,p0/m,z7.s
+ rev x21,x21
+.inst 0x05a4816b //revb z11.s,p0/m,z11.s
+.inst 0x05a481ef //revb z15.s,p0/m,z15.s
+#endif
+.if mixin == 1
+ add x29,x29,#1
+.endif
+ cmp x5,4
+ b.ne 200f
+.if mixin == 1
+ eor x7,x7,x8
+.endif
+.if mixin == 1
+ eor x9,x9,x10
+.endif
+.if mixin == 1
+ eor x11,x11,x12
+.endif
+.inst 0x05a46011 //zip1 z17.s,z0.s,z4.s
+.inst 0x05a46412 //zip2 z18.s,z0.s,z4.s
+.inst 0x05ac6113 //zip1 z19.s,z8.s,z12.s
+.inst 0x05ac6514 //zip2 z20.s,z8.s,z12.s
+
+.inst 0x05a56035 //zip1 z21.s,z1.s,z5.s
+.inst 0x05a56436 //zip2 z22.s,z1.s,z5.s
+.inst 0x05ad6137 //zip1 z23.s,z9.s,z13.s
+.inst 0x05ad6538 //zip2 z24.s,z9.s,z13.s
+
+.inst 0x05f36220 //zip1 z0.d,z17.d,z19.d
+.inst 0x05f36624 //zip2 z4.d,z17.d,z19.d
+.inst 0x05f46248 //zip1 z8.d,z18.d,z20.d
+.inst 0x05f4664c //zip2 z12.d,z18.d,z20.d
+
+.inst 0x05f762a1 //zip1 z1.d,z21.d,z23.d
+.inst 0x05f766a5 //zip2 z5.d,z21.d,z23.d
+.inst 0x05f862c9 //zip1 z9.d,z22.d,z24.d
+.inst 0x05f866cd //zip2 z13.d,z22.d,z24.d
+.if mixin == 1
+ eor x13,x13,x14
+.endif
+.if mixin == 1
+ eor x15,x15,x16
+.endif
+.if mixin == 1
+ eor x17,x17,x18
+.endif
+.inst 0x05a66051 //zip1 z17.s,z2.s,z6.s
+.inst 0x05a66452 //zip2 z18.s,z2.s,z6.s
+.inst 0x05ae6153 //zip1 z19.s,z10.s,z14.s
+.inst 0x05ae6554 //zip2 z20.s,z10.s,z14.s
+
+.inst 0x05a76075 //zip1 z21.s,z3.s,z7.s
+.inst 0x05a76476 //zip2 z22.s,z3.s,z7.s
+.inst 0x05af6177 //zip1 z23.s,z11.s,z15.s
+.inst 0x05af6578 //zip2 z24.s,z11.s,z15.s
+
+.inst 0x05f36222 //zip1 z2.d,z17.d,z19.d
+.inst 0x05f36626 //zip2 z6.d,z17.d,z19.d
+.inst 0x05f4624a //zip1 z10.d,z18.d,z20.d
+.inst 0x05f4664e //zip2 z14.d,z18.d,z20.d
+
+.inst 0x05f762a3 //zip1 z3.d,z21.d,z23.d
+.inst 0x05f766a7 //zip2 z7.d,z21.d,z23.d
+.inst 0x05f862cb //zip1 z11.d,z22.d,z24.d
+.inst 0x05f866cf //zip2 z15.d,z22.d,z24.d
+.if mixin == 1
+ eor x19,x19,x20
+.endif
+.if mixin == 1
+ eor x21,x21,x22
+.endif
+ ld1 {v17.4s,v18.4s,v19.4s,v20.4s},[x1],#64
+ ld1 {v21.4s,v22.4s,v23.4s,v24.4s},[x1],#64
+.inst 0x04b13000 //eor z0.d,z0.d,z17.d
+.inst 0x04b23021 //eor z1.d,z1.d,z18.d
+.inst 0x04b33042 //eor z2.d,z2.d,z19.d
+.inst 0x04b43063 //eor z3.d,z3.d,z20.d
+.inst 0x04b53084 //eor z4.d,z4.d,z21.d
+.inst 0x04b630a5 //eor z5.d,z5.d,z22.d
+.inst 0x04b730c6 //eor z6.d,z6.d,z23.d
+.inst 0x04b830e7 //eor z7.d,z7.d,z24.d
+ ld1 {v17.4s,v18.4s,v19.4s,v20.4s},[x1],#64
+ ld1 {v21.4s,v22.4s,v23.4s,v24.4s},[x1],#64
+.if mixin == 1
+ stp x7,x9,[x0],#16
+.endif
+.inst 0x04b13108 //eor z8.d,z8.d,z17.d
+.inst 0x04b23129 //eor z9.d,z9.d,z18.d
+.if mixin == 1
+ stp x11,x13,[x0],#16
+.endif
+.inst 0x04b3314a //eor z10.d,z10.d,z19.d
+.inst 0x04b4316b //eor z11.d,z11.d,z20.d
+.if mixin == 1
+ stp x15,x17,[x0],#16
+.endif
+.inst 0x04b5318c //eor z12.d,z12.d,z21.d
+.inst 0x04b631ad //eor z13.d,z13.d,z22.d
+.if mixin == 1
+ stp x19,x21,[x0],#16
+.endif
+.inst 0x04b731ce //eor z14.d,z14.d,z23.d
+.inst 0x04b831ef //eor z15.d,z15.d,z24.d
+ st1 {v0.4s,v1.4s,v2.4s,v3.4s},[x0],#64
+ st1 {v4.4s,v5.4s,v6.4s,v7.4s},[x0],#64
+ st1 {v8.4s,v9.4s,v10.4s,v11.4s},[x0],#64
+ st1 {v12.4s,v13.4s,v14.4s,v15.4s},[x0],#64
+ b 210f
+200:
+.inst 0x05a16011 //zip1 z17.s,z0.s,z1.s
+.inst 0x05a16412 //zip2 z18.s,z0.s,z1.s
+.inst 0x05a36053 //zip1 z19.s,z2.s,z3.s
+.inst 0x05a36454 //zip2 z20.s,z2.s,z3.s
+
+.inst 0x05a56095 //zip1 z21.s,z4.s,z5.s
+.inst 0x05a56496 //zip2 z22.s,z4.s,z5.s
+.inst 0x05a760d7 //zip1 z23.s,z6.s,z7.s
+.inst 0x05a764d8 //zip2 z24.s,z6.s,z7.s
+
+.inst 0x05f36220 //zip1 z0.d,z17.d,z19.d
+.inst 0x05f36621 //zip2 z1.d,z17.d,z19.d
+.inst 0x05f46242 //zip1 z2.d,z18.d,z20.d
+.inst 0x05f46643 //zip2 z3.d,z18.d,z20.d
+
+.inst 0x05f762a4 //zip1 z4.d,z21.d,z23.d
+.inst 0x05f766a5 //zip2 z5.d,z21.d,z23.d
+.inst 0x05f862c6 //zip1 z6.d,z22.d,z24.d
+.inst 0x05f866c7 //zip2 z7.d,z22.d,z24.d
+.if mixin == 1
+ eor x7,x7,x8
+.endif
+.if mixin == 1
+ eor x9,x9,x10
+.endif
+.inst 0x05a96111 //zip1 z17.s,z8.s,z9.s
+.inst 0x05a96512 //zip2 z18.s,z8.s,z9.s
+.inst 0x05ab6153 //zip1 z19.s,z10.s,z11.s
+.inst 0x05ab6554 //zip2 z20.s,z10.s,z11.s
+
+.inst 0x05ad6195 //zip1 z21.s,z12.s,z13.s
+.inst 0x05ad6596 //zip2 z22.s,z12.s,z13.s
+.inst 0x05af61d7 //zip1 z23.s,z14.s,z15.s
+.inst 0x05af65d8 //zip2 z24.s,z14.s,z15.s
+
+.inst 0x05f36228 //zip1 z8.d,z17.d,z19.d
+.inst 0x05f36629 //zip2 z9.d,z17.d,z19.d
+.inst 0x05f4624a //zip1 z10.d,z18.d,z20.d
+.inst 0x05f4664b //zip2 z11.d,z18.d,z20.d
+
+.inst 0x05f762ac //zip1 z12.d,z21.d,z23.d
+.inst 0x05f766ad //zip2 z13.d,z21.d,z23.d
+.inst 0x05f862ce //zip1 z14.d,z22.d,z24.d
+.inst 0x05f866cf //zip2 z15.d,z22.d,z24.d
+.if mixin == 1
+ eor x11,x11,x12
+.endif
+.if mixin == 1
+ eor x13,x13,x14
+.endif
+.inst 0x05a46011 //zip1 z17.s,z0.s,z4.s
+.inst 0x05a46412 //zip2 z18.s,z0.s,z4.s
+.inst 0x05ac6113 //zip1 z19.s,z8.s,z12.s
+.inst 0x05ac6514 //zip2 z20.s,z8.s,z12.s
+
+.inst 0x05a56035 //zip1 z21.s,z1.s,z5.s
+.inst 0x05a56436 //zip2 z22.s,z1.s,z5.s
+.inst 0x05ad6137 //zip1 z23.s,z9.s,z13.s
+.inst 0x05ad6538 //zip2 z24.s,z9.s,z13.s
+
+.inst 0x05f36220 //zip1 z0.d,z17.d,z19.d
+.inst 0x05f36624 //zip2 z4.d,z17.d,z19.d
+.inst 0x05f46248 //zip1 z8.d,z18.d,z20.d
+.inst 0x05f4664c //zip2 z12.d,z18.d,z20.d
+
+.inst 0x05f762a1 //zip1 z1.d,z21.d,z23.d
+.inst 0x05f766a5 //zip2 z5.d,z21.d,z23.d
+.inst 0x05f862c9 //zip1 z9.d,z22.d,z24.d
+.inst 0x05f866cd //zip2 z13.d,z22.d,z24.d
+.if mixin == 1
+ eor x15,x15,x16
+.endif
+.if mixin == 1
+ eor x17,x17,x18
+.endif
+.inst 0x05a66051 //zip1 z17.s,z2.s,z6.s
+.inst 0x05a66452 //zip2 z18.s,z2.s,z6.s
+.inst 0x05ae6153 //zip1 z19.s,z10.s,z14.s
+.inst 0x05ae6554 //zip2 z20.s,z10.s,z14.s
+
+.inst 0x05a76075 //zip1 z21.s,z3.s,z7.s
+.inst 0x05a76476 //zip2 z22.s,z3.s,z7.s
+.inst 0x05af6177 //zip1 z23.s,z11.s,z15.s
+.inst 0x05af6578 //zip2 z24.s,z11.s,z15.s
+
+.inst 0x05f36222 //zip1 z2.d,z17.d,z19.d
+.inst 0x05f36626 //zip2 z6.d,z17.d,z19.d
+.inst 0x05f4624a //zip1 z10.d,z18.d,z20.d
+.inst 0x05f4664e //zip2 z14.d,z18.d,z20.d
+
+.inst 0x05f762a3 //zip1 z3.d,z21.d,z23.d
+.inst 0x05f766a7 //zip2 z7.d,z21.d,z23.d
+.inst 0x05f862cb //zip1 z11.d,z22.d,z24.d
+.inst 0x05f866cf //zip2 z15.d,z22.d,z24.d
+.if mixin == 1
+ eor x19,x19,x20
+.endif
+.if mixin == 1
+ eor x21,x21,x22
+.endif
+.inst 0xa540a031 //ld1w {z17.s},p0/z,[x1,#0,MUL VL]
+.inst 0xa541a032 //ld1w {z18.s},p0/z,[x1,#1,MUL VL]
+.inst 0xa542a033 //ld1w {z19.s},p0/z,[x1,#2,MUL VL]
+.inst 0xa543a034 //ld1w {z20.s},p0/z,[x1,#3,MUL VL]
+.inst 0xa544a035 //ld1w {z21.s},p0/z,[x1,#4,MUL VL]
+.inst 0xa545a036 //ld1w {z22.s},p0/z,[x1,#5,MUL VL]
+.inst 0xa546a037 //ld1w {z23.s},p0/z,[x1,#6,MUL VL]
+.inst 0xa547a038 //ld1w {z24.s},p0/z,[x1,#7,MUL VL]
+.inst 0x04215101 //addvl x1,x1,8
+.inst 0x04b13000 //eor z0.d,z0.d,z17.d
+.inst 0x04b23084 //eor z4.d,z4.d,z18.d
+.inst 0x04b33108 //eor z8.d,z8.d,z19.d
+.inst 0x04b4318c //eor z12.d,z12.d,z20.d
+.inst 0x04b53021 //eor z1.d,z1.d,z21.d
+.inst 0x04b630a5 //eor z5.d,z5.d,z22.d
+.inst 0x04b73129 //eor z9.d,z9.d,z23.d
+.inst 0x04b831ad //eor z13.d,z13.d,z24.d
+.inst 0xa540a031 //ld1w {z17.s},p0/z,[x1,#0,MUL VL]
+.inst 0xa541a032 //ld1w {z18.s},p0/z,[x1,#1,MUL VL]
+.inst 0xa542a033 //ld1w {z19.s},p0/z,[x1,#2,MUL VL]
+.inst 0xa543a034 //ld1w {z20.s},p0/z,[x1,#3,MUL VL]
+.inst 0xa544a035 //ld1w {z21.s},p0/z,[x1,#4,MUL VL]
+.inst 0xa545a036 //ld1w {z22.s},p0/z,[x1,#5,MUL VL]
+.inst 0xa546a037 //ld1w {z23.s},p0/z,[x1,#6,MUL VL]
+.inst 0xa547a038 //ld1w {z24.s},p0/z,[x1,#7,MUL VL]
+.inst 0x04215101 //addvl x1,x1,8
+.if mixin == 1
+ stp x7,x9,[x0],#16
+.endif
+.inst 0x04b13042 //eor z2.d,z2.d,z17.d
+.inst 0x04b230c6 //eor z6.d,z6.d,z18.d
+.if mixin == 1
+ stp x11,x13,[x0],#16
+.endif
+.inst 0x04b3314a //eor z10.d,z10.d,z19.d
+.inst 0x04b431ce //eor z14.d,z14.d,z20.d
+.if mixin == 1
+ stp x15,x17,[x0],#16
+.endif
+.inst 0x04b53063 //eor z3.d,z3.d,z21.d
+.inst 0x04b630e7 //eor z7.d,z7.d,z22.d
+.if mixin == 1
+ stp x19,x21,[x0],#16
+.endif
+.inst 0x04b7316b //eor z11.d,z11.d,z23.d
+.inst 0x04b831ef //eor z15.d,z15.d,z24.d
+.inst 0xe540e000 //st1w {z0.s},p0,[x0,#0,MUL VL]
+.inst 0xe541e004 //st1w {z4.s},p0,[x0,#1,MUL VL]
+.inst 0xe542e008 //st1w {z8.s},p0,[x0,#2,MUL VL]
+.inst 0xe543e00c //st1w {z12.s},p0,[x0,#3,MUL VL]
+.inst 0xe544e001 //st1w {z1.s},p0,[x0,#4,MUL VL]
+.inst 0xe545e005 //st1w {z5.s},p0,[x0,#5,MUL VL]
+.inst 0xe546e009 //st1w {z9.s},p0,[x0,#6,MUL VL]
+.inst 0xe547e00d //st1w {z13.s},p0,[x0,#7,MUL VL]
+.inst 0x04205100 //addvl x0,x0,8
+.inst 0xe540e002 //st1w {z2.s},p0,[x0,#0,MUL VL]
+.inst 0xe541e006 //st1w {z6.s},p0,[x0,#1,MUL VL]
+.inst 0xe542e00a //st1w {z10.s},p0,[x0,#2,MUL VL]
+.inst 0xe543e00e //st1w {z14.s},p0,[x0,#3,MUL VL]
+.inst 0xe544e003 //st1w {z3.s},p0,[x0,#4,MUL VL]
+.inst 0xe545e007 //st1w {z7.s},p0,[x0,#5,MUL VL]
+.inst 0xe546e00b //st1w {z11.s},p0,[x0,#6,MUL VL]
+.inst 0xe547e00f //st1w {z15.s},p0,[x0,#7,MUL VL]
+.inst 0x04205100 //addvl x0,x0,8
+210:
+.inst 0x04b0e3fd //incw x29, ALL, MUL #1
+ subs x2,x2,64
+ b.gt 100b
+ b 110f
+101:
+ mixin=0
+ lsr x8,x23,#32
+.inst 0x05a03ae0 //dup z0.s,w23
+.inst 0x05a03af9 //dup z25.s,w23
+.if mixin == 1
+ mov w7,w23
+.endif
+.inst 0x05a03904 //dup z4.s,w8
+.inst 0x05a0391a //dup z26.s,w8
+ lsr x10,x24,#32
+.inst 0x05a03b08 //dup z8.s,w24
+.inst 0x05a03b1b //dup z27.s,w24
+.if mixin == 1
+ mov w9,w24
+.endif
+.inst 0x05a0394c //dup z12.s,w10
+.inst 0x05a0395c //dup z28.s,w10
+ lsr x12,x25,#32
+.inst 0x05a03b21 //dup z1.s,w25
+.inst 0x05a03b3d //dup z29.s,w25
+.if mixin == 1
+ mov w11,w25
+.endif
+.inst 0x05a03985 //dup z5.s,w12
+.inst 0x05a0399e //dup z30.s,w12
+ lsr x14,x26,#32
+.inst 0x05a03b49 //dup z9.s,w26
+.inst 0x05a03b55 //dup z21.s,w26
+.if mixin == 1
+ mov w13,w26
+.endif
+.inst 0x05a039cd //dup z13.s,w14
+.inst 0x05a039d6 //dup z22.s,w14
+ lsr x16,x27,#32
+.inst 0x05a03b62 //dup z2.s,w27
+.inst 0x05a03b77 //dup z23.s,w27
+.if mixin == 1
+ mov w15,w27
+.endif
+.inst 0x05a03a06 //dup z6.s,w16
+.inst 0x05a03a18 //dup z24.s,w16
+ lsr x18,x28,#32
+.inst 0x05a03b8a //dup z10.s,w28
+.inst 0x05a03b91 //dup z17.s,w28
+.if mixin == 1
+ mov w17,w28
+.endif
+.inst 0x05a03a4e //dup z14.s,w18
+.inst 0x05a03a52 //dup z18.s,w18
+ lsr x22,x30,#32
+.inst 0x05a03bcb //dup z11.s,w30
+.inst 0x05a03bd4 //dup z20.s,w30
+.if mixin == 1
+ mov w21,w30
+.endif
+.inst 0x05a03acf //dup z15.s,w22
+.inst 0x05a03adf //dup z31.s,w22
+.if mixin == 1
+ add w20,w29,#1
+ mov w19,w29
+.inst 0x04a14690 //index z16.s,w20,1
+.inst 0x04a14683 //index z3.s,w20,1
+.else
+.inst 0x04a147b0 //index z16.s,w29,1
+.inst 0x04a147a3 //index z3.s,w29,1
+.endif
+ lsr x20,x29,#32
+.inst 0x05a03a87 //dup z7.s,w20
+.inst 0x05a03a93 //dup z19.s,w20
+ mov x6,#10
+10:
+.align 5
+.inst 0x04a10000 //add z0.s,z0.s,z1.s
+.if mixin == 1
+ add w7,w7,w11
+.endif
+.inst 0x04a50084 //add z4.s,z4.s,z5.s
+.if mixin == 1
+ add w8,w8,w12
+.endif
+.inst 0x04a90108 //add z8.s,z8.s,z9.s
+.if mixin == 1
+ add w9,w9,w13
+.endif
+.inst 0x04ad018c //add z12.s,z12.s,z13.s
+.if mixin == 1
+ add w10,w10,w14
+.endif
+.if mixin == 1
+ eor w19,w19,w7
+.endif
+.inst 0x04703403 //xar z3.s,z3.s,z0.s,16
+.if mixin == 1
+ ror w19,w19,16
+.endif
+.if mixin == 1
+ eor w20,w20,w8
+.endif
+.inst 0x04703487 //xar z7.s,z7.s,z4.s,16
+.if mixin == 1
+ ror w20,w20,16
+.endif
+.if mixin == 1
+ eor w21,w21,w9
+.endif
+.inst 0x0470350b //xar z11.s,z11.s,z8.s,16
+.if mixin == 1
+ ror w21,w21,16
+.endif
+.if mixin == 1
+ eor w22,w22,w10
+.endif
+.inst 0x0470358f //xar z15.s,z15.s,z12.s,16
+.if mixin == 1
+ ror w22,w22,16
+.endif
+.inst 0x04a30042 //add z2.s,z2.s,z3.s
+.if mixin == 1
+ add w15,w15,w19
+.endif
+.inst 0x04a700c6 //add z6.s,z6.s,z7.s
+.if mixin == 1
+ add w16,w16,w20
+.endif
+.inst 0x04ab014a //add z10.s,z10.s,z11.s
+.if mixin == 1
+ add w17,w17,w21
+.endif
+.inst 0x04af01ce //add z14.s,z14.s,z15.s
+.if mixin == 1
+ add w18,w18,w22
+.endif
+.if mixin == 1
+ eor w11,w11,w15
+.endif
+.inst 0x046c3441 //xar z1.s,z1.s,z2.s,20
+.if mixin == 1
+ ror w11,w11,20
+.endif
+.if mixin == 1
+ eor w12,w12,w16
+.endif
+.inst 0x046c34c5 //xar z5.s,z5.s,z6.s,20
+.if mixin == 1
+ ror w12,w12,20
+.endif
+.if mixin == 1
+ eor w13,w13,w17
+.endif
+.inst 0x046c3549 //xar z9.s,z9.s,z10.s,20
+.if mixin == 1
+ ror w13,w13,20
+.endif
+.if mixin == 1
+ eor w14,w14,w18
+.endif
+.inst 0x046c35cd //xar z13.s,z13.s,z14.s,20
+.if mixin == 1
+ ror w14,w14,20
+.endif
+.inst 0x04a10000 //add z0.s,z0.s,z1.s
+.if mixin == 1
+ add w7,w7,w11
+.endif
+.inst 0x04a50084 //add z4.s,z4.s,z5.s
+.if mixin == 1
+ add w8,w8,w12
+.endif
+.inst 0x04a90108 //add z8.s,z8.s,z9.s
+.if mixin == 1
+ add w9,w9,w13
+.endif
+.inst 0x04ad018c //add z12.s,z12.s,z13.s
+.if mixin == 1
+ add w10,w10,w14
+.endif
+.if mixin == 1
+ eor w19,w19,w7
+.endif
+.inst 0x04683403 //xar z3.s,z3.s,z0.s,24
+.if mixin == 1
+ ror w19,w19,24
+.endif
+.if mixin == 1
+ eor w20,w20,w8
+.endif
+.inst 0x04683487 //xar z7.s,z7.s,z4.s,24
+.if mixin == 1
+ ror w20,w20,24
+.endif
+.if mixin == 1
+ eor w21,w21,w9
+.endif
+.inst 0x0468350b //xar z11.s,z11.s,z8.s,24
+.if mixin == 1
+ ror w21,w21,24
+.endif
+.if mixin == 1
+ eor w22,w22,w10
+.endif
+.inst 0x0468358f //xar z15.s,z15.s,z12.s,24
+.if mixin == 1
+ ror w22,w22,24
+.endif
+.inst 0x04a30042 //add z2.s,z2.s,z3.s
+.if mixin == 1
+ add w15,w15,w19
+.endif
+.inst 0x04a700c6 //add z6.s,z6.s,z7.s
+.if mixin == 1
+ add w16,w16,w20
+.endif
+.inst 0x04ab014a //add z10.s,z10.s,z11.s
+.if mixin == 1
+ add w17,w17,w21
+.endif
+.inst 0x04af01ce //add z14.s,z14.s,z15.s
+.if mixin == 1
+ add w18,w18,w22
+.endif
+.if mixin == 1
+ eor w11,w11,w15
+.endif
+.inst 0x04673441 //xar z1.s,z1.s,z2.s,25
+.if mixin == 1
+ ror w11,w11,25
+.endif
+.if mixin == 1
+ eor w12,w12,w16
+.endif
+.inst 0x046734c5 //xar z5.s,z5.s,z6.s,25
+.if mixin == 1
+ ror w12,w12,25
+.endif
+.if mixin == 1
+ eor w13,w13,w17
+.endif
+.inst 0x04673549 //xar z9.s,z9.s,z10.s,25
+.if mixin == 1
+ ror w13,w13,25
+.endif
+.if mixin == 1
+ eor w14,w14,w18
+.endif
+.inst 0x046735cd //xar z13.s,z13.s,z14.s,25
+.if mixin == 1
+ ror w14,w14,25
+.endif
+.inst 0x04a50000 //add z0.s,z0.s,z5.s
+.if mixin == 1
+ add w7,w7,w12
+.endif
+.inst 0x04a90084 //add z4.s,z4.s,z9.s
+.if mixin == 1
+ add w8,w8,w13
+.endif
+.inst 0x04ad0108 //add z8.s,z8.s,z13.s
+.if mixin == 1
+ add w9,w9,w14
+.endif
+.inst 0x04a1018c //add z12.s,z12.s,z1.s
+.if mixin == 1
+ add w10,w10,w11
+.endif
+.if mixin == 1
+ eor w22,w22,w7
+.endif
+.inst 0x0470340f //xar z15.s,z15.s,z0.s,16
+.if mixin == 1
+ ror w22,w22,16
+.endif
+.if mixin == 1
+ eor w19,w19,w8
+.endif
+.inst 0x04703483 //xar z3.s,z3.s,z4.s,16
+.if mixin == 1
+ ror w19,w19,16
+.endif
+.if mixin == 1
+ eor w20,w20,w9
+.endif
+.inst 0x04703507 //xar z7.s,z7.s,z8.s,16
+.if mixin == 1
+ ror w20,w20,16
+.endif
+.if mixin == 1
+ eor w21,w21,w10
+.endif
+.inst 0x0470358b //xar z11.s,z11.s,z12.s,16
+.if mixin == 1
+ ror w21,w21,16
+.endif
+.inst 0x04af014a //add z10.s,z10.s,z15.s
+.if mixin == 1
+ add w17,w17,w22
+.endif
+.inst 0x04a301ce //add z14.s,z14.s,z3.s
+.if mixin == 1
+ add w18,w18,w19
+.endif
+.inst 0x04a70042 //add z2.s,z2.s,z7.s
+.if mixin == 1
+ add w15,w15,w20
+.endif
+.inst 0x04ab00c6 //add z6.s,z6.s,z11.s
+.if mixin == 1
+ add w16,w16,w21
+.endif
+.if mixin == 1
+ eor w12,w12,w17
+.endif
+.inst 0x046c3545 //xar z5.s,z5.s,z10.s,20
+.if mixin == 1
+ ror w12,w12,20
+.endif
+.if mixin == 1
+ eor w13,w13,w18
+.endif
+.inst 0x046c35c9 //xar z9.s,z9.s,z14.s,20
+.if mixin == 1
+ ror w13,w13,20
+.endif
+.if mixin == 1
+ eor w14,w14,w15
+.endif
+.inst 0x046c344d //xar z13.s,z13.s,z2.s,20
+.if mixin == 1
+ ror w14,w14,20
+.endif
+.if mixin == 1
+ eor w11,w11,w16
+.endif
+.inst 0x046c34c1 //xar z1.s,z1.s,z6.s,20
+.if mixin == 1
+ ror w11,w11,20
+.endif
+.inst 0x04a50000 //add z0.s,z0.s,z5.s
+.if mixin == 1
+ add w7,w7,w12
+.endif
+.inst 0x04a90084 //add z4.s,z4.s,z9.s
+.if mixin == 1
+ add w8,w8,w13
+.endif
+.inst 0x04ad0108 //add z8.s,z8.s,z13.s
+.if mixin == 1
+ add w9,w9,w14
+.endif
+.inst 0x04a1018c //add z12.s,z12.s,z1.s
+.if mixin == 1
+ add w10,w10,w11
+.endif
+.if mixin == 1
+ eor w22,w22,w7
+.endif
+.inst 0x0468340f //xar z15.s,z15.s,z0.s,24
+.if mixin == 1
+ ror w22,w22,24
+.endif
+.if mixin == 1
+ eor w19,w19,w8
+.endif
+.inst 0x04683483 //xar z3.s,z3.s,z4.s,24
+.if mixin == 1
+ ror w19,w19,24
+.endif
+.if mixin == 1
+ eor w20,w20,w9
+.endif
+.inst 0x04683507 //xar z7.s,z7.s,z8.s,24
+.if mixin == 1
+ ror w20,w20,24
+.endif
+.if mixin == 1
+ eor w21,w21,w10
+.endif
+.inst 0x0468358b //xar z11.s,z11.s,z12.s,24
+.if mixin == 1
+ ror w21,w21,24
+.endif
+.inst 0x04af014a //add z10.s,z10.s,z15.s
+.if mixin == 1
+ add w17,w17,w22
+.endif
+.inst 0x04a301ce //add z14.s,z14.s,z3.s
+.if mixin == 1
+ add w18,w18,w19
+.endif
+.inst 0x04a70042 //add z2.s,z2.s,z7.s
+.if mixin == 1
+ add w15,w15,w20
+.endif
+.inst 0x04ab00c6 //add z6.s,z6.s,z11.s
+.if mixin == 1
+ add w16,w16,w21
+.endif
+.if mixin == 1
+ eor w12,w12,w17
+.endif
+.inst 0x04673545 //xar z5.s,z5.s,z10.s,25
+.if mixin == 1
+ ror w12,w12,25
+.endif
+.if mixin == 1
+ eor w13,w13,w18
+.endif
+.inst 0x046735c9 //xar z9.s,z9.s,z14.s,25
+.if mixin == 1
+ ror w13,w13,25
+.endif
+.if mixin == 1
+ eor w14,w14,w15
+.endif
+.inst 0x0467344d //xar z13.s,z13.s,z2.s,25
+.if mixin == 1
+ ror w14,w14,25
+.endif
+.if mixin == 1
+ eor w11,w11,w16
+.endif
+.inst 0x046734c1 //xar z1.s,z1.s,z6.s,25
+.if mixin == 1
+ ror w11,w11,25
+.endif
+ sub x6,x6,1
+ cbnz x6,10b
+.if mixin == 1
+ add w7,w7,w23
+.endif
+.inst 0x04b90000 //add z0.s,z0.s,z25.s
+.if mixin == 1
+ add x8,x8,x23,lsr #32
+.endif
+.inst 0x04ba0084 //add z4.s,z4.s,z26.s
+.if mixin == 1
+ add x7,x7,x8,lsl #32 // pack
+.endif
+.if mixin == 1
+ add w9,w9,w24
+.endif
+.inst 0x04bb0108 //add z8.s,z8.s,z27.s
+.if mixin == 1
+ add x10,x10,x24,lsr #32
+.endif
+.inst 0x04bc018c //add z12.s,z12.s,z28.s
+.if mixin == 1
+ add x9,x9,x10,lsl #32 // pack
+.endif
+.if mixin == 1
+ ldp x8,x10,[x1],#16
+.endif
+.if mixin == 1
+ add w11,w11,w25
+.endif
+.inst 0x04bd0021 //add z1.s,z1.s,z29.s
+.if mixin == 1
+ add x12,x12,x25,lsr #32
+.endif
+.inst 0x04be00a5 //add z5.s,z5.s,z30.s
+.if mixin == 1
+ add x11,x11,x12,lsl #32 // pack
+.endif
+.if mixin == 1
+ add w13,w13,w26
+.endif
+.inst 0x04b50129 //add z9.s,z9.s,z21.s
+.if mixin == 1
+ add x14,x14,x26,lsr #32
+.endif
+.inst 0x04b601ad //add z13.s,z13.s,z22.s
+.if mixin == 1
+ add x13,x13,x14,lsl #32 // pack
+.endif
+.if mixin == 1
+ ldp x12,x14,[x1],#16
+.endif
+.if mixin == 1
+ add w15,w15,w27
+.endif
+.inst 0x04b70042 //add z2.s,z2.s,z23.s
+.if mixin == 1
+ add x16,x16,x27,lsr #32
+.endif
+.inst 0x04b800c6 //add z6.s,z6.s,z24.s
+.if mixin == 1
+ add x15,x15,x16,lsl #32 // pack
+.endif
+.if mixin == 1
+ add w17,w17,w28
+.endif
+.inst 0x04b1014a //add z10.s,z10.s,z17.s
+.if mixin == 1
+ add x18,x18,x28,lsr #32
+.endif
+.inst 0x04b201ce //add z14.s,z14.s,z18.s
+.if mixin == 1
+ add x17,x17,x18,lsl #32 // pack
+.endif
+.if mixin == 1
+ ldp x16,x18,[x1],#16
+.endif
+.if mixin == 1
+ add w19,w19,w29
+.endif
+.inst 0x04b00063 //add z3.s,z3.s,z16.s
+.if mixin == 1
+ add x20,x20,x29,lsr #32
+.endif
+.inst 0x04b300e7 //add z7.s,z7.s,z19.s
+.if mixin == 1
+ add x19,x19,x20,lsl #32 // pack
+.endif
+.if mixin == 1
+ add w21,w21,w30
+.endif
+.inst 0x04b4016b //add z11.s,z11.s,z20.s
+.if mixin == 1
+ add x22,x22,x30,lsr #32
+.endif
+.inst 0x04bf01ef //add z15.s,z15.s,z31.s
+.if mixin == 1
+ add x21,x21,x22,lsl #32 // pack
+.endif
+.if mixin == 1
+ ldp x20,x22,[x1],#16
+.endif
+#ifdef __AARCH64EB__
+ rev x7,x7
+.inst 0x05a48000 //revb z0.s,p0/m,z0.s
+.inst 0x05a48084 //revb z4.s,p0/m,z4.s
+ rev x9,x9
+.inst 0x05a48108 //revb z8.s,p0/m,z8.s
+.inst 0x05a4818c //revb z12.s,p0/m,z12.s
+ rev x11,x11
+.inst 0x05a48021 //revb z1.s,p0/m,z1.s
+.inst 0x05a480a5 //revb z5.s,p0/m,z5.s
+ rev x13,x13
+.inst 0x05a48129 //revb z9.s,p0/m,z9.s
+.inst 0x05a481ad //revb z13.s,p0/m,z13.s
+ rev x15,x15
+.inst 0x05a48042 //revb z2.s,p0/m,z2.s
+.inst 0x05a480c6 //revb z6.s,p0/m,z6.s
+ rev x17,x17
+.inst 0x05a4814a //revb z10.s,p0/m,z10.s
+.inst 0x05a481ce //revb z14.s,p0/m,z14.s
+ rev x19,x19
+.inst 0x05a48063 //revb z3.s,p0/m,z3.s
+.inst 0x05a480e7 //revb z7.s,p0/m,z7.s
+ rev x21,x21
+.inst 0x05a4816b //revb z11.s,p0/m,z11.s
+.inst 0x05a481ef //revb z15.s,p0/m,z15.s
+#endif
+.if mixin == 1
+ add x29,x29,#1
+.endif
+ cmp x5,4
+ b.ne 200f
+.if mixin == 1
+ eor x7,x7,x8
+.endif
+.if mixin == 1
+ eor x9,x9,x10
+.endif
+.if mixin == 1
+ eor x11,x11,x12
+.endif
+.inst 0x05a46011 //zip1 z17.s,z0.s,z4.s
+.inst 0x05a46412 //zip2 z18.s,z0.s,z4.s
+.inst 0x05ac6113 //zip1 z19.s,z8.s,z12.s
+.inst 0x05ac6514 //zip2 z20.s,z8.s,z12.s
+
+.inst 0x05a56035 //zip1 z21.s,z1.s,z5.s
+.inst 0x05a56436 //zip2 z22.s,z1.s,z5.s
+.inst 0x05ad6137 //zip1 z23.s,z9.s,z13.s
+.inst 0x05ad6538 //zip2 z24.s,z9.s,z13.s
+
+.inst 0x05f36220 //zip1 z0.d,z17.d,z19.d
+.inst 0x05f36624 //zip2 z4.d,z17.d,z19.d
+.inst 0x05f46248 //zip1 z8.d,z18.d,z20.d
+.inst 0x05f4664c //zip2 z12.d,z18.d,z20.d
+
+.inst 0x05f762a1 //zip1 z1.d,z21.d,z23.d
+.inst 0x05f766a5 //zip2 z5.d,z21.d,z23.d
+.inst 0x05f862c9 //zip1 z9.d,z22.d,z24.d
+.inst 0x05f866cd //zip2 z13.d,z22.d,z24.d
+.if mixin == 1
+ eor x13,x13,x14
+.endif
+.if mixin == 1
+ eor x15,x15,x16
+.endif
+.if mixin == 1
+ eor x17,x17,x18
+.endif
+.inst 0x05a66051 //zip1 z17.s,z2.s,z6.s
+.inst 0x05a66452 //zip2 z18.s,z2.s,z6.s
+.inst 0x05ae6153 //zip1 z19.s,z10.s,z14.s
+.inst 0x05ae6554 //zip2 z20.s,z10.s,z14.s
+
+.inst 0x05a76075 //zip1 z21.s,z3.s,z7.s
+.inst 0x05a76476 //zip2 z22.s,z3.s,z7.s
+.inst 0x05af6177 //zip1 z23.s,z11.s,z15.s
+.inst 0x05af6578 //zip2 z24.s,z11.s,z15.s
+
+.inst 0x05f36222 //zip1 z2.d,z17.d,z19.d
+.inst 0x05f36626 //zip2 z6.d,z17.d,z19.d
+.inst 0x05f4624a //zip1 z10.d,z18.d,z20.d
+.inst 0x05f4664e //zip2 z14.d,z18.d,z20.d
+
+.inst 0x05f762a3 //zip1 z3.d,z21.d,z23.d
+.inst 0x05f766a7 //zip2 z7.d,z21.d,z23.d
+.inst 0x05f862cb //zip1 z11.d,z22.d,z24.d
+.inst 0x05f866cf //zip2 z15.d,z22.d,z24.d
+.if mixin == 1
+ eor x19,x19,x20
+.endif
+.if mixin == 1
+ eor x21,x21,x22
+.endif
+ ld1 {v17.4s,v18.4s,v19.4s,v20.4s},[x1],#64
+ ld1 {v21.4s,v22.4s,v23.4s,v24.4s},[x1],#64
+.inst 0x04b13000 //eor z0.d,z0.d,z17.d
+.inst 0x04b23021 //eor z1.d,z1.d,z18.d
+.inst 0x04b33042 //eor z2.d,z2.d,z19.d
+.inst 0x04b43063 //eor z3.d,z3.d,z20.d
+.inst 0x04b53084 //eor z4.d,z4.d,z21.d
+.inst 0x04b630a5 //eor z5.d,z5.d,z22.d
+.inst 0x04b730c6 //eor z6.d,z6.d,z23.d
+.inst 0x04b830e7 //eor z7.d,z7.d,z24.d
+ ld1 {v17.4s,v18.4s,v19.4s,v20.4s},[x1],#64
+ ld1 {v21.4s,v22.4s,v23.4s,v24.4s},[x1],#64
+.if mixin == 1
+ stp x7,x9,[x0],#16
+.endif
+.inst 0x04b13108 //eor z8.d,z8.d,z17.d
+.inst 0x04b23129 //eor z9.d,z9.d,z18.d
+.if mixin == 1
+ stp x11,x13,[x0],#16
+.endif
+.inst 0x04b3314a //eor z10.d,z10.d,z19.d
+.inst 0x04b4316b //eor z11.d,z11.d,z20.d
+.if mixin == 1
+ stp x15,x17,[x0],#16
+.endif
+.inst 0x04b5318c //eor z12.d,z12.d,z21.d
+.inst 0x04b631ad //eor z13.d,z13.d,z22.d
+.if mixin == 1
+ stp x19,x21,[x0],#16
+.endif
+.inst 0x04b731ce //eor z14.d,z14.d,z23.d
+.inst 0x04b831ef //eor z15.d,z15.d,z24.d
+ st1 {v0.4s,v1.4s,v2.4s,v3.4s},[x0],#64
+ st1 {v4.4s,v5.4s,v6.4s,v7.4s},[x0],#64
+ st1 {v8.4s,v9.4s,v10.4s,v11.4s},[x0],#64
+ st1 {v12.4s,v13.4s,v14.4s,v15.4s},[x0],#64
+ b 210f
+200:
+.inst 0x05a16011 //zip1 z17.s,z0.s,z1.s
+.inst 0x05a16412 //zip2 z18.s,z0.s,z1.s
+.inst 0x05a36053 //zip1 z19.s,z2.s,z3.s
+.inst 0x05a36454 //zip2 z20.s,z2.s,z3.s
+
+.inst 0x05a56095 //zip1 z21.s,z4.s,z5.s
+.inst 0x05a56496 //zip2 z22.s,z4.s,z5.s
+.inst 0x05a760d7 //zip1 z23.s,z6.s,z7.s
+.inst 0x05a764d8 //zip2 z24.s,z6.s,z7.s
+
+.inst 0x05f36220 //zip1 z0.d,z17.d,z19.d
+.inst 0x05f36621 //zip2 z1.d,z17.d,z19.d
+.inst 0x05f46242 //zip1 z2.d,z18.d,z20.d
+.inst 0x05f46643 //zip2 z3.d,z18.d,z20.d
+
+.inst 0x05f762a4 //zip1 z4.d,z21.d,z23.d
+.inst 0x05f766a5 //zip2 z5.d,z21.d,z23.d
+.inst 0x05f862c6 //zip1 z6.d,z22.d,z24.d
+.inst 0x05f866c7 //zip2 z7.d,z22.d,z24.d
+.if mixin == 1
+ eor x7,x7,x8
+.endif
+.if mixin == 1
+ eor x9,x9,x10
+.endif
+.inst 0x05a96111 //zip1 z17.s,z8.s,z9.s
+.inst 0x05a96512 //zip2 z18.s,z8.s,z9.s
+.inst 0x05ab6153 //zip1 z19.s,z10.s,z11.s
+.inst 0x05ab6554 //zip2 z20.s,z10.s,z11.s
+
+.inst 0x05ad6195 //zip1 z21.s,z12.s,z13.s
+.inst 0x05ad6596 //zip2 z22.s,z12.s,z13.s
+.inst 0x05af61d7 //zip1 z23.s,z14.s,z15.s
+.inst 0x05af65d8 //zip2 z24.s,z14.s,z15.s
+
+.inst 0x05f36228 //zip1 z8.d,z17.d,z19.d
+.inst 0x05f36629 //zip2 z9.d,z17.d,z19.d
+.inst 0x05f4624a //zip1 z10.d,z18.d,z20.d
+.inst 0x05f4664b //zip2 z11.d,z18.d,z20.d
+
+.inst 0x05f762ac //zip1 z12.d,z21.d,z23.d
+.inst 0x05f766ad //zip2 z13.d,z21.d,z23.d
+.inst 0x05f862ce //zip1 z14.d,z22.d,z24.d
+.inst 0x05f866cf //zip2 z15.d,z22.d,z24.d
+.if mixin == 1
+ eor x11,x11,x12
+.endif
+.if mixin == 1
+ eor x13,x13,x14
+.endif
+.inst 0x05a46011 //zip1 z17.s,z0.s,z4.s
+.inst 0x05a46412 //zip2 z18.s,z0.s,z4.s
+.inst 0x05ac6113 //zip1 z19.s,z8.s,z12.s
+.inst 0x05ac6514 //zip2 z20.s,z8.s,z12.s
+
+.inst 0x05a56035 //zip1 z21.s,z1.s,z5.s
+.inst 0x05a56436 //zip2 z22.s,z1.s,z5.s
+.inst 0x05ad6137 //zip1 z23.s,z9.s,z13.s
+.inst 0x05ad6538 //zip2 z24.s,z9.s,z13.s
+
+.inst 0x05f36220 //zip1 z0.d,z17.d,z19.d
+.inst 0x05f36624 //zip2 z4.d,z17.d,z19.d
+.inst 0x05f46248 //zip1 z8.d,z18.d,z20.d
+.inst 0x05f4664c //zip2 z12.d,z18.d,z20.d
+
+.inst 0x05f762a1 //zip1 z1.d,z21.d,z23.d
+.inst 0x05f766a5 //zip2 z5.d,z21.d,z23.d
+.inst 0x05f862c9 //zip1 z9.d,z22.d,z24.d
+.inst 0x05f866cd //zip2 z13.d,z22.d,z24.d
+.if mixin == 1
+ eor x15,x15,x16
+.endif
+.if mixin == 1
+ eor x17,x17,x18
+.endif
+.inst 0x05a66051 //zip1 z17.s,z2.s,z6.s
+.inst 0x05a66452 //zip2 z18.s,z2.s,z6.s
+.inst 0x05ae6153 //zip1 z19.s,z10.s,z14.s
+.inst 0x05ae6554 //zip2 z20.s,z10.s,z14.s
+
+.inst 0x05a76075 //zip1 z21.s,z3.s,z7.s
+.inst 0x05a76476 //zip2 z22.s,z3.s,z7.s
+.inst 0x05af6177 //zip1 z23.s,z11.s,z15.s
+.inst 0x05af6578 //zip2 z24.s,z11.s,z15.s
+
+.inst 0x05f36222 //zip1 z2.d,z17.d,z19.d
+.inst 0x05f36626 //zip2 z6.d,z17.d,z19.d
+.inst 0x05f4624a //zip1 z10.d,z18.d,z20.d
+.inst 0x05f4664e //zip2 z14.d,z18.d,z20.d
+
+.inst 0x05f762a3 //zip1 z3.d,z21.d,z23.d
+.inst 0x05f766a7 //zip2 z7.d,z21.d,z23.d
+.inst 0x05f862cb //zip1 z11.d,z22.d,z24.d
+.inst 0x05f866cf //zip2 z15.d,z22.d,z24.d
+.if mixin == 1
+ eor x19,x19,x20
+.endif
+.if mixin == 1
+ eor x21,x21,x22
+.endif
+.inst 0xa540a031 //ld1w {z17.s},p0/z,[x1,#0,MUL VL]
+.inst 0xa541a032 //ld1w {z18.s},p0/z,[x1,#1,MUL VL]
+.inst 0xa542a033 //ld1w {z19.s},p0/z,[x1,#2,MUL VL]
+.inst 0xa543a034 //ld1w {z20.s},p0/z,[x1,#3,MUL VL]
+.inst 0xa544a035 //ld1w {z21.s},p0/z,[x1,#4,MUL VL]
+.inst 0xa545a036 //ld1w {z22.s},p0/z,[x1,#5,MUL VL]
+.inst 0xa546a037 //ld1w {z23.s},p0/z,[x1,#6,MUL VL]
+.inst 0xa547a038 //ld1w {z24.s},p0/z,[x1,#7,MUL VL]
+.inst 0x04215101 //addvl x1,x1,8
+.inst 0x04b13000 //eor z0.d,z0.d,z17.d
+.inst 0x04b23084 //eor z4.d,z4.d,z18.d
+.inst 0x04b33108 //eor z8.d,z8.d,z19.d
+.inst 0x04b4318c //eor z12.d,z12.d,z20.d
+.inst 0x04b53021 //eor z1.d,z1.d,z21.d
+.inst 0x04b630a5 //eor z5.d,z5.d,z22.d
+.inst 0x04b73129 //eor z9.d,z9.d,z23.d
+.inst 0x04b831ad //eor z13.d,z13.d,z24.d
+.inst 0xa540a031 //ld1w {z17.s},p0/z,[x1,#0,MUL VL]
+.inst 0xa541a032 //ld1w {z18.s},p0/z,[x1,#1,MUL VL]
+.inst 0xa542a033 //ld1w {z19.s},p0/z,[x1,#2,MUL VL]
+.inst 0xa543a034 //ld1w {z20.s},p0/z,[x1,#3,MUL VL]
+.inst 0xa544a035 //ld1w {z21.s},p0/z,[x1,#4,MUL VL]
+.inst 0xa545a036 //ld1w {z22.s},p0/z,[x1,#5,MUL VL]
+.inst 0xa546a037 //ld1w {z23.s},p0/z,[x1,#6,MUL VL]
+.inst 0xa547a038 //ld1w {z24.s},p0/z,[x1,#7,MUL VL]
+.inst 0x04215101 //addvl x1,x1,8
+.if mixin == 1
+ stp x7,x9,[x0],#16
+.endif
+.inst 0x04b13042 //eor z2.d,z2.d,z17.d
+.inst 0x04b230c6 //eor z6.d,z6.d,z18.d
+.if mixin == 1
+ stp x11,x13,[x0],#16
+.endif
+.inst 0x04b3314a //eor z10.d,z10.d,z19.d
+.inst 0x04b431ce //eor z14.d,z14.d,z20.d
+.if mixin == 1
+ stp x15,x17,[x0],#16
+.endif
+.inst 0x04b53063 //eor z3.d,z3.d,z21.d
+.inst 0x04b630e7 //eor z7.d,z7.d,z22.d
+.if mixin == 1
+ stp x19,x21,[x0],#16
+.endif
+.inst 0x04b7316b //eor z11.d,z11.d,z23.d
+.inst 0x04b831ef //eor z15.d,z15.d,z24.d
+.inst 0xe540e000 //st1w {z0.s},p0,[x0,#0,MUL VL]
+.inst 0xe541e004 //st1w {z4.s},p0,[x0,#1,MUL VL]
+.inst 0xe542e008 //st1w {z8.s},p0,[x0,#2,MUL VL]
+.inst 0xe543e00c //st1w {z12.s},p0,[x0,#3,MUL VL]
+.inst 0xe544e001 //st1w {z1.s},p0,[x0,#4,MUL VL]
+.inst 0xe545e005 //st1w {z5.s},p0,[x0,#5,MUL VL]
+.inst 0xe546e009 //st1w {z9.s},p0,[x0,#6,MUL VL]
+.inst 0xe547e00d //st1w {z13.s},p0,[x0,#7,MUL VL]
+.inst 0x04205100 //addvl x0,x0,8
+.inst 0xe540e002 //st1w {z2.s},p0,[x0,#0,MUL VL]
+.inst 0xe541e006 //st1w {z6.s},p0,[x0,#1,MUL VL]
+.inst 0xe542e00a //st1w {z10.s},p0,[x0,#2,MUL VL]
+.inst 0xe543e00e //st1w {z14.s},p0,[x0,#3,MUL VL]
+.inst 0xe544e003 //st1w {z3.s},p0,[x0,#4,MUL VL]
+.inst 0xe545e007 //st1w {z7.s},p0,[x0,#5,MUL VL]
+.inst 0xe546e00b //st1w {z11.s},p0,[x0,#6,MUL VL]
+.inst 0xe547e00f //st1w {z15.s},p0,[x0,#7,MUL VL]
+.inst 0x04205100 //addvl x0,x0,8
+210:
+.inst 0x04b0e3fd //incw x29, ALL, MUL #1
+110:
+ b 2f
+1:
+.align 5
+100:
+ subs x7,x2,x5,lsl #6
+ b.lt 110f
+ mov x2,x7
+ b.eq 101f
+ cmp x2,64
+ b.lt 101f
+ mixin=1
+ lsr x8,x23,#32
+.inst 0x05a03ae0 //dup z0.s,w23
+.inst 0x05a03af9 //dup z25.s,w23
+.if mixin == 1
+ mov w7,w23
+.endif
+.inst 0x05a03904 //dup z4.s,w8
+.inst 0x05a0391a //dup z26.s,w8
+ lsr x10,x24,#32
+.inst 0x05a03b08 //dup z8.s,w24
+.inst 0x05a03b1b //dup z27.s,w24
+.if mixin == 1
+ mov w9,w24
+.endif
+.inst 0x05a0394c //dup z12.s,w10
+.inst 0x05a0395c //dup z28.s,w10
+ lsr x12,x25,#32
+.inst 0x05a03b21 //dup z1.s,w25
+.inst 0x05a03b3d //dup z29.s,w25
+.if mixin == 1
+ mov w11,w25
+.endif
+.inst 0x05a03985 //dup z5.s,w12
+.inst 0x05a0399e //dup z30.s,w12
+ lsr x14,x26,#32
+.inst 0x05a03b49 //dup z9.s,w26
+.inst 0x05a03b55 //dup z21.s,w26
+.if mixin == 1
+ mov w13,w26
+.endif
+.inst 0x05a039cd //dup z13.s,w14
+.inst 0x05a039d6 //dup z22.s,w14
+ lsr x16,x27,#32
+.inst 0x05a03b62 //dup z2.s,w27
+.inst 0x05a03b77 //dup z23.s,w27
+.if mixin == 1
+ mov w15,w27
+.endif
+.inst 0x05a03a06 //dup z6.s,w16
+.inst 0x05a03a18 //dup z24.s,w16
+ lsr x18,x28,#32
+.inst 0x05a03b8a //dup z10.s,w28
+.if mixin == 1
+ mov w17,w28
+.endif
+.inst 0x05a03a4e //dup z14.s,w18
+ lsr x22,x30,#32
+.inst 0x05a03bcb //dup z11.s,w30
+.if mixin == 1
+ mov w21,w30
+.endif
+.inst 0x05a03acf //dup z15.s,w22
+.if mixin == 1
+ add w20,w29,#1
+ mov w19,w29
+.inst 0x04a14690 //index z16.s,w20,1
+.inst 0x04a14683 //index z3.s,w20,1
+.else
+.inst 0x04a147b0 //index z16.s,w29,1
+.inst 0x04a147a3 //index z3.s,w29,1
+.endif
+ lsr x20,x29,#32
+.inst 0x05a03a87 //dup z7.s,w20
+ mov x6,#10
+10:
+.align 5
+.inst 0x04a10000 //add z0.s,z0.s,z1.s
+.if mixin == 1
+ add w7,w7,w11
+.endif
+.inst 0x04a50084 //add z4.s,z4.s,z5.s
+.if mixin == 1
+ add w8,w8,w12
+.endif
+.inst 0x04a90108 //add z8.s,z8.s,z9.s
+.if mixin == 1
+ add w9,w9,w13
+.endif
+.inst 0x04ad018c //add z12.s,z12.s,z13.s
+.if mixin == 1
+ add w10,w10,w14
+.endif
+.inst 0x04a03063 //eor z3.d,z3.d,z0.d
+.if mixin == 1
+ eor w19,w19,w7
+.endif
+.inst 0x04a430e7 //eor z7.d,z7.d,z4.d
+.if mixin == 1
+ eor w20,w20,w8
+.endif
+.inst 0x04a8316b //eor z11.d,z11.d,z8.d
+.if mixin == 1
+ eor w21,w21,w9
+.endif
+.inst 0x04ac31ef //eor z15.d,z15.d,z12.d
+.if mixin == 1
+ eor w22,w22,w10
+.endif
+.inst 0x05a58063 //revh z3.s,p0/m,z3.s
+.if mixin == 1
+ ror w19,w19,#16
+.endif
+.inst 0x05a580e7 //revh z7.s,p0/m,z7.s
+.if mixin == 1
+ ror w20,w20,#16
+.endif
+.inst 0x05a5816b //revh z11.s,p0/m,z11.s
+.if mixin == 1
+ ror w21,w21,#16
+.endif
+.inst 0x05a581ef //revh z15.s,p0/m,z15.s
+.if mixin == 1
+ ror w22,w22,#16
+.endif
+.inst 0x04a30042 //add z2.s,z2.s,z3.s
+.if mixin == 1
+ add w15,w15,w19
+.endif
+.inst 0x04a700c6 //add z6.s,z6.s,z7.s
+.if mixin == 1
+ add w16,w16,w20
+.endif
+.inst 0x04ab014a //add z10.s,z10.s,z11.s
+.if mixin == 1
+ add w17,w17,w21
+.endif
+.inst 0x04af01ce //add z14.s,z14.s,z15.s
+.if mixin == 1
+ add w18,w18,w22
+.endif
+.inst 0x04a23021 //eor z1.d,z1.d,z2.d
+.if mixin == 1
+ eor w11,w11,w15
+.endif
+.inst 0x04a630a5 //eor z5.d,z5.d,z6.d
+.if mixin == 1
+ eor w12,w12,w16
+.endif
+.inst 0x04aa3129 //eor z9.d,z9.d,z10.d
+.if mixin == 1
+ eor w13,w13,w17
+.endif
+.inst 0x04ae31ad //eor z13.d,z13.d,z14.d
+.if mixin == 1
+ eor w14,w14,w18
+.endif
+.inst 0x046c9c31 //lsl z17.s,z1.s,12
+.inst 0x046c9cb2 //lsl z18.s,z5.s,12
+.inst 0x046c9d33 //lsl z19.s,z9.s,12
+.inst 0x046c9db4 //lsl z20.s,z13.s,12
+.inst 0x046c9421 //lsr z1.s,z1.s,20
+.if mixin == 1
+ ror w11,w11,20
+.endif
+.inst 0x046c94a5 //lsr z5.s,z5.s,20
+.if mixin == 1
+ ror w12,w12,20
+.endif
+.inst 0x046c9529 //lsr z9.s,z9.s,20
+.if mixin == 1
+ ror w13,w13,20
+.endif
+.inst 0x046c95ad //lsr z13.s,z13.s,20
+.if mixin == 1
+ ror w14,w14,20
+.endif
+.inst 0x04713021 //orr z1.d,z1.d,z17.d
+.inst 0x047230a5 //orr z5.d,z5.d,z18.d
+.inst 0x04733129 //orr z9.d,z9.d,z19.d
+.inst 0x047431ad //orr z13.d,z13.d,z20.d
+.inst 0x04a10000 //add z0.s,z0.s,z1.s
+.if mixin == 1
+ add w7,w7,w11
+.endif
+.inst 0x04a50084 //add z4.s,z4.s,z5.s
+.if mixin == 1
+ add w8,w8,w12
+.endif
+.inst 0x04a90108 //add z8.s,z8.s,z9.s
+.if mixin == 1
+ add w9,w9,w13
+.endif
+.inst 0x04ad018c //add z12.s,z12.s,z13.s
+.if mixin == 1
+ add w10,w10,w14
+.endif
+.inst 0x04a03063 //eor z3.d,z3.d,z0.d
+.if mixin == 1
+ eor w19,w19,w7
+.endif
+.inst 0x04a430e7 //eor z7.d,z7.d,z4.d
+.if mixin == 1
+ eor w20,w20,w8
+.endif
+.inst 0x04a8316b //eor z11.d,z11.d,z8.d
+.if mixin == 1
+ eor w21,w21,w9
+.endif
+.inst 0x04ac31ef //eor z15.d,z15.d,z12.d
+.if mixin == 1
+ eor w22,w22,w10
+.endif
+.inst 0x053f3063 //tbl z3.b,{z3.b},z31.b
+.if mixin == 1
+ ror w19,w19,#24
+.endif
+.inst 0x053f30e7 //tbl z7.b,{z7.b},z31.b
+.if mixin == 1
+ ror w20,w20,#24
+.endif
+.inst 0x053f316b //tbl z11.b,{z11.b},z31.b
+.if mixin == 1
+ ror w21,w21,#24
+.endif
+.inst 0x053f31ef //tbl z15.b,{z15.b},z31.b
+.if mixin == 1
+ ror w22,w22,#24
+.endif
+.inst 0x04a30042 //add z2.s,z2.s,z3.s
+.if mixin == 1
+ add w15,w15,w19
+.endif
+.inst 0x04a700c6 //add z6.s,z6.s,z7.s
+.if mixin == 1
+ add w16,w16,w20
+.endif
+.inst 0x04ab014a //add z10.s,z10.s,z11.s
+.if mixin == 1
+ add w17,w17,w21
+.endif
+.inst 0x04af01ce //add z14.s,z14.s,z15.s
+.if mixin == 1
+ add w18,w18,w22
+.endif
+.inst 0x04a23021 //eor z1.d,z1.d,z2.d
+.if mixin == 1
+ eor w11,w11,w15
+.endif
+.inst 0x04a630a5 //eor z5.d,z5.d,z6.d
+.if mixin == 1
+ eor w12,w12,w16
+.endif
+.inst 0x04aa3129 //eor z9.d,z9.d,z10.d
+.if mixin == 1
+ eor w13,w13,w17
+.endif
+.inst 0x04ae31ad //eor z13.d,z13.d,z14.d
+.if mixin == 1
+ eor w14,w14,w18
+.endif
+.inst 0x04679c31 //lsl z17.s,z1.s,7
+.inst 0x04679cb2 //lsl z18.s,z5.s,7
+.inst 0x04679d33 //lsl z19.s,z9.s,7
+.inst 0x04679db4 //lsl z20.s,z13.s,7
+.inst 0x04679421 //lsr z1.s,z1.s,25
+.if mixin == 1
+ ror w11,w11,25
+.endif
+.inst 0x046794a5 //lsr z5.s,z5.s,25
+.if mixin == 1
+ ror w12,w12,25
+.endif
+.inst 0x04679529 //lsr z9.s,z9.s,25
+.if mixin == 1
+ ror w13,w13,25
+.endif
+.inst 0x046795ad //lsr z13.s,z13.s,25
+.if mixin == 1
+ ror w14,w14,25
+.endif
+.inst 0x04713021 //orr z1.d,z1.d,z17.d
+.inst 0x047230a5 //orr z5.d,z5.d,z18.d
+.inst 0x04733129 //orr z9.d,z9.d,z19.d
+.inst 0x047431ad //orr z13.d,z13.d,z20.d
+.inst 0x04a50000 //add z0.s,z0.s,z5.s
+.if mixin == 1
+ add w7,w7,w12
+.endif
+.inst 0x04a90084 //add z4.s,z4.s,z9.s
+.if mixin == 1
+ add w8,w8,w13
+.endif
+.inst 0x04ad0108 //add z8.s,z8.s,z13.s
+.if mixin == 1
+ add w9,w9,w14
+.endif
+.inst 0x04a1018c //add z12.s,z12.s,z1.s
+.if mixin == 1
+ add w10,w10,w11
+.endif
+.inst 0x04a031ef //eor z15.d,z15.d,z0.d
+.if mixin == 1
+ eor w22,w22,w7
+.endif
+.inst 0x04a43063 //eor z3.d,z3.d,z4.d
+.if mixin == 1
+ eor w19,w19,w8
+.endif
+.inst 0x04a830e7 //eor z7.d,z7.d,z8.d
+.if mixin == 1
+ eor w20,w20,w9
+.endif
+.inst 0x04ac316b //eor z11.d,z11.d,z12.d
+.if mixin == 1
+ eor w21,w21,w10
+.endif
+.inst 0x05a581ef //revh z15.s,p0/m,z15.s
+.if mixin == 1
+ ror w22,w22,#16
+.endif
+.inst 0x05a58063 //revh z3.s,p0/m,z3.s
+.if mixin == 1
+ ror w19,w19,#16
+.endif
+.inst 0x05a580e7 //revh z7.s,p0/m,z7.s
+.if mixin == 1
+ ror w20,w20,#16
+.endif
+.inst 0x05a5816b //revh z11.s,p0/m,z11.s
+.if mixin == 1
+ ror w21,w21,#16
+.endif
+.inst 0x04af014a //add z10.s,z10.s,z15.s
+.if mixin == 1
+ add w17,w17,w22
+.endif
+.inst 0x04a301ce //add z14.s,z14.s,z3.s
+.if mixin == 1
+ add w18,w18,w19
+.endif
+.inst 0x04a70042 //add z2.s,z2.s,z7.s
+.if mixin == 1
+ add w15,w15,w20
+.endif
+.inst 0x04ab00c6 //add z6.s,z6.s,z11.s
+.if mixin == 1
+ add w16,w16,w21
+.endif
+.inst 0x04aa30a5 //eor z5.d,z5.d,z10.d
+.if mixin == 1
+ eor w12,w12,w17
+.endif
+.inst 0x04ae3129 //eor z9.d,z9.d,z14.d
+.if mixin == 1
+ eor w13,w13,w18
+.endif
+.inst 0x04a231ad //eor z13.d,z13.d,z2.d
+.if mixin == 1
+ eor w14,w14,w15
+.endif
+.inst 0x04a63021 //eor z1.d,z1.d,z6.d
+.if mixin == 1
+ eor w11,w11,w16
+.endif
+.inst 0x046c9cb1 //lsl z17.s,z5.s,12
+.inst 0x046c9d32 //lsl z18.s,z9.s,12
+.inst 0x046c9db3 //lsl z19.s,z13.s,12
+.inst 0x046c9c34 //lsl z20.s,z1.s,12
+.inst 0x046c94a5 //lsr z5.s,z5.s,20
+.if mixin == 1
+ ror w12,w12,20
+.endif
+.inst 0x046c9529 //lsr z9.s,z9.s,20
+.if mixin == 1
+ ror w13,w13,20
+.endif
+.inst 0x046c95ad //lsr z13.s,z13.s,20
+.if mixin == 1
+ ror w14,w14,20
+.endif
+.inst 0x046c9421 //lsr z1.s,z1.s,20
+.if mixin == 1
+ ror w11,w11,20
+.endif
+.inst 0x047130a5 //orr z5.d,z5.d,z17.d
+.inst 0x04723129 //orr z9.d,z9.d,z18.d
+.inst 0x047331ad //orr z13.d,z13.d,z19.d
+.inst 0x04743021 //orr z1.d,z1.d,z20.d
+.inst 0x04a50000 //add z0.s,z0.s,z5.s
+.if mixin == 1
+ add w7,w7,w12
+.endif
+.inst 0x04a90084 //add z4.s,z4.s,z9.s
+.if mixin == 1
+ add w8,w8,w13
+.endif
+.inst 0x04ad0108 //add z8.s,z8.s,z13.s
+.if mixin == 1
+ add w9,w9,w14
+.endif
+.inst 0x04a1018c //add z12.s,z12.s,z1.s
+.if mixin == 1
+ add w10,w10,w11
+.endif
+.inst 0x04a031ef //eor z15.d,z15.d,z0.d
+.if mixin == 1
+ eor w22,w22,w7
+.endif
+.inst 0x04a43063 //eor z3.d,z3.d,z4.d
+.if mixin == 1
+ eor w19,w19,w8
+.endif
+.inst 0x04a830e7 //eor z7.d,z7.d,z8.d
+.if mixin == 1
+ eor w20,w20,w9
+.endif
+.inst 0x04ac316b //eor z11.d,z11.d,z12.d
+.if mixin == 1
+ eor w21,w21,w10
+.endif
+.inst 0x053f31ef //tbl z15.b,{z15.b},z31.b
+.if mixin == 1
+ ror w22,w22,#24
+.endif
+.inst 0x053f3063 //tbl z3.b,{z3.b},z31.b
+.if mixin == 1
+ ror w19,w19,#24
+.endif
+.inst 0x053f30e7 //tbl z7.b,{z7.b},z31.b
+.if mixin == 1
+ ror w20,w20,#24
+.endif
+.inst 0x053f316b //tbl z11.b,{z11.b},z31.b
+.if mixin == 1
+ ror w21,w21,#24
+.endif
+.inst 0x04af014a //add z10.s,z10.s,z15.s
+.if mixin == 1
+ add w17,w17,w22
+.endif
+.inst 0x04a301ce //add z14.s,z14.s,z3.s
+.if mixin == 1
+ add w18,w18,w19
+.endif
+.inst 0x04a70042 //add z2.s,z2.s,z7.s
+.if mixin == 1
+ add w15,w15,w20
+.endif
+.inst 0x04ab00c6 //add z6.s,z6.s,z11.s
+.if mixin == 1
+ add w16,w16,w21
+.endif
+.inst 0x04aa30a5 //eor z5.d,z5.d,z10.d
+.if mixin == 1
+ eor w12,w12,w17
+.endif
+.inst 0x04ae3129 //eor z9.d,z9.d,z14.d
+.if mixin == 1
+ eor w13,w13,w18
+.endif
+.inst 0x04a231ad //eor z13.d,z13.d,z2.d
+.if mixin == 1
+ eor w14,w14,w15
+.endif
+.inst 0x04a63021 //eor z1.d,z1.d,z6.d
+.if mixin == 1
+ eor w11,w11,w16
+.endif
+.inst 0x04679cb1 //lsl z17.s,z5.s,7
+.inst 0x04679d32 //lsl z18.s,z9.s,7
+.inst 0x04679db3 //lsl z19.s,z13.s,7
+.inst 0x04679c34 //lsl z20.s,z1.s,7
+.inst 0x046794a5 //lsr z5.s,z5.s,25
+.if mixin == 1
+ ror w12,w12,25
+.endif
+.inst 0x04679529 //lsr z9.s,z9.s,25
+.if mixin == 1
+ ror w13,w13,25
+.endif
+.inst 0x046795ad //lsr z13.s,z13.s,25
+.if mixin == 1
+ ror w14,w14,25
+.endif
+.inst 0x04679421 //lsr z1.s,z1.s,25
+.if mixin == 1
+ ror w11,w11,25
+.endif
+.inst 0x047130a5 //orr z5.d,z5.d,z17.d
+.inst 0x04723129 //orr z9.d,z9.d,z18.d
+.inst 0x047331ad //orr z13.d,z13.d,z19.d
+.inst 0x04743021 //orr z1.d,z1.d,z20.d
+ sub x6,x6,1
+ cbnz x6,10b
+ lsr x6,x28,#32
+.inst 0x05a03b91 //dup z17.s,w28
+.inst 0x05a038d2 //dup z18.s,w6
+ lsr x6,x29,#32
+.inst 0x05a038d3 //dup z19.s,w6
+ lsr x6,x30,#32
+.if mixin == 1
+ add w7,w7,w23
+.endif
+.inst 0x04b90000 //add z0.s,z0.s,z25.s
+.if mixin == 1
+ add x8,x8,x23,lsr #32
+.endif
+.inst 0x04ba0084 //add z4.s,z4.s,z26.s
+.if mixin == 1
+ add x7,x7,x8,lsl #32 // pack
+.endif
+.if mixin == 1
+ add w9,w9,w24
+.endif
+.inst 0x04bb0108 //add z8.s,z8.s,z27.s
+.if mixin == 1
+ add x10,x10,x24,lsr #32
+.endif
+.inst 0x04bc018c //add z12.s,z12.s,z28.s
+.if mixin == 1
+ add x9,x9,x10,lsl #32 // pack
+.endif
+.if mixin == 1
+ ldp x8,x10,[x1],#16
+.endif
+.if mixin == 1
+ add w11,w11,w25
+.endif
+.inst 0x04bd0021 //add z1.s,z1.s,z29.s
+.if mixin == 1
+ add x12,x12,x25,lsr #32
+.endif
+.inst 0x04be00a5 //add z5.s,z5.s,z30.s
+.if mixin == 1
+ add x11,x11,x12,lsl #32 // pack
+.endif
+.if mixin == 1
+ add w13,w13,w26
+.endif
+.inst 0x04b50129 //add z9.s,z9.s,z21.s
+.if mixin == 1
+ add x14,x14,x26,lsr #32
+.endif
+.inst 0x04b601ad //add z13.s,z13.s,z22.s
+.if mixin == 1
+ add x13,x13,x14,lsl #32 // pack
+.endif
+.if mixin == 1
+ ldp x12,x14,[x1],#16
+.endif
+.if mixin == 1
+ add w15,w15,w27
+.endif
+.inst 0x04b70042 //add z2.s,z2.s,z23.s
+.if mixin == 1
+ add x16,x16,x27,lsr #32
+.endif
+.inst 0x04b800c6 //add z6.s,z6.s,z24.s
+.if mixin == 1
+ add x15,x15,x16,lsl #32 // pack
+.endif
+.if mixin == 1
+ add w17,w17,w28
+.endif
+.inst 0x04b1014a //add z10.s,z10.s,z17.s
+.if mixin == 1
+ add x18,x18,x28,lsr #32
+.endif
+.inst 0x04b201ce //add z14.s,z14.s,z18.s
+.if mixin == 1
+ add x17,x17,x18,lsl #32 // pack
+.endif
+.if mixin == 1
+ ldp x16,x18,[x1],#16
+.endif
+.inst 0x05a03bd4 //dup z20.s,w30
+.inst 0x05a038d9 //dup z25.s,w6 // bak[15] not available for SVE
+.if mixin == 1
+ add w19,w19,w29
+.endif
+.inst 0x04b00063 //add z3.s,z3.s,z16.s
+.if mixin == 1
+ add x20,x20,x29,lsr #32
+.endif
+.inst 0x04b300e7 //add z7.s,z7.s,z19.s
+.if mixin == 1
+ add x19,x19,x20,lsl #32 // pack
+.endif
+.if mixin == 1
+ add w21,w21,w30
+.endif
+.inst 0x04b4016b //add z11.s,z11.s,z20.s
+.if mixin == 1
+ add x22,x22,x30,lsr #32
+.endif
+.inst 0x04b901ef //add z15.s,z15.s,z25.s
+.if mixin == 1
+ add x21,x21,x22,lsl #32 // pack
+.endif
+.if mixin == 1
+ ldp x20,x22,[x1],#16
+.endif
+#ifdef __AARCH64EB__
+ rev x7,x7
+.inst 0x05a48000 //revb z0.s,p0/m,z0.s
+.inst 0x05a48084 //revb z4.s,p0/m,z4.s
+ rev x9,x9
+.inst 0x05a48108 //revb z8.s,p0/m,z8.s
+.inst 0x05a4818c //revb z12.s,p0/m,z12.s
+ rev x11,x11
+.inst 0x05a48021 //revb z1.s,p0/m,z1.s
+.inst 0x05a480a5 //revb z5.s,p0/m,z5.s
+ rev x13,x13
+.inst 0x05a48129 //revb z9.s,p0/m,z9.s
+.inst 0x05a481ad //revb z13.s,p0/m,z13.s
+ rev x15,x15
+.inst 0x05a48042 //revb z2.s,p0/m,z2.s
+.inst 0x05a480c6 //revb z6.s,p0/m,z6.s
+ rev x17,x17
+.inst 0x05a4814a //revb z10.s,p0/m,z10.s
+.inst 0x05a481ce //revb z14.s,p0/m,z14.s
+ rev x19,x19
+.inst 0x05a48063 //revb z3.s,p0/m,z3.s
+.inst 0x05a480e7 //revb z7.s,p0/m,z7.s
+ rev x21,x21
+.inst 0x05a4816b //revb z11.s,p0/m,z11.s
+.inst 0x05a481ef //revb z15.s,p0/m,z15.s
+#endif
+.if mixin == 1
+ add x29,x29,#1
+.endif
+ cmp x5,4
+ b.ne 200f
+.if mixin == 1
+ eor x7,x7,x8
+.endif
+.if mixin == 1
+ eor x9,x9,x10
+.endif
+.if mixin == 1
+ eor x11,x11,x12
+.endif
+.inst 0x05a46011 //zip1 z17.s,z0.s,z4.s
+.inst 0x05a46412 //zip2 z18.s,z0.s,z4.s
+.inst 0x05ac6113 //zip1 z19.s,z8.s,z12.s
+.inst 0x05ac6514 //zip2 z20.s,z8.s,z12.s
+
+.inst 0x05a56035 //zip1 z21.s,z1.s,z5.s
+.inst 0x05a56436 //zip2 z22.s,z1.s,z5.s
+.inst 0x05ad6137 //zip1 z23.s,z9.s,z13.s
+.inst 0x05ad6538 //zip2 z24.s,z9.s,z13.s
+
+.inst 0x05f36220 //zip1 z0.d,z17.d,z19.d
+.inst 0x05f36624 //zip2 z4.d,z17.d,z19.d
+.inst 0x05f46248 //zip1 z8.d,z18.d,z20.d
+.inst 0x05f4664c //zip2 z12.d,z18.d,z20.d
+
+.inst 0x05f762a1 //zip1 z1.d,z21.d,z23.d
+.inst 0x05f766a5 //zip2 z5.d,z21.d,z23.d
+.inst 0x05f862c9 //zip1 z9.d,z22.d,z24.d
+.inst 0x05f866cd //zip2 z13.d,z22.d,z24.d
+.if mixin == 1
+ eor x13,x13,x14
+.endif
+.if mixin == 1
+ eor x15,x15,x16
+.endif
+.if mixin == 1
+ eor x17,x17,x18
+.endif
+.inst 0x05a66051 //zip1 z17.s,z2.s,z6.s
+.inst 0x05a66452 //zip2 z18.s,z2.s,z6.s
+.inst 0x05ae6153 //zip1 z19.s,z10.s,z14.s
+.inst 0x05ae6554 //zip2 z20.s,z10.s,z14.s
+
+.inst 0x05a76075 //zip1 z21.s,z3.s,z7.s
+.inst 0x05a76476 //zip2 z22.s,z3.s,z7.s
+.inst 0x05af6177 //zip1 z23.s,z11.s,z15.s
+.inst 0x05af6578 //zip2 z24.s,z11.s,z15.s
+
+.inst 0x05f36222 //zip1 z2.d,z17.d,z19.d
+.inst 0x05f36626 //zip2 z6.d,z17.d,z19.d
+.inst 0x05f4624a //zip1 z10.d,z18.d,z20.d
+.inst 0x05f4664e //zip2 z14.d,z18.d,z20.d
+
+.inst 0x05f762a3 //zip1 z3.d,z21.d,z23.d
+.inst 0x05f766a7 //zip2 z7.d,z21.d,z23.d
+.inst 0x05f862cb //zip1 z11.d,z22.d,z24.d
+.inst 0x05f866cf //zip2 z15.d,z22.d,z24.d
+.if mixin == 1
+ eor x19,x19,x20
+.endif
+.if mixin == 1
+ eor x21,x21,x22
+.endif
+ ld1 {v17.4s,v18.4s,v19.4s,v20.4s},[x1],#64
+ ld1 {v21.4s,v22.4s,v23.4s,v24.4s},[x1],#64
+.inst 0x04b13000 //eor z0.d,z0.d,z17.d
+.inst 0x04b23021 //eor z1.d,z1.d,z18.d
+.inst 0x04b33042 //eor z2.d,z2.d,z19.d
+.inst 0x04b43063 //eor z3.d,z3.d,z20.d
+.inst 0x04b53084 //eor z4.d,z4.d,z21.d
+.inst 0x04b630a5 //eor z5.d,z5.d,z22.d
+.inst 0x04b730c6 //eor z6.d,z6.d,z23.d
+.inst 0x04b830e7 //eor z7.d,z7.d,z24.d
+ ld1 {v17.4s,v18.4s,v19.4s,v20.4s},[x1],#64
+ ld1 {v21.4s,v22.4s,v23.4s,v24.4s},[x1],#64
+.if mixin == 1
+ stp x7,x9,[x0],#16
+.endif
+.inst 0x04b13108 //eor z8.d,z8.d,z17.d
+.inst 0x04b23129 //eor z9.d,z9.d,z18.d
+.if mixin == 1
+ stp x11,x13,[x0],#16
+.endif
+.inst 0x04b3314a //eor z10.d,z10.d,z19.d
+.inst 0x04b4316b //eor z11.d,z11.d,z20.d
+.if mixin == 1
+ stp x15,x17,[x0],#16
+.endif
+.inst 0x04b5318c //eor z12.d,z12.d,z21.d
+.inst 0x04b631ad //eor z13.d,z13.d,z22.d
+.if mixin == 1
+ stp x19,x21,[x0],#16
+.endif
+.inst 0x04b731ce //eor z14.d,z14.d,z23.d
+.inst 0x04b831ef //eor z15.d,z15.d,z24.d
+ st1 {v0.4s,v1.4s,v2.4s,v3.4s},[x0],#64
+ st1 {v4.4s,v5.4s,v6.4s,v7.4s},[x0],#64
+ st1 {v8.4s,v9.4s,v10.4s,v11.4s},[x0],#64
+ st1 {v12.4s,v13.4s,v14.4s,v15.4s},[x0],#64
+ b 210f
+200:
+.inst 0x05a16011 //zip1 z17.s,z0.s,z1.s
+.inst 0x05a16412 //zip2 z18.s,z0.s,z1.s
+.inst 0x05a36053 //zip1 z19.s,z2.s,z3.s
+.inst 0x05a36454 //zip2 z20.s,z2.s,z3.s
+
+.inst 0x05a56095 //zip1 z21.s,z4.s,z5.s
+.inst 0x05a56496 //zip2 z22.s,z4.s,z5.s
+.inst 0x05a760d7 //zip1 z23.s,z6.s,z7.s
+.inst 0x05a764d8 //zip2 z24.s,z6.s,z7.s
+
+.inst 0x05f36220 //zip1 z0.d,z17.d,z19.d
+.inst 0x05f36621 //zip2 z1.d,z17.d,z19.d
+.inst 0x05f46242 //zip1 z2.d,z18.d,z20.d
+.inst 0x05f46643 //zip2 z3.d,z18.d,z20.d
+
+.inst 0x05f762a4 //zip1 z4.d,z21.d,z23.d
+.inst 0x05f766a5 //zip2 z5.d,z21.d,z23.d
+.inst 0x05f862c6 //zip1 z6.d,z22.d,z24.d
+.inst 0x05f866c7 //zip2 z7.d,z22.d,z24.d
+.if mixin == 1
+ eor x7,x7,x8
+.endif
+.if mixin == 1
+ eor x9,x9,x10
+.endif
+.inst 0x05a96111 //zip1 z17.s,z8.s,z9.s
+.inst 0x05a96512 //zip2 z18.s,z8.s,z9.s
+.inst 0x05ab6153 //zip1 z19.s,z10.s,z11.s
+.inst 0x05ab6554 //zip2 z20.s,z10.s,z11.s
+
+.inst 0x05ad6195 //zip1 z21.s,z12.s,z13.s
+.inst 0x05ad6596 //zip2 z22.s,z12.s,z13.s
+.inst 0x05af61d7 //zip1 z23.s,z14.s,z15.s
+.inst 0x05af65d8 //zip2 z24.s,z14.s,z15.s
+
+.inst 0x05f36228 //zip1 z8.d,z17.d,z19.d
+.inst 0x05f36629 //zip2 z9.d,z17.d,z19.d
+.inst 0x05f4624a //zip1 z10.d,z18.d,z20.d
+.inst 0x05f4664b //zip2 z11.d,z18.d,z20.d
+
+.inst 0x05f762ac //zip1 z12.d,z21.d,z23.d
+.inst 0x05f766ad //zip2 z13.d,z21.d,z23.d
+.inst 0x05f862ce //zip1 z14.d,z22.d,z24.d
+.inst 0x05f866cf //zip2 z15.d,z22.d,z24.d
+.if mixin == 1
+ eor x11,x11,x12
+.endif
+.if mixin == 1
+ eor x13,x13,x14
+.endif
+.inst 0x05a46011 //zip1 z17.s,z0.s,z4.s
+.inst 0x05a46412 //zip2 z18.s,z0.s,z4.s
+.inst 0x05ac6113 //zip1 z19.s,z8.s,z12.s
+.inst 0x05ac6514 //zip2 z20.s,z8.s,z12.s
+
+.inst 0x05a56035 //zip1 z21.s,z1.s,z5.s
+.inst 0x05a56436 //zip2 z22.s,z1.s,z5.s
+.inst 0x05ad6137 //zip1 z23.s,z9.s,z13.s
+.inst 0x05ad6538 //zip2 z24.s,z9.s,z13.s
+
+.inst 0x05f36220 //zip1 z0.d,z17.d,z19.d
+.inst 0x05f36624 //zip2 z4.d,z17.d,z19.d
+.inst 0x05f46248 //zip1 z8.d,z18.d,z20.d
+.inst 0x05f4664c //zip2 z12.d,z18.d,z20.d
+
+.inst 0x05f762a1 //zip1 z1.d,z21.d,z23.d
+.inst 0x05f766a5 //zip2 z5.d,z21.d,z23.d
+.inst 0x05f862c9 //zip1 z9.d,z22.d,z24.d
+.inst 0x05f866cd //zip2 z13.d,z22.d,z24.d
+.if mixin == 1
+ eor x15,x15,x16
+.endif
+.if mixin == 1
+ eor x17,x17,x18
+.endif
+.inst 0x05a66051 //zip1 z17.s,z2.s,z6.s
+.inst 0x05a66452 //zip2 z18.s,z2.s,z6.s
+.inst 0x05ae6153 //zip1 z19.s,z10.s,z14.s
+.inst 0x05ae6554 //zip2 z20.s,z10.s,z14.s
+
+.inst 0x05a76075 //zip1 z21.s,z3.s,z7.s
+.inst 0x05a76476 //zip2 z22.s,z3.s,z7.s
+.inst 0x05af6177 //zip1 z23.s,z11.s,z15.s
+.inst 0x05af6578 //zip2 z24.s,z11.s,z15.s
+
+.inst 0x05f36222 //zip1 z2.d,z17.d,z19.d
+.inst 0x05f36626 //zip2 z6.d,z17.d,z19.d
+.inst 0x05f4624a //zip1 z10.d,z18.d,z20.d
+.inst 0x05f4664e //zip2 z14.d,z18.d,z20.d
+
+.inst 0x05f762a3 //zip1 z3.d,z21.d,z23.d
+.inst 0x05f766a7 //zip2 z7.d,z21.d,z23.d
+.inst 0x05f862cb //zip1 z11.d,z22.d,z24.d
+.inst 0x05f866cf //zip2 z15.d,z22.d,z24.d
+.if mixin == 1
+ eor x19,x19,x20
+.endif
+.if mixin == 1
+ eor x21,x21,x22
+.endif
+.inst 0xa540a031 //ld1w {z17.s},p0/z,[x1,#0,MUL VL]
+.inst 0xa541a032 //ld1w {z18.s},p0/z,[x1,#1,MUL VL]
+.inst 0xa542a033 //ld1w {z19.s},p0/z,[x1,#2,MUL VL]
+.inst 0xa543a034 //ld1w {z20.s},p0/z,[x1,#3,MUL VL]
+.inst 0xa544a035 //ld1w {z21.s},p0/z,[x1,#4,MUL VL]
+.inst 0xa545a036 //ld1w {z22.s},p0/z,[x1,#5,MUL VL]
+.inst 0xa546a037 //ld1w {z23.s},p0/z,[x1,#6,MUL VL]
+.inst 0xa547a038 //ld1w {z24.s},p0/z,[x1,#7,MUL VL]
+.inst 0x04215101 //addvl x1,x1,8
+.inst 0x04b13000 //eor z0.d,z0.d,z17.d
+.inst 0x04b23084 //eor z4.d,z4.d,z18.d
+.inst 0x04b33108 //eor z8.d,z8.d,z19.d
+.inst 0x04b4318c //eor z12.d,z12.d,z20.d
+.inst 0x04b53021 //eor z1.d,z1.d,z21.d
+.inst 0x04b630a5 //eor z5.d,z5.d,z22.d
+.inst 0x04b73129 //eor z9.d,z9.d,z23.d
+.inst 0x04b831ad //eor z13.d,z13.d,z24.d
+.inst 0xa540a031 //ld1w {z17.s},p0/z,[x1,#0,MUL VL]
+.inst 0xa541a032 //ld1w {z18.s},p0/z,[x1,#1,MUL VL]
+.inst 0xa542a033 //ld1w {z19.s},p0/z,[x1,#2,MUL VL]
+.inst 0xa543a034 //ld1w {z20.s},p0/z,[x1,#3,MUL VL]
+.inst 0xa544a035 //ld1w {z21.s},p0/z,[x1,#4,MUL VL]
+.inst 0xa545a036 //ld1w {z22.s},p0/z,[x1,#5,MUL VL]
+.inst 0xa546a037 //ld1w {z23.s},p0/z,[x1,#6,MUL VL]
+.inst 0xa547a038 //ld1w {z24.s},p0/z,[x1,#7,MUL VL]
+.inst 0x04215101 //addvl x1,x1,8
+.if mixin == 1
+ stp x7,x9,[x0],#16
+.endif
+.inst 0x04b13042 //eor z2.d,z2.d,z17.d
+.inst 0x04b230c6 //eor z6.d,z6.d,z18.d
+.if mixin == 1
+ stp x11,x13,[x0],#16
+.endif
+.inst 0x04b3314a //eor z10.d,z10.d,z19.d
+.inst 0x04b431ce //eor z14.d,z14.d,z20.d
+.if mixin == 1
+ stp x15,x17,[x0],#16
+.endif
+.inst 0x04b53063 //eor z3.d,z3.d,z21.d
+.inst 0x04b630e7 //eor z7.d,z7.d,z22.d
+.if mixin == 1
+ stp x19,x21,[x0],#16
+.endif
+.inst 0x04b7316b //eor z11.d,z11.d,z23.d
+.inst 0x04b831ef //eor z15.d,z15.d,z24.d
+.inst 0xe540e000 //st1w {z0.s},p0,[x0,#0,MUL VL]
+.inst 0xe541e004 //st1w {z4.s},p0,[x0,#1,MUL VL]
+.inst 0xe542e008 //st1w {z8.s},p0,[x0,#2,MUL VL]
+.inst 0xe543e00c //st1w {z12.s},p0,[x0,#3,MUL VL]
+.inst 0xe544e001 //st1w {z1.s},p0,[x0,#4,MUL VL]
+.inst 0xe545e005 //st1w {z5.s},p0,[x0,#5,MUL VL]
+.inst 0xe546e009 //st1w {z9.s},p0,[x0,#6,MUL VL]
+.inst 0xe547e00d //st1w {z13.s},p0,[x0,#7,MUL VL]
+.inst 0x04205100 //addvl x0,x0,8
+.inst 0xe540e002 //st1w {z2.s},p0,[x0,#0,MUL VL]
+.inst 0xe541e006 //st1w {z6.s},p0,[x0,#1,MUL VL]
+.inst 0xe542e00a //st1w {z10.s},p0,[x0,#2,MUL VL]
+.inst 0xe543e00e //st1w {z14.s},p0,[x0,#3,MUL VL]
+.inst 0xe544e003 //st1w {z3.s},p0,[x0,#4,MUL VL]
+.inst 0xe545e007 //st1w {z7.s},p0,[x0,#5,MUL VL]
+.inst 0xe546e00b //st1w {z11.s},p0,[x0,#6,MUL VL]
+.inst 0xe547e00f //st1w {z15.s},p0,[x0,#7,MUL VL]
+.inst 0x04205100 //addvl x0,x0,8
+210:
+.inst 0x04b0e3fd //incw x29, ALL, MUL #1
+ subs x2,x2,64
+ b.gt 100b
+ b 110f
+101:
+ mixin=0
+ lsr x8,x23,#32
+.inst 0x05a03ae0 //dup z0.s,w23
+.inst 0x05a03af9 //dup z25.s,w23
+.if mixin == 1
+ mov w7,w23
+.endif
+.inst 0x05a03904 //dup z4.s,w8
+.inst 0x05a0391a //dup z26.s,w8
+ lsr x10,x24,#32
+.inst 0x05a03b08 //dup z8.s,w24
+.inst 0x05a03b1b //dup z27.s,w24
+.if mixin == 1
+ mov w9,w24
+.endif
+.inst 0x05a0394c //dup z12.s,w10
+.inst 0x05a0395c //dup z28.s,w10
+ lsr x12,x25,#32
+.inst 0x05a03b21 //dup z1.s,w25
+.inst 0x05a03b3d //dup z29.s,w25
+.if mixin == 1
+ mov w11,w25
+.endif
+.inst 0x05a03985 //dup z5.s,w12
+.inst 0x05a0399e //dup z30.s,w12
+ lsr x14,x26,#32
+.inst 0x05a03b49 //dup z9.s,w26
+.inst 0x05a03b55 //dup z21.s,w26
+.if mixin == 1
+ mov w13,w26
+.endif
+.inst 0x05a039cd //dup z13.s,w14
+.inst 0x05a039d6 //dup z22.s,w14
+ lsr x16,x27,#32
+.inst 0x05a03b62 //dup z2.s,w27
+.inst 0x05a03b77 //dup z23.s,w27
+.if mixin == 1
+ mov w15,w27
+.endif
+.inst 0x05a03a06 //dup z6.s,w16
+.inst 0x05a03a18 //dup z24.s,w16
+ lsr x18,x28,#32
+.inst 0x05a03b8a //dup z10.s,w28
+.if mixin == 1
+ mov w17,w28
+.endif
+.inst 0x05a03a4e //dup z14.s,w18
+ lsr x22,x30,#32
+.inst 0x05a03bcb //dup z11.s,w30
+.if mixin == 1
+ mov w21,w30
+.endif
+.inst 0x05a03acf //dup z15.s,w22
+.if mixin == 1
+ add w20,w29,#1
+ mov w19,w29
+.inst 0x04a14690 //index z16.s,w20,1
+.inst 0x04a14683 //index z3.s,w20,1
+.else
+.inst 0x04a147b0 //index z16.s,w29,1
+.inst 0x04a147a3 //index z3.s,w29,1
+.endif
+ lsr x20,x29,#32
+.inst 0x05a03a87 //dup z7.s,w20
+ mov x6,#10
+10:
+.align 5
+.inst 0x04a10000 //add z0.s,z0.s,z1.s
+.if mixin == 1
+ add w7,w7,w11
+.endif
+.inst 0x04a50084 //add z4.s,z4.s,z5.s
+.if mixin == 1
+ add w8,w8,w12
+.endif
+.inst 0x04a90108 //add z8.s,z8.s,z9.s
+.if mixin == 1
+ add w9,w9,w13
+.endif
+.inst 0x04ad018c //add z12.s,z12.s,z13.s
+.if mixin == 1
+ add w10,w10,w14
+.endif
+.inst 0x04a03063 //eor z3.d,z3.d,z0.d
+.if mixin == 1
+ eor w19,w19,w7
+.endif
+.inst 0x04a430e7 //eor z7.d,z7.d,z4.d
+.if mixin == 1
+ eor w20,w20,w8
+.endif
+.inst 0x04a8316b //eor z11.d,z11.d,z8.d
+.if mixin == 1
+ eor w21,w21,w9
+.endif
+.inst 0x04ac31ef //eor z15.d,z15.d,z12.d
+.if mixin == 1
+ eor w22,w22,w10
+.endif
+.inst 0x05a58063 //revh z3.s,p0/m,z3.s
+.if mixin == 1
+ ror w19,w19,#16
+.endif
+.inst 0x05a580e7 //revh z7.s,p0/m,z7.s
+.if mixin == 1
+ ror w20,w20,#16
+.endif
+.inst 0x05a5816b //revh z11.s,p0/m,z11.s
+.if mixin == 1
+ ror w21,w21,#16
+.endif
+.inst 0x05a581ef //revh z15.s,p0/m,z15.s
+.if mixin == 1
+ ror w22,w22,#16
+.endif
+.inst 0x04a30042 //add z2.s,z2.s,z3.s
+.if mixin == 1
+ add w15,w15,w19
+.endif
+.inst 0x04a700c6 //add z6.s,z6.s,z7.s
+.if mixin == 1
+ add w16,w16,w20
+.endif
+.inst 0x04ab014a //add z10.s,z10.s,z11.s
+.if mixin == 1
+ add w17,w17,w21
+.endif
+.inst 0x04af01ce //add z14.s,z14.s,z15.s
+.if mixin == 1
+ add w18,w18,w22
+.endif
+.inst 0x04a23021 //eor z1.d,z1.d,z2.d
+.if mixin == 1
+ eor w11,w11,w15
+.endif
+.inst 0x04a630a5 //eor z5.d,z5.d,z6.d
+.if mixin == 1
+ eor w12,w12,w16
+.endif
+.inst 0x04aa3129 //eor z9.d,z9.d,z10.d
+.if mixin == 1
+ eor w13,w13,w17
+.endif
+.inst 0x04ae31ad //eor z13.d,z13.d,z14.d
+.if mixin == 1
+ eor w14,w14,w18
+.endif
+.inst 0x046c9c31 //lsl z17.s,z1.s,12
+.inst 0x046c9cb2 //lsl z18.s,z5.s,12
+.inst 0x046c9d33 //lsl z19.s,z9.s,12
+.inst 0x046c9db4 //lsl z20.s,z13.s,12
+.inst 0x046c9421 //lsr z1.s,z1.s,20
+.if mixin == 1
+ ror w11,w11,20
+.endif
+.inst 0x046c94a5 //lsr z5.s,z5.s,20
+.if mixin == 1
+ ror w12,w12,20
+.endif
+.inst 0x046c9529 //lsr z9.s,z9.s,20
+.if mixin == 1
+ ror w13,w13,20
+.endif
+.inst 0x046c95ad //lsr z13.s,z13.s,20
+.if mixin == 1
+ ror w14,w14,20
+.endif
+.inst 0x04713021 //orr z1.d,z1.d,z17.d
+.inst 0x047230a5 //orr z5.d,z5.d,z18.d
+.inst 0x04733129 //orr z9.d,z9.d,z19.d
+.inst 0x047431ad //orr z13.d,z13.d,z20.d
+.inst 0x04a10000 //add z0.s,z0.s,z1.s
+.if mixin == 1
+ add w7,w7,w11
+.endif
+.inst 0x04a50084 //add z4.s,z4.s,z5.s
+.if mixin == 1
+ add w8,w8,w12
+.endif
+.inst 0x04a90108 //add z8.s,z8.s,z9.s
+.if mixin == 1
+ add w9,w9,w13
+.endif
+.inst 0x04ad018c //add z12.s,z12.s,z13.s
+.if mixin == 1
+ add w10,w10,w14
+.endif
+.inst 0x04a03063 //eor z3.d,z3.d,z0.d
+.if mixin == 1
+ eor w19,w19,w7
+.endif
+.inst 0x04a430e7 //eor z7.d,z7.d,z4.d
+.if mixin == 1
+ eor w20,w20,w8
+.endif
+.inst 0x04a8316b //eor z11.d,z11.d,z8.d
+.if mixin == 1
+ eor w21,w21,w9
+.endif
+.inst 0x04ac31ef //eor z15.d,z15.d,z12.d
+.if mixin == 1
+ eor w22,w22,w10
+.endif
+.inst 0x053f3063 //tbl z3.b,{z3.b},z31.b
+.if mixin == 1
+ ror w19,w19,#24
+.endif
+.inst 0x053f30e7 //tbl z7.b,{z7.b},z31.b
+.if mixin == 1
+ ror w20,w20,#24
+.endif
+.inst 0x053f316b //tbl z11.b,{z11.b},z31.b
+.if mixin == 1
+ ror w21,w21,#24
+.endif
+.inst 0x053f31ef //tbl z15.b,{z15.b},z31.b
+.if mixin == 1
+ ror w22,w22,#24
+.endif
+.inst 0x04a30042 //add z2.s,z2.s,z3.s
+.if mixin == 1
+ add w15,w15,w19
+.endif
+.inst 0x04a700c6 //add z6.s,z6.s,z7.s
+.if mixin == 1
+ add w16,w16,w20
+.endif
+.inst 0x04ab014a //add z10.s,z10.s,z11.s
+.if mixin == 1
+ add w17,w17,w21
+.endif
+.inst 0x04af01ce //add z14.s,z14.s,z15.s
+.if mixin == 1
+ add w18,w18,w22
+.endif
+.inst 0x04a23021 //eor z1.d,z1.d,z2.d
+.if mixin == 1
+ eor w11,w11,w15
+.endif
+.inst 0x04a630a5 //eor z5.d,z5.d,z6.d
+.if mixin == 1
+ eor w12,w12,w16
+.endif
+.inst 0x04aa3129 //eor z9.d,z9.d,z10.d
+.if mixin == 1
+ eor w13,w13,w17
+.endif
+.inst 0x04ae31ad //eor z13.d,z13.d,z14.d
+.if mixin == 1
+ eor w14,w14,w18
+.endif
+.inst 0x04679c31 //lsl z17.s,z1.s,7
+.inst 0x04679cb2 //lsl z18.s,z5.s,7
+.inst 0x04679d33 //lsl z19.s,z9.s,7
+.inst 0x04679db4 //lsl z20.s,z13.s,7
+.inst 0x04679421 //lsr z1.s,z1.s,25
+.if mixin == 1
+ ror w11,w11,25
+.endif
+.inst 0x046794a5 //lsr z5.s,z5.s,25
+.if mixin == 1
+ ror w12,w12,25
+.endif
+.inst 0x04679529 //lsr z9.s,z9.s,25
+.if mixin == 1
+ ror w13,w13,25
+.endif
+.inst 0x046795ad //lsr z13.s,z13.s,25
+.if mixin == 1
+ ror w14,w14,25
+.endif
+.inst 0x04713021 //orr z1.d,z1.d,z17.d
+.inst 0x047230a5 //orr z5.d,z5.d,z18.d
+.inst 0x04733129 //orr z9.d,z9.d,z19.d
+.inst 0x047431ad //orr z13.d,z13.d,z20.d
+.inst 0x04a50000 //add z0.s,z0.s,z5.s
+.if mixin == 1
+ add w7,w7,w12
+.endif
+.inst 0x04a90084 //add z4.s,z4.s,z9.s
+.if mixin == 1
+ add w8,w8,w13
+.endif
+.inst 0x04ad0108 //add z8.s,z8.s,z13.s
+.if mixin == 1
+ add w9,w9,w14
+.endif
+.inst 0x04a1018c //add z12.s,z12.s,z1.s
+.if mixin == 1
+ add w10,w10,w11
+.endif
+.inst 0x04a031ef //eor z15.d,z15.d,z0.d
+.if mixin == 1
+ eor w22,w22,w7
+.endif
+.inst 0x04a43063 //eor z3.d,z3.d,z4.d
+.if mixin == 1
+ eor w19,w19,w8
+.endif
+.inst 0x04a830e7 //eor z7.d,z7.d,z8.d
+.if mixin == 1
+ eor w20,w20,w9
+.endif
+.inst 0x04ac316b //eor z11.d,z11.d,z12.d
+.if mixin == 1
+ eor w21,w21,w10
+.endif
+.inst 0x05a581ef //revh z15.s,p0/m,z15.s
+.if mixin == 1
+ ror w22,w22,#16
+.endif
+.inst 0x05a58063 //revh z3.s,p0/m,z3.s
+.if mixin == 1
+ ror w19,w19,#16
+.endif
+.inst 0x05a580e7 //revh z7.s,p0/m,z7.s
+.if mixin == 1
+ ror w20,w20,#16
+.endif
+.inst 0x05a5816b //revh z11.s,p0/m,z11.s
+.if mixin == 1
+ ror w21,w21,#16
+.endif
+.inst 0x04af014a //add z10.s,z10.s,z15.s
+.if mixin == 1
+ add w17,w17,w22
+.endif
+.inst 0x04a301ce //add z14.s,z14.s,z3.s
+.if mixin == 1
+ add w18,w18,w19
+.endif
+.inst 0x04a70042 //add z2.s,z2.s,z7.s
+.if mixin == 1
+ add w15,w15,w20
+.endif
+.inst 0x04ab00c6 //add z6.s,z6.s,z11.s
+.if mixin == 1
+ add w16,w16,w21
+.endif
+.inst 0x04aa30a5 //eor z5.d,z5.d,z10.d
+.if mixin == 1
+ eor w12,w12,w17
+.endif
+.inst 0x04ae3129 //eor z9.d,z9.d,z14.d
+.if mixin == 1
+ eor w13,w13,w18
+.endif
+.inst 0x04a231ad //eor z13.d,z13.d,z2.d
+.if mixin == 1
+ eor w14,w14,w15
+.endif
+.inst 0x04a63021 //eor z1.d,z1.d,z6.d
+.if mixin == 1
+ eor w11,w11,w16
+.endif
+.inst 0x046c9cb1 //lsl z17.s,z5.s,12
+.inst 0x046c9d32 //lsl z18.s,z9.s,12
+.inst 0x046c9db3 //lsl z19.s,z13.s,12
+.inst 0x046c9c34 //lsl z20.s,z1.s,12
+.inst 0x046c94a5 //lsr z5.s,z5.s,20
+.if mixin == 1
+ ror w12,w12,20
+.endif
+.inst 0x046c9529 //lsr z9.s,z9.s,20
+.if mixin == 1
+ ror w13,w13,20
+.endif
+.inst 0x046c95ad //lsr z13.s,z13.s,20
+.if mixin == 1
+ ror w14,w14,20
+.endif
+.inst 0x046c9421 //lsr z1.s,z1.s,20
+.if mixin == 1
+ ror w11,w11,20
+.endif
+.inst 0x047130a5 //orr z5.d,z5.d,z17.d
+.inst 0x04723129 //orr z9.d,z9.d,z18.d
+.inst 0x047331ad //orr z13.d,z13.d,z19.d
+.inst 0x04743021 //orr z1.d,z1.d,z20.d
+.inst 0x04a50000 //add z0.s,z0.s,z5.s
+.if mixin == 1
+ add w7,w7,w12
+.endif
+.inst 0x04a90084 //add z4.s,z4.s,z9.s
+.if mixin == 1
+ add w8,w8,w13
+.endif
+.inst 0x04ad0108 //add z8.s,z8.s,z13.s
+.if mixin == 1
+ add w9,w9,w14
+.endif
+.inst 0x04a1018c //add z12.s,z12.s,z1.s
+.if mixin == 1
+ add w10,w10,w11
+.endif
+.inst 0x04a031ef //eor z15.d,z15.d,z0.d
+.if mixin == 1
+ eor w22,w22,w7
+.endif
+.inst 0x04a43063 //eor z3.d,z3.d,z4.d
+.if mixin == 1
+ eor w19,w19,w8
+.endif
+.inst 0x04a830e7 //eor z7.d,z7.d,z8.d
+.if mixin == 1
+ eor w20,w20,w9
+.endif
+.inst 0x04ac316b //eor z11.d,z11.d,z12.d
+.if mixin == 1
+ eor w21,w21,w10
+.endif
+.inst 0x053f31ef //tbl z15.b,{z15.b},z31.b
+.if mixin == 1
+ ror w22,w22,#24
+.endif
+.inst 0x053f3063 //tbl z3.b,{z3.b},z31.b
+.if mixin == 1
+ ror w19,w19,#24
+.endif
+.inst 0x053f30e7 //tbl z7.b,{z7.b},z31.b
+.if mixin == 1
+ ror w20,w20,#24
+.endif
+.inst 0x053f316b //tbl z11.b,{z11.b},z31.b
+.if mixin == 1
+ ror w21,w21,#24
+.endif
+.inst 0x04af014a //add z10.s,z10.s,z15.s
+.if mixin == 1
+ add w17,w17,w22
+.endif
+.inst 0x04a301ce //add z14.s,z14.s,z3.s
+.if mixin == 1
+ add w18,w18,w19
+.endif
+.inst 0x04a70042 //add z2.s,z2.s,z7.s
+.if mixin == 1
+ add w15,w15,w20
+.endif
+.inst 0x04ab00c6 //add z6.s,z6.s,z11.s
+.if mixin == 1
+ add w16,w16,w21
+.endif
+.inst 0x04aa30a5 //eor z5.d,z5.d,z10.d
+.if mixin == 1
+ eor w12,w12,w17
+.endif
+.inst 0x04ae3129 //eor z9.d,z9.d,z14.d
+.if mixin == 1
+ eor w13,w13,w18
+.endif
+.inst 0x04a231ad //eor z13.d,z13.d,z2.d
+.if mixin == 1
+ eor w14,w14,w15
+.endif
+.inst 0x04a63021 //eor z1.d,z1.d,z6.d
+.if mixin == 1
+ eor w11,w11,w16
+.endif
+.inst 0x04679cb1 //lsl z17.s,z5.s,7
+.inst 0x04679d32 //lsl z18.s,z9.s,7
+.inst 0x04679db3 //lsl z19.s,z13.s,7
+.inst 0x04679c34 //lsl z20.s,z1.s,7
+.inst 0x046794a5 //lsr z5.s,z5.s,25
+.if mixin == 1
+ ror w12,w12,25
+.endif
+.inst 0x04679529 //lsr z9.s,z9.s,25
+.if mixin == 1
+ ror w13,w13,25
+.endif
+.inst 0x046795ad //lsr z13.s,z13.s,25
+.if mixin == 1
+ ror w14,w14,25
+.endif
+.inst 0x04679421 //lsr z1.s,z1.s,25
+.if mixin == 1
+ ror w11,w11,25
+.endif
+.inst 0x047130a5 //orr z5.d,z5.d,z17.d
+.inst 0x04723129 //orr z9.d,z9.d,z18.d
+.inst 0x047331ad //orr z13.d,z13.d,z19.d
+.inst 0x04743021 //orr z1.d,z1.d,z20.d
+ sub x6,x6,1
+ cbnz x6,10b
+ lsr x6,x28,#32
+.inst 0x05a03b91 //dup z17.s,w28
+.inst 0x05a038d2 //dup z18.s,w6
+ lsr x6,x29,#32
+.inst 0x05a038d3 //dup z19.s,w6
+ lsr x6,x30,#32
+.if mixin == 1
+ add w7,w7,w23
+.endif
+.inst 0x04b90000 //add z0.s,z0.s,z25.s
+.if mixin == 1
+ add x8,x8,x23,lsr #32
+.endif
+.inst 0x04ba0084 //add z4.s,z4.s,z26.s
+.if mixin == 1
+ add x7,x7,x8,lsl #32 // pack
+.endif
+.if mixin == 1
+ add w9,w9,w24
+.endif
+.inst 0x04bb0108 //add z8.s,z8.s,z27.s
+.if mixin == 1
+ add x10,x10,x24,lsr #32
+.endif
+.inst 0x04bc018c //add z12.s,z12.s,z28.s
+.if mixin == 1
+ add x9,x9,x10,lsl #32 // pack
+.endif
+.if mixin == 1
+ ldp x8,x10,[x1],#16
+.endif
+.if mixin == 1
+ add w11,w11,w25
+.endif
+.inst 0x04bd0021 //add z1.s,z1.s,z29.s
+.if mixin == 1
+ add x12,x12,x25,lsr #32
+.endif
+.inst 0x04be00a5 //add z5.s,z5.s,z30.s
+.if mixin == 1
+ add x11,x11,x12,lsl #32 // pack
+.endif
+.if mixin == 1
+ add w13,w13,w26
+.endif
+.inst 0x04b50129 //add z9.s,z9.s,z21.s
+.if mixin == 1
+ add x14,x14,x26,lsr #32
+.endif
+.inst 0x04b601ad //add z13.s,z13.s,z22.s
+.if mixin == 1
+ add x13,x13,x14,lsl #32 // pack
+.endif
+.if mixin == 1
+ ldp x12,x14,[x1],#16
+.endif
+.if mixin == 1
+ add w15,w15,w27
+.endif
+.inst 0x04b70042 //add z2.s,z2.s,z23.s
+.if mixin == 1
+ add x16,x16,x27,lsr #32
+.endif
+.inst 0x04b800c6 //add z6.s,z6.s,z24.s
+.if mixin == 1
+ add x15,x15,x16,lsl #32 // pack
+.endif
+.if mixin == 1
+ add w17,w17,w28
+.endif
+.inst 0x04b1014a //add z10.s,z10.s,z17.s
+.if mixin == 1
+ add x18,x18,x28,lsr #32
+.endif
+.inst 0x04b201ce //add z14.s,z14.s,z18.s
+.if mixin == 1
+ add x17,x17,x18,lsl #32 // pack
+.endif
+.if mixin == 1
+ ldp x16,x18,[x1],#16
+.endif
+.inst 0x05a03bd4 //dup z20.s,w30
+.inst 0x05a038d9 //dup z25.s,w6 // bak[15] not available for SVE
+.if mixin == 1
+ add w19,w19,w29
+.endif
+.inst 0x04b00063 //add z3.s,z3.s,z16.s
+.if mixin == 1
+ add x20,x20,x29,lsr #32
+.endif
+.inst 0x04b300e7 //add z7.s,z7.s,z19.s
+.if mixin == 1
+ add x19,x19,x20,lsl #32 // pack
+.endif
+.if mixin == 1
+ add w21,w21,w30
+.endif
+.inst 0x04b4016b //add z11.s,z11.s,z20.s
+.if mixin == 1
+ add x22,x22,x30,lsr #32
+.endif
+.inst 0x04b901ef //add z15.s,z15.s,z25.s
+.if mixin == 1
+ add x21,x21,x22,lsl #32 // pack
+.endif
+.if mixin == 1
+ ldp x20,x22,[x1],#16
+.endif
+#ifdef __AARCH64EB__
+ rev x7,x7
+.inst 0x05a48000 //revb z0.s,p0/m,z0.s
+.inst 0x05a48084 //revb z4.s,p0/m,z4.s
+ rev x9,x9
+.inst 0x05a48108 //revb z8.s,p0/m,z8.s
+.inst 0x05a4818c //revb z12.s,p0/m,z12.s
+ rev x11,x11
+.inst 0x05a48021 //revb z1.s,p0/m,z1.s
+.inst 0x05a480a5 //revb z5.s,p0/m,z5.s
+ rev x13,x13
+.inst 0x05a48129 //revb z9.s,p0/m,z9.s
+.inst 0x05a481ad //revb z13.s,p0/m,z13.s
+ rev x15,x15
+.inst 0x05a48042 //revb z2.s,p0/m,z2.s
+.inst 0x05a480c6 //revb z6.s,p0/m,z6.s
+ rev x17,x17
+.inst 0x05a4814a //revb z10.s,p0/m,z10.s
+.inst 0x05a481ce //revb z14.s,p0/m,z14.s
+ rev x19,x19
+.inst 0x05a48063 //revb z3.s,p0/m,z3.s
+.inst 0x05a480e7 //revb z7.s,p0/m,z7.s
+ rev x21,x21
+.inst 0x05a4816b //revb z11.s,p0/m,z11.s
+.inst 0x05a481ef //revb z15.s,p0/m,z15.s
+#endif
+.if mixin == 1
+ add x29,x29,#1
+.endif
+ cmp x5,4
+ b.ne 200f
+.if mixin == 1
+ eor x7,x7,x8
+.endif
+.if mixin == 1
+ eor x9,x9,x10
+.endif
+.if mixin == 1
+ eor x11,x11,x12
+.endif
+.inst 0x05a46011 //zip1 z17.s,z0.s,z4.s
+.inst 0x05a46412 //zip2 z18.s,z0.s,z4.s
+.inst 0x05ac6113 //zip1 z19.s,z8.s,z12.s
+.inst 0x05ac6514 //zip2 z20.s,z8.s,z12.s
+
+.inst 0x05a56035 //zip1 z21.s,z1.s,z5.s
+.inst 0x05a56436 //zip2 z22.s,z1.s,z5.s
+.inst 0x05ad6137 //zip1 z23.s,z9.s,z13.s
+.inst 0x05ad6538 //zip2 z24.s,z9.s,z13.s
+
+.inst 0x05f36220 //zip1 z0.d,z17.d,z19.d
+.inst 0x05f36624 //zip2 z4.d,z17.d,z19.d
+.inst 0x05f46248 //zip1 z8.d,z18.d,z20.d
+.inst 0x05f4664c //zip2 z12.d,z18.d,z20.d
+
+.inst 0x05f762a1 //zip1 z1.d,z21.d,z23.d
+.inst 0x05f766a5 //zip2 z5.d,z21.d,z23.d
+.inst 0x05f862c9 //zip1 z9.d,z22.d,z24.d
+.inst 0x05f866cd //zip2 z13.d,z22.d,z24.d
+.if mixin == 1
+ eor x13,x13,x14
+.endif
+.if mixin == 1
+ eor x15,x15,x16
+.endif
+.if mixin == 1
+ eor x17,x17,x18
+.endif
+.inst 0x05a66051 //zip1 z17.s,z2.s,z6.s
+.inst 0x05a66452 //zip2 z18.s,z2.s,z6.s
+.inst 0x05ae6153 //zip1 z19.s,z10.s,z14.s
+.inst 0x05ae6554 //zip2 z20.s,z10.s,z14.s
+
+.inst 0x05a76075 //zip1 z21.s,z3.s,z7.s
+.inst 0x05a76476 //zip2 z22.s,z3.s,z7.s
+.inst 0x05af6177 //zip1 z23.s,z11.s,z15.s
+.inst 0x05af6578 //zip2 z24.s,z11.s,z15.s
+
+.inst 0x05f36222 //zip1 z2.d,z17.d,z19.d
+.inst 0x05f36626 //zip2 z6.d,z17.d,z19.d
+.inst 0x05f4624a //zip1 z10.d,z18.d,z20.d
+.inst 0x05f4664e //zip2 z14.d,z18.d,z20.d
+
+.inst 0x05f762a3 //zip1 z3.d,z21.d,z23.d
+.inst 0x05f766a7 //zip2 z7.d,z21.d,z23.d
+.inst 0x05f862cb //zip1 z11.d,z22.d,z24.d
+.inst 0x05f866cf //zip2 z15.d,z22.d,z24.d
+.if mixin == 1
+ eor x19,x19,x20
+.endif
+.if mixin == 1
+ eor x21,x21,x22
+.endif
+ ld1 {v17.4s,v18.4s,v19.4s,v20.4s},[x1],#64
+ ld1 {v21.4s,v22.4s,v23.4s,v24.4s},[x1],#64
+.inst 0x04b13000 //eor z0.d,z0.d,z17.d
+.inst 0x04b23021 //eor z1.d,z1.d,z18.d
+.inst 0x04b33042 //eor z2.d,z2.d,z19.d
+.inst 0x04b43063 //eor z3.d,z3.d,z20.d
+.inst 0x04b53084 //eor z4.d,z4.d,z21.d
+.inst 0x04b630a5 //eor z5.d,z5.d,z22.d
+.inst 0x04b730c6 //eor z6.d,z6.d,z23.d
+.inst 0x04b830e7 //eor z7.d,z7.d,z24.d
+ ld1 {v17.4s,v18.4s,v19.4s,v20.4s},[x1],#64
+ ld1 {v21.4s,v22.4s,v23.4s,v24.4s},[x1],#64
+.if mixin == 1
+ stp x7,x9,[x0],#16
+.endif
+.inst 0x04b13108 //eor z8.d,z8.d,z17.d
+.inst 0x04b23129 //eor z9.d,z9.d,z18.d
+.if mixin == 1
+ stp x11,x13,[x0],#16
+.endif
+.inst 0x04b3314a //eor z10.d,z10.d,z19.d
+.inst 0x04b4316b //eor z11.d,z11.d,z20.d
+.if mixin == 1
+ stp x15,x17,[x0],#16
+.endif
+.inst 0x04b5318c //eor z12.d,z12.d,z21.d
+.inst 0x04b631ad //eor z13.d,z13.d,z22.d
+.if mixin == 1
+ stp x19,x21,[x0],#16
+.endif
+.inst 0x04b731ce //eor z14.d,z14.d,z23.d
+.inst 0x04b831ef //eor z15.d,z15.d,z24.d
+ st1 {v0.4s,v1.4s,v2.4s,v3.4s},[x0],#64
+ st1 {v4.4s,v5.4s,v6.4s,v7.4s},[x0],#64
+ st1 {v8.4s,v9.4s,v10.4s,v11.4s},[x0],#64
+ st1 {v12.4s,v13.4s,v14.4s,v15.4s},[x0],#64
+ b 210f
+200:
+.inst 0x05a16011 //zip1 z17.s,z0.s,z1.s
+.inst 0x05a16412 //zip2 z18.s,z0.s,z1.s
+.inst 0x05a36053 //zip1 z19.s,z2.s,z3.s
+.inst 0x05a36454 //zip2 z20.s,z2.s,z3.s
+
+.inst 0x05a56095 //zip1 z21.s,z4.s,z5.s
+.inst 0x05a56496 //zip2 z22.s,z4.s,z5.s
+.inst 0x05a760d7 //zip1 z23.s,z6.s,z7.s
+.inst 0x05a764d8 //zip2 z24.s,z6.s,z7.s
+
+.inst 0x05f36220 //zip1 z0.d,z17.d,z19.d
+.inst 0x05f36621 //zip2 z1.d,z17.d,z19.d
+.inst 0x05f46242 //zip1 z2.d,z18.d,z20.d
+.inst 0x05f46643 //zip2 z3.d,z18.d,z20.d
+
+.inst 0x05f762a4 //zip1 z4.d,z21.d,z23.d
+.inst 0x05f766a5 //zip2 z5.d,z21.d,z23.d
+.inst 0x05f862c6 //zip1 z6.d,z22.d,z24.d
+.inst 0x05f866c7 //zip2 z7.d,z22.d,z24.d
+.if mixin == 1
+ eor x7,x7,x8
+.endif
+.if mixin == 1
+ eor x9,x9,x10
+.endif
+.inst 0x05a96111 //zip1 z17.s,z8.s,z9.s
+.inst 0x05a96512 //zip2 z18.s,z8.s,z9.s
+.inst 0x05ab6153 //zip1 z19.s,z10.s,z11.s
+.inst 0x05ab6554 //zip2 z20.s,z10.s,z11.s
+
+.inst 0x05ad6195 //zip1 z21.s,z12.s,z13.s
+.inst 0x05ad6596 //zip2 z22.s,z12.s,z13.s
+.inst 0x05af61d7 //zip1 z23.s,z14.s,z15.s
+.inst 0x05af65d8 //zip2 z24.s,z14.s,z15.s
+
+.inst 0x05f36228 //zip1 z8.d,z17.d,z19.d
+.inst 0x05f36629 //zip2 z9.d,z17.d,z19.d
+.inst 0x05f4624a //zip1 z10.d,z18.d,z20.d
+.inst 0x05f4664b //zip2 z11.d,z18.d,z20.d
+
+.inst 0x05f762ac //zip1 z12.d,z21.d,z23.d
+.inst 0x05f766ad //zip2 z13.d,z21.d,z23.d
+.inst 0x05f862ce //zip1 z14.d,z22.d,z24.d
+.inst 0x05f866cf //zip2 z15.d,z22.d,z24.d
+.if mixin == 1
+ eor x11,x11,x12
+.endif
+.if mixin == 1
+ eor x13,x13,x14
+.endif
+.inst 0x05a46011 //zip1 z17.s,z0.s,z4.s
+.inst 0x05a46412 //zip2 z18.s,z0.s,z4.s
+.inst 0x05ac6113 //zip1 z19.s,z8.s,z12.s
+.inst 0x05ac6514 //zip2 z20.s,z8.s,z12.s
+
+.inst 0x05a56035 //zip1 z21.s,z1.s,z5.s
+.inst 0x05a56436 //zip2 z22.s,z1.s,z5.s
+.inst 0x05ad6137 //zip1 z23.s,z9.s,z13.s
+.inst 0x05ad6538 //zip2 z24.s,z9.s,z13.s
+
+.inst 0x05f36220 //zip1 z0.d,z17.d,z19.d
+.inst 0x05f36624 //zip2 z4.d,z17.d,z19.d
+.inst 0x05f46248 //zip1 z8.d,z18.d,z20.d
+.inst 0x05f4664c //zip2 z12.d,z18.d,z20.d
+
+.inst 0x05f762a1 //zip1 z1.d,z21.d,z23.d
+.inst 0x05f766a5 //zip2 z5.d,z21.d,z23.d
+.inst 0x05f862c9 //zip1 z9.d,z22.d,z24.d
+.inst 0x05f866cd //zip2 z13.d,z22.d,z24.d
+.if mixin == 1
+ eor x15,x15,x16
+.endif
+.if mixin == 1
+ eor x17,x17,x18
+.endif
+.inst 0x05a66051 //zip1 z17.s,z2.s,z6.s
+.inst 0x05a66452 //zip2 z18.s,z2.s,z6.s
+.inst 0x05ae6153 //zip1 z19.s,z10.s,z14.s
+.inst 0x05ae6554 //zip2 z20.s,z10.s,z14.s
+
+.inst 0x05a76075 //zip1 z21.s,z3.s,z7.s
+.inst 0x05a76476 //zip2 z22.s,z3.s,z7.s
+.inst 0x05af6177 //zip1 z23.s,z11.s,z15.s
+.inst 0x05af6578 //zip2 z24.s,z11.s,z15.s
+
+.inst 0x05f36222 //zip1 z2.d,z17.d,z19.d
+.inst 0x05f36626 //zip2 z6.d,z17.d,z19.d
+.inst 0x05f4624a //zip1 z10.d,z18.d,z20.d
+.inst 0x05f4664e //zip2 z14.d,z18.d,z20.d
+
+.inst 0x05f762a3 //zip1 z3.d,z21.d,z23.d
+.inst 0x05f766a7 //zip2 z7.d,z21.d,z23.d
+.inst 0x05f862cb //zip1 z11.d,z22.d,z24.d
+.inst 0x05f866cf //zip2 z15.d,z22.d,z24.d
+.if mixin == 1
+ eor x19,x19,x20
+.endif
+.if mixin == 1
+ eor x21,x21,x22
+.endif
+.inst 0xa540a031 //ld1w {z17.s},p0/z,[x1,#0,MUL VL]
+.inst 0xa541a032 //ld1w {z18.s},p0/z,[x1,#1,MUL VL]
+.inst 0xa542a033 //ld1w {z19.s},p0/z,[x1,#2,MUL VL]
+.inst 0xa543a034 //ld1w {z20.s},p0/z,[x1,#3,MUL VL]
+.inst 0xa544a035 //ld1w {z21.s},p0/z,[x1,#4,MUL VL]
+.inst 0xa545a036 //ld1w {z22.s},p0/z,[x1,#5,MUL VL]
+.inst 0xa546a037 //ld1w {z23.s},p0/z,[x1,#6,MUL VL]
+.inst 0xa547a038 //ld1w {z24.s},p0/z,[x1,#7,MUL VL]
+.inst 0x04215101 //addvl x1,x1,8
+.inst 0x04b13000 //eor z0.d,z0.d,z17.d
+.inst 0x04b23084 //eor z4.d,z4.d,z18.d
+.inst 0x04b33108 //eor z8.d,z8.d,z19.d
+.inst 0x04b4318c //eor z12.d,z12.d,z20.d
+.inst 0x04b53021 //eor z1.d,z1.d,z21.d
+.inst 0x04b630a5 //eor z5.d,z5.d,z22.d
+.inst 0x04b73129 //eor z9.d,z9.d,z23.d
+.inst 0x04b831ad //eor z13.d,z13.d,z24.d
+.inst 0xa540a031 //ld1w {z17.s},p0/z,[x1,#0,MUL VL]
+.inst 0xa541a032 //ld1w {z18.s},p0/z,[x1,#1,MUL VL]
+.inst 0xa542a033 //ld1w {z19.s},p0/z,[x1,#2,MUL VL]
+.inst 0xa543a034 //ld1w {z20.s},p0/z,[x1,#3,MUL VL]
+.inst 0xa544a035 //ld1w {z21.s},p0/z,[x1,#4,MUL VL]
+.inst 0xa545a036 //ld1w {z22.s},p0/z,[x1,#5,MUL VL]
+.inst 0xa546a037 //ld1w {z23.s},p0/z,[x1,#6,MUL VL]
+.inst 0xa547a038 //ld1w {z24.s},p0/z,[x1,#7,MUL VL]
+.inst 0x04215101 //addvl x1,x1,8
+.if mixin == 1
+ stp x7,x9,[x0],#16
+.endif
+.inst 0x04b13042 //eor z2.d,z2.d,z17.d
+.inst 0x04b230c6 //eor z6.d,z6.d,z18.d
+.if mixin == 1
+ stp x11,x13,[x0],#16
+.endif
+.inst 0x04b3314a //eor z10.d,z10.d,z19.d
+.inst 0x04b431ce //eor z14.d,z14.d,z20.d
+.if mixin == 1
+ stp x15,x17,[x0],#16
+.endif
+.inst 0x04b53063 //eor z3.d,z3.d,z21.d
+.inst 0x04b630e7 //eor z7.d,z7.d,z22.d
+.if mixin == 1
+ stp x19,x21,[x0],#16
+.endif
+.inst 0x04b7316b //eor z11.d,z11.d,z23.d
+.inst 0x04b831ef //eor z15.d,z15.d,z24.d
+.inst 0xe540e000 //st1w {z0.s},p0,[x0,#0,MUL VL]
+.inst 0xe541e004 //st1w {z4.s},p0,[x0,#1,MUL VL]
+.inst 0xe542e008 //st1w {z8.s},p0,[x0,#2,MUL VL]
+.inst 0xe543e00c //st1w {z12.s},p0,[x0,#3,MUL VL]
+.inst 0xe544e001 //st1w {z1.s},p0,[x0,#4,MUL VL]
+.inst 0xe545e005 //st1w {z5.s},p0,[x0,#5,MUL VL]
+.inst 0xe546e009 //st1w {z9.s},p0,[x0,#6,MUL VL]
+.inst 0xe547e00d //st1w {z13.s},p0,[x0,#7,MUL VL]
+.inst 0x04205100 //addvl x0,x0,8
+.inst 0xe540e002 //st1w {z2.s},p0,[x0,#0,MUL VL]
+.inst 0xe541e006 //st1w {z6.s},p0,[x0,#1,MUL VL]
+.inst 0xe542e00a //st1w {z10.s},p0,[x0,#2,MUL VL]
+.inst 0xe543e00e //st1w {z14.s},p0,[x0,#3,MUL VL]
+.inst 0xe544e003 //st1w {z3.s},p0,[x0,#4,MUL VL]
+.inst 0xe545e007 //st1w {z7.s},p0,[x0,#5,MUL VL]
+.inst 0xe546e00b //st1w {z11.s},p0,[x0,#6,MUL VL]
+.inst 0xe547e00f //st1w {z15.s},p0,[x0,#7,MUL VL]
+.inst 0x04205100 //addvl x0,x0,8
+210:
+.inst 0x04b0e3fd //incw x29, ALL, MUL #1
+110:
+2:
+ str w29,[x4]
+ ldp d10,d11,[sp,16]
+ ldp d12,d13,[sp,32]
+ ldp d14,d15,[sp,48]
+ ldp x16,x17,[sp,64]
+ ldp x18,x19,[sp,80]
+ ldp x20,x21,[sp,96]
+ ldp x22,x23,[sp,112]
+ ldp x24,x25,[sp,128]
+ ldp x26,x27,[sp,144]
+ ldp x28,x29,[sp,160]
+ ldr x30,[sp,176]
+ ldp d8,d9,[sp],192
+ AARCH64_VALIDATE_LINK_REGISTER
+.Lreturn:
+ ret
+.size ChaCha20_ctr32_sve,.-ChaCha20_ctr32_sve