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