xref: /freebsd/sys/contrib/openzfs/module/icp/asm-aarch64/blake3/b3_aarch64_sse2.S (revision 61145dc2b94f12f6a47344fb9aac702321880e43)
1// SPDX-License-Identifier: CDDL-1.0
2/*
3 * CDDL HEADER START
4 *
5 * The contents of this file are subject to the terms of the
6 * Common Development and Distribution License (the "License").
7 * You may not use this file except in compliance with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or https://opensource.org/licenses/CDDL-1.0.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22
23/*
24 * Based on BLAKE3 v1.3.1, https://github.com/BLAKE3-team/BLAKE3
25 * Copyright (c) 2019-2022 Samuel Neves and Matthew Krupcale
26 * Copyright (c) 2022-2023 Tino Reichardt <milky-zfs@mcmilk.de>
27 *
28 * This is converted assembly: SSE2 -> ARMv8-A
29 * Used tools: SIMDe https://github.com/simd-everywhere/simde
30 *
31 * Should work on FreeBSD, Linux and macOS
32 * see: https://github.com/mcmilk/BLAKE3-tests/blob/master/contrib/simde.sh
33 */
34
35#if defined(__aarch64__)
36
37/* make gcc <= 9 happy */
38#if !defined(LD_VERSION) || LD_VERSION >= 233010000
39#define CFI_NEGATE_RA_STATE .cfi_negate_ra_state
40#else
41#define CFI_NEGATE_RA_STATE
42#endif
43
44	.text
45	.section	.note.gnu.property,"a",@note
46	.p2align	3
47	.word	4
48	.word	16
49	.word	5
50	.asciz	"GNU"
51	.word	3221225472
52	.word	4
53	.word	3
54	.word	0
55.Lsec_end0:
56	.text
57	.globl	zfs_blake3_compress_in_place_sse2
58	.p2align	2
59	.type	zfs_blake3_compress_in_place_sse2,@function
60zfs_blake3_compress_in_place_sse2:
61	.cfi_startproc
62	hint	#25
63	CFI_NEGATE_RA_STATE
64	sub	sp, sp, #96
65	stp	x29, x30, [sp, #64]
66	add	x29, sp, #64
67	str	x19, [sp, #80]
68	.cfi_def_cfa w29, 32
69	.cfi_offset w19, -16
70	.cfi_offset w30, -24
71	.cfi_offset w29, -32
72	mov	x19, x0
73	mov	w5, w4
74	mov	x4, x3
75	mov	w3, w2
76	mov	x2, x1
77	mov	x0, sp
78	mov	x1, x19
79	bl	compress_pre
80	ldp	q0, q1, [sp]
81	ldp	q2, q3, [sp, #32]
82	eor	v0.16b, v2.16b, v0.16b
83	eor	v1.16b, v3.16b, v1.16b
84	ldp	x29, x30, [sp, #64]
85	stp	q0, q1, [x19]
86	ldr	x19, [sp, #80]
87	add	sp, sp, #96
88	hint	#29
89	ret
90.Lfunc_end0:
91	.size	zfs_blake3_compress_in_place_sse2, .Lfunc_end0-zfs_blake3_compress_in_place_sse2
92	.cfi_endproc
93
94	.section	.rodata.cst16,"aM",@progbits,16
95	.p2align	4
96.LCPI1_0:
97	.xword	-4942790177982912921
98	.xword	-6534734903820487822
99	.text
100	.p2align	2
101	.type	compress_pre,@function
102compress_pre:
103	.cfi_startproc
104	hint	#34
105	fmov	s1, w3
106	movi	d0, #0x0000ff000000ff
107	ldr	q2, [x1]
108	fmov	d3, x4
109	adrp	x8, .LCPI1_0
110	mov	v1.s[1], w5
111	str	q2, [x0]
112	ldr	q4, [x8, :lo12:.LCPI1_0]
113	add	x8, x2, #32
114	ldr	q5, [x1, #16]
115	and	v0.8b, v1.8b, v0.8b
116	stp	q5, q4, [x0, #16]
117	mov	v3.d[1], v0.d[0]
118	str	q3, [x0, #48]
119	ldp	q0, q6, [x2]
120	uzp1	v1.4s, v0.4s, v6.4s
121	uzp2	v0.4s, v0.4s, v6.4s
122	add	v2.4s, v2.4s, v1.4s
123	uzp1	v18.4s, v1.4s, v1.4s
124	add	v2.4s, v2.4s, v5.4s
125	eor	v3.16b, v2.16b, v3.16b
126	add	v2.4s, v2.4s, v0.4s
127	rev32	v3.8h, v3.8h
128	add	v4.4s, v3.4s, v4.4s
129	eor	v5.16b, v4.16b, v5.16b
130	ushr	v6.4s, v5.4s, #12
131	shl	v5.4s, v5.4s, #20
132	orr	v5.16b, v5.16b, v6.16b
133	add	v2.4s, v2.4s, v5.4s
134	eor	v3.16b, v2.16b, v3.16b
135	ushr	v6.4s, v3.4s, #8
136	shl	v3.4s, v3.4s, #24
137	orr	v3.16b, v3.16b, v6.16b
138	ld2	{ v6.4s, v7.4s }, [x8]
139	add	v4.4s, v3.4s, v4.4s
140	ext	v3.16b, v3.16b, v3.16b, #8
141	add	v2.4s, v2.4s, v6.4s
142	eor	v5.16b, v4.16b, v5.16b
143	ext	v4.16b, v4.16b, v4.16b, #4
144	ext	v6.16b, v6.16b, v6.16b, #12
145	ext	v2.16b, v2.16b, v2.16b, #12
146	ushr	v16.4s, v5.4s, #7
147	shl	v5.4s, v5.4s, #25
148	orr	v5.16b, v5.16b, v16.16b
149	ext	v16.16b, v7.16b, v7.16b, #12
150	add	v2.4s, v2.4s, v5.4s
151	mov	v7.16b, v16.16b
152	eor	v3.16b, v3.16b, v2.16b
153	add	v2.4s, v2.4s, v16.4s
154	mov	v7.s[1], v6.s[2]
155	rev32	v3.8h, v3.8h
156	add	v4.4s, v4.4s, v3.4s
157	eor	v5.16b, v4.16b, v5.16b
158	ushr	v17.4s, v5.4s, #12
159	shl	v5.4s, v5.4s, #20
160	orr	v5.16b, v5.16b, v17.16b
161	add	v2.4s, v2.4s, v5.4s
162	eor	v3.16b, v2.16b, v3.16b
163	ushr	v17.4s, v3.4s, #8
164	shl	v3.4s, v3.4s, #24
165	orr	v3.16b, v3.16b, v17.16b
166	ext	v17.16b, v18.16b, v1.16b, #8
167	add	v4.4s, v3.4s, v4.4s
168	uzp2	v17.4s, v17.4s, v0.4s
169	ext	v3.16b, v3.16b, v3.16b, #8
170	eor	v5.16b, v4.16b, v5.16b
171	add	v2.4s, v2.4s, v17.4s
172	ext	v4.16b, v4.16b, v4.16b, #12
173	ushr	v18.4s, v5.4s, #7
174	shl	v5.4s, v5.4s, #25
175	ext	v2.16b, v2.16b, v2.16b, #4
176	orr	v5.16b, v5.16b, v18.16b
177	ext	v18.16b, v1.16b, v1.16b, #12
178	add	v2.4s, v2.4s, v5.4s
179	ext	v1.16b, v1.16b, v18.16b, #12
180	zip1	v18.2d, v16.2d, v0.2d
181	zip2	v0.4s, v0.4s, v16.4s
182	eor	v3.16b, v3.16b, v2.16b
183	rev64	v1.4s, v1.4s
184	mov	v18.s[3], v6.s[3]
185	zip1	v16.4s, v0.4s, v6.4s
186	rev32	v3.8h, v3.8h
187	trn2	v1.4s, v1.4s, v7.4s
188	zip1	v0.4s, v6.4s, v0.4s
189	add	v4.4s, v4.4s, v3.4s
190	add	v2.4s, v2.4s, v1.4s
191	ext	v6.16b, v0.16b, v16.16b, #8
192	eor	v5.16b, v4.16b, v5.16b
193	ushr	v7.4s, v5.4s, #12
194	shl	v5.4s, v5.4s, #20
195	orr	v5.16b, v5.16b, v7.16b
196	add	v7.4s, v2.4s, v5.4s
197	eor	v2.16b, v7.16b, v3.16b
198	ext	v7.16b, v7.16b, v7.16b, #12
199	ushr	v3.4s, v2.4s, #8
200	shl	v2.4s, v2.4s, #24
201	orr	v3.16b, v2.16b, v3.16b
202	ext	v2.16b, v18.16b, v18.16b, #12
203	add	v4.4s, v3.4s, v4.4s
204	uzp1	v2.4s, v18.4s, v2.4s
205	ext	v3.16b, v3.16b, v3.16b, #8
206	eor	v5.16b, v4.16b, v5.16b
207	add	v7.4s, v7.4s, v2.4s
208	ext	v4.16b, v4.16b, v4.16b, #4
209	ushr	v18.4s, v5.4s, #7
210	shl	v5.4s, v5.4s, #25
211	orr	v5.16b, v5.16b, v18.16b
212	add	v7.4s, v7.4s, v5.4s
213	eor	v3.16b, v3.16b, v7.16b
214	add	v7.4s, v7.4s, v6.4s
215	rev32	v3.8h, v3.8h
216	add	v4.4s, v4.4s, v3.4s
217	eor	v5.16b, v4.16b, v5.16b
218	ushr	v0.4s, v5.4s, #12
219	shl	v5.4s, v5.4s, #20
220	orr	v0.16b, v5.16b, v0.16b
221	add	v5.4s, v7.4s, v0.4s
222	ext	v7.16b, v17.16b, v17.16b, #4
223	eor	v3.16b, v5.16b, v3.16b
224	uzp1	v17.4s, v7.4s, v7.4s
225	ushr	v16.4s, v3.4s, #8
226	shl	v3.4s, v3.4s, #24
227	orr	v3.16b, v3.16b, v16.16b
228	ext	v16.16b, v17.16b, v7.16b, #8
229	add	v4.4s, v3.4s, v4.4s
230	uzp2	v16.4s, v16.4s, v1.4s
231	ext	v3.16b, v3.16b, v3.16b, #8
232	eor	v0.16b, v4.16b, v0.16b
233	add	v5.4s, v5.4s, v16.4s
234	ext	v4.16b, v4.16b, v4.16b, #12
235	ushr	v17.4s, v0.4s, #7
236	shl	v0.4s, v0.4s, #25
237	ext	v5.16b, v5.16b, v5.16b, #4
238	orr	v0.16b, v0.16b, v17.16b
239	ext	v17.16b, v7.16b, v7.16b, #12
240	add	v5.4s, v5.4s, v0.4s
241	ext	v7.16b, v7.16b, v17.16b, #12
242	mov	v17.16b, v6.16b
243	eor	v3.16b, v3.16b, v5.16b
244	rev64	v7.4s, v7.4s
245	mov	v17.s[1], v2.s[2]
246	rev32	v3.8h, v3.8h
247	add	v4.4s, v4.4s, v3.4s
248	eor	v18.16b, v4.16b, v0.16b
249	trn2	v0.4s, v7.4s, v17.4s
250	ushr	v7.4s, v18.4s, #12
251	shl	v17.4s, v18.4s, #20
252	add	v5.4s, v5.4s, v0.4s
253	zip1	v18.2d, v6.2d, v1.2d
254	zip2	v1.4s, v1.4s, v6.4s
255	orr	v7.16b, v17.16b, v7.16b
256	mov	v18.s[3], v2.s[3]
257	zip1	v6.4s, v1.4s, v2.4s
258	add	v5.4s, v5.4s, v7.4s
259	zip1	v1.4s, v2.4s, v1.4s
260	eor	v3.16b, v5.16b, v3.16b
261	ext	v5.16b, v5.16b, v5.16b, #12
262	ext	v6.16b, v1.16b, v6.16b, #8
263	ushr	v17.4s, v3.4s, #8
264	shl	v3.4s, v3.4s, #24
265	orr	v17.16b, v3.16b, v17.16b
266	ext	v3.16b, v18.16b, v18.16b, #12
267	add	v4.4s, v17.4s, v4.4s
268	uzp1	v3.4s, v18.4s, v3.4s
269	ext	v17.16b, v17.16b, v17.16b, #8
270	eor	v7.16b, v4.16b, v7.16b
271	add	v5.4s, v5.4s, v3.4s
272	ext	v4.16b, v4.16b, v4.16b, #4
273	ushr	v18.4s, v7.4s, #7
274	shl	v7.4s, v7.4s, #25
275	orr	v7.16b, v7.16b, v18.16b
276	add	v5.4s, v5.4s, v7.4s
277	eor	v17.16b, v17.16b, v5.16b
278	add	v5.4s, v5.4s, v6.4s
279	rev32	v17.8h, v17.8h
280	add	v4.4s, v4.4s, v17.4s
281	eor	v2.16b, v4.16b, v7.16b
282	ext	v7.16b, v16.16b, v16.16b, #4
283	ushr	v1.4s, v2.4s, #12
284	shl	v2.4s, v2.4s, #20
285	orr	v1.16b, v2.16b, v1.16b
286	add	v2.4s, v5.4s, v1.4s
287	eor	v5.16b, v2.16b, v17.16b
288	uzp1	v17.4s, v7.4s, v7.4s
289	ushr	v16.4s, v5.4s, #8
290	shl	v5.4s, v5.4s, #24
291	orr	v5.16b, v5.16b, v16.16b
292	ext	v16.16b, v17.16b, v7.16b, #8
293	add	v4.4s, v5.4s, v4.4s
294	uzp2	v16.4s, v16.4s, v0.4s
295	ext	v5.16b, v5.16b, v5.16b, #8
296	eor	v1.16b, v4.16b, v1.16b
297	add	v2.4s, v2.4s, v16.4s
298	ext	v4.16b, v4.16b, v4.16b, #12
299	ushr	v17.4s, v1.4s, #7
300	shl	v1.4s, v1.4s, #25
301	ext	v2.16b, v2.16b, v2.16b, #4
302	orr	v1.16b, v1.16b, v17.16b
303	ext	v17.16b, v7.16b, v7.16b, #12
304	add	v2.4s, v2.4s, v1.4s
305	ext	v7.16b, v7.16b, v17.16b, #12
306	mov	v17.16b, v6.16b
307	eor	v5.16b, v5.16b, v2.16b
308	rev64	v7.4s, v7.4s
309	mov	v17.s[1], v3.s[2]
310	rev32	v5.8h, v5.8h
311	add	v4.4s, v4.4s, v5.4s
312	eor	v18.16b, v4.16b, v1.16b
313	trn2	v1.4s, v7.4s, v17.4s
314	ushr	v7.4s, v18.4s, #12
315	shl	v17.4s, v18.4s, #20
316	add	v2.4s, v2.4s, v1.4s
317	zip1	v18.2d, v6.2d, v0.2d
318	zip2	v0.4s, v0.4s, v6.4s
319	orr	v7.16b, v17.16b, v7.16b
320	mov	v18.s[3], v3.s[3]
321	add	v2.4s, v2.4s, v7.4s
322	eor	v5.16b, v2.16b, v5.16b
323	ext	v2.16b, v2.16b, v2.16b, #12
324	ushr	v17.4s, v5.4s, #8
325	shl	v5.4s, v5.4s, #24
326	orr	v5.16b, v5.16b, v17.16b
327	add	v17.4s, v5.4s, v4.4s
328	ext	v4.16b, v18.16b, v18.16b, #12
329	ext	v5.16b, v5.16b, v5.16b, #8
330	eor	v7.16b, v17.16b, v7.16b
331	uzp1	v4.4s, v18.4s, v4.4s
332	ext	v17.16b, v17.16b, v17.16b, #4
333	ushr	v18.4s, v7.4s, #7
334	shl	v7.4s, v7.4s, #25
335	add	v2.4s, v2.4s, v4.4s
336	orr	v7.16b, v7.16b, v18.16b
337	add	v2.4s, v2.4s, v7.4s
338	eor	v5.16b, v5.16b, v2.16b
339	rev32	v5.8h, v5.8h
340	add	v6.4s, v17.4s, v5.4s
341	zip1	v17.4s, v0.4s, v3.4s
342	zip1	v0.4s, v3.4s, v0.4s
343	eor	v3.16b, v6.16b, v7.16b
344	ext	v0.16b, v0.16b, v17.16b, #8
345	ushr	v7.4s, v3.4s, #12
346	shl	v3.4s, v3.4s, #20
347	add	v2.4s, v2.4s, v0.4s
348	orr	v3.16b, v3.16b, v7.16b
349	ext	v7.16b, v16.16b, v16.16b, #4
350	add	v2.4s, v2.4s, v3.4s
351	uzp1	v17.4s, v7.4s, v7.4s
352	eor	v5.16b, v2.16b, v5.16b
353	ushr	v16.4s, v5.4s, #8
354	shl	v5.4s, v5.4s, #24
355	orr	v5.16b, v5.16b, v16.16b
356	ext	v16.16b, v17.16b, v7.16b, #8
357	add	v6.4s, v5.4s, v6.4s
358	uzp2	v16.4s, v16.4s, v1.4s
359	ext	v5.16b, v5.16b, v5.16b, #8
360	eor	v3.16b, v6.16b, v3.16b
361	add	v2.4s, v2.4s, v16.4s
362	ext	v6.16b, v6.16b, v6.16b, #12
363	ushr	v17.4s, v3.4s, #7
364	shl	v3.4s, v3.4s, #25
365	ext	v2.16b, v2.16b, v2.16b, #4
366	orr	v3.16b, v3.16b, v17.16b
367	add	v17.4s, v2.4s, v3.4s
368	eor	v2.16b, v5.16b, v17.16b
369	ext	v5.16b, v7.16b, v7.16b, #12
370	rev32	v18.8h, v2.8h
371	ext	v2.16b, v7.16b, v5.16b, #12
372	mov	v5.16b, v0.16b
373	add	v6.4s, v6.4s, v18.4s
374	rev64	v2.4s, v2.4s
375	mov	v5.s[1], v4.s[2]
376	eor	v3.16b, v6.16b, v3.16b
377	trn2	v2.4s, v2.4s, v5.4s
378	ushr	v5.4s, v3.4s, #12
379	shl	v3.4s, v3.4s, #20
380	add	v7.4s, v17.4s, v2.4s
381	orr	v3.16b, v3.16b, v5.16b
382	add	v5.4s, v7.4s, v3.4s
383	eor	v7.16b, v5.16b, v18.16b
384	zip1	v18.2d, v0.2d, v1.2d
385	ext	v5.16b, v5.16b, v5.16b, #12
386	zip2	v0.4s, v1.4s, v0.4s
387	ushr	v17.4s, v7.4s, #8
388	shl	v7.4s, v7.4s, #24
389	mov	v18.s[3], v4.s[3]
390	orr	v7.16b, v7.16b, v17.16b
391	ext	v17.16b, v18.16b, v18.16b, #12
392	add	v6.4s, v7.4s, v6.4s
393	ext	v7.16b, v7.16b, v7.16b, #8
394	eor	v19.16b, v6.16b, v3.16b
395	uzp1	v3.4s, v18.4s, v17.4s
396	ext	v6.16b, v6.16b, v6.16b, #4
397	ushr	v17.4s, v19.4s, #7
398	shl	v18.4s, v19.4s, #25
399	add	v5.4s, v5.4s, v3.4s
400	orr	v17.16b, v18.16b, v17.16b
401	add	v5.4s, v5.4s, v17.4s
402	eor	v7.16b, v7.16b, v5.16b
403	rev32	v7.8h, v7.8h
404	add	v1.4s, v6.4s, v7.4s
405	zip1	v6.4s, v0.4s, v4.4s
406	zip1	v0.4s, v4.4s, v0.4s
407	eor	v4.16b, v1.16b, v17.16b
408	ext	v6.16b, v0.16b, v6.16b, #8
409	ushr	v0.4s, v4.4s, #12
410	shl	v4.4s, v4.4s, #20
411	add	v5.4s, v5.4s, v6.4s
412	zip1	v20.2d, v6.2d, v2.2d
413	orr	v0.16b, v4.16b, v0.16b
414	mov	v20.s[3], v3.s[3]
415	add	v4.4s, v5.4s, v0.4s
416	eor	v5.16b, v4.16b, v7.16b
417	ext	v7.16b, v16.16b, v16.16b, #4
418	ushr	v16.4s, v5.4s, #8
419	shl	v5.4s, v5.4s, #24
420	uzp1	v17.4s, v7.4s, v7.4s
421	orr	v5.16b, v5.16b, v16.16b
422	ext	v16.16b, v17.16b, v7.16b, #8
423	add	v1.4s, v5.4s, v1.4s
424	uzp2	v16.4s, v16.4s, v2.4s
425	zip2	v2.4s, v2.4s, v6.4s
426	eor	v0.16b, v1.16b, v0.16b
427	add	v4.4s, v4.4s, v16.4s
428	ext	v1.16b, v1.16b, v1.16b, #12
429	ext	v16.16b, v16.16b, v16.16b, #4
430	ushr	v17.4s, v0.4s, #7
431	shl	v0.4s, v0.4s, #25
432	ext	v4.16b, v4.16b, v4.16b, #4
433	orr	v17.16b, v0.16b, v17.16b
434	ext	v0.16b, v5.16b, v5.16b, #8
435	ext	v5.16b, v7.16b, v7.16b, #12
436	add	v4.4s, v4.4s, v17.4s
437	eor	v0.16b, v0.16b, v4.16b
438	rev32	v18.8h, v0.8h
439	ext	v0.16b, v7.16b, v5.16b, #12
440	mov	v5.16b, v6.16b
441	add	v7.4s, v1.4s, v18.4s
442	rev64	v1.4s, v0.4s
443	mov	v5.s[1], v3.s[2]
444	eor	v17.16b, v7.16b, v17.16b
445	trn2	v1.4s, v1.4s, v5.4s
446	ushr	v19.4s, v17.4s, #12
447	shl	v17.4s, v17.4s, #20
448	add	v4.4s, v4.4s, v1.4s
449	orr	v17.16b, v17.16b, v19.16b
450	add	v19.4s, v4.4s, v17.4s
451	eor	v4.16b, v19.16b, v18.16b
452	ext	v19.16b, v19.16b, v19.16b, #12
453	ushr	v18.4s, v4.4s, #8
454	shl	v4.4s, v4.4s, #24
455	orr	v18.16b, v4.16b, v18.16b
456	ext	v4.16b, v20.16b, v20.16b, #12
457	add	v7.4s, v18.4s, v7.4s
458	uzp1	v4.4s, v20.4s, v4.4s
459	ext	v18.16b, v18.16b, v18.16b, #8
460	eor	v17.16b, v7.16b, v17.16b
461	add	v19.4s, v19.4s, v4.4s
462	ext	v7.16b, v7.16b, v7.16b, #4
463	ushr	v20.4s, v17.4s, #7
464	shl	v17.4s, v17.4s, #25
465	orr	v17.16b, v17.16b, v20.16b
466	add	v19.4s, v19.4s, v17.4s
467	eor	v18.16b, v18.16b, v19.16b
468	rev32	v18.8h, v18.8h
469	add	v6.4s, v7.4s, v18.4s
470	zip1	v7.4s, v2.4s, v3.4s
471	zip1	v2.4s, v3.4s, v2.4s
472	eor	v3.16b, v6.16b, v17.16b
473	ext	v2.16b, v2.16b, v7.16b, #8
474	ushr	v7.4s, v3.4s, #12
475	shl	v3.4s, v3.4s, #20
476	add	v17.4s, v19.4s, v2.4s
477	zip1	v1.2d, v2.2d, v1.2d
478	zip2	v0.4s, v0.4s, v2.4s
479	orr	v3.16b, v3.16b, v7.16b
480	mov	v1.s[3], v4.s[3]
481	add	v7.4s, v17.4s, v3.4s
482	eor	v17.16b, v7.16b, v18.16b
483	ext	v7.16b, v7.16b, v7.16b, #4
484	ushr	v18.4s, v17.4s, #8
485	shl	v17.4s, v17.4s, #24
486	orr	v17.16b, v17.16b, v18.16b
487	ext	v18.16b, v16.16b, v16.16b, #8
488	add	v6.4s, v17.4s, v6.4s
489	uzp2	v5.4s, v18.4s, v5.4s
490	eor	v3.16b, v6.16b, v3.16b
491	ext	v5.16b, v5.16b, v18.16b, #4
492	ext	v6.16b, v6.16b, v6.16b, #12
493	ushr	v18.4s, v3.4s, #7
494	shl	v3.4s, v3.4s, #25
495	add	v5.4s, v7.4s, v5.4s
496	ext	v7.16b, v17.16b, v17.16b, #8
497	ext	v17.16b, v16.16b, v16.16b, #12
498	orr	v3.16b, v3.16b, v18.16b
499	ext	v16.16b, v16.16b, v17.16b, #12
500	add	v5.4s, v3.4s, v5.4s
501	mov	v17.16b, v2.16b
502	rev64	v16.4s, v16.4s
503	eor	v7.16b, v7.16b, v5.16b
504	mov	v17.s[1], v4.s[2]
505	rev32	v7.8h, v7.8h
506	trn2	v16.4s, v16.4s, v17.4s
507	add	v6.4s, v6.4s, v7.4s
508	add	v5.4s, v5.4s, v16.4s
509	eor	v3.16b, v6.16b, v3.16b
510	ushr	v17.4s, v3.4s, #12
511	shl	v3.4s, v3.4s, #20
512	orr	v3.16b, v3.16b, v17.16b
513	add	v5.4s, v5.4s, v3.4s
514	eor	v7.16b, v5.16b, v7.16b
515	ext	v5.16b, v5.16b, v5.16b, #12
516	ushr	v16.4s, v7.4s, #8
517	shl	v7.4s, v7.4s, #24
518	orr	v7.16b, v7.16b, v16.16b
519	ext	v16.16b, v1.16b, v1.16b, #12
520	add	v6.4s, v7.4s, v6.4s
521	uzp1	v1.4s, v1.4s, v16.4s
522	eor	v3.16b, v6.16b, v3.16b
523	add	v1.4s, v5.4s, v1.4s
524	ext	v5.16b, v7.16b, v7.16b, #8
525	ext	v6.16b, v6.16b, v6.16b, #4
526	ushr	v16.4s, v3.4s, #7
527	shl	v3.4s, v3.4s, #25
528	orr	v3.16b, v3.16b, v16.16b
529	add	v1.4s, v1.4s, v3.4s
530	eor	v5.16b, v5.16b, v1.16b
531	rev32	v5.8h, v5.8h
532	add	v2.4s, v6.4s, v5.4s
533	zip1	v6.4s, v0.4s, v4.4s
534	zip1	v0.4s, v4.4s, v0.4s
535	eor	v3.16b, v2.16b, v3.16b
536	ext	v0.16b, v0.16b, v6.16b, #8
537	ushr	v4.4s, v3.4s, #12
538	shl	v3.4s, v3.4s, #20
539	add	v0.4s, v1.4s, v0.4s
540	orr	v1.16b, v3.16b, v4.16b
541	add	v0.4s, v0.4s, v1.4s
542	eor	v3.16b, v0.16b, v5.16b
543	ext	v0.16b, v0.16b, v0.16b, #4
544	ushr	v4.4s, v3.4s, #8
545	shl	v3.4s, v3.4s, #24
546	orr	v3.16b, v3.16b, v4.16b
547	add	v2.4s, v3.4s, v2.4s
548	ext	v3.16b, v3.16b, v3.16b, #8
549	eor	v1.16b, v2.16b, v1.16b
550	ext	v2.16b, v2.16b, v2.16b, #12
551	ushr	v4.4s, v1.4s, #7
552	shl	v1.4s, v1.4s, #25
553	stp	q2, q3, [x0, #32]
554	orr	v1.16b, v1.16b, v4.16b
555	stp	q0, q1, [x0]
556	ret
557.Lfunc_end1:
558	.size	compress_pre, .Lfunc_end1-compress_pre
559	.cfi_endproc
560
561	.globl	zfs_blake3_compress_xof_sse2
562	.p2align	2
563	.type	zfs_blake3_compress_xof_sse2,@function
564zfs_blake3_compress_xof_sse2:
565	.cfi_startproc
566	hint	#25
567	CFI_NEGATE_RA_STATE
568	sub	sp, sp, #96
569	stp	x29, x30, [sp, #64]
570	add	x29, sp, #64
571	stp	x20, x19, [sp, #80]
572	.cfi_def_cfa w29, 32
573	.cfi_offset w19, -8
574	.cfi_offset w20, -16
575	.cfi_offset w30, -24
576	.cfi_offset w29, -32
577	mov	x20, x0
578	mov	x19, x5
579	mov	w5, w4
580	mov	x4, x3
581	mov	w3, w2
582	mov	x2, x1
583	mov	x0, sp
584	mov	x1, x20
585	bl	compress_pre
586	ldp	q0, q1, [sp]
587	ldp	q2, q3, [sp, #32]
588	eor	v0.16b, v2.16b, v0.16b
589	eor	v1.16b, v3.16b, v1.16b
590	ldp	x29, x30, [sp, #64]
591	stp	q0, q1, [x19]
592	ldr	q0, [x20]
593	eor	v0.16b, v0.16b, v2.16b
594	str	q0, [x19, #32]
595	ldr	q0, [x20, #16]
596	eor	v0.16b, v0.16b, v3.16b
597	str	q0, [x19, #48]
598	ldp	x20, x19, [sp, #80]
599	add	sp, sp, #96
600	hint	#29
601	ret
602.Lfunc_end2:
603	.size	zfs_blake3_compress_xof_sse2, .Lfunc_end2-zfs_blake3_compress_xof_sse2
604	.cfi_endproc
605
606	.section	.rodata.cst16,"aM",@progbits,16
607	.p2align	4
608.LCPI3_0:
609	.word	0
610	.word	1
611	.word	2
612	.word	3
613	.text
614	.globl	zfs_blake3_hash_many_sse2
615	.p2align	2
616	.type	zfs_blake3_hash_many_sse2,@function
617zfs_blake3_hash_many_sse2:
618	.cfi_startproc
619	hint	#25
620	CFI_NEGATE_RA_STATE
621	stp	d15, d14, [sp, #-160]!
622	stp	d13, d12, [sp, #16]
623	stp	d11, d10, [sp, #32]
624	stp	d9, d8, [sp, #48]
625	stp	x29, x30, [sp, #64]
626	add	x29, sp, #64
627	stp	x28, x27, [sp, #80]
628	stp	x26, x25, [sp, #96]
629	stp	x24, x23, [sp, #112]
630	stp	x22, x21, [sp, #128]
631	stp	x20, x19, [sp, #144]
632	sub	sp, sp, #464
633	.cfi_def_cfa w29, 96
634	.cfi_offset w19, -8
635	.cfi_offset w20, -16
636	.cfi_offset w21, -24
637	.cfi_offset w22, -32
638	.cfi_offset w23, -40
639	.cfi_offset w24, -48
640	.cfi_offset w25, -56
641	.cfi_offset w26, -64
642	.cfi_offset w27, -72
643	.cfi_offset w28, -80
644	.cfi_offset w30, -88
645	.cfi_offset w29, -96
646	.cfi_offset b8, -104
647	.cfi_offset b9, -112
648	.cfi_offset b10, -120
649	.cfi_offset b11, -128
650	.cfi_offset b12, -136
651	.cfi_offset b13, -144
652	.cfi_offset b14, -152
653	.cfi_offset b15, -160
654	mov	w19, w6
655	mov	x20, x4
656	mov	x24, x1
657	ldr	x26, [x29, #104]
658	ldrb	w27, [x29, #96]
659	cmp	x1, #4
660	str	x3, [sp, #40]
661	b.lo	.LBB3_6
662	adrp	x8, .LCPI3_0
663	sbfx	w9, w5, #0, #1
664	mov	w10, #44677
665	mov	w11, #62322
666	movk	w10, #47975, lsl #16
667	movk	w11, #15470, lsl #16
668	ldr	q0, [x8, :lo12:.LCPI3_0]
669	dup	v1.4s, w9
670	mov	w9, #58983
671	orr	w8, w7, w19
672	movk	w9, #27145, lsl #16
673	and	v0.16b, v1.16b, v0.16b
674	dup	v1.4s, w11
675	movi	v24.4s, #64
676	dup	v2.4s, w9
677	mov	w9, #62778
678	movk	w9, #42319, lsl #16
679	str	q0, [sp, #16]
680	orr	v0.4s, #128, lsl #24
681	stp	q2, q1, [sp, #48]
682	str	q0, [sp]
683	dup	v0.4s, w10
684	str	q0, [sp, #80]
685	b	.LBB3_3
686.LBB3_2:
687	zip1	v0.4s, v12.4s, v31.4s
688	add	x10, x20, #4
689	zip1	v1.4s, v29.4s, v30.4s
690	tst	w5, #0x1
691	zip1	v2.4s, v28.4s, v23.4s
692	csel	x20, x10, x20, ne
693	zip1	v3.4s, v13.4s, v25.4s
694	add	x0, x0, #32
695	zip2	v6.4s, v12.4s, v31.4s
696	sub	x24, x24, #4
697	zip1	v4.2d, v0.2d, v1.2d
698	cmp	x24, #3
699	zip2	v7.4s, v29.4s, v30.4s
700	zip1	v5.2d, v2.2d, v3.2d
701	zip2	v0.2d, v0.2d, v1.2d
702	zip2	v1.2d, v2.2d, v3.2d
703	zip2	v2.4s, v28.4s, v23.4s
704	zip2	v3.4s, v13.4s, v25.4s
705	stp	q4, q5, [x26]
706	zip2	v4.2d, v6.2d, v7.2d
707	stp	q0, q1, [x26, #32]
708	zip1	v0.2d, v6.2d, v7.2d
709	zip1	v1.2d, v2.2d, v3.2d
710	zip2	v2.2d, v2.2d, v3.2d
711	stp	q0, q1, [x26, #64]
712	stp	q4, q2, [x26, #96]
713	add	x26, x26, #128
714	b.ls	.LBB3_6
715.LBB3_3:
716	ldr	x14, [sp, #40]
717	mov	x10, x14
718	add	x11, x14, #8
719	add	x12, x14, #12
720	add	x13, x14, #16
721	ld1r	{ v12.4s }, [x10], #4
722	ld1r	{ v29.4s }, [x11]
723	add	x11, x14, #20
724	ld1r	{ v30.4s }, [x12]
725	add	x12, x14, #24
726	ld1r	{ v28.4s }, [x13]
727	ld1r	{ v23.4s }, [x11]
728	add	x11, x14, #28
729	ld1r	{ v13.4s }, [x12]
730	ld1r	{ v31.4s }, [x10]
731	ld1r	{ v25.4s }, [x11]
732	cbz	x2, .LBB3_2
733	ldr	q1, [sp, #16]
734	dup	v0.4s, w20
735	lsr	x12, x20, #32
736	mov	x10, xzr
737	ldp	x13, x14, [x0, #16]
738	add	v1.4s, v0.4s, v1.4s
739	mov	x15, x2
740	movi	v0.4s, #128, lsl #24
741	mov	w4, w8
742	str	q1, [sp, #112]
743	eor	v0.16b, v1.16b, v0.16b
744	ldr	q1, [sp]
745	cmgt	v0.4s, v1.4s, v0.4s
746	dup	v1.4s, w12
747	ldp	x11, x12, [x0]
748	sub	v0.4s, v1.4s, v0.4s
749	str	q0, [sp, #96]
750.LBB3_5:
751	add	x17, x11, x10
752	add	x21, x12, x10
753	add	x16, x13, x10
754	add	x6, x14, x10
755	subs	x15, x15, #1
756	add	x10, x10, #64
757	ldp	q0, q1, [x17]
758	csel	w3, w27, wzr, eq
759	orr	w3, w3, w4
760	mov	w4, w19
761	and	w3, w3, #0xff
762	ldp	q3, q6, [x21]
763	dup	v2.4s, w3
764	zip1	v21.4s, v0.4s, v3.4s
765	zip2	v19.4s, v0.4s, v3.4s
766	ldp	q5, q7, [x16]
767	zip1	v17.4s, v1.4s, v6.4s
768	zip2	v22.4s, v1.4s, v6.4s
769	ldp	q16, q18, [x6]
770	zip1	v4.4s, v5.4s, v16.4s
771	zip2	v0.4s, v5.4s, v16.4s
772	ldp	q26, q27, [x17, #32]
773	zip1	v1.4s, v7.4s, v18.4s
774	zip2	v3.4s, v7.4s, v18.4s
775	zip2	v20.2d, v19.2d, v0.2d
776	mov	v19.d[1], v0.d[0]
777	dup	v18.4s, w9
778	ldp	q8, q9, [x21, #32]
779	stur	q19, [x29, #-208]
780	zip2	v7.4s, v26.4s, v8.4s
781	zip1	v10.4s, v26.4s, v8.4s
782	ldp	q11, q5, [x16, #32]
783	zip2	v26.2d, v17.2d, v1.2d
784	stp	q7, q26, [sp, #192]
785	mov	v17.d[1], v1.d[0]
786	add	v1.4s, v23.4s, v31.4s
787	ldp	q16, q6, [x6, #32]
788	stur	q17, [x29, #-256]
789	add	v1.4s, v1.4s, v19.4s
790	zip1	v8.4s, v11.4s, v16.4s
791	zip2	v7.4s, v11.4s, v16.4s
792	zip1	v11.4s, v27.4s, v9.4s
793	zip2	v9.4s, v27.4s, v9.4s
794	zip2	v27.2d, v21.2d, v4.2d
795	mov	v21.d[1], v4.d[0]
796	str	q7, [sp, #224]
797	add	v4.4s, v28.4s, v12.4s
798	zip1	v15.4s, v5.4s, v6.4s
799	zip2	v14.4s, v5.4s, v6.4s
800	stur	q27, [x29, #-192]
801	zip2	v16.2d, v22.2d, v3.2d
802	stp	q20, q21, [x29, #-240]
803	add	v0.4s, v4.4s, v21.4s
804	ldp	q6, q4, [sp, #96]
805	mov	v22.d[1], v3.d[0]
806	add	v5.4s, v25.4s, v30.4s
807	add	v3.4s, v13.4s, v29.4s
808	eor	v6.16b, v1.16b, v6.16b
809	add	v1.4s, v1.4s, v20.4s
810	str	q22, [sp, #256]
811	eor	v4.16b, v0.16b, v4.16b
812	add	v5.4s, v5.4s, v22.4s
813	add	v3.4s, v3.4s, v17.4s
814	ldr	q17, [sp, #48]
815	rev32	v6.8h, v6.8h
816	rev32	v4.8h, v4.8h
817	eor	v2.16b, v5.16b, v2.16b
818	eor	v7.16b, v3.16b, v24.16b
819	add	v0.4s, v0.4s, v27.4s
820	add	v21.4s, v4.4s, v17.4s
821	rev32	v31.8h, v2.8h
822	ldr	q2, [sp, #80]
823	rev32	v7.8h, v7.8h
824	mov	v27.16b, v16.16b
825	eor	v17.16b, v21.16b, v28.16b
826	add	v29.4s, v6.4s, v2.4s
827	ldr	q2, [sp, #64]
828	add	v24.4s, v31.4s, v18.4s
829	str	q27, [sp, #176]
830	ushr	v19.4s, v17.4s, #12
831	shl	v17.4s, v17.4s, #20
832	add	v30.4s, v7.4s, v2.4s
833	eor	v18.16b, v29.16b, v23.16b
834	orr	v12.16b, v17.16b, v19.16b
835	eor	v17.16b, v30.16b, v13.16b
836	eor	v19.16b, v24.16b, v25.16b
837	ushr	v23.4s, v18.4s, #12
838	shl	v18.4s, v18.4s, #20
839	ushr	v25.4s, v17.4s, #12
840	shl	v17.4s, v17.4s, #20
841	ushr	v28.4s, v19.4s, #12
842	shl	v19.4s, v19.4s, #20
843	orr	v13.16b, v18.16b, v23.16b
844	orr	v25.16b, v17.16b, v25.16b
845	orr	v2.16b, v19.16b, v28.16b
846	add	v28.4s, v0.4s, v12.4s
847	add	v0.4s, v3.4s, v26.4s
848	add	v18.4s, v1.4s, v13.4s
849	add	v3.4s, v5.4s, v16.4s
850	eor	v1.16b, v28.16b, v4.16b
851	add	v17.4s, v0.4s, v25.4s
852	eor	v0.16b, v18.16b, v6.16b
853	add	v19.4s, v3.4s, v2.4s
854	ushr	v16.4s, v1.4s, #8
855	shl	v3.4s, v1.4s, #24
856	eor	v4.16b, v17.16b, v7.16b
857	ushr	v6.4s, v0.4s, #8
858	shl	v1.4s, v0.4s, #24
859	eor	v5.16b, v19.16b, v31.16b
860	ushr	v23.4s, v4.4s, #8
861	shl	v4.4s, v4.4s, #24
862	orr	v7.16b, v3.16b, v16.16b
863	orr	v6.16b, v1.16b, v6.16b
864	ushr	v31.4s, v5.4s, #8
865	shl	v0.4s, v5.4s, #24
866	orr	v5.16b, v4.16b, v23.16b
867	add	v4.4s, v7.4s, v21.4s
868	ldr	q21, [sp, #192]
869	add	v3.4s, v6.4s, v29.4s
870	orr	v31.16b, v0.16b, v31.16b
871	add	v23.4s, v5.4s, v30.4s
872	eor	v0.16b, v4.16b, v12.16b
873	eor	v1.16b, v3.16b, v13.16b
874	add	v16.4s, v31.4s, v24.4s
875	eor	v20.16b, v23.16b, v25.16b
876	ushr	v24.4s, v0.4s, #7
877	shl	v0.4s, v0.4s, #25
878	ushr	v29.4s, v1.4s, #7
879	shl	v1.4s, v1.4s, #25
880	ushr	v30.4s, v20.4s, #7
881	shl	v20.4s, v20.4s, #25
882	orr	v25.16b, v0.16b, v24.16b
883	orr	v0.16b, v1.16b, v29.16b
884	mov	v29.16b, v10.16b
885	orr	v1.16b, v20.16b, v30.16b
886	mov	v20.16b, v10.16b
887	mov	v24.16b, v21.16b
888	ldr	q20, [sp, #224]
889	mov	v29.d[1], v8.d[0]
890	mov	v13.16b, v9.16b
891	zip2	v30.2d, v10.2d, v8.2d
892	zip2	v8.2d, v21.2d, v20.2d
893	mov	v26.16b, v11.16b
894	mov	v24.d[1], v20.d[0]
895	add	v20.4s, v28.4s, v29.4s
896	mov	v13.d[1], v14.d[0]
897	str	q8, [sp, #128]
898	eor	v2.16b, v16.16b, v2.16b
899	mov	v26.d[1], v15.d[0]
900	str	q24, [sp, #192]
901	add	v20.4s, v20.4s, v0.4s
902	add	v19.4s, v19.4s, v13.4s
903	ushr	v12.4s, v2.4s, #7
904	shl	v2.4s, v2.4s, #25
905	zip2	v10.2d, v9.2d, v14.2d
906	add	v18.4s, v18.4s, v24.4s
907	add	v17.4s, v17.4s, v26.4s
908	mov	v14.16b, v26.16b
909	eor	v26.16b, v20.16b, v31.16b
910	stp	q10, q30, [sp, #224]
911	add	v19.4s, v19.4s, v25.4s
912	orr	v2.16b, v2.16b, v12.16b
913	add	v18.4s, v18.4s, v1.4s
914	rev32	v26.8h, v26.8h
915	eor	v5.16b, v19.16b, v5.16b
916	add	v17.4s, v17.4s, v2.4s
917	eor	v7.16b, v18.16b, v7.16b
918	add	v23.4s, v23.4s, v26.4s
919	rev32	v5.8h, v5.8h
920	eor	v6.16b, v17.16b, v6.16b
921	rev32	v7.8h, v7.8h
922	eor	v0.16b, v23.16b, v0.16b
923	add	v3.4s, v3.4s, v5.4s
924	rev32	v6.8h, v6.8h
925	add	v16.4s, v16.4s, v7.4s
926	ushr	v31.4s, v0.4s, #12
927	shl	v0.4s, v0.4s, #20
928	eor	v25.16b, v3.16b, v25.16b
929	add	v4.4s, v4.4s, v6.4s
930	eor	v1.16b, v16.16b, v1.16b
931	orr	v0.16b, v0.16b, v31.16b
932	ushr	v31.4s, v25.4s, #12
933	shl	v25.4s, v25.4s, #20
934	add	v20.4s, v20.4s, v30.4s
935	zip2	v21.2d, v11.2d, v15.2d
936	ushr	v11.4s, v1.4s, #12
937	shl	v1.4s, v1.4s, #20
938	eor	v2.16b, v4.16b, v2.16b
939	orr	v25.16b, v25.16b, v31.16b
940	add	v19.4s, v19.4s, v10.4s
941	add	v20.4s, v20.4s, v0.4s
942	orr	v1.16b, v1.16b, v11.16b
943	ushr	v11.4s, v2.4s, #12
944	shl	v2.4s, v2.4s, #20
945	add	v18.4s, v18.4s, v8.4s
946	add	v19.4s, v19.4s, v25.4s
947	eor	v26.16b, v20.16b, v26.16b
948	orr	v2.16b, v2.16b, v11.16b
949	add	v17.4s, v17.4s, v21.4s
950	add	v18.4s, v18.4s, v1.4s
951	eor	v5.16b, v19.16b, v5.16b
952	ushr	v31.4s, v26.4s, #8
953	shl	v26.4s, v26.4s, #24
954	add	v17.4s, v17.4s, v2.4s
955	ushr	v11.4s, v5.4s, #8
956	shl	v5.4s, v5.4s, #24
957	eor	v7.16b, v18.16b, v7.16b
958	orr	v26.16b, v26.16b, v31.16b
959	eor	v6.16b, v17.16b, v6.16b
960	orr	v5.16b, v5.16b, v11.16b
961	ushr	v31.4s, v7.4s, #8
962	shl	v7.4s, v7.4s, #24
963	add	v23.4s, v26.4s, v23.4s
964	ushr	v11.4s, v6.4s, #8
965	shl	v6.4s, v6.4s, #24
966	orr	v7.16b, v7.16b, v31.16b
967	add	v3.4s, v5.4s, v3.4s
968	eor	v0.16b, v23.16b, v0.16b
969	ldp	q28, q12, [x29, #-256]
970	orr	v6.16b, v6.16b, v11.16b
971	add	v16.4s, v7.4s, v16.4s
972	eor	v25.16b, v3.16b, v25.16b
973	ushr	v31.4s, v0.4s, #7
974	shl	v0.4s, v0.4s, #25
975	add	v4.4s, v6.4s, v4.4s
976	ushr	v11.4s, v25.4s, #7
977	shl	v25.4s, v25.4s, #25
978	eor	v1.16b, v16.16b, v1.16b
979	orr	v0.16b, v0.16b, v31.16b
980	add	v18.4s, v18.4s, v12.4s
981	mov	v15.16b, v29.16b
982	ldur	q29, [x29, #-208]
983	eor	v2.16b, v4.16b, v2.16b
984	orr	v25.16b, v25.16b, v11.16b
985	ushr	v31.4s, v1.4s, #7
986	shl	v1.4s, v1.4s, #25
987	str	q15, [sp, #160]
988	add	v20.4s, v20.4s, v29.4s
989	add	v18.4s, v18.4s, v0.4s
990	ushr	v11.4s, v2.4s, #7
991	shl	v2.4s, v2.4s, #25
992	orr	v1.16b, v1.16b, v31.16b
993	add	v20.4s, v20.4s, v25.4s
994	add	v17.4s, v17.4s, v27.4s
995	eor	v6.16b, v6.16b, v18.16b
996	orr	v2.16b, v2.16b, v11.16b
997	add	v19.4s, v19.4s, v28.4s
998	eor	v7.16b, v7.16b, v20.16b
999	add	v17.4s, v17.4s, v1.4s
1000	rev32	v6.8h, v6.8h
1001	add	v19.4s, v19.4s, v2.4s
1002	rev32	v7.8h, v7.8h
1003	eor	v5.16b, v17.16b, v5.16b
1004	add	v3.4s, v3.4s, v6.4s
1005	eor	v26.16b, v19.16b, v26.16b
1006	add	v4.4s, v4.4s, v7.4s
1007	rev32	v5.8h, v5.8h
1008	eor	v0.16b, v3.16b, v0.16b
1009	rev32	v26.8h, v26.8h
1010	eor	v25.16b, v4.16b, v25.16b
1011	add	v23.4s, v23.4s, v5.4s
1012	ushr	v11.4s, v0.4s, #12
1013	shl	v0.4s, v0.4s, #20
1014	add	v16.4s, v16.4s, v26.4s
1015	ushr	v31.4s, v25.4s, #12
1016	shl	v25.4s, v25.4s, #20
1017	eor	v1.16b, v23.16b, v1.16b
1018	orr	v0.16b, v0.16b, v11.16b
1019	add	v18.4s, v18.4s, v24.4s
1020	orr	v25.16b, v25.16b, v31.16b
1021	eor	v2.16b, v16.16b, v2.16b
1022	ushr	v31.4s, v1.4s, #12
1023	shl	v1.4s, v1.4s, #20
1024	add	v20.4s, v20.4s, v22.4s
1025	add	v18.4s, v18.4s, v0.4s
1026	mov	v9.16b, v30.16b
1027	mov	v30.16b, v21.16b
1028	ldur	q21, [x29, #-224]
1029	ushr	v11.4s, v2.4s, #12
1030	shl	v2.4s, v2.4s, #20
1031	orr	v1.16b, v1.16b, v31.16b
1032	add	v20.4s, v20.4s, v25.4s
1033	str	q30, [sp, #144]
1034	add	v17.4s, v17.4s, v21.4s
1035	ldur	q21, [x29, #-192]
1036	eor	v6.16b, v18.16b, v6.16b
1037	orr	v2.16b, v2.16b, v11.16b
1038	add	v19.4s, v19.4s, v30.4s
1039	eor	v7.16b, v20.16b, v7.16b
1040	add	v17.4s, v17.4s, v1.4s
1041	ushr	v11.4s, v6.4s, #8
1042	shl	v6.4s, v6.4s, #24
1043	add	v19.4s, v19.4s, v2.4s
1044	ushr	v31.4s, v7.4s, #8
1045	shl	v7.4s, v7.4s, #24
1046	eor	v5.16b, v17.16b, v5.16b
1047	orr	v6.16b, v6.16b, v11.16b
1048	eor	v26.16b, v19.16b, v26.16b
1049	orr	v7.16b, v7.16b, v31.16b
1050	ushr	v31.4s, v5.4s, #8
1051	shl	v5.4s, v5.4s, #24
1052	add	v3.4s, v6.4s, v3.4s
1053	ushr	v11.4s, v26.4s, #8
1054	shl	v26.4s, v26.4s, #24
1055	add	v4.4s, v7.4s, v4.4s
1056	orr	v5.16b, v5.16b, v31.16b
1057	eor	v0.16b, v3.16b, v0.16b
1058	orr	v26.16b, v26.16b, v11.16b
1059	eor	v25.16b, v4.16b, v25.16b
1060	add	v23.4s, v5.4s, v23.4s
1061	ushr	v11.4s, v0.4s, #7
1062	shl	v0.4s, v0.4s, #25
1063	add	v16.4s, v26.4s, v16.4s
1064	ushr	v31.4s, v25.4s, #7
1065	shl	v25.4s, v25.4s, #25
1066	eor	v1.16b, v23.16b, v1.16b
1067	orr	v0.16b, v0.16b, v11.16b
1068	add	v20.4s, v20.4s, v21.4s
1069	orr	v25.16b, v25.16b, v31.16b
1070	eor	v2.16b, v16.16b, v2.16b
1071	ushr	v31.4s, v1.4s, #7
1072	shl	v1.4s, v1.4s, #25
1073	add	v20.4s, v20.4s, v0.4s
1074	add	v19.4s, v19.4s, v10.4s
1075	ushr	v11.4s, v2.4s, #7
1076	shl	v2.4s, v2.4s, #25
1077	orr	v1.16b, v1.16b, v31.16b
1078	add	v18.4s, v18.4s, v14.4s
1079	eor	v26.16b, v20.16b, v26.16b
1080	add	v19.4s, v19.4s, v25.4s
1081	orr	v2.16b, v2.16b, v11.16b
1082	add	v17.4s, v17.4s, v9.4s
1083	ldr	q9, [sp, #208]
1084	add	v18.4s, v18.4s, v1.4s
1085	rev32	v26.8h, v26.8h
1086	eor	v5.16b, v19.16b, v5.16b
1087	add	v17.4s, v17.4s, v2.4s
1088	eor	v7.16b, v18.16b, v7.16b
1089	add	v23.4s, v23.4s, v26.4s
1090	rev32	v5.8h, v5.8h
1091	eor	v6.16b, v17.16b, v6.16b
1092	rev32	v7.8h, v7.8h
1093	eor	v0.16b, v23.16b, v0.16b
1094	add	v3.4s, v3.4s, v5.4s
1095	rev32	v6.8h, v6.8h
1096	add	v16.4s, v16.4s, v7.4s
1097	ushr	v31.4s, v0.4s, #12
1098	shl	v0.4s, v0.4s, #20
1099	eor	v25.16b, v3.16b, v25.16b
1100	add	v4.4s, v4.4s, v6.4s
1101	eor	v1.16b, v16.16b, v1.16b
1102	orr	v0.16b, v0.16b, v31.16b
1103	ushr	v31.4s, v25.4s, #12
1104	shl	v25.4s, v25.4s, #20
1105	add	v20.4s, v20.4s, v8.4s
1106	ushr	v11.4s, v1.4s, #12
1107	shl	v1.4s, v1.4s, #20
1108	eor	v2.16b, v4.16b, v2.16b
1109	orr	v25.16b, v25.16b, v31.16b
1110	add	v19.4s, v19.4s, v15.4s
1111	add	v20.4s, v20.4s, v0.4s
1112	orr	v1.16b, v1.16b, v11.16b
1113	ushr	v11.4s, v2.4s, #12
1114	shl	v2.4s, v2.4s, #20
1115	add	v18.4s, v18.4s, v9.4s
1116	add	v19.4s, v19.4s, v25.4s
1117	eor	v26.16b, v20.16b, v26.16b
1118	orr	v2.16b, v2.16b, v11.16b
1119	add	v17.4s, v17.4s, v13.4s
1120	add	v18.4s, v18.4s, v1.4s
1121	eor	v5.16b, v19.16b, v5.16b
1122	ushr	v31.4s, v26.4s, #8
1123	shl	v26.4s, v26.4s, #24
1124	add	v17.4s, v17.4s, v2.4s
1125	ushr	v11.4s, v5.4s, #8
1126	shl	v5.4s, v5.4s, #24
1127	eor	v7.16b, v18.16b, v7.16b
1128	orr	v26.16b, v26.16b, v31.16b
1129	eor	v6.16b, v17.16b, v6.16b
1130	orr	v5.16b, v5.16b, v11.16b
1131	ushr	v31.4s, v7.4s, #8
1132	shl	v7.4s, v7.4s, #24
1133	add	v23.4s, v26.4s, v23.4s
1134	ushr	v11.4s, v6.4s, #8
1135	shl	v6.4s, v6.4s, #24
1136	orr	v7.16b, v7.16b, v31.16b
1137	add	v3.4s, v5.4s, v3.4s
1138	eor	v0.16b, v23.16b, v0.16b
1139	orr	v6.16b, v6.16b, v11.16b
1140	add	v16.4s, v7.4s, v16.4s
1141	eor	v25.16b, v3.16b, v25.16b
1142	ushr	v31.4s, v0.4s, #7
1143	shl	v0.4s, v0.4s, #25
1144	add	v4.4s, v6.4s, v4.4s
1145	ushr	v11.4s, v25.4s, #7
1146	shl	v25.4s, v25.4s, #25
1147	eor	v1.16b, v16.16b, v1.16b
1148	orr	v0.16b, v0.16b, v31.16b
1149	add	v18.4s, v18.4s, v24.4s
1150	eor	v2.16b, v4.16b, v2.16b
1151	orr	v25.16b, v25.16b, v11.16b
1152	ushr	v31.4s, v1.4s, #7
1153	shl	v1.4s, v1.4s, #25
1154	add	v20.4s, v20.4s, v12.4s
1155	add	v18.4s, v18.4s, v0.4s
1156	ushr	v11.4s, v2.4s, #7
1157	shl	v2.4s, v2.4s, #25
1158	orr	v1.16b, v1.16b, v31.16b
1159	add	v20.4s, v20.4s, v25.4s
1160	add	v17.4s, v17.4s, v30.4s
1161	eor	v6.16b, v6.16b, v18.16b
1162	orr	v2.16b, v2.16b, v11.16b
1163	add	v19.4s, v19.4s, v27.4s
1164	eor	v7.16b, v7.16b, v20.16b
1165	add	v17.4s, v17.4s, v1.4s
1166	rev32	v6.8h, v6.8h
1167	add	v19.4s, v19.4s, v2.4s
1168	rev32	v7.8h, v7.8h
1169	eor	v5.16b, v17.16b, v5.16b
1170	add	v3.4s, v3.4s, v6.4s
1171	eor	v26.16b, v19.16b, v26.16b
1172	add	v4.4s, v4.4s, v7.4s
1173	rev32	v5.8h, v5.8h
1174	eor	v0.16b, v3.16b, v0.16b
1175	rev32	v26.8h, v26.8h
1176	eor	v25.16b, v4.16b, v25.16b
1177	add	v23.4s, v23.4s, v5.4s
1178	ushr	v11.4s, v0.4s, #12
1179	shl	v0.4s, v0.4s, #20
1180	add	v16.4s, v16.4s, v26.4s
1181	ushr	v31.4s, v25.4s, #12
1182	shl	v25.4s, v25.4s, #20
1183	eor	v1.16b, v23.16b, v1.16b
1184	orr	v0.16b, v0.16b, v11.16b
1185	add	v18.4s, v18.4s, v14.4s
1186	orr	v25.16b, v25.16b, v31.16b
1187	eor	v2.16b, v16.16b, v2.16b
1188	ushr	v31.4s, v1.4s, #12
1189	shl	v1.4s, v1.4s, #20
1190	add	v20.4s, v20.4s, v28.4s
1191	add	v18.4s, v18.4s, v0.4s
1192	mov	v10.16b, v13.16b
1193	ushr	v11.4s, v2.4s, #12
1194	shl	v2.4s, v2.4s, #20
1195	orr	v1.16b, v1.16b, v31.16b
1196	add	v20.4s, v20.4s, v25.4s
1197	add	v17.4s, v17.4s, v29.4s
1198	eor	v6.16b, v18.16b, v6.16b
1199	orr	v2.16b, v2.16b, v11.16b
1200	add	v19.4s, v19.4s, v10.4s
1201	eor	v7.16b, v20.16b, v7.16b
1202	add	v17.4s, v17.4s, v1.4s
1203	ushr	v11.4s, v6.4s, #8
1204	shl	v6.4s, v6.4s, #24
1205	add	v19.4s, v19.4s, v2.4s
1206	ushr	v31.4s, v7.4s, #8
1207	shl	v7.4s, v7.4s, #24
1208	eor	v5.16b, v17.16b, v5.16b
1209	orr	v6.16b, v6.16b, v11.16b
1210	eor	v26.16b, v19.16b, v26.16b
1211	orr	v7.16b, v7.16b, v31.16b
1212	ushr	v31.4s, v5.4s, #8
1213	shl	v5.4s, v5.4s, #24
1214	add	v3.4s, v6.4s, v3.4s
1215	ushr	v11.4s, v26.4s, #8
1216	shl	v26.4s, v26.4s, #24
1217	add	v4.4s, v7.4s, v4.4s
1218	orr	v5.16b, v5.16b, v31.16b
1219	eor	v0.16b, v3.16b, v0.16b
1220	mov	v22.16b, v8.16b
1221	ldp	q8, q28, [sp, #240]
1222	orr	v26.16b, v26.16b, v11.16b
1223	eor	v25.16b, v4.16b, v25.16b
1224	add	v23.4s, v5.4s, v23.4s
1225	ushr	v11.4s, v0.4s, #7
1226	shl	v0.4s, v0.4s, #25
1227	add	v16.4s, v26.4s, v16.4s
1228	ushr	v31.4s, v25.4s, #7
1229	shl	v25.4s, v25.4s, #25
1230	eor	v1.16b, v23.16b, v1.16b
1231	orr	v0.16b, v0.16b, v11.16b
1232	add	v20.4s, v20.4s, v28.4s
1233	orr	v25.16b, v25.16b, v31.16b
1234	eor	v2.16b, v16.16b, v2.16b
1235	ushr	v31.4s, v1.4s, #7
1236	shl	v1.4s, v1.4s, #25
1237	add	v20.4s, v20.4s, v0.4s
1238	add	v19.4s, v19.4s, v15.4s
1239	ushr	v11.4s, v2.4s, #7
1240	shl	v2.4s, v2.4s, #25
1241	orr	v1.16b, v1.16b, v31.16b
1242	add	v18.4s, v18.4s, v8.4s
1243	eor	v26.16b, v20.16b, v26.16b
1244	add	v19.4s, v19.4s, v25.4s
1245	orr	v2.16b, v2.16b, v11.16b
1246	add	v17.4s, v17.4s, v22.4s
1247	ldur	q22, [x29, #-256]
1248	add	v18.4s, v18.4s, v1.4s
1249	rev32	v26.8h, v26.8h
1250	eor	v5.16b, v19.16b, v5.16b
1251	add	v17.4s, v17.4s, v2.4s
1252	eor	v7.16b, v18.16b, v7.16b
1253	add	v23.4s, v23.4s, v26.4s
1254	rev32	v5.8h, v5.8h
1255	eor	v6.16b, v17.16b, v6.16b
1256	rev32	v7.8h, v7.8h
1257	eor	v0.16b, v23.16b, v0.16b
1258	add	v3.4s, v3.4s, v5.4s
1259	rev32	v6.8h, v6.8h
1260	add	v16.4s, v16.4s, v7.4s
1261	ushr	v31.4s, v0.4s, #12
1262	shl	v0.4s, v0.4s, #20
1263	eor	v25.16b, v3.16b, v25.16b
1264	add	v4.4s, v4.4s, v6.4s
1265	eor	v1.16b, v16.16b, v1.16b
1266	orr	v0.16b, v0.16b, v31.16b
1267	ushr	v31.4s, v25.4s, #12
1268	shl	v25.4s, v25.4s, #20
1269	add	v20.4s, v20.4s, v9.4s
1270	mov	v13.16b, v12.16b
1271	mov	v12.16b, v27.16b
1272	mov	v27.16b, v9.16b
1273	ldur	q9, [x29, #-192]
1274	mov	v21.16b, v15.16b
1275	ldr	q15, [sp, #224]
1276	ushr	v11.4s, v1.4s, #12
1277	ldur	q21, [x29, #-224]
1278	shl	v1.4s, v1.4s, #20
1279	eor	v2.16b, v4.16b, v2.16b
1280	orr	v25.16b, v25.16b, v31.16b
1281	add	v19.4s, v19.4s, v9.4s
1282	add	v20.4s, v20.4s, v0.4s
1283	orr	v1.16b, v1.16b, v11.16b
1284	ushr	v11.4s, v2.4s, #12
1285	shl	v2.4s, v2.4s, #20
1286	add	v18.4s, v18.4s, v21.4s
1287	add	v19.4s, v19.4s, v25.4s
1288	eor	v26.16b, v20.16b, v26.16b
1289	orr	v2.16b, v2.16b, v11.16b
1290	add	v17.4s, v17.4s, v15.4s
1291	add	v18.4s, v18.4s, v1.4s
1292	eor	v5.16b, v19.16b, v5.16b
1293	ushr	v31.4s, v26.4s, #8
1294	shl	v26.4s, v26.4s, #24
1295	add	v17.4s, v17.4s, v2.4s
1296	ushr	v11.4s, v5.4s, #8
1297	shl	v5.4s, v5.4s, #24
1298	eor	v7.16b, v18.16b, v7.16b
1299	orr	v26.16b, v26.16b, v31.16b
1300	eor	v6.16b, v17.16b, v6.16b
1301	orr	v5.16b, v5.16b, v11.16b
1302	ushr	v31.4s, v7.4s, #8
1303	shl	v7.4s, v7.4s, #24
1304	add	v23.4s, v26.4s, v23.4s
1305	ushr	v11.4s, v6.4s, #8
1306	shl	v6.4s, v6.4s, #24
1307	orr	v7.16b, v7.16b, v31.16b
1308	add	v3.4s, v5.4s, v3.4s
1309	eor	v0.16b, v23.16b, v0.16b
1310	orr	v6.16b, v6.16b, v11.16b
1311	add	v16.4s, v7.4s, v16.4s
1312	eor	v25.16b, v3.16b, v25.16b
1313	ushr	v31.4s, v0.4s, #7
1314	shl	v0.4s, v0.4s, #25
1315	add	v4.4s, v6.4s, v4.4s
1316	ushr	v11.4s, v25.4s, #7
1317	shl	v25.4s, v25.4s, #25
1318	eor	v1.16b, v16.16b, v1.16b
1319	orr	v0.16b, v0.16b, v31.16b
1320	add	v18.4s, v18.4s, v14.4s
1321	eor	v2.16b, v4.16b, v2.16b
1322	orr	v25.16b, v25.16b, v11.16b
1323	ushr	v31.4s, v1.4s, #7
1324	shl	v1.4s, v1.4s, #25
1325	add	v20.4s, v20.4s, v24.4s
1326	add	v18.4s, v18.4s, v0.4s
1327	ushr	v11.4s, v2.4s, #7
1328	shl	v2.4s, v2.4s, #25
1329	orr	v1.16b, v1.16b, v31.16b
1330	add	v20.4s, v20.4s, v25.4s
1331	add	v17.4s, v17.4s, v10.4s
1332	eor	v6.16b, v6.16b, v18.16b
1333	orr	v2.16b, v2.16b, v11.16b
1334	add	v19.4s, v19.4s, v30.4s
1335	eor	v7.16b, v7.16b, v20.16b
1336	add	v17.4s, v17.4s, v1.4s
1337	rev32	v6.8h, v6.8h
1338	add	v19.4s, v19.4s, v2.4s
1339	rev32	v7.8h, v7.8h
1340	eor	v5.16b, v17.16b, v5.16b
1341	add	v3.4s, v3.4s, v6.4s
1342	eor	v26.16b, v19.16b, v26.16b
1343	add	v4.4s, v4.4s, v7.4s
1344	rev32	v5.8h, v5.8h
1345	eor	v0.16b, v3.16b, v0.16b
1346	rev32	v26.8h, v26.8h
1347	eor	v25.16b, v4.16b, v25.16b
1348	add	v23.4s, v23.4s, v5.4s
1349	ushr	v11.4s, v0.4s, #12
1350	shl	v0.4s, v0.4s, #20
1351	add	v16.4s, v16.4s, v26.4s
1352	ushr	v31.4s, v25.4s, #12
1353	shl	v25.4s, v25.4s, #20
1354	eor	v1.16b, v23.16b, v1.16b
1355	orr	v0.16b, v0.16b, v11.16b
1356	add	v18.4s, v18.4s, v8.4s
1357	orr	v25.16b, v25.16b, v31.16b
1358	eor	v2.16b, v16.16b, v2.16b
1359	ushr	v31.4s, v1.4s, #12
1360	shl	v1.4s, v1.4s, #20
1361	add	v20.4s, v20.4s, v12.4s
1362	add	v18.4s, v18.4s, v0.4s
1363	ushr	v11.4s, v2.4s, #12
1364	shl	v2.4s, v2.4s, #20
1365	orr	v1.16b, v1.16b, v31.16b
1366	add	v20.4s, v20.4s, v25.4s
1367	add	v17.4s, v17.4s, v13.4s
1368	ldr	q13, [sp, #160]
1369	eor	v6.16b, v18.16b, v6.16b
1370	orr	v2.16b, v2.16b, v11.16b
1371	add	v19.4s, v19.4s, v15.4s
1372	eor	v7.16b, v20.16b, v7.16b
1373	add	v17.4s, v17.4s, v1.4s
1374	ushr	v11.4s, v6.4s, #8
1375	shl	v6.4s, v6.4s, #24
1376	add	v19.4s, v19.4s, v2.4s
1377	ushr	v31.4s, v7.4s, #8
1378	shl	v7.4s, v7.4s, #24
1379	eor	v5.16b, v17.16b, v5.16b
1380	orr	v6.16b, v6.16b, v11.16b
1381	eor	v26.16b, v19.16b, v26.16b
1382	orr	v7.16b, v7.16b, v31.16b
1383	ushr	v31.4s, v5.4s, #8
1384	shl	v5.4s, v5.4s, #24
1385	add	v3.4s, v6.4s, v3.4s
1386	ushr	v11.4s, v26.4s, #8
1387	shl	v26.4s, v26.4s, #24
1388	add	v4.4s, v7.4s, v4.4s
1389	orr	v5.16b, v5.16b, v31.16b
1390	eor	v0.16b, v3.16b, v0.16b
1391	orr	v26.16b, v26.16b, v11.16b
1392	eor	v25.16b, v4.16b, v25.16b
1393	add	v23.4s, v5.4s, v23.4s
1394	ushr	v11.4s, v0.4s, #7
1395	shl	v0.4s, v0.4s, #25
1396	add	v16.4s, v26.4s, v16.4s
1397	ushr	v31.4s, v25.4s, #7
1398	shl	v25.4s, v25.4s, #25
1399	eor	v1.16b, v23.16b, v1.16b
1400	orr	v0.16b, v0.16b, v11.16b
1401	add	v20.4s, v20.4s, v22.4s
1402	orr	v25.16b, v25.16b, v31.16b
1403	eor	v2.16b, v16.16b, v2.16b
1404	ushr	v31.4s, v1.4s, #7
1405	shl	v1.4s, v1.4s, #25
1406	add	v20.4s, v20.4s, v0.4s
1407	add	v19.4s, v19.4s, v9.4s
1408	mov	v29.16b, v14.16b
1409	ldr	q14, [sp, #128]
1410	ushr	v11.4s, v2.4s, #7
1411	shl	v2.4s, v2.4s, #25
1412	orr	v1.16b, v1.16b, v31.16b
1413	add	v18.4s, v18.4s, v14.4s
1414	eor	v26.16b, v20.16b, v26.16b
1415	add	v19.4s, v19.4s, v25.4s
1416	orr	v2.16b, v2.16b, v11.16b
1417	add	v17.4s, v17.4s, v27.4s
1418	add	v18.4s, v18.4s, v1.4s
1419	rev32	v26.8h, v26.8h
1420	eor	v5.16b, v19.16b, v5.16b
1421	add	v17.4s, v17.4s, v2.4s
1422	eor	v7.16b, v18.16b, v7.16b
1423	add	v23.4s, v23.4s, v26.4s
1424	rev32	v5.8h, v5.8h
1425	eor	v6.16b, v17.16b, v6.16b
1426	rev32	v7.8h, v7.8h
1427	eor	v0.16b, v23.16b, v0.16b
1428	add	v3.4s, v3.4s, v5.4s
1429	rev32	v6.8h, v6.8h
1430	add	v16.4s, v16.4s, v7.4s
1431	ushr	v31.4s, v0.4s, #12
1432	shl	v0.4s, v0.4s, #20
1433	eor	v25.16b, v3.16b, v25.16b
1434	add	v4.4s, v4.4s, v6.4s
1435	eor	v1.16b, v16.16b, v1.16b
1436	orr	v0.16b, v0.16b, v31.16b
1437	ushr	v31.4s, v25.4s, #12
1438	shl	v25.4s, v25.4s, #20
1439	add	v20.4s, v20.4s, v21.4s
1440	ushr	v11.4s, v1.4s, #12
1441	shl	v1.4s, v1.4s, #20
1442	eor	v2.16b, v4.16b, v2.16b
1443	orr	v25.16b, v25.16b, v31.16b
1444	add	v19.4s, v19.4s, v28.4s
1445	add	v20.4s, v20.4s, v0.4s
1446	mov	v12.16b, v27.16b
1447	ldur	q27, [x29, #-208]
1448	orr	v1.16b, v1.16b, v11.16b
1449	ushr	v11.4s, v2.4s, #12
1450	shl	v2.4s, v2.4s, #20
1451	add	v18.4s, v18.4s, v27.4s
1452	add	v19.4s, v19.4s, v25.4s
1453	eor	v26.16b, v20.16b, v26.16b
1454	orr	v2.16b, v2.16b, v11.16b
1455	add	v17.4s, v17.4s, v13.4s
1456	add	v18.4s, v18.4s, v1.4s
1457	eor	v5.16b, v19.16b, v5.16b
1458	ushr	v31.4s, v26.4s, #8
1459	shl	v26.4s, v26.4s, #24
1460	add	v17.4s, v17.4s, v2.4s
1461	ushr	v11.4s, v5.4s, #8
1462	shl	v5.4s, v5.4s, #24
1463	eor	v7.16b, v18.16b, v7.16b
1464	orr	v26.16b, v26.16b, v31.16b
1465	eor	v6.16b, v17.16b, v6.16b
1466	orr	v5.16b, v5.16b, v11.16b
1467	ushr	v31.4s, v7.4s, #8
1468	shl	v7.4s, v7.4s, #24
1469	add	v23.4s, v26.4s, v23.4s
1470	ushr	v11.4s, v6.4s, #8
1471	shl	v6.4s, v6.4s, #24
1472	orr	v7.16b, v7.16b, v31.16b
1473	add	v3.4s, v5.4s, v3.4s
1474	eor	v0.16b, v23.16b, v0.16b
1475	orr	v6.16b, v6.16b, v11.16b
1476	add	v16.4s, v7.4s, v16.4s
1477	eor	v25.16b, v3.16b, v25.16b
1478	ushr	v31.4s, v0.4s, #7
1479	shl	v0.4s, v0.4s, #25
1480	add	v4.4s, v6.4s, v4.4s
1481	ushr	v11.4s, v25.4s, #7
1482	shl	v25.4s, v25.4s, #25
1483	eor	v1.16b, v16.16b, v1.16b
1484	orr	v0.16b, v0.16b, v31.16b
1485	add	v18.4s, v18.4s, v8.4s
1486	eor	v2.16b, v4.16b, v2.16b
1487	orr	v25.16b, v25.16b, v11.16b
1488	ushr	v31.4s, v1.4s, #7
1489	shl	v1.4s, v1.4s, #25
1490	add	v20.4s, v20.4s, v29.4s
1491	add	v18.4s, v18.4s, v0.4s
1492	ushr	v11.4s, v2.4s, #7
1493	shl	v2.4s, v2.4s, #25
1494	orr	v1.16b, v1.16b, v31.16b
1495	add	v20.4s, v20.4s, v25.4s
1496	add	v17.4s, v17.4s, v15.4s
1497	eor	v6.16b, v6.16b, v18.16b
1498	orr	v2.16b, v2.16b, v11.16b
1499	add	v19.4s, v19.4s, v10.4s
1500	eor	v7.16b, v7.16b, v20.16b
1501	add	v17.4s, v17.4s, v1.4s
1502	rev32	v6.8h, v6.8h
1503	add	v19.4s, v19.4s, v2.4s
1504	rev32	v7.8h, v7.8h
1505	eor	v5.16b, v17.16b, v5.16b
1506	add	v3.4s, v3.4s, v6.4s
1507	eor	v26.16b, v19.16b, v26.16b
1508	add	v4.4s, v4.4s, v7.4s
1509	rev32	v5.8h, v5.8h
1510	eor	v0.16b, v3.16b, v0.16b
1511	rev32	v26.8h, v26.8h
1512	eor	v25.16b, v4.16b, v25.16b
1513	add	v23.4s, v23.4s, v5.4s
1514	ushr	v11.4s, v0.4s, #12
1515	shl	v0.4s, v0.4s, #20
1516	add	v16.4s, v16.4s, v26.4s
1517	ushr	v31.4s, v25.4s, #12
1518	shl	v25.4s, v25.4s, #20
1519	eor	v1.16b, v23.16b, v1.16b
1520	orr	v0.16b, v0.16b, v11.16b
1521	add	v18.4s, v18.4s, v14.4s
1522	mov	v30.16b, v29.16b
1523	mov	v29.16b, v15.16b
1524	ldr	q15, [sp, #144]
1525	orr	v25.16b, v25.16b, v31.16b
1526	eor	v2.16b, v16.16b, v2.16b
1527	ushr	v31.4s, v1.4s, #12
1528	shl	v1.4s, v1.4s, #20
1529	add	v20.4s, v20.4s, v15.4s
1530	add	v18.4s, v18.4s, v0.4s
1531	ushr	v11.4s, v2.4s, #12
1532	shl	v2.4s, v2.4s, #20
1533	orr	v1.16b, v1.16b, v31.16b
1534	add	v20.4s, v20.4s, v25.4s
1535	add	v17.4s, v17.4s, v24.4s
1536	eor	v6.16b, v18.16b, v6.16b
1537	orr	v2.16b, v2.16b, v11.16b
1538	add	v19.4s, v19.4s, v13.4s
1539	eor	v7.16b, v20.16b, v7.16b
1540	add	v17.4s, v17.4s, v1.4s
1541	ushr	v11.4s, v6.4s, #8
1542	shl	v6.4s, v6.4s, #24
1543	add	v19.4s, v19.4s, v2.4s
1544	ushr	v31.4s, v7.4s, #8
1545	shl	v7.4s, v7.4s, #24
1546	eor	v5.16b, v17.16b, v5.16b
1547	orr	v6.16b, v6.16b, v11.16b
1548	eor	v26.16b, v19.16b, v26.16b
1549	orr	v7.16b, v7.16b, v31.16b
1550	ushr	v31.4s, v5.4s, #8
1551	shl	v5.4s, v5.4s, #24
1552	add	v3.4s, v6.4s, v3.4s
1553	ushr	v11.4s, v26.4s, #8
1554	shl	v26.4s, v26.4s, #24
1555	add	v4.4s, v7.4s, v4.4s
1556	orr	v5.16b, v5.16b, v31.16b
1557	eor	v0.16b, v3.16b, v0.16b
1558	orr	v26.16b, v26.16b, v11.16b
1559	eor	v25.16b, v4.16b, v25.16b
1560	add	v23.4s, v5.4s, v23.4s
1561	ushr	v11.4s, v0.4s, #7
1562	shl	v0.4s, v0.4s, #25
1563	mov	v9.16b, v28.16b
1564	mov	v28.16b, v10.16b
1565	ldr	q10, [sp, #176]
1566	add	v16.4s, v26.4s, v16.4s
1567	ushr	v31.4s, v25.4s, #7
1568	shl	v25.4s, v25.4s, #25
1569	eor	v1.16b, v23.16b, v1.16b
1570	orr	v0.16b, v0.16b, v11.16b
1571	add	v20.4s, v20.4s, v10.4s
1572	orr	v25.16b, v25.16b, v31.16b
1573	eor	v2.16b, v16.16b, v2.16b
1574	ushr	v31.4s, v1.4s, #7
1575	shl	v1.4s, v1.4s, #25
1576	add	v20.4s, v20.4s, v0.4s
1577	add	v19.4s, v19.4s, v9.4s
1578	ushr	v11.4s, v2.4s, #7
1579	shl	v2.4s, v2.4s, #25
1580	orr	v1.16b, v1.16b, v31.16b
1581	add	v18.4s, v18.4s, v12.4s
1582	eor	v26.16b, v20.16b, v26.16b
1583	add	v19.4s, v19.4s, v25.4s
1584	orr	v2.16b, v2.16b, v11.16b
1585	add	v17.4s, v17.4s, v21.4s
1586	add	v18.4s, v18.4s, v1.4s
1587	rev32	v26.8h, v26.8h
1588	eor	v5.16b, v19.16b, v5.16b
1589	add	v17.4s, v17.4s, v2.4s
1590	eor	v7.16b, v18.16b, v7.16b
1591	add	v23.4s, v23.4s, v26.4s
1592	rev32	v5.8h, v5.8h
1593	eor	v6.16b, v17.16b, v6.16b
1594	rev32	v7.8h, v7.8h
1595	eor	v0.16b, v23.16b, v0.16b
1596	add	v3.4s, v3.4s, v5.4s
1597	rev32	v6.8h, v6.8h
1598	add	v16.4s, v16.4s, v7.4s
1599	ushr	v31.4s, v0.4s, #12
1600	shl	v0.4s, v0.4s, #20
1601	eor	v25.16b, v3.16b, v25.16b
1602	add	v4.4s, v4.4s, v6.4s
1603	eor	v1.16b, v16.16b, v1.16b
1604	orr	v0.16b, v0.16b, v31.16b
1605	ushr	v31.4s, v25.4s, #12
1606	shl	v25.4s, v25.4s, #20
1607	ushr	v11.4s, v1.4s, #12
1608	shl	v1.4s, v1.4s, #20
1609	eor	v2.16b, v4.16b, v2.16b
1610	add	v20.4s, v20.4s, v27.4s
1611	orr	v25.16b, v25.16b, v31.16b
1612	add	v19.4s, v19.4s, v22.4s
1613	mov	v9.16b, v22.16b
1614	ldur	q22, [x29, #-240]
1615	orr	v1.16b, v1.16b, v11.16b
1616	ushr	v11.4s, v2.4s, #12
1617	shl	v2.4s, v2.4s, #20
1618	add	v20.4s, v20.4s, v0.4s
1619	add	v18.4s, v18.4s, v22.4s
1620	add	v19.4s, v19.4s, v25.4s
1621	mov	v24.16b, v21.16b
1622	ldur	q21, [x29, #-192]
1623	orr	v2.16b, v2.16b, v11.16b
1624	eor	v26.16b, v20.16b, v26.16b
1625	add	v17.4s, v17.4s, v21.4s
1626	add	v18.4s, v18.4s, v1.4s
1627	eor	v5.16b, v19.16b, v5.16b
1628	ushr	v31.4s, v26.4s, #8
1629	add	v17.4s, v17.4s, v2.4s
1630	shl	v26.4s, v26.4s, #24
1631	ushr	v11.4s, v5.4s, #8
1632	shl	v5.4s, v5.4s, #24
1633	eor	v7.16b, v18.16b, v7.16b
1634	orr	v26.16b, v26.16b, v31.16b
1635	eor	v6.16b, v17.16b, v6.16b
1636	orr	v5.16b, v5.16b, v11.16b
1637	ushr	v31.4s, v7.4s, #8
1638	shl	v7.4s, v7.4s, #24
1639	ushr	v11.4s, v6.4s, #8
1640	shl	v6.4s, v6.4s, #24
1641	add	v23.4s, v26.4s, v23.4s
1642	orr	v7.16b, v7.16b, v31.16b
1643	add	v3.4s, v5.4s, v3.4s
1644	orr	v6.16b, v6.16b, v11.16b
1645	eor	v0.16b, v23.16b, v0.16b
1646	add	v16.4s, v7.4s, v16.4s
1647	eor	v25.16b, v3.16b, v25.16b
1648	add	v4.4s, v6.4s, v4.4s
1649	ushr	v31.4s, v0.4s, #7
1650	shl	v0.4s, v0.4s, #25
1651	ushr	v11.4s, v25.4s, #7
1652	shl	v25.4s, v25.4s, #25
1653	eor	v1.16b, v16.16b, v1.16b
1654	orr	v0.16b, v0.16b, v31.16b
1655	eor	v2.16b, v4.16b, v2.16b
1656	orr	v25.16b, v25.16b, v11.16b
1657	ushr	v31.4s, v1.4s, #7
1658	shl	v1.4s, v1.4s, #25
1659	add	v20.4s, v20.4s, v8.4s
1660	add	v18.4s, v18.4s, v14.4s
1661	ushr	v11.4s, v2.4s, #7
1662	shl	v2.4s, v2.4s, #25
1663	orr	v1.16b, v1.16b, v31.16b
1664	add	v20.4s, v20.4s, v25.4s
1665	add	v17.4s, v17.4s, v13.4s
1666	add	v18.4s, v18.4s, v0.4s
1667	orr	v2.16b, v2.16b, v11.16b
1668	add	v19.4s, v19.4s, v29.4s
1669	eor	v7.16b, v7.16b, v20.16b
1670	add	v17.4s, v17.4s, v1.4s
1671	eor	v6.16b, v6.16b, v18.16b
1672	add	v19.4s, v19.4s, v2.4s
1673	rev32	v7.8h, v7.8h
1674	eor	v5.16b, v17.16b, v5.16b
1675	rev32	v6.8h, v6.8h
1676	eor	v26.16b, v19.16b, v26.16b
1677	add	v4.4s, v4.4s, v7.4s
1678	rev32	v5.8h, v5.8h
1679	add	v3.4s, v3.4s, v6.4s
1680	rev32	v26.8h, v26.8h
1681	eor	v25.16b, v4.16b, v25.16b
1682	add	v23.4s, v23.4s, v5.4s
1683	eor	v0.16b, v3.16b, v0.16b
1684	add	v16.4s, v16.4s, v26.4s
1685	ushr	v31.4s, v25.4s, #12
1686	shl	v25.4s, v25.4s, #20
1687	ushr	v11.4s, v0.4s, #12
1688	shl	v0.4s, v0.4s, #20
1689	eor	v1.16b, v23.16b, v1.16b
1690	orr	v25.16b, v25.16b, v31.16b
1691	eor	v2.16b, v16.16b, v2.16b
1692	orr	v0.16b, v0.16b, v11.16b
1693	ushr	v31.4s, v1.4s, #12
1694	shl	v1.4s, v1.4s, #20
1695	add	v20.4s, v20.4s, v28.4s
1696	add	v18.4s, v18.4s, v12.4s
1697	ushr	v11.4s, v2.4s, #12
1698	shl	v2.4s, v2.4s, #20
1699	orr	v1.16b, v1.16b, v31.16b
1700	add	v20.4s, v20.4s, v25.4s
1701	add	v17.4s, v17.4s, v30.4s
1702	add	v18.4s, v18.4s, v0.4s
1703	orr	v2.16b, v2.16b, v11.16b
1704	add	v19.4s, v19.4s, v21.4s
1705	eor	v7.16b, v20.16b, v7.16b
1706	add	v17.4s, v17.4s, v1.4s
1707	eor	v6.16b, v18.16b, v6.16b
1708	add	v19.4s, v19.4s, v2.4s
1709	ushr	v31.4s, v7.4s, #8
1710	shl	v7.4s, v7.4s, #24
1711	ushr	v11.4s, v6.4s, #8
1712	shl	v6.4s, v6.4s, #24
1713	eor	v5.16b, v17.16b, v5.16b
1714	orr	v7.16b, v7.16b, v31.16b
1715	eor	v26.16b, v19.16b, v26.16b
1716	orr	v6.16b, v6.16b, v11.16b
1717	ushr	v31.4s, v5.4s, #8
1718	shl	v5.4s, v5.4s, #24
1719	ushr	v11.4s, v26.4s, #8
1720	shl	v26.4s, v26.4s, #24
1721	add	v4.4s, v7.4s, v4.4s
1722	orr	v5.16b, v5.16b, v31.16b
1723	add	v3.4s, v6.4s, v3.4s
1724	orr	v26.16b, v26.16b, v11.16b
1725	eor	v25.16b, v4.16b, v25.16b
1726	add	v23.4s, v5.4s, v23.4s
1727	eor	v0.16b, v3.16b, v0.16b
1728	add	v16.4s, v26.4s, v16.4s
1729	ushr	v31.4s, v25.4s, #7
1730	shl	v25.4s, v25.4s, #25
1731	ushr	v11.4s, v0.4s, #7
1732	shl	v0.4s, v0.4s, #25
1733	eor	v1.16b, v23.16b, v1.16b
1734	orr	v25.16b, v25.16b, v31.16b
1735	eor	v2.16b, v16.16b, v2.16b
1736	orr	v0.16b, v0.16b, v11.16b
1737	ushr	v31.4s, v1.4s, #7
1738	shl	v1.4s, v1.4s, #25
1739	add	v20.4s, v20.4s, v15.4s
1740	ushr	v11.4s, v2.4s, #7
1741	shl	v2.4s, v2.4s, #25
1742	orr	v1.16b, v1.16b, v31.16b
1743	add	v18.4s, v18.4s, v24.4s
1744	add	v20.4s, v20.4s, v0.4s
1745	add	v19.4s, v19.4s, v9.4s
1746	mov	v8.16b, v13.16b
1747	ldur	q13, [x29, #-208]
1748	orr	v2.16b, v2.16b, v11.16b
1749	add	v18.4s, v18.4s, v1.4s
1750	add	v17.4s, v17.4s, v13.4s
1751	eor	v26.16b, v20.16b, v26.16b
1752	add	v19.4s, v19.4s, v25.4s
1753	eor	v7.16b, v18.16b, v7.16b
1754	add	v17.4s, v17.4s, v2.4s
1755	rev32	v26.8h, v26.8h
1756	eor	v5.16b, v19.16b, v5.16b
1757	rev32	v7.8h, v7.8h
1758	eor	v6.16b, v17.16b, v6.16b
1759	add	v23.4s, v23.4s, v26.4s
1760	rev32	v5.8h, v5.8h
1761	add	v16.4s, v16.4s, v7.4s
1762	rev32	v6.8h, v6.8h
1763	eor	v0.16b, v23.16b, v0.16b
1764	add	v3.4s, v3.4s, v5.4s
1765	eor	v1.16b, v16.16b, v1.16b
1766	add	v4.4s, v4.4s, v6.4s
1767	ushr	v31.4s, v0.4s, #12
1768	shl	v0.4s, v0.4s, #20
1769	eor	v25.16b, v3.16b, v25.16b
1770	ushr	v11.4s, v1.4s, #12
1771	shl	v1.4s, v1.4s, #20
1772	orr	v0.16b, v0.16b, v31.16b
1773	eor	v2.16b, v4.16b, v2.16b
1774	ushr	v31.4s, v25.4s, #12
1775	shl	v25.4s, v25.4s, #20
1776	orr	v1.16b, v1.16b, v11.16b
1777	ushr	v11.4s, v2.4s, #12
1778	shl	v2.4s, v2.4s, #20
1779	add	v20.4s, v20.4s, v22.4s
1780	orr	v25.16b, v25.16b, v31.16b
1781	add	v19.4s, v19.4s, v10.4s
1782	mov	v27.16b, v12.16b
1783	mov	v12.16b, v30.16b
1784	mov	v29.16b, v21.16b
1785	mov	v21.16b, v24.16b
1786	ldr	q24, [sp, #192]
1787	mov	v30.16b, v22.16b
1788	ldr	q22, [sp, #256]
1789	orr	v2.16b, v2.16b, v11.16b
1790	add	v20.4s, v20.4s, v0.4s
1791	add	v18.4s, v18.4s, v24.4s
1792	add	v19.4s, v19.4s, v25.4s
1793	add	v17.4s, v17.4s, v22.4s
1794	eor	v26.16b, v20.16b, v26.16b
1795	add	v18.4s, v18.4s, v1.4s
1796	eor	v5.16b, v19.16b, v5.16b
1797	add	v17.4s, v17.4s, v2.4s
1798	ushr	v31.4s, v26.4s, #8
1799	shl	v26.4s, v26.4s, #24
1800	ushr	v11.4s, v5.4s, #8
1801	shl	v5.4s, v5.4s, #24
1802	eor	v7.16b, v18.16b, v7.16b
1803	eor	v6.16b, v17.16b, v6.16b
1804	orr	v26.16b, v26.16b, v31.16b
1805	orr	v5.16b, v5.16b, v11.16b
1806	ushr	v31.4s, v7.4s, #8
1807	shl	v7.4s, v7.4s, #24
1808	ushr	v11.4s, v6.4s, #8
1809	shl	v6.4s, v6.4s, #24
1810	add	v23.4s, v26.4s, v23.4s
1811	orr	v7.16b, v7.16b, v31.16b
1812	add	v3.4s, v5.4s, v3.4s
1813	orr	v6.16b, v6.16b, v11.16b
1814	eor	v0.16b, v23.16b, v0.16b
1815	add	v16.4s, v7.4s, v16.4s
1816	eor	v25.16b, v3.16b, v25.16b
1817	add	v4.4s, v6.4s, v4.4s
1818	ushr	v31.4s, v0.4s, #7
1819	shl	v0.4s, v0.4s, #25
1820	ushr	v11.4s, v25.4s, #7
1821	shl	v25.4s, v25.4s, #25
1822	eor	v1.16b, v16.16b, v1.16b
1823	eor	v2.16b, v4.16b, v2.16b
1824	orr	v0.16b, v0.16b, v31.16b
1825	orr	v25.16b, v25.16b, v11.16b
1826	ushr	v31.4s, v1.4s, #7
1827	shl	v1.4s, v1.4s, #25
1828	ushr	v11.4s, v2.4s, #7
1829	shl	v2.4s, v2.4s, #25
1830	add	v20.4s, v20.4s, v14.4s
1831	add	v18.4s, v18.4s, v27.4s
1832	ldr	q27, [sp, #224]
1833	orr	v1.16b, v1.16b, v31.16b
1834	orr	v2.16b, v2.16b, v11.16b
1835	add	v20.4s, v20.4s, v25.4s
1836	add	v17.4s, v17.4s, v29.4s
1837	add	v18.4s, v18.4s, v0.4s
1838	add	v19.4s, v19.4s, v8.4s
1839	eor	v7.16b, v7.16b, v20.16b
1840	add	v17.4s, v17.4s, v1.4s
1841	eor	v6.16b, v6.16b, v18.16b
1842	add	v19.4s, v19.4s, v2.4s
1843	rev32	v7.8h, v7.8h
1844	eor	v5.16b, v17.16b, v5.16b
1845	rev32	v6.8h, v6.8h
1846	eor	v26.16b, v19.16b, v26.16b
1847	add	v4.4s, v4.4s, v7.4s
1848	rev32	v5.8h, v5.8h
1849	add	v3.4s, v3.4s, v6.4s
1850	rev32	v26.8h, v26.8h
1851	eor	v25.16b, v4.16b, v25.16b
1852	add	v23.4s, v23.4s, v5.4s
1853	eor	v0.16b, v3.16b, v0.16b
1854	add	v16.4s, v16.4s, v26.4s
1855	ushr	v29.4s, v25.4s, #12
1856	shl	v25.4s, v25.4s, #20
1857	ushr	v31.4s, v0.4s, #12
1858	shl	v0.4s, v0.4s, #20
1859	eor	v1.16b, v23.16b, v1.16b
1860	eor	v2.16b, v16.16b, v2.16b
1861	orr	v25.16b, v25.16b, v29.16b
1862	orr	v0.16b, v0.16b, v31.16b
1863	ushr	v29.4s, v1.4s, #12
1864	shl	v1.4s, v1.4s, #20
1865	ushr	v31.4s, v2.4s, #12
1866	shl	v2.4s, v2.4s, #20
1867	add	v18.4s, v18.4s, v21.4s
1868	ldr	q21, [sp, #240]
1869	add	v20.4s, v20.4s, v27.4s
1870	prfm	pldl1keep, [x17, #256]
1871	orr	v1.16b, v1.16b, v29.16b
1872	prfm	pldl1keep, [x21, #256]
1873	orr	v2.16b, v2.16b, v31.16b
1874	prfm	pldl1keep, [x16, #256]
1875	add	v18.4s, v18.4s, v0.4s
1876	prfm	pldl1keep, [x6, #256]
1877	add	v17.4s, v17.4s, v21.4s
1878	add	v19.4s, v19.4s, v22.4s
1879	add	v20.4s, v20.4s, v25.4s
1880	eor	v6.16b, v18.16b, v6.16b
1881	add	v17.4s, v17.4s, v1.4s
1882	add	v19.4s, v19.4s, v2.4s
1883	eor	v7.16b, v20.16b, v7.16b
1884	ushr	v22.4s, v6.4s, #8
1885	shl	v6.4s, v6.4s, #24
1886	eor	v5.16b, v17.16b, v5.16b
1887	eor	v26.16b, v19.16b, v26.16b
1888	ushr	v21.4s, v7.4s, #8
1889	shl	v7.4s, v7.4s, #24
1890	orr	v6.16b, v6.16b, v22.16b
1891	ushr	v22.4s, v5.4s, #8
1892	shl	v5.4s, v5.4s, #24
1893	ushr	v29.4s, v26.4s, #8
1894	shl	v26.4s, v26.4s, #24
1895	orr	v7.16b, v7.16b, v21.16b
1896	orr	v5.16b, v5.16b, v22.16b
1897	add	v3.4s, v6.4s, v3.4s
1898	orr	v21.16b, v26.16b, v29.16b
1899	add	v4.4s, v7.4s, v4.4s
1900	add	v22.4s, v5.4s, v23.4s
1901	eor	v0.16b, v3.16b, v0.16b
1902	add	v16.4s, v21.4s, v16.4s
1903	eor	v23.16b, v4.16b, v25.16b
1904	eor	v1.16b, v22.16b, v1.16b
1905	ushr	v25.4s, v0.4s, #7
1906	shl	v0.4s, v0.4s, #25
1907	eor	v2.16b, v16.16b, v2.16b
1908	ushr	v26.4s, v23.4s, #7
1909	shl	v23.4s, v23.4s, #25
1910	orr	v0.16b, v0.16b, v25.16b
1911	ushr	v25.4s, v1.4s, #7
1912	shl	v1.4s, v1.4s, #25
1913	ushr	v29.4s, v2.4s, #7
1914	shl	v2.4s, v2.4s, #25
1915	add	v20.4s, v20.4s, v28.4s
1916	orr	v23.16b, v23.16b, v26.16b
1917	orr	v1.16b, v1.16b, v25.16b
1918	orr	v2.16b, v2.16b, v29.16b
1919	add	v20.4s, v20.4s, v0.4s
1920	add	v18.4s, v18.4s, v13.4s
1921	add	v17.4s, v17.4s, v30.4s
1922	add	v19.4s, v19.4s, v10.4s
1923	eor	v21.16b, v20.16b, v21.16b
1924	add	v18.4s, v18.4s, v1.4s
1925	add	v17.4s, v17.4s, v2.4s
1926	add	v19.4s, v19.4s, v23.4s
1927	rev32	v21.8h, v21.8h
1928	eor	v7.16b, v18.16b, v7.16b
1929	eor	v6.16b, v17.16b, v6.16b
1930	eor	v5.16b, v19.16b, v5.16b
1931	add	v22.4s, v22.4s, v21.4s
1932	rev32	v7.8h, v7.8h
1933	rev32	v6.8h, v6.8h
1934	rev32	v5.8h, v5.8h
1935	eor	v0.16b, v22.16b, v0.16b
1936	add	v16.4s, v16.4s, v7.4s
1937	add	v4.4s, v4.4s, v6.4s
1938	add	v3.4s, v3.4s, v5.4s
1939	ushr	v25.4s, v0.4s, #12
1940	shl	v0.4s, v0.4s, #20
1941	eor	v1.16b, v16.16b, v1.16b
1942	eor	v2.16b, v4.16b, v2.16b
1943	eor	v23.16b, v3.16b, v23.16b
1944	orr	v0.16b, v0.16b, v25.16b
1945	ushr	v25.4s, v1.4s, #12
1946	shl	v1.4s, v1.4s, #20
1947	ushr	v26.4s, v2.4s, #12
1948	shl	v2.4s, v2.4s, #20
1949	ushr	v27.4s, v23.4s, #12
1950	shl	v23.4s, v23.4s, #20
1951	orr	v1.16b, v1.16b, v25.16b
1952	add	v20.4s, v20.4s, v24.4s
1953	orr	v2.16b, v2.16b, v26.16b
1954	orr	v23.16b, v23.16b, v27.16b
1955	add	v18.4s, v18.4s, v12.4s
1956	add	v17.4s, v17.4s, v9.4s
1957	add	v19.4s, v19.4s, v15.4s
1958	add	v20.4s, v20.4s, v0.4s
1959	add	v18.4s, v18.4s, v1.4s
1960	add	v17.4s, v17.4s, v2.4s
1961	add	v19.4s, v19.4s, v23.4s
1962	eor	v21.16b, v20.16b, v21.16b
1963	eor	v7.16b, v18.16b, v7.16b
1964	eor	v6.16b, v17.16b, v6.16b
1965	eor	v5.16b, v19.16b, v5.16b
1966	ushr	v24.4s, v21.4s, #8
1967	shl	v21.4s, v21.4s, #24
1968	ushr	v25.4s, v7.4s, #8
1969	shl	v7.4s, v7.4s, #24
1970	ushr	v26.4s, v6.4s, #8
1971	shl	v6.4s, v6.4s, #24
1972	ushr	v27.4s, v5.4s, #8
1973	shl	v5.4s, v5.4s, #24
1974	orr	v21.16b, v21.16b, v24.16b
1975	orr	v7.16b, v7.16b, v25.16b
1976	orr	v6.16b, v6.16b, v26.16b
1977	orr	v5.16b, v5.16b, v27.16b
1978	add	v22.4s, v21.4s, v22.4s
1979	add	v16.4s, v7.4s, v16.4s
1980	add	v4.4s, v6.4s, v4.4s
1981	add	v3.4s, v5.4s, v3.4s
1982	eor	v0.16b, v22.16b, v0.16b
1983	eor	v1.16b, v16.16b, v1.16b
1984	eor	v2.16b, v4.16b, v2.16b
1985	eor	v23.16b, v3.16b, v23.16b
1986	ushr	v24.4s, v0.4s, #7
1987	shl	v0.4s, v0.4s, #25
1988	ushr	v25.4s, v1.4s, #7
1989	shl	v1.4s, v1.4s, #25
1990	ushr	v26.4s, v2.4s, #7
1991	shl	v2.4s, v2.4s, #25
1992	ushr	v27.4s, v23.4s, #7
1993	shl	v23.4s, v23.4s, #25
1994	orr	v0.16b, v0.16b, v24.16b
1995	orr	v1.16b, v1.16b, v25.16b
1996	orr	v2.16b, v2.16b, v26.16b
1997	orr	v23.16b, v23.16b, v27.16b
1998	movi	v24.4s, #64
1999	eor	v12.16b, v4.16b, v20.16b
2000	eor	v31.16b, v18.16b, v3.16b
2001	eor	v29.16b, v17.16b, v22.16b
2002	eor	v30.16b, v16.16b, v19.16b
2003	eor	v28.16b, v7.16b, v23.16b
2004	eor	v23.16b, v6.16b, v0.16b
2005	eor	v13.16b, v1.16b, v5.16b
2006	eor	v25.16b, v2.16b, v21.16b
2007	cbnz	x15, .LBB3_5
2008	b	.LBB3_2
2009.LBB3_6:
2010	cbz	x24, .LBB3_14
2011	orr	w8, w7, w19
2012	and	x22, x5, #0x1
2013	stur	w8, [x29, #-192]
2014.LBB3_8:
2015	ldr	x8, [sp, #40]
2016	mov	x28, x0
2017	ldr	x25, [x0]
2018	mov	x23, x2
2019	ldur	w5, [x29, #-192]
2020	ldp	q0, q1, [x8]
2021	mov	x8, x2
2022	b	.LBB3_11
2023.LBB3_9:
2024	orr	w5, w5, w27
2025.LBB3_10:
2026	sub	x0, x29, #144
2027	sub	x1, x29, #176
2028	mov	x2, x25
2029	mov	w3, #64
2030	mov	x4, x20
2031	bl	compress_pre
2032	ldp	q0, q1, [x29, #-144]
2033	add	x25, x25, #64
2034	mov	x8, x21
2035	mov	w5, w19
2036	ldp	q2, q3, [x29, #-112]
2037	eor	v0.16b, v2.16b, v0.16b
2038	eor	v1.16b, v3.16b, v1.16b
2039.LBB3_11:
2040	subs	x21, x8, #1
2041	stp	q0, q1, [x29, #-176]
2042	b.eq	.LBB3_9
2043	cbnz	x8, .LBB3_10
2044	ldp	q1, q0, [x29, #-176]
2045	mov	x0, x28
2046	add	x20, x20, x22
2047	add	x0, x28, #8
2048	subs	x24, x24, #1
2049	mov	x2, x23
2050	stp	q1, q0, [x26], #32
2051	b.ne	.LBB3_8
2052.LBB3_14:
2053	add	sp, sp, #464
2054	ldp	x20, x19, [sp, #144]
2055	ldp	x22, x21, [sp, #128]
2056	ldp	x24, x23, [sp, #112]
2057	ldp	x26, x25, [sp, #96]
2058	ldp	x28, x27, [sp, #80]
2059	ldp	x29, x30, [sp, #64]
2060	ldp	d9, d8, [sp, #48]
2061	ldp	d11, d10, [sp, #32]
2062	ldp	d13, d12, [sp, #16]
2063	ldp	d15, d14, [sp], #160
2064	hint	#29
2065	ret
2066.Lfunc_end3:
2067	.size	zfs_blake3_hash_many_sse2, .Lfunc_end3-zfs_blake3_hash_many_sse2
2068	.cfi_endproc
2069	.section	".note.GNU-stack","",@progbits
2070#endif
2071