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-2020 Samuel Neves
25 * Copyright (c) 2022 Tino Reichardt <milky-zfs@mcmilk.de>
28 #if defined(HAVE_AVX512F) && defined(HAVE_AVX512VL)
31 #include <sys/asm_linkage.h>
33 .intel_syntax noprefix
36 ENTRY_ALIGN(zfs_blake3_hash_many_avx512, 64)
46 and rsp, 0xFFFFFFFFFFFFFFC0
50 vpbroadcastd ymm0, xmm0
53 vpbroadcastd ymm1, xmm1
56 vpaddd ymm2, ymm0, ymmword ptr [ADD0+rip]
57 vpaddd ymm3, ymm0, ymmword ptr [ADD0+32+rip]
58 vpcmpltud k2, ymm2, ymm0
59 vpcmpltud k3, ymm3, ymm0
60 vpaddd ymm4 {k2}, ymm4, dword ptr [ADD1+rip] {1to8}
61 vpaddd ymm5 {k3}, ymm5, dword ptr [ADD1+rip] {1to8}
63 vmovdqa32 ymm2 {k2}, ymm0
64 vmovdqa32 ymm3 {k2}, ymm0
65 vmovdqa32 ymm4 {k2}, ymm1
66 vmovdqa32 ymm5 {k2}, ymm1
67 vmovdqa ymmword ptr [rsp], ymm2
68 vmovdqa ymmword ptr [rsp+0x1*0x20], ymm3
69 vmovdqa ymmword ptr [rsp+0x2*0x20], ymm4
70 vmovdqa ymmword ptr [rsp+0x3*0x20], ymm5
72 mov qword ptr [rsp+0x80], rdx
76 vpbroadcastd zmm0, dword ptr [rcx]
77 vpbroadcastd zmm1, dword ptr [rcx+0x1*0x4]
78 vpbroadcastd zmm2, dword ptr [rcx+0x2*0x4]
79 vpbroadcastd zmm3, dword ptr [rcx+0x3*0x4]
80 vpbroadcastd zmm4, dword ptr [rcx+0x4*0x4]
81 vpbroadcastd zmm5, dword ptr [rcx+0x5*0x4]
82 vpbroadcastd zmm6, dword ptr [rcx+0x6*0x4]
83 vpbroadcastd zmm7, dword ptr [rcx+0x7*0x4]
84 movzx eax, byte ptr [rbp+0x38]
85 movzx ebx, byte ptr [rbp+0x40]
90 movzx ebx, byte ptr [rbp+0x48]
93 cmp rdx, qword ptr [rsp+0x80]
95 mov dword ptr [rsp+0x88], eax
96 mov r8, qword ptr [rdi]
97 mov r9, qword ptr [rdi+0x8]
98 mov r10, qword ptr [rdi+0x10]
99 mov r11, qword ptr [rdi+0x18]
100 mov r12, qword ptr [rdi+0x40]
101 mov r13, qword ptr [rdi+0x48]
102 mov r14, qword ptr [rdi+0x50]
103 mov r15, qword ptr [rdi+0x58]
104 vmovdqu32 ymm16, ymmword ptr [rdx+r8-0x2*0x20]
105 vinserti32x8 zmm16, zmm16, ymmword ptr [rdx+r12-0x2*0x20], 0x01
106 vmovdqu32 ymm17, ymmword ptr [rdx+r9-0x2*0x20]
107 vinserti32x8 zmm17, zmm17, ymmword ptr [rdx+r13-0x2*0x20], 0x01
108 vpunpcklqdq zmm8, zmm16, zmm17
109 vpunpckhqdq zmm9, zmm16, zmm17
110 vmovdqu32 ymm18, ymmword ptr [rdx+r10-0x2*0x20]
111 vinserti32x8 zmm18, zmm18, ymmword ptr [rdx+r14-0x2*0x20], 0x01
112 vmovdqu32 ymm19, ymmword ptr [rdx+r11-0x2*0x20]
113 vinserti32x8 zmm19, zmm19, ymmword ptr [rdx+r15-0x2*0x20], 0x01
114 vpunpcklqdq zmm10, zmm18, zmm19
115 vpunpckhqdq zmm11, zmm18, zmm19
116 mov r8, qword ptr [rdi+0x20]
117 mov r9, qword ptr [rdi+0x28]
118 mov r10, qword ptr [rdi+0x30]
119 mov r11, qword ptr [rdi+0x38]
120 mov r12, qword ptr [rdi+0x60]
121 mov r13, qword ptr [rdi+0x68]
122 mov r14, qword ptr [rdi+0x70]
123 mov r15, qword ptr [rdi+0x78]
124 vmovdqu32 ymm16, ymmword ptr [rdx+r8-0x2*0x20]
125 vinserti32x8 zmm16, zmm16, ymmword ptr [rdx+r12-0x2*0x20], 0x01
126 vmovdqu32 ymm17, ymmword ptr [rdx+r9-0x2*0x20]
127 vinserti32x8 zmm17, zmm17, ymmword ptr [rdx+r13-0x2*0x20], 0x01
128 vpunpcklqdq zmm12, zmm16, zmm17
129 vpunpckhqdq zmm13, zmm16, zmm17
130 vmovdqu32 ymm18, ymmword ptr [rdx+r10-0x2*0x20]
131 vinserti32x8 zmm18, zmm18, ymmword ptr [rdx+r14-0x2*0x20], 0x01
132 vmovdqu32 ymm19, ymmword ptr [rdx+r11-0x2*0x20]
133 vinserti32x8 zmm19, zmm19, ymmword ptr [rdx+r15-0x2*0x20], 0x01
134 vpunpcklqdq zmm14, zmm18, zmm19
135 vpunpckhqdq zmm15, zmm18, zmm19
136 vmovdqa32 zmm27, zmmword ptr [INDEX0+rip]
137 vmovdqa32 zmm31, zmmword ptr [INDEX1+rip]
138 vshufps zmm16, zmm8, zmm10, 136
139 vshufps zmm17, zmm12, zmm14, 136
140 vmovdqa32 zmm20, zmm16
141 vpermt2d zmm16, zmm27, zmm17
142 vpermt2d zmm20, zmm31, zmm17
143 vshufps zmm17, zmm8, zmm10, 221
144 vshufps zmm30, zmm12, zmm14, 221
145 vmovdqa32 zmm21, zmm17
146 vpermt2d zmm17, zmm27, zmm30
147 vpermt2d zmm21, zmm31, zmm30
148 vshufps zmm18, zmm9, zmm11, 136
149 vshufps zmm8, zmm13, zmm15, 136
150 vmovdqa32 zmm22, zmm18
151 vpermt2d zmm18, zmm27, zmm8
152 vpermt2d zmm22, zmm31, zmm8
153 vshufps zmm19, zmm9, zmm11, 221
154 vshufps zmm8, zmm13, zmm15, 221
155 vmovdqa32 zmm23, zmm19
156 vpermt2d zmm19, zmm27, zmm8
157 vpermt2d zmm23, zmm31, zmm8
158 mov r8, qword ptr [rdi]
159 mov r9, qword ptr [rdi+0x8]
160 mov r10, qword ptr [rdi+0x10]
161 mov r11, qword ptr [rdi+0x18]
162 mov r12, qword ptr [rdi+0x40]
163 mov r13, qword ptr [rdi+0x48]
164 mov r14, qword ptr [rdi+0x50]
165 mov r15, qword ptr [rdi+0x58]
166 vmovdqu32 ymm24, ymmword ptr [r8+rdx-0x1*0x20]
167 vinserti32x8 zmm24, zmm24, ymmword ptr [r12+rdx-0x1*0x20], 0x01
168 vmovdqu32 ymm25, ymmword ptr [r9+rdx-0x1*0x20]
169 vinserti32x8 zmm25, zmm25, ymmword ptr [r13+rdx-0x1*0x20], 0x01
170 vpunpcklqdq zmm8, zmm24, zmm25
171 vpunpckhqdq zmm9, zmm24, zmm25
172 vmovdqu32 ymm24, ymmword ptr [r10+rdx-0x1*0x20]
173 vinserti32x8 zmm24, zmm24, ymmword ptr [r14+rdx-0x1*0x20], 0x01
174 vmovdqu32 ymm25, ymmword ptr [r11+rdx-0x1*0x20]
175 vinserti32x8 zmm25, zmm25, ymmword ptr [r15+rdx-0x1*0x20], 0x01
176 vpunpcklqdq zmm10, zmm24, zmm25
177 vpunpckhqdq zmm11, zmm24, zmm25
178 prefetcht0 [r8+rdx+0x80]
179 prefetcht0 [r12+rdx+0x80]
180 prefetcht0 [r9+rdx+0x80]
181 prefetcht0 [r13+rdx+0x80]
182 prefetcht0 [r10+rdx+0x80]
183 prefetcht0 [r14+rdx+0x80]
184 prefetcht0 [r11+rdx+0x80]
185 prefetcht0 [r15+rdx+0x80]
186 mov r8, qword ptr [rdi+0x20]
187 mov r9, qword ptr [rdi+0x28]
188 mov r10, qword ptr [rdi+0x30]
189 mov r11, qword ptr [rdi+0x38]
190 mov r12, qword ptr [rdi+0x60]
191 mov r13, qword ptr [rdi+0x68]
192 mov r14, qword ptr [rdi+0x70]
193 mov r15, qword ptr [rdi+0x78]
194 vmovdqu32 ymm24, ymmword ptr [r8+rdx-0x1*0x20]
195 vinserti32x8 zmm24, zmm24, ymmword ptr [r12+rdx-0x1*0x20], 0x01
196 vmovdqu32 ymm25, ymmword ptr [r9+rdx-0x1*0x20]
197 vinserti32x8 zmm25, zmm25, ymmword ptr [r13+rdx-0x1*0x20], 0x01
198 vpunpcklqdq zmm12, zmm24, zmm25
199 vpunpckhqdq zmm13, zmm24, zmm25
200 vmovdqu32 ymm24, ymmword ptr [r10+rdx-0x1*0x20]
201 vinserti32x8 zmm24, zmm24, ymmword ptr [r14+rdx-0x1*0x20], 0x01
202 vmovdqu32 ymm25, ymmword ptr [r11+rdx-0x1*0x20]
203 vinserti32x8 zmm25, zmm25, ymmword ptr [r15+rdx-0x1*0x20], 0x01
204 vpunpcklqdq zmm14, zmm24, zmm25
205 vpunpckhqdq zmm15, zmm24, zmm25
206 prefetcht0 [r8+rdx+0x80]
207 prefetcht0 [r12+rdx+0x80]
208 prefetcht0 [r9+rdx+0x80]
209 prefetcht0 [r13+rdx+0x80]
210 prefetcht0 [r10+rdx+0x80]
211 prefetcht0 [r14+rdx+0x80]
212 prefetcht0 [r11+rdx+0x80]
213 prefetcht0 [r15+rdx+0x80]
214 vshufps zmm24, zmm8, zmm10, 136
215 vshufps zmm30, zmm12, zmm14, 136
216 vmovdqa32 zmm28, zmm24
217 vpermt2d zmm24, zmm27, zmm30
218 vpermt2d zmm28, zmm31, zmm30
219 vshufps zmm25, zmm8, zmm10, 221
220 vshufps zmm30, zmm12, zmm14, 221
221 vmovdqa32 zmm29, zmm25
222 vpermt2d zmm25, zmm27, zmm30
223 vpermt2d zmm29, zmm31, zmm30
224 vshufps zmm26, zmm9, zmm11, 136
225 vshufps zmm8, zmm13, zmm15, 136
226 vmovdqa32 zmm30, zmm26
227 vpermt2d zmm26, zmm27, zmm8
228 vpermt2d zmm30, zmm31, zmm8
229 vshufps zmm8, zmm9, zmm11, 221
230 vshufps zmm10, zmm13, zmm15, 221
231 vpermi2d zmm27, zmm8, zmm10
232 vpermi2d zmm31, zmm8, zmm10
233 vpbroadcastd zmm8, dword ptr [BLAKE3_IV_0+rip]
234 vpbroadcastd zmm9, dword ptr [BLAKE3_IV_1+rip]
235 vpbroadcastd zmm10, dword ptr [BLAKE3_IV_2+rip]
236 vpbroadcastd zmm11, dword ptr [BLAKE3_IV_3+rip]
237 vmovdqa32 zmm12, zmmword ptr [rsp]
238 vmovdqa32 zmm13, zmmword ptr [rsp+0x1*0x40]
239 vpbroadcastd zmm14, dword ptr [BLAKE3_BLOCK_LEN+rip]
240 vpbroadcastd zmm15, dword ptr [rsp+0x22*0x4]
241 vpaddd zmm0, zmm0, zmm16
242 vpaddd zmm1, zmm1, zmm18
243 vpaddd zmm2, zmm2, zmm20
244 vpaddd zmm3, zmm3, zmm22
245 vpaddd zmm0, zmm0, zmm4
246 vpaddd zmm1, zmm1, zmm5
247 vpaddd zmm2, zmm2, zmm6
248 vpaddd zmm3, zmm3, zmm7
249 vpxord zmm12, zmm12, zmm0
250 vpxord zmm13, zmm13, zmm1
251 vpxord zmm14, zmm14, zmm2
252 vpxord zmm15, zmm15, zmm3
253 vprord zmm12, zmm12, 16
254 vprord zmm13, zmm13, 16
255 vprord zmm14, zmm14, 16
256 vprord zmm15, zmm15, 16
257 vpaddd zmm8, zmm8, zmm12
258 vpaddd zmm9, zmm9, zmm13
259 vpaddd zmm10, zmm10, zmm14
260 vpaddd zmm11, zmm11, zmm15
261 vpxord zmm4, zmm4, zmm8
262 vpxord zmm5, zmm5, zmm9
263 vpxord zmm6, zmm6, zmm10
264 vpxord zmm7, zmm7, zmm11
265 vprord zmm4, zmm4, 12
266 vprord zmm5, zmm5, 12
267 vprord zmm6, zmm6, 12
268 vprord zmm7, zmm7, 12
269 vpaddd zmm0, zmm0, zmm17
270 vpaddd zmm1, zmm1, zmm19
271 vpaddd zmm2, zmm2, zmm21
272 vpaddd zmm3, zmm3, zmm23
273 vpaddd zmm0, zmm0, zmm4
274 vpaddd zmm1, zmm1, zmm5
275 vpaddd zmm2, zmm2, zmm6
276 vpaddd zmm3, zmm3, zmm7
277 vpxord zmm12, zmm12, zmm0
278 vpxord zmm13, zmm13, zmm1
279 vpxord zmm14, zmm14, zmm2
280 vpxord zmm15, zmm15, zmm3
281 vprord zmm12, zmm12, 8
282 vprord zmm13, zmm13, 8
283 vprord zmm14, zmm14, 8
284 vprord zmm15, zmm15, 8
285 vpaddd zmm8, zmm8, zmm12
286 vpaddd zmm9, zmm9, zmm13
287 vpaddd zmm10, zmm10, zmm14
288 vpaddd zmm11, zmm11, zmm15
289 vpxord zmm4, zmm4, zmm8
290 vpxord zmm5, zmm5, zmm9
291 vpxord zmm6, zmm6, zmm10
292 vpxord zmm7, zmm7, zmm11
297 vpaddd zmm0, zmm0, zmm24
298 vpaddd zmm1, zmm1, zmm26
299 vpaddd zmm2, zmm2, zmm28
300 vpaddd zmm3, zmm3, zmm30
301 vpaddd zmm0, zmm0, zmm5
302 vpaddd zmm1, zmm1, zmm6
303 vpaddd zmm2, zmm2, zmm7
304 vpaddd zmm3, zmm3, zmm4
305 vpxord zmm15, zmm15, zmm0
306 vpxord zmm12, zmm12, zmm1
307 vpxord zmm13, zmm13, zmm2
308 vpxord zmm14, zmm14, zmm3
309 vprord zmm15, zmm15, 16
310 vprord zmm12, zmm12, 16
311 vprord zmm13, zmm13, 16
312 vprord zmm14, zmm14, 16
313 vpaddd zmm10, zmm10, zmm15
314 vpaddd zmm11, zmm11, zmm12
315 vpaddd zmm8, zmm8, zmm13
316 vpaddd zmm9, zmm9, zmm14
317 vpxord zmm5, zmm5, zmm10
318 vpxord zmm6, zmm6, zmm11
319 vpxord zmm7, zmm7, zmm8
320 vpxord zmm4, zmm4, zmm9
321 vprord zmm5, zmm5, 12
322 vprord zmm6, zmm6, 12
323 vprord zmm7, zmm7, 12
324 vprord zmm4, zmm4, 12
325 vpaddd zmm0, zmm0, zmm25
326 vpaddd zmm1, zmm1, zmm27
327 vpaddd zmm2, zmm2, zmm29
328 vpaddd zmm3, zmm3, zmm31
329 vpaddd zmm0, zmm0, zmm5
330 vpaddd zmm1, zmm1, zmm6
331 vpaddd zmm2, zmm2, zmm7
332 vpaddd zmm3, zmm3, zmm4
333 vpxord zmm15, zmm15, zmm0
334 vpxord zmm12, zmm12, zmm1
335 vpxord zmm13, zmm13, zmm2
336 vpxord zmm14, zmm14, zmm3
337 vprord zmm15, zmm15, 8
338 vprord zmm12, zmm12, 8
339 vprord zmm13, zmm13, 8
340 vprord zmm14, zmm14, 8
341 vpaddd zmm10, zmm10, zmm15
342 vpaddd zmm11, zmm11, zmm12
343 vpaddd zmm8, zmm8, zmm13
344 vpaddd zmm9, zmm9, zmm14
345 vpxord zmm5, zmm5, zmm10
346 vpxord zmm6, zmm6, zmm11
347 vpxord zmm7, zmm7, zmm8
348 vpxord zmm4, zmm4, zmm9
353 vpaddd zmm0, zmm0, zmm18
354 vpaddd zmm1, zmm1, zmm19
355 vpaddd zmm2, zmm2, zmm23
356 vpaddd zmm3, zmm3, zmm20
357 vpaddd zmm0, zmm0, zmm4
358 vpaddd zmm1, zmm1, zmm5
359 vpaddd zmm2, zmm2, zmm6
360 vpaddd zmm3, zmm3, zmm7
361 vpxord zmm12, zmm12, zmm0
362 vpxord zmm13, zmm13, zmm1
363 vpxord zmm14, zmm14, zmm2
364 vpxord zmm15, zmm15, zmm3
365 vprord zmm12, zmm12, 16
366 vprord zmm13, zmm13, 16
367 vprord zmm14, zmm14, 16
368 vprord zmm15, zmm15, 16
369 vpaddd zmm8, zmm8, zmm12
370 vpaddd zmm9, zmm9, zmm13
371 vpaddd zmm10, zmm10, zmm14
372 vpaddd zmm11, zmm11, zmm15
373 vpxord zmm4, zmm4, zmm8
374 vpxord zmm5, zmm5, zmm9
375 vpxord zmm6, zmm6, zmm10
376 vpxord zmm7, zmm7, zmm11
377 vprord zmm4, zmm4, 12
378 vprord zmm5, zmm5, 12
379 vprord zmm6, zmm6, 12
380 vprord zmm7, zmm7, 12
381 vpaddd zmm0, zmm0, zmm22
382 vpaddd zmm1, zmm1, zmm26
383 vpaddd zmm2, zmm2, zmm16
384 vpaddd zmm3, zmm3, zmm29
385 vpaddd zmm0, zmm0, zmm4
386 vpaddd zmm1, zmm1, zmm5
387 vpaddd zmm2, zmm2, zmm6
388 vpaddd zmm3, zmm3, zmm7
389 vpxord zmm12, zmm12, zmm0
390 vpxord zmm13, zmm13, zmm1
391 vpxord zmm14, zmm14, zmm2
392 vpxord zmm15, zmm15, zmm3
393 vprord zmm12, zmm12, 8
394 vprord zmm13, zmm13, 8
395 vprord zmm14, zmm14, 8
396 vprord zmm15, zmm15, 8
397 vpaddd zmm8, zmm8, zmm12
398 vpaddd zmm9, zmm9, zmm13
399 vpaddd zmm10, zmm10, zmm14
400 vpaddd zmm11, zmm11, zmm15
401 vpxord zmm4, zmm4, zmm8
402 vpxord zmm5, zmm5, zmm9
403 vpxord zmm6, zmm6, zmm10
404 vpxord zmm7, zmm7, zmm11
409 vpaddd zmm0, zmm0, zmm17
410 vpaddd zmm1, zmm1, zmm28
411 vpaddd zmm2, zmm2, zmm25
412 vpaddd zmm3, zmm3, zmm31
413 vpaddd zmm0, zmm0, zmm5
414 vpaddd zmm1, zmm1, zmm6
415 vpaddd zmm2, zmm2, zmm7
416 vpaddd zmm3, zmm3, zmm4
417 vpxord zmm15, zmm15, zmm0
418 vpxord zmm12, zmm12, zmm1
419 vpxord zmm13, zmm13, zmm2
420 vpxord zmm14, zmm14, zmm3
421 vprord zmm15, zmm15, 16
422 vprord zmm12, zmm12, 16
423 vprord zmm13, zmm13, 16
424 vprord zmm14, zmm14, 16
425 vpaddd zmm10, zmm10, zmm15
426 vpaddd zmm11, zmm11, zmm12
427 vpaddd zmm8, zmm8, zmm13
428 vpaddd zmm9, zmm9, zmm14
429 vpxord zmm5, zmm5, zmm10
430 vpxord zmm6, zmm6, zmm11
431 vpxord zmm7, zmm7, zmm8
432 vpxord zmm4, zmm4, zmm9
433 vprord zmm5, zmm5, 12
434 vprord zmm6, zmm6, 12
435 vprord zmm7, zmm7, 12
436 vprord zmm4, zmm4, 12
437 vpaddd zmm0, zmm0, zmm27
438 vpaddd zmm1, zmm1, zmm21
439 vpaddd zmm2, zmm2, zmm30
440 vpaddd zmm3, zmm3, zmm24
441 vpaddd zmm0, zmm0, zmm5
442 vpaddd zmm1, zmm1, zmm6
443 vpaddd zmm2, zmm2, zmm7
444 vpaddd zmm3, zmm3, zmm4
445 vpxord zmm15, zmm15, zmm0
446 vpxord zmm12, zmm12, zmm1
447 vpxord zmm13, zmm13, zmm2
448 vpxord zmm14, zmm14, zmm3
449 vprord zmm15, zmm15, 8
450 vprord zmm12, zmm12, 8
451 vprord zmm13, zmm13, 8
452 vprord zmm14, zmm14, 8
453 vpaddd zmm10, zmm10, zmm15
454 vpaddd zmm11, zmm11, zmm12
455 vpaddd zmm8, zmm8, zmm13
456 vpaddd zmm9, zmm9, zmm14
457 vpxord zmm5, zmm5, zmm10
458 vpxord zmm6, zmm6, zmm11
459 vpxord zmm7, zmm7, zmm8
460 vpxord zmm4, zmm4, zmm9
465 vpaddd zmm0, zmm0, zmm19
466 vpaddd zmm1, zmm1, zmm26
467 vpaddd zmm2, zmm2, zmm29
468 vpaddd zmm3, zmm3, zmm23
469 vpaddd zmm0, zmm0, zmm4
470 vpaddd zmm1, zmm1, zmm5
471 vpaddd zmm2, zmm2, zmm6
472 vpaddd zmm3, zmm3, zmm7
473 vpxord zmm12, zmm12, zmm0
474 vpxord zmm13, zmm13, zmm1
475 vpxord zmm14, zmm14, zmm2
476 vpxord zmm15, zmm15, zmm3
477 vprord zmm12, zmm12, 16
478 vprord zmm13, zmm13, 16
479 vprord zmm14, zmm14, 16
480 vprord zmm15, zmm15, 16
481 vpaddd zmm8, zmm8, zmm12
482 vpaddd zmm9, zmm9, zmm13
483 vpaddd zmm10, zmm10, zmm14
484 vpaddd zmm11, zmm11, zmm15
485 vpxord zmm4, zmm4, zmm8
486 vpxord zmm5, zmm5, zmm9
487 vpxord zmm6, zmm6, zmm10
488 vpxord zmm7, zmm7, zmm11
489 vprord zmm4, zmm4, 12
490 vprord zmm5, zmm5, 12
491 vprord zmm6, zmm6, 12
492 vprord zmm7, zmm7, 12
493 vpaddd zmm0, zmm0, zmm20
494 vpaddd zmm1, zmm1, zmm28
495 vpaddd zmm2, zmm2, zmm18
496 vpaddd zmm3, zmm3, zmm30
497 vpaddd zmm0, zmm0, zmm4
498 vpaddd zmm1, zmm1, zmm5
499 vpaddd zmm2, zmm2, zmm6
500 vpaddd zmm3, zmm3, zmm7
501 vpxord zmm12, zmm12, zmm0
502 vpxord zmm13, zmm13, zmm1
503 vpxord zmm14, zmm14, zmm2
504 vpxord zmm15, zmm15, zmm3
505 vprord zmm12, zmm12, 8
506 vprord zmm13, zmm13, 8
507 vprord zmm14, zmm14, 8
508 vprord zmm15, zmm15, 8
509 vpaddd zmm8, zmm8, zmm12
510 vpaddd zmm9, zmm9, zmm13
511 vpaddd zmm10, zmm10, zmm14
512 vpaddd zmm11, zmm11, zmm15
513 vpxord zmm4, zmm4, zmm8
514 vpxord zmm5, zmm5, zmm9
515 vpxord zmm6, zmm6, zmm10
516 vpxord zmm7, zmm7, zmm11
521 vpaddd zmm0, zmm0, zmm22
522 vpaddd zmm1, zmm1, zmm25
523 vpaddd zmm2, zmm2, zmm27
524 vpaddd zmm3, zmm3, zmm24
525 vpaddd zmm0, zmm0, zmm5
526 vpaddd zmm1, zmm1, zmm6
527 vpaddd zmm2, zmm2, zmm7
528 vpaddd zmm3, zmm3, zmm4
529 vpxord zmm15, zmm15, zmm0
530 vpxord zmm12, zmm12, zmm1
531 vpxord zmm13, zmm13, zmm2
532 vpxord zmm14, zmm14, zmm3
533 vprord zmm15, zmm15, 16
534 vprord zmm12, zmm12, 16
535 vprord zmm13, zmm13, 16
536 vprord zmm14, zmm14, 16
537 vpaddd zmm10, zmm10, zmm15
538 vpaddd zmm11, zmm11, zmm12
539 vpaddd zmm8, zmm8, zmm13
540 vpaddd zmm9, zmm9, zmm14
541 vpxord zmm5, zmm5, zmm10
542 vpxord zmm6, zmm6, zmm11
543 vpxord zmm7, zmm7, zmm8
544 vpxord zmm4, zmm4, zmm9
545 vprord zmm5, zmm5, 12
546 vprord zmm6, zmm6, 12
547 vprord zmm7, zmm7, 12
548 vprord zmm4, zmm4, 12
549 vpaddd zmm0, zmm0, zmm21
550 vpaddd zmm1, zmm1, zmm16
551 vpaddd zmm2, zmm2, zmm31
552 vpaddd zmm3, zmm3, zmm17
553 vpaddd zmm0, zmm0, zmm5
554 vpaddd zmm1, zmm1, zmm6
555 vpaddd zmm2, zmm2, zmm7
556 vpaddd zmm3, zmm3, zmm4
557 vpxord zmm15, zmm15, zmm0
558 vpxord zmm12, zmm12, zmm1
559 vpxord zmm13, zmm13, zmm2
560 vpxord zmm14, zmm14, zmm3
561 vprord zmm15, zmm15, 8
562 vprord zmm12, zmm12, 8
563 vprord zmm13, zmm13, 8
564 vprord zmm14, zmm14, 8
565 vpaddd zmm10, zmm10, zmm15
566 vpaddd zmm11, zmm11, zmm12
567 vpaddd zmm8, zmm8, zmm13
568 vpaddd zmm9, zmm9, zmm14
569 vpxord zmm5, zmm5, zmm10
570 vpxord zmm6, zmm6, zmm11
571 vpxord zmm7, zmm7, zmm8
572 vpxord zmm4, zmm4, zmm9
577 vpaddd zmm0, zmm0, zmm26
578 vpaddd zmm1, zmm1, zmm28
579 vpaddd zmm2, zmm2, zmm30
580 vpaddd zmm3, zmm3, zmm29
581 vpaddd zmm0, zmm0, zmm4
582 vpaddd zmm1, zmm1, zmm5
583 vpaddd zmm2, zmm2, zmm6
584 vpaddd zmm3, zmm3, zmm7
585 vpxord zmm12, zmm12, zmm0
586 vpxord zmm13, zmm13, zmm1
587 vpxord zmm14, zmm14, zmm2
588 vpxord zmm15, zmm15, zmm3
589 vprord zmm12, zmm12, 16
590 vprord zmm13, zmm13, 16
591 vprord zmm14, zmm14, 16
592 vprord zmm15, zmm15, 16
593 vpaddd zmm8, zmm8, zmm12
594 vpaddd zmm9, zmm9, zmm13
595 vpaddd zmm10, zmm10, zmm14
596 vpaddd zmm11, zmm11, zmm15
597 vpxord zmm4, zmm4, zmm8
598 vpxord zmm5, zmm5, zmm9
599 vpxord zmm6, zmm6, zmm10
600 vpxord zmm7, zmm7, zmm11
601 vprord zmm4, zmm4, 12
602 vprord zmm5, zmm5, 12
603 vprord zmm6, zmm6, 12
604 vprord zmm7, zmm7, 12
605 vpaddd zmm0, zmm0, zmm23
606 vpaddd zmm1, zmm1, zmm25
607 vpaddd zmm2, zmm2, zmm19
608 vpaddd zmm3, zmm3, zmm31
609 vpaddd zmm0, zmm0, zmm4
610 vpaddd zmm1, zmm1, zmm5
611 vpaddd zmm2, zmm2, zmm6
612 vpaddd zmm3, zmm3, zmm7
613 vpxord zmm12, zmm12, zmm0
614 vpxord zmm13, zmm13, zmm1
615 vpxord zmm14, zmm14, zmm2
616 vpxord zmm15, zmm15, zmm3
617 vprord zmm12, zmm12, 8
618 vprord zmm13, zmm13, 8
619 vprord zmm14, zmm14, 8
620 vprord zmm15, zmm15, 8
621 vpaddd zmm8, zmm8, zmm12
622 vpaddd zmm9, zmm9, zmm13
623 vpaddd zmm10, zmm10, zmm14
624 vpaddd zmm11, zmm11, zmm15
625 vpxord zmm4, zmm4, zmm8
626 vpxord zmm5, zmm5, zmm9
627 vpxord zmm6, zmm6, zmm10
628 vpxord zmm7, zmm7, zmm11
633 vpaddd zmm0, zmm0, zmm20
634 vpaddd zmm1, zmm1, zmm27
635 vpaddd zmm2, zmm2, zmm21
636 vpaddd zmm3, zmm3, zmm17
637 vpaddd zmm0, zmm0, zmm5
638 vpaddd zmm1, zmm1, zmm6
639 vpaddd zmm2, zmm2, zmm7
640 vpaddd zmm3, zmm3, zmm4
641 vpxord zmm15, zmm15, zmm0
642 vpxord zmm12, zmm12, zmm1
643 vpxord zmm13, zmm13, zmm2
644 vpxord zmm14, zmm14, zmm3
645 vprord zmm15, zmm15, 16
646 vprord zmm12, zmm12, 16
647 vprord zmm13, zmm13, 16
648 vprord zmm14, zmm14, 16
649 vpaddd zmm10, zmm10, zmm15
650 vpaddd zmm11, zmm11, zmm12
651 vpaddd zmm8, zmm8, zmm13
652 vpaddd zmm9, zmm9, zmm14
653 vpxord zmm5, zmm5, zmm10
654 vpxord zmm6, zmm6, zmm11
655 vpxord zmm7, zmm7, zmm8
656 vpxord zmm4, zmm4, zmm9
657 vprord zmm5, zmm5, 12
658 vprord zmm6, zmm6, 12
659 vprord zmm7, zmm7, 12
660 vprord zmm4, zmm4, 12
661 vpaddd zmm0, zmm0, zmm16
662 vpaddd zmm1, zmm1, zmm18
663 vpaddd zmm2, zmm2, zmm24
664 vpaddd zmm3, zmm3, zmm22
665 vpaddd zmm0, zmm0, zmm5
666 vpaddd zmm1, zmm1, zmm6
667 vpaddd zmm2, zmm2, zmm7
668 vpaddd zmm3, zmm3, zmm4
669 vpxord zmm15, zmm15, zmm0
670 vpxord zmm12, zmm12, zmm1
671 vpxord zmm13, zmm13, zmm2
672 vpxord zmm14, zmm14, zmm3
673 vprord zmm15, zmm15, 8
674 vprord zmm12, zmm12, 8
675 vprord zmm13, zmm13, 8
676 vprord zmm14, zmm14, 8
677 vpaddd zmm10, zmm10, zmm15
678 vpaddd zmm11, zmm11, zmm12
679 vpaddd zmm8, zmm8, zmm13
680 vpaddd zmm9, zmm9, zmm14
681 vpxord zmm5, zmm5, zmm10
682 vpxord zmm6, zmm6, zmm11
683 vpxord zmm7, zmm7, zmm8
684 vpxord zmm4, zmm4, zmm9
689 vpaddd zmm0, zmm0, zmm28
690 vpaddd zmm1, zmm1, zmm25
691 vpaddd zmm2, zmm2, zmm31
692 vpaddd zmm3, zmm3, zmm30
693 vpaddd zmm0, zmm0, zmm4
694 vpaddd zmm1, zmm1, zmm5
695 vpaddd zmm2, zmm2, zmm6
696 vpaddd zmm3, zmm3, zmm7
697 vpxord zmm12, zmm12, zmm0
698 vpxord zmm13, zmm13, zmm1
699 vpxord zmm14, zmm14, zmm2
700 vpxord zmm15, zmm15, zmm3
701 vprord zmm12, zmm12, 16
702 vprord zmm13, zmm13, 16
703 vprord zmm14, zmm14, 16
704 vprord zmm15, zmm15, 16
705 vpaddd zmm8, zmm8, zmm12
706 vpaddd zmm9, zmm9, zmm13
707 vpaddd zmm10, zmm10, zmm14
708 vpaddd zmm11, zmm11, zmm15
709 vpxord zmm4, zmm4, zmm8
710 vpxord zmm5, zmm5, zmm9
711 vpxord zmm6, zmm6, zmm10
712 vpxord zmm7, zmm7, zmm11
713 vprord zmm4, zmm4, 12
714 vprord zmm5, zmm5, 12
715 vprord zmm6, zmm6, 12
716 vprord zmm7, zmm7, 12
717 vpaddd zmm0, zmm0, zmm29
718 vpaddd zmm1, zmm1, zmm27
719 vpaddd zmm2, zmm2, zmm26
720 vpaddd zmm3, zmm3, zmm24
721 vpaddd zmm0, zmm0, zmm4
722 vpaddd zmm1, zmm1, zmm5
723 vpaddd zmm2, zmm2, zmm6
724 vpaddd zmm3, zmm3, zmm7
725 vpxord zmm12, zmm12, zmm0
726 vpxord zmm13, zmm13, zmm1
727 vpxord zmm14, zmm14, zmm2
728 vpxord zmm15, zmm15, zmm3
729 vprord zmm12, zmm12, 8
730 vprord zmm13, zmm13, 8
731 vprord zmm14, zmm14, 8
732 vprord zmm15, zmm15, 8
733 vpaddd zmm8, zmm8, zmm12
734 vpaddd zmm9, zmm9, zmm13
735 vpaddd zmm10, zmm10, zmm14
736 vpaddd zmm11, zmm11, zmm15
737 vpxord zmm4, zmm4, zmm8
738 vpxord zmm5, zmm5, zmm9
739 vpxord zmm6, zmm6, zmm10
740 vpxord zmm7, zmm7, zmm11
745 vpaddd zmm0, zmm0, zmm23
746 vpaddd zmm1, zmm1, zmm21
747 vpaddd zmm2, zmm2, zmm16
748 vpaddd zmm3, zmm3, zmm22
749 vpaddd zmm0, zmm0, zmm5
750 vpaddd zmm1, zmm1, zmm6
751 vpaddd zmm2, zmm2, zmm7
752 vpaddd zmm3, zmm3, zmm4
753 vpxord zmm15, zmm15, zmm0
754 vpxord zmm12, zmm12, zmm1
755 vpxord zmm13, zmm13, zmm2
756 vpxord zmm14, zmm14, zmm3
757 vprord zmm15, zmm15, 16
758 vprord zmm12, zmm12, 16
759 vprord zmm13, zmm13, 16
760 vprord zmm14, zmm14, 16
761 vpaddd zmm10, zmm10, zmm15
762 vpaddd zmm11, zmm11, zmm12
763 vpaddd zmm8, zmm8, zmm13
764 vpaddd zmm9, zmm9, zmm14
765 vpxord zmm5, zmm5, zmm10
766 vpxord zmm6, zmm6, zmm11
767 vpxord zmm7, zmm7, zmm8
768 vpxord zmm4, zmm4, zmm9
769 vprord zmm5, zmm5, 12
770 vprord zmm6, zmm6, 12
771 vprord zmm7, zmm7, 12
772 vprord zmm4, zmm4, 12
773 vpaddd zmm0, zmm0, zmm18
774 vpaddd zmm1, zmm1, zmm19
775 vpaddd zmm2, zmm2, zmm17
776 vpaddd zmm3, zmm3, zmm20
777 vpaddd zmm0, zmm0, zmm5
778 vpaddd zmm1, zmm1, zmm6
779 vpaddd zmm2, zmm2, zmm7
780 vpaddd zmm3, zmm3, zmm4
781 vpxord zmm15, zmm15, zmm0
782 vpxord zmm12, zmm12, zmm1
783 vpxord zmm13, zmm13, zmm2
784 vpxord zmm14, zmm14, zmm3
785 vprord zmm15, zmm15, 8
786 vprord zmm12, zmm12, 8
787 vprord zmm13, zmm13, 8
788 vprord zmm14, zmm14, 8
789 vpaddd zmm10, zmm10, zmm15
790 vpaddd zmm11, zmm11, zmm12
791 vpaddd zmm8, zmm8, zmm13
792 vpaddd zmm9, zmm9, zmm14
793 vpxord zmm5, zmm5, zmm10
794 vpxord zmm6, zmm6, zmm11
795 vpxord zmm7, zmm7, zmm8
796 vpxord zmm4, zmm4, zmm9
801 vpaddd zmm0, zmm0, zmm25
802 vpaddd zmm1, zmm1, zmm27
803 vpaddd zmm2, zmm2, zmm24
804 vpaddd zmm3, zmm3, zmm31
805 vpaddd zmm0, zmm0, zmm4
806 vpaddd zmm1, zmm1, zmm5
807 vpaddd zmm2, zmm2, zmm6
808 vpaddd zmm3, zmm3, zmm7
809 vpxord zmm12, zmm12, zmm0
810 vpxord zmm13, zmm13, zmm1
811 vpxord zmm14, zmm14, zmm2
812 vpxord zmm15, zmm15, zmm3
813 vprord zmm12, zmm12, 16
814 vprord zmm13, zmm13, 16
815 vprord zmm14, zmm14, 16
816 vprord zmm15, zmm15, 16
817 vpaddd zmm8, zmm8, zmm12
818 vpaddd zmm9, zmm9, zmm13
819 vpaddd zmm10, zmm10, zmm14
820 vpaddd zmm11, zmm11, zmm15
821 vpxord zmm4, zmm4, zmm8
822 vpxord zmm5, zmm5, zmm9
823 vpxord zmm6, zmm6, zmm10
824 vpxord zmm7, zmm7, zmm11
825 vprord zmm4, zmm4, 12
826 vprord zmm5, zmm5, 12
827 vprord zmm6, zmm6, 12
828 vprord zmm7, zmm7, 12
829 vpaddd zmm0, zmm0, zmm30
830 vpaddd zmm1, zmm1, zmm21
831 vpaddd zmm2, zmm2, zmm28
832 vpaddd zmm3, zmm3, zmm17
833 vpaddd zmm0, zmm0, zmm4
834 vpaddd zmm1, zmm1, zmm5
835 vpaddd zmm2, zmm2, zmm6
836 vpaddd zmm3, zmm3, zmm7
837 vpxord zmm12, zmm12, zmm0
838 vpxord zmm13, zmm13, zmm1
839 vpxord zmm14, zmm14, zmm2
840 vpxord zmm15, zmm15, zmm3
841 vprord zmm12, zmm12, 8
842 vprord zmm13, zmm13, 8
843 vprord zmm14, zmm14, 8
844 vprord zmm15, zmm15, 8
845 vpaddd zmm8, zmm8, zmm12
846 vpaddd zmm9, zmm9, zmm13
847 vpaddd zmm10, zmm10, zmm14
848 vpaddd zmm11, zmm11, zmm15
849 vpxord zmm4, zmm4, zmm8
850 vpxord zmm5, zmm5, zmm9
851 vpxord zmm6, zmm6, zmm10
852 vpxord zmm7, zmm7, zmm11
857 vpaddd zmm0, zmm0, zmm29
858 vpaddd zmm1, zmm1, zmm16
859 vpaddd zmm2, zmm2, zmm18
860 vpaddd zmm3, zmm3, zmm20
861 vpaddd zmm0, zmm0, zmm5
862 vpaddd zmm1, zmm1, zmm6
863 vpaddd zmm2, zmm2, zmm7
864 vpaddd zmm3, zmm3, zmm4
865 vpxord zmm15, zmm15, zmm0
866 vpxord zmm12, zmm12, zmm1
867 vpxord zmm13, zmm13, zmm2
868 vpxord zmm14, zmm14, zmm3
869 vprord zmm15, zmm15, 16
870 vprord zmm12, zmm12, 16
871 vprord zmm13, zmm13, 16
872 vprord zmm14, zmm14, 16
873 vpaddd zmm10, zmm10, zmm15
874 vpaddd zmm11, zmm11, zmm12
875 vpaddd zmm8, zmm8, zmm13
876 vpaddd zmm9, zmm9, zmm14
877 vpxord zmm5, zmm5, zmm10
878 vpxord zmm6, zmm6, zmm11
879 vpxord zmm7, zmm7, zmm8
880 vpxord zmm4, zmm4, zmm9
881 vprord zmm5, zmm5, 12
882 vprord zmm6, zmm6, 12
883 vprord zmm7, zmm7, 12
884 vprord zmm4, zmm4, 12
885 vpaddd zmm0, zmm0, zmm19
886 vpaddd zmm1, zmm1, zmm26
887 vpaddd zmm2, zmm2, zmm22
888 vpaddd zmm3, zmm3, zmm23
889 vpaddd zmm0, zmm0, zmm5
890 vpaddd zmm1, zmm1, zmm6
891 vpaddd zmm2, zmm2, zmm7
892 vpaddd zmm3, zmm3, zmm4
893 vpxord zmm15, zmm15, zmm0
894 vpxord zmm12, zmm12, zmm1
895 vpxord zmm13, zmm13, zmm2
896 vpxord zmm14, zmm14, zmm3
897 vprord zmm15, zmm15, 8
898 vprord zmm12, zmm12, 8
899 vprord zmm13, zmm13, 8
900 vprord zmm14, zmm14, 8
901 vpaddd zmm10, zmm10, zmm15
902 vpaddd zmm11, zmm11, zmm12
903 vpaddd zmm8, zmm8, zmm13
904 vpaddd zmm9, zmm9, zmm14
905 vpxord zmm5, zmm5, zmm10
906 vpxord zmm6, zmm6, zmm11
907 vpxord zmm7, zmm7, zmm8
908 vpxord zmm4, zmm4, zmm9
913 vpaddd zmm0, zmm0, zmm27
914 vpaddd zmm1, zmm1, zmm21
915 vpaddd zmm2, zmm2, zmm17
916 vpaddd zmm3, zmm3, zmm24
917 vpaddd zmm0, zmm0, zmm4
918 vpaddd zmm1, zmm1, zmm5
919 vpaddd zmm2, zmm2, zmm6
920 vpaddd zmm3, zmm3, zmm7
921 vpxord zmm12, zmm12, zmm0
922 vpxord zmm13, zmm13, zmm1
923 vpxord zmm14, zmm14, zmm2
924 vpxord zmm15, zmm15, zmm3
925 vprord zmm12, zmm12, 16
926 vprord zmm13, zmm13, 16
927 vprord zmm14, zmm14, 16
928 vprord zmm15, zmm15, 16
929 vpaddd zmm8, zmm8, zmm12
930 vpaddd zmm9, zmm9, zmm13
931 vpaddd zmm10, zmm10, zmm14
932 vpaddd zmm11, zmm11, zmm15
933 vpxord zmm4, zmm4, zmm8
934 vpxord zmm5, zmm5, zmm9
935 vpxord zmm6, zmm6, zmm10
936 vpxord zmm7, zmm7, zmm11
937 vprord zmm4, zmm4, 12
938 vprord zmm5, zmm5, 12
939 vprord zmm6, zmm6, 12
940 vprord zmm7, zmm7, 12
941 vpaddd zmm0, zmm0, zmm31
942 vpaddd zmm1, zmm1, zmm16
943 vpaddd zmm2, zmm2, zmm25
944 vpaddd zmm3, zmm3, zmm22
945 vpaddd zmm0, zmm0, zmm4
946 vpaddd zmm1, zmm1, zmm5
947 vpaddd zmm2, zmm2, zmm6
948 vpaddd zmm3, zmm3, zmm7
949 vpxord zmm12, zmm12, zmm0
950 vpxord zmm13, zmm13, zmm1
951 vpxord zmm14, zmm14, zmm2
952 vpxord zmm15, zmm15, zmm3
953 vprord zmm12, zmm12, 8
954 vprord zmm13, zmm13, 8
955 vprord zmm14, zmm14, 8
956 vprord zmm15, zmm15, 8
957 vpaddd zmm8, zmm8, zmm12
958 vpaddd zmm9, zmm9, zmm13
959 vpaddd zmm10, zmm10, zmm14
960 vpaddd zmm11, zmm11, zmm15
961 vpxord zmm4, zmm4, zmm8
962 vpxord zmm5, zmm5, zmm9
963 vpxord zmm6, zmm6, zmm10
964 vpxord zmm7, zmm7, zmm11
969 vpaddd zmm0, zmm0, zmm30
970 vpaddd zmm1, zmm1, zmm18
971 vpaddd zmm2, zmm2, zmm19
972 vpaddd zmm3, zmm3, zmm23
973 vpaddd zmm0, zmm0, zmm5
974 vpaddd zmm1, zmm1, zmm6
975 vpaddd zmm2, zmm2, zmm7
976 vpaddd zmm3, zmm3, zmm4
977 vpxord zmm15, zmm15, zmm0
978 vpxord zmm12, zmm12, zmm1
979 vpxord zmm13, zmm13, zmm2
980 vpxord zmm14, zmm14, zmm3
981 vprord zmm15, zmm15, 16
982 vprord zmm12, zmm12, 16
983 vprord zmm13, zmm13, 16
984 vprord zmm14, zmm14, 16
985 vpaddd zmm10, zmm10, zmm15
986 vpaddd zmm11, zmm11, zmm12
987 vpaddd zmm8, zmm8, zmm13
988 vpaddd zmm9, zmm9, zmm14
989 vpxord zmm5, zmm5, zmm10
990 vpxord zmm6, zmm6, zmm11
991 vpxord zmm7, zmm7, zmm8
992 vpxord zmm4, zmm4, zmm9
993 vprord zmm5, zmm5, 12
994 vprord zmm6, zmm6, 12
995 vprord zmm7, zmm7, 12
996 vprord zmm4, zmm4, 12
997 vpaddd zmm0, zmm0, zmm26
998 vpaddd zmm1, zmm1, zmm28
999 vpaddd zmm2, zmm2, zmm20
1000 vpaddd zmm3, zmm3, zmm29
1001 vpaddd zmm0, zmm0, zmm5
1002 vpaddd zmm1, zmm1, zmm6
1003 vpaddd zmm2, zmm2, zmm7
1004 vpaddd zmm3, zmm3, zmm4
1005 vpxord zmm15, zmm15, zmm0
1006 vpxord zmm12, zmm12, zmm1
1007 vpxord zmm13, zmm13, zmm2
1008 vpxord zmm14, zmm14, zmm3
1009 vprord zmm15, zmm15, 8
1010 vprord zmm12, zmm12, 8
1011 vprord zmm13, zmm13, 8
1012 vprord zmm14, zmm14, 8
1013 vpaddd zmm10, zmm10, zmm15
1014 vpaddd zmm11, zmm11, zmm12
1015 vpaddd zmm8, zmm8, zmm13
1016 vpaddd zmm9, zmm9, zmm14
1017 vpxord zmm5, zmm5, zmm10
1018 vpxord zmm6, zmm6, zmm11
1019 vpxord zmm7, zmm7, zmm8
1020 vpxord zmm4, zmm4, zmm9
1021 vprord zmm5, zmm5, 7
1022 vprord zmm6, zmm6, 7
1023 vprord zmm7, zmm7, 7
1024 vprord zmm4, zmm4, 7
1025 vpxord zmm0, zmm0, zmm8
1026 vpxord zmm1, zmm1, zmm9
1027 vpxord zmm2, zmm2, zmm10
1028 vpxord zmm3, zmm3, zmm11
1029 vpxord zmm4, zmm4, zmm12
1030 vpxord zmm5, zmm5, zmm13
1031 vpxord zmm6, zmm6, zmm14
1032 vpxord zmm7, zmm7, zmm15
1033 movzx eax, byte ptr [rbp+0x38]
1035 mov rbx, qword ptr [rbp+0x50]
1036 vpunpckldq zmm16, zmm0, zmm1
1037 vpunpckhdq zmm17, zmm0, zmm1
1038 vpunpckldq zmm18, zmm2, zmm3
1039 vpunpckhdq zmm19, zmm2, zmm3
1040 vpunpckldq zmm20, zmm4, zmm5
1041 vpunpckhdq zmm21, zmm4, zmm5
1042 vpunpckldq zmm22, zmm6, zmm7
1043 vpunpckhdq zmm23, zmm6, zmm7
1044 vpunpcklqdq zmm0, zmm16, zmm18
1045 vpunpckhqdq zmm1, zmm16, zmm18
1046 vpunpcklqdq zmm2, zmm17, zmm19
1047 vpunpckhqdq zmm3, zmm17, zmm19
1048 vpunpcklqdq zmm4, zmm20, zmm22
1049 vpunpckhqdq zmm5, zmm20, zmm22
1050 vpunpcklqdq zmm6, zmm21, zmm23
1051 vpunpckhqdq zmm7, zmm21, zmm23
1052 vshufi32x4 zmm16, zmm0, zmm4, 0x88
1053 vshufi32x4 zmm17, zmm1, zmm5, 0x88
1054 vshufi32x4 zmm18, zmm2, zmm6, 0x88
1055 vshufi32x4 zmm19, zmm3, zmm7, 0x88
1056 vshufi32x4 zmm20, zmm0, zmm4, 0xDD
1057 vshufi32x4 zmm21, zmm1, zmm5, 0xDD
1058 vshufi32x4 zmm22, zmm2, zmm6, 0xDD
1059 vshufi32x4 zmm23, zmm3, zmm7, 0xDD
1060 vshufi32x4 zmm0, zmm16, zmm17, 0x88
1061 vshufi32x4 zmm1, zmm18, zmm19, 0x88
1062 vshufi32x4 zmm2, zmm20, zmm21, 0x88
1063 vshufi32x4 zmm3, zmm22, zmm23, 0x88
1064 vshufi32x4 zmm4, zmm16, zmm17, 0xDD
1065 vshufi32x4 zmm5, zmm18, zmm19, 0xDD
1066 vshufi32x4 zmm6, zmm20, zmm21, 0xDD
1067 vshufi32x4 zmm7, zmm22, zmm23, 0xDD
1068 vmovdqu32 zmmword ptr [rbx], zmm0
1069 vmovdqu32 zmmword ptr [rbx+0x1*0x40], zmm1
1070 vmovdqu32 zmmword ptr [rbx+0x2*0x40], zmm2
1071 vmovdqu32 zmmword ptr [rbx+0x3*0x40], zmm3
1072 vmovdqu32 zmmword ptr [rbx+0x4*0x40], zmm4
1073 vmovdqu32 zmmword ptr [rbx+0x5*0x40], zmm5
1074 vmovdqu32 zmmword ptr [rbx+0x6*0x40], zmm6
1075 vmovdqu32 zmmword ptr [rbx+0x7*0x40], zmm7
1076 vmovdqa32 zmm0, zmmword ptr [rsp]
1077 vmovdqa32 zmm1, zmmword ptr [rsp+0x1*0x40]
1078 vmovdqa32 zmm2, zmm0
1079 vpaddd zmm2{k1}, zmm0, dword ptr [ADD16+rip] {1to16}
1080 vpcmpltud k2, zmm2, zmm0
1081 vpaddd zmm1 {k2}, zmm1, dword ptr [ADD1+rip] {1to16}
1082 vmovdqa32 zmmword ptr [rsp], zmm2
1083 vmovdqa32 zmmword ptr [rsp+0x1*0x40], zmm1
1086 mov qword ptr [rbp+0x50], rbx
1106 vpbroadcastd ymm0, dword ptr [rcx]
1107 vpbroadcastd ymm1, dword ptr [rcx+0x4]
1108 vpbroadcastd ymm2, dword ptr [rcx+0x8]
1109 vpbroadcastd ymm3, dword ptr [rcx+0xC]
1110 vpbroadcastd ymm4, dword ptr [rcx+0x10]
1111 vpbroadcastd ymm5, dword ptr [rcx+0x14]
1112 vpbroadcastd ymm6, dword ptr [rcx+0x18]
1113 vpbroadcastd ymm7, dword ptr [rcx+0x1C]
1114 mov r8, qword ptr [rdi]
1115 mov r9, qword ptr [rdi+0x8]
1116 mov r10, qword ptr [rdi+0x10]
1117 mov r11, qword ptr [rdi+0x18]
1118 mov r12, qword ptr [rdi+0x20]
1119 mov r13, qword ptr [rdi+0x28]
1120 mov r14, qword ptr [rdi+0x30]
1121 mov r15, qword ptr [rdi+0x38]
1122 movzx eax, byte ptr [rbp+0x38]
1123 movzx ebx, byte ptr [rbp+0x40]
1127 movzx ebx, byte ptr [rbp+0x48]
1130 cmp rdx, qword ptr [rsp+0x80]
1132 mov dword ptr [rsp+0x88], eax
1133 vmovups xmm8, xmmword ptr [r8+rdx-0x40]
1134 vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x40], 0x01
1135 vmovups xmm9, xmmword ptr [r9+rdx-0x40]
1136 vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x40], 0x01
1137 vunpcklpd ymm12, ymm8, ymm9
1138 vunpckhpd ymm13, ymm8, ymm9
1139 vmovups xmm10, xmmword ptr [r10+rdx-0x40]
1140 vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x40], 0x01
1141 vmovups xmm11, xmmword ptr [r11+rdx-0x40]
1142 vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x40], 0x01
1143 vunpcklpd ymm14, ymm10, ymm11
1144 vunpckhpd ymm15, ymm10, ymm11
1145 vshufps ymm16, ymm12, ymm14, 136
1146 vshufps ymm17, ymm12, ymm14, 221
1147 vshufps ymm18, ymm13, ymm15, 136
1148 vshufps ymm19, ymm13, ymm15, 221
1149 vmovups xmm8, xmmword ptr [r8+rdx-0x30]
1150 vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x30], 0x01
1151 vmovups xmm9, xmmword ptr [r9+rdx-0x30]
1152 vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x30], 0x01
1153 vunpcklpd ymm12, ymm8, ymm9
1154 vunpckhpd ymm13, ymm8, ymm9
1155 vmovups xmm10, xmmword ptr [r10+rdx-0x30]
1156 vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x30], 0x01
1157 vmovups xmm11, xmmword ptr [r11+rdx-0x30]
1158 vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x30], 0x01
1159 vunpcklpd ymm14, ymm10, ymm11
1160 vunpckhpd ymm15, ymm10, ymm11
1161 vshufps ymm20, ymm12, ymm14, 136
1162 vshufps ymm21, ymm12, ymm14, 221
1163 vshufps ymm22, ymm13, ymm15, 136
1164 vshufps ymm23, ymm13, ymm15, 221
1165 vmovups xmm8, xmmword ptr [r8+rdx-0x20]
1166 vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x20], 0x01
1167 vmovups xmm9, xmmword ptr [r9+rdx-0x20]
1168 vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x20], 0x01
1169 vunpcklpd ymm12, ymm8, ymm9
1170 vunpckhpd ymm13, ymm8, ymm9
1171 vmovups xmm10, xmmword ptr [r10+rdx-0x20]
1172 vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x20], 0x01
1173 vmovups xmm11, xmmword ptr [r11+rdx-0x20]
1174 vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x20], 0x01
1175 vunpcklpd ymm14, ymm10, ymm11
1176 vunpckhpd ymm15, ymm10, ymm11
1177 vshufps ymm24, ymm12, ymm14, 136
1178 vshufps ymm25, ymm12, ymm14, 221
1179 vshufps ymm26, ymm13, ymm15, 136
1180 vshufps ymm27, ymm13, ymm15, 221
1181 vmovups xmm8, xmmword ptr [r8+rdx-0x10]
1182 vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x10], 0x01
1183 vmovups xmm9, xmmword ptr [r9+rdx-0x10]
1184 vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x10], 0x01
1185 vunpcklpd ymm12, ymm8, ymm9
1186 vunpckhpd ymm13, ymm8, ymm9
1187 vmovups xmm10, xmmword ptr [r10+rdx-0x10]
1188 vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x10], 0x01
1189 vmovups xmm11, xmmword ptr [r11+rdx-0x10]
1190 vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x10], 0x01
1191 vunpcklpd ymm14, ymm10, ymm11
1192 vunpckhpd ymm15, ymm10, ymm11
1193 vshufps ymm28, ymm12, ymm14, 136
1194 vshufps ymm29, ymm12, ymm14, 221
1195 vshufps ymm30, ymm13, ymm15, 136
1196 vshufps ymm31, ymm13, ymm15, 221
1197 vpbroadcastd ymm8, dword ptr [BLAKE3_IV_0+rip]
1198 vpbroadcastd ymm9, dword ptr [BLAKE3_IV_1+rip]
1199 vpbroadcastd ymm10, dword ptr [BLAKE3_IV_2+rip]
1200 vpbroadcastd ymm11, dword ptr [BLAKE3_IV_3+rip]
1201 vmovdqa ymm12, ymmword ptr [rsp]
1202 vmovdqa ymm13, ymmword ptr [rsp+0x40]
1203 vpbroadcastd ymm14, dword ptr [BLAKE3_BLOCK_LEN+rip]
1204 vpbroadcastd ymm15, dword ptr [rsp+0x88]
1205 vpaddd ymm0, ymm0, ymm16
1206 vpaddd ymm1, ymm1, ymm18
1207 vpaddd ymm2, ymm2, ymm20
1208 vpaddd ymm3, ymm3, ymm22
1209 vpaddd ymm0, ymm0, ymm4
1210 vpaddd ymm1, ymm1, ymm5
1211 vpaddd ymm2, ymm2, ymm6
1212 vpaddd ymm3, ymm3, ymm7
1213 vpxord ymm12, ymm12, ymm0
1214 vpxord ymm13, ymm13, ymm1
1215 vpxord ymm14, ymm14, ymm2
1216 vpxord ymm15, ymm15, ymm3
1217 vprord ymm12, ymm12, 16
1218 vprord ymm13, ymm13, 16
1219 vprord ymm14, ymm14, 16
1220 vprord ymm15, ymm15, 16
1221 vpaddd ymm8, ymm8, ymm12
1222 vpaddd ymm9, ymm9, ymm13
1223 vpaddd ymm10, ymm10, ymm14
1224 vpaddd ymm11, ymm11, ymm15
1225 vpxord ymm4, ymm4, ymm8
1226 vpxord ymm5, ymm5, ymm9
1227 vpxord ymm6, ymm6, ymm10
1228 vpxord ymm7, ymm7, ymm11
1229 vprord ymm4, ymm4, 12
1230 vprord ymm5, ymm5, 12
1231 vprord ymm6, ymm6, 12
1232 vprord ymm7, ymm7, 12
1233 vpaddd ymm0, ymm0, ymm17
1234 vpaddd ymm1, ymm1, ymm19
1235 vpaddd ymm2, ymm2, ymm21
1236 vpaddd ymm3, ymm3, ymm23
1237 vpaddd ymm0, ymm0, ymm4
1238 vpaddd ymm1, ymm1, ymm5
1239 vpaddd ymm2, ymm2, ymm6
1240 vpaddd ymm3, ymm3, ymm7
1241 vpxord ymm12, ymm12, ymm0
1242 vpxord ymm13, ymm13, ymm1
1243 vpxord ymm14, ymm14, ymm2
1244 vpxord ymm15, ymm15, ymm3
1245 vprord ymm12, ymm12, 8
1246 vprord ymm13, ymm13, 8
1247 vprord ymm14, ymm14, 8
1248 vprord ymm15, ymm15, 8
1249 vpaddd ymm8, ymm8, ymm12
1250 vpaddd ymm9, ymm9, ymm13
1251 vpaddd ymm10, ymm10, ymm14
1252 vpaddd ymm11, ymm11, ymm15
1253 vpxord ymm4, ymm4, ymm8
1254 vpxord ymm5, ymm5, ymm9
1255 vpxord ymm6, ymm6, ymm10
1256 vpxord ymm7, ymm7, ymm11
1257 vprord ymm4, ymm4, 7
1258 vprord ymm5, ymm5, 7
1259 vprord ymm6, ymm6, 7
1260 vprord ymm7, ymm7, 7
1261 vpaddd ymm0, ymm0, ymm24
1262 vpaddd ymm1, ymm1, ymm26
1263 vpaddd ymm2, ymm2, ymm28
1264 vpaddd ymm3, ymm3, ymm30
1265 vpaddd ymm0, ymm0, ymm5
1266 vpaddd ymm1, ymm1, ymm6
1267 vpaddd ymm2, ymm2, ymm7
1268 vpaddd ymm3, ymm3, ymm4
1269 vpxord ymm15, ymm15, ymm0
1270 vpxord ymm12, ymm12, ymm1
1271 vpxord ymm13, ymm13, ymm2
1272 vpxord ymm14, ymm14, ymm3
1273 vprord ymm15, ymm15, 16
1274 vprord ymm12, ymm12, 16
1275 vprord ymm13, ymm13, 16
1276 vprord ymm14, ymm14, 16
1277 vpaddd ymm10, ymm10, ymm15
1278 vpaddd ymm11, ymm11, ymm12
1279 vpaddd ymm8, ymm8, ymm13
1280 vpaddd ymm9, ymm9, ymm14
1281 vpxord ymm5, ymm5, ymm10
1282 vpxord ymm6, ymm6, ymm11
1283 vpxord ymm7, ymm7, ymm8
1284 vpxord ymm4, ymm4, ymm9
1285 vprord ymm5, ymm5, 12
1286 vprord ymm6, ymm6, 12
1287 vprord ymm7, ymm7, 12
1288 vprord ymm4, ymm4, 12
1289 vpaddd ymm0, ymm0, ymm25
1290 vpaddd ymm1, ymm1, ymm27
1291 vpaddd ymm2, ymm2, ymm29
1292 vpaddd ymm3, ymm3, ymm31
1293 vpaddd ymm0, ymm0, ymm5
1294 vpaddd ymm1, ymm1, ymm6
1295 vpaddd ymm2, ymm2, ymm7
1296 vpaddd ymm3, ymm3, ymm4
1297 vpxord ymm15, ymm15, ymm0
1298 vpxord ymm12, ymm12, ymm1
1299 vpxord ymm13, ymm13, ymm2
1300 vpxord ymm14, ymm14, ymm3
1301 vprord ymm15, ymm15, 8
1302 vprord ymm12, ymm12, 8
1303 vprord ymm13, ymm13, 8
1304 vprord ymm14, ymm14, 8
1305 vpaddd ymm10, ymm10, ymm15
1306 vpaddd ymm11, ymm11, ymm12
1307 vpaddd ymm8, ymm8, ymm13
1308 vpaddd ymm9, ymm9, ymm14
1309 vpxord ymm5, ymm5, ymm10
1310 vpxord ymm6, ymm6, ymm11
1311 vpxord ymm7, ymm7, ymm8
1312 vpxord ymm4, ymm4, ymm9
1313 vprord ymm5, ymm5, 7
1314 vprord ymm6, ymm6, 7
1315 vprord ymm7, ymm7, 7
1316 vprord ymm4, ymm4, 7
1317 vpaddd ymm0, ymm0, ymm18
1318 vpaddd ymm1, ymm1, ymm19
1319 vpaddd ymm2, ymm2, ymm23
1320 vpaddd ymm3, ymm3, ymm20
1321 vpaddd ymm0, ymm0, ymm4
1322 vpaddd ymm1, ymm1, ymm5
1323 vpaddd ymm2, ymm2, ymm6
1324 vpaddd ymm3, ymm3, ymm7
1325 vpxord ymm12, ymm12, ymm0
1326 vpxord ymm13, ymm13, ymm1
1327 vpxord ymm14, ymm14, ymm2
1328 vpxord ymm15, ymm15, ymm3
1329 vprord ymm12, ymm12, 16
1330 vprord ymm13, ymm13, 16
1331 vprord ymm14, ymm14, 16
1332 vprord ymm15, ymm15, 16
1333 vpaddd ymm8, ymm8, ymm12
1334 vpaddd ymm9, ymm9, ymm13
1335 vpaddd ymm10, ymm10, ymm14
1336 vpaddd ymm11, ymm11, ymm15
1337 vpxord ymm4, ymm4, ymm8
1338 vpxord ymm5, ymm5, ymm9
1339 vpxord ymm6, ymm6, ymm10
1340 vpxord ymm7, ymm7, ymm11
1341 vprord ymm4, ymm4, 12
1342 vprord ymm5, ymm5, 12
1343 vprord ymm6, ymm6, 12
1344 vprord ymm7, ymm7, 12
1345 vpaddd ymm0, ymm0, ymm22
1346 vpaddd ymm1, ymm1, ymm26
1347 vpaddd ymm2, ymm2, ymm16
1348 vpaddd ymm3, ymm3, ymm29
1349 vpaddd ymm0, ymm0, ymm4
1350 vpaddd ymm1, ymm1, ymm5
1351 vpaddd ymm2, ymm2, ymm6
1352 vpaddd ymm3, ymm3, ymm7
1353 vpxord ymm12, ymm12, ymm0
1354 vpxord ymm13, ymm13, ymm1
1355 vpxord ymm14, ymm14, ymm2
1356 vpxord ymm15, ymm15, ymm3
1357 vprord ymm12, ymm12, 8
1358 vprord ymm13, ymm13, 8
1359 vprord ymm14, ymm14, 8
1360 vprord ymm15, ymm15, 8
1361 vpaddd ymm8, ymm8, ymm12
1362 vpaddd ymm9, ymm9, ymm13
1363 vpaddd ymm10, ymm10, ymm14
1364 vpaddd ymm11, ymm11, ymm15
1365 vpxord ymm4, ymm4, ymm8
1366 vpxord ymm5, ymm5, ymm9
1367 vpxord ymm6, ymm6, ymm10
1368 vpxord ymm7, ymm7, ymm11
1369 vprord ymm4, ymm4, 7
1370 vprord ymm5, ymm5, 7
1371 vprord ymm6, ymm6, 7
1372 vprord ymm7, ymm7, 7
1373 vpaddd ymm0, ymm0, ymm17
1374 vpaddd ymm1, ymm1, ymm28
1375 vpaddd ymm2, ymm2, ymm25
1376 vpaddd ymm3, ymm3, ymm31
1377 vpaddd ymm0, ymm0, ymm5
1378 vpaddd ymm1, ymm1, ymm6
1379 vpaddd ymm2, ymm2, ymm7
1380 vpaddd ymm3, ymm3, ymm4
1381 vpxord ymm15, ymm15, ymm0
1382 vpxord ymm12, ymm12, ymm1
1383 vpxord ymm13, ymm13, ymm2
1384 vpxord ymm14, ymm14, ymm3
1385 vprord ymm15, ymm15, 16
1386 vprord ymm12, ymm12, 16
1387 vprord ymm13, ymm13, 16
1388 vprord ymm14, ymm14, 16
1389 vpaddd ymm10, ymm10, ymm15
1390 vpaddd ymm11, ymm11, ymm12
1391 vpaddd ymm8, ymm8, ymm13
1392 vpaddd ymm9, ymm9, ymm14
1393 vpxord ymm5, ymm5, ymm10
1394 vpxord ymm6, ymm6, ymm11
1395 vpxord ymm7, ymm7, ymm8
1396 vpxord ymm4, ymm4, ymm9
1397 vprord ymm5, ymm5, 12
1398 vprord ymm6, ymm6, 12
1399 vprord ymm7, ymm7, 12
1400 vprord ymm4, ymm4, 12
1401 vpaddd ymm0, ymm0, ymm27
1402 vpaddd ymm1, ymm1, ymm21
1403 vpaddd ymm2, ymm2, ymm30
1404 vpaddd ymm3, ymm3, ymm24
1405 vpaddd ymm0, ymm0, ymm5
1406 vpaddd ymm1, ymm1, ymm6
1407 vpaddd ymm2, ymm2, ymm7
1408 vpaddd ymm3, ymm3, ymm4
1409 vpxord ymm15, ymm15, ymm0
1410 vpxord ymm12, ymm12, ymm1
1411 vpxord ymm13, ymm13, ymm2
1412 vpxord ymm14, ymm14, ymm3
1413 vprord ymm15, ymm15, 8
1414 vprord ymm12, ymm12, 8
1415 vprord ymm13, ymm13, 8
1416 vprord ymm14, ymm14, 8
1417 vpaddd ymm10, ymm10, ymm15
1418 vpaddd ymm11, ymm11, ymm12
1419 vpaddd ymm8, ymm8, ymm13
1420 vpaddd ymm9, ymm9, ymm14
1421 vpxord ymm5, ymm5, ymm10
1422 vpxord ymm6, ymm6, ymm11
1423 vpxord ymm7, ymm7, ymm8
1424 vpxord ymm4, ymm4, ymm9
1425 vprord ymm5, ymm5, 7
1426 vprord ymm6, ymm6, 7
1427 vprord ymm7, ymm7, 7
1428 vprord ymm4, ymm4, 7
1429 vpaddd ymm0, ymm0, ymm19
1430 vpaddd ymm1, ymm1, ymm26
1431 vpaddd ymm2, ymm2, ymm29
1432 vpaddd ymm3, ymm3, ymm23
1433 vpaddd ymm0, ymm0, ymm4
1434 vpaddd ymm1, ymm1, ymm5
1435 vpaddd ymm2, ymm2, ymm6
1436 vpaddd ymm3, ymm3, ymm7
1437 vpxord ymm12, ymm12, ymm0
1438 vpxord ymm13, ymm13, ymm1
1439 vpxord ymm14, ymm14, ymm2
1440 vpxord ymm15, ymm15, ymm3
1441 vprord ymm12, ymm12, 16
1442 vprord ymm13, ymm13, 16
1443 vprord ymm14, ymm14, 16
1444 vprord ymm15, ymm15, 16
1445 vpaddd ymm8, ymm8, ymm12
1446 vpaddd ymm9, ymm9, ymm13
1447 vpaddd ymm10, ymm10, ymm14
1448 vpaddd ymm11, ymm11, ymm15
1449 vpxord ymm4, ymm4, ymm8
1450 vpxord ymm5, ymm5, ymm9
1451 vpxord ymm6, ymm6, ymm10
1452 vpxord ymm7, ymm7, ymm11
1453 vprord ymm4, ymm4, 12
1454 vprord ymm5, ymm5, 12
1455 vprord ymm6, ymm6, 12
1456 vprord ymm7, ymm7, 12
1457 vpaddd ymm0, ymm0, ymm20
1458 vpaddd ymm1, ymm1, ymm28
1459 vpaddd ymm2, ymm2, ymm18
1460 vpaddd ymm3, ymm3, ymm30
1461 vpaddd ymm0, ymm0, ymm4
1462 vpaddd ymm1, ymm1, ymm5
1463 vpaddd ymm2, ymm2, ymm6
1464 vpaddd ymm3, ymm3, ymm7
1465 vpxord ymm12, ymm12, ymm0
1466 vpxord ymm13, ymm13, ymm1
1467 vpxord ymm14, ymm14, ymm2
1468 vpxord ymm15, ymm15, ymm3
1469 vprord ymm12, ymm12, 8
1470 vprord ymm13, ymm13, 8
1471 vprord ymm14, ymm14, 8
1472 vprord ymm15, ymm15, 8
1473 vpaddd ymm8, ymm8, ymm12
1474 vpaddd ymm9, ymm9, ymm13
1475 vpaddd ymm10, ymm10, ymm14
1476 vpaddd ymm11, ymm11, ymm15
1477 vpxord ymm4, ymm4, ymm8
1478 vpxord ymm5, ymm5, ymm9
1479 vpxord ymm6, ymm6, ymm10
1480 vpxord ymm7, ymm7, ymm11
1481 vprord ymm4, ymm4, 7
1482 vprord ymm5, ymm5, 7
1483 vprord ymm6, ymm6, 7
1484 vprord ymm7, ymm7, 7
1485 vpaddd ymm0, ymm0, ymm22
1486 vpaddd ymm1, ymm1, ymm25
1487 vpaddd ymm2, ymm2, ymm27
1488 vpaddd ymm3, ymm3, ymm24
1489 vpaddd ymm0, ymm0, ymm5
1490 vpaddd ymm1, ymm1, ymm6
1491 vpaddd ymm2, ymm2, ymm7
1492 vpaddd ymm3, ymm3, ymm4
1493 vpxord ymm15, ymm15, ymm0
1494 vpxord ymm12, ymm12, ymm1
1495 vpxord ymm13, ymm13, ymm2
1496 vpxord ymm14, ymm14, ymm3
1497 vprord ymm15, ymm15, 16
1498 vprord ymm12, ymm12, 16
1499 vprord ymm13, ymm13, 16
1500 vprord ymm14, ymm14, 16
1501 vpaddd ymm10, ymm10, ymm15
1502 vpaddd ymm11, ymm11, ymm12
1503 vpaddd ymm8, ymm8, ymm13
1504 vpaddd ymm9, ymm9, ymm14
1505 vpxord ymm5, ymm5, ymm10
1506 vpxord ymm6, ymm6, ymm11
1507 vpxord ymm7, ymm7, ymm8
1508 vpxord ymm4, ymm4, ymm9
1509 vprord ymm5, ymm5, 12
1510 vprord ymm6, ymm6, 12
1511 vprord ymm7, ymm7, 12
1512 vprord ymm4, ymm4, 12
1513 vpaddd ymm0, ymm0, ymm21
1514 vpaddd ymm1, ymm1, ymm16
1515 vpaddd ymm2, ymm2, ymm31
1516 vpaddd ymm3, ymm3, ymm17
1517 vpaddd ymm0, ymm0, ymm5
1518 vpaddd ymm1, ymm1, ymm6
1519 vpaddd ymm2, ymm2, ymm7
1520 vpaddd ymm3, ymm3, ymm4
1521 vpxord ymm15, ymm15, ymm0
1522 vpxord ymm12, ymm12, ymm1
1523 vpxord ymm13, ymm13, ymm2
1524 vpxord ymm14, ymm14, ymm3
1525 vprord ymm15, ymm15, 8
1526 vprord ymm12, ymm12, 8
1527 vprord ymm13, ymm13, 8
1528 vprord ymm14, ymm14, 8
1529 vpaddd ymm10, ymm10, ymm15
1530 vpaddd ymm11, ymm11, ymm12
1531 vpaddd ymm8, ymm8, ymm13
1532 vpaddd ymm9, ymm9, ymm14
1533 vpxord ymm5, ymm5, ymm10
1534 vpxord ymm6, ymm6, ymm11
1535 vpxord ymm7, ymm7, ymm8
1536 vpxord ymm4, ymm4, ymm9
1537 vprord ymm5, ymm5, 7
1538 vprord ymm6, ymm6, 7
1539 vprord ymm7, ymm7, 7
1540 vprord ymm4, ymm4, 7
1541 vpaddd ymm0, ymm0, ymm26
1542 vpaddd ymm1, ymm1, ymm28
1543 vpaddd ymm2, ymm2, ymm30
1544 vpaddd ymm3, ymm3, ymm29
1545 vpaddd ymm0, ymm0, ymm4
1546 vpaddd ymm1, ymm1, ymm5
1547 vpaddd ymm2, ymm2, ymm6
1548 vpaddd ymm3, ymm3, ymm7
1549 vpxord ymm12, ymm12, ymm0
1550 vpxord ymm13, ymm13, ymm1
1551 vpxord ymm14, ymm14, ymm2
1552 vpxord ymm15, ymm15, ymm3
1553 vprord ymm12, ymm12, 16
1554 vprord ymm13, ymm13, 16
1555 vprord ymm14, ymm14, 16
1556 vprord ymm15, ymm15, 16
1557 vpaddd ymm8, ymm8, ymm12
1558 vpaddd ymm9, ymm9, ymm13
1559 vpaddd ymm10, ymm10, ymm14
1560 vpaddd ymm11, ymm11, ymm15
1561 vpxord ymm4, ymm4, ymm8
1562 vpxord ymm5, ymm5, ymm9
1563 vpxord ymm6, ymm6, ymm10
1564 vpxord ymm7, ymm7, ymm11
1565 vprord ymm4, ymm4, 12
1566 vprord ymm5, ymm5, 12
1567 vprord ymm6, ymm6, 12
1568 vprord ymm7, ymm7, 12
1569 vpaddd ymm0, ymm0, ymm23
1570 vpaddd ymm1, ymm1, ymm25
1571 vpaddd ymm2, ymm2, ymm19
1572 vpaddd ymm3, ymm3, ymm31
1573 vpaddd ymm0, ymm0, ymm4
1574 vpaddd ymm1, ymm1, ymm5
1575 vpaddd ymm2, ymm2, ymm6
1576 vpaddd ymm3, ymm3, ymm7
1577 vpxord ymm12, ymm12, ymm0
1578 vpxord ymm13, ymm13, ymm1
1579 vpxord ymm14, ymm14, ymm2
1580 vpxord ymm15, ymm15, ymm3
1581 vprord ymm12, ymm12, 8
1582 vprord ymm13, ymm13, 8
1583 vprord ymm14, ymm14, 8
1584 vprord ymm15, ymm15, 8
1585 vpaddd ymm8, ymm8, ymm12
1586 vpaddd ymm9, ymm9, ymm13
1587 vpaddd ymm10, ymm10, ymm14
1588 vpaddd ymm11, ymm11, ymm15
1589 vpxord ymm4, ymm4, ymm8
1590 vpxord ymm5, ymm5, ymm9
1591 vpxord ymm6, ymm6, ymm10
1592 vpxord ymm7, ymm7, ymm11
1593 vprord ymm4, ymm4, 7
1594 vprord ymm5, ymm5, 7
1595 vprord ymm6, ymm6, 7
1596 vprord ymm7, ymm7, 7
1597 vpaddd ymm0, ymm0, ymm20
1598 vpaddd ymm1, ymm1, ymm27
1599 vpaddd ymm2, ymm2, ymm21
1600 vpaddd ymm3, ymm3, ymm17
1601 vpaddd ymm0, ymm0, ymm5
1602 vpaddd ymm1, ymm1, ymm6
1603 vpaddd ymm2, ymm2, ymm7
1604 vpaddd ymm3, ymm3, ymm4
1605 vpxord ymm15, ymm15, ymm0
1606 vpxord ymm12, ymm12, ymm1
1607 vpxord ymm13, ymm13, ymm2
1608 vpxord ymm14, ymm14, ymm3
1609 vprord ymm15, ymm15, 16
1610 vprord ymm12, ymm12, 16
1611 vprord ymm13, ymm13, 16
1612 vprord ymm14, ymm14, 16
1613 vpaddd ymm10, ymm10, ymm15
1614 vpaddd ymm11, ymm11, ymm12
1615 vpaddd ymm8, ymm8, ymm13
1616 vpaddd ymm9, ymm9, ymm14
1617 vpxord ymm5, ymm5, ymm10
1618 vpxord ymm6, ymm6, ymm11
1619 vpxord ymm7, ymm7, ymm8
1620 vpxord ymm4, ymm4, ymm9
1621 vprord ymm5, ymm5, 12
1622 vprord ymm6, ymm6, 12
1623 vprord ymm7, ymm7, 12
1624 vprord ymm4, ymm4, 12
1625 vpaddd ymm0, ymm0, ymm16
1626 vpaddd ymm1, ymm1, ymm18
1627 vpaddd ymm2, ymm2, ymm24
1628 vpaddd ymm3, ymm3, ymm22
1629 vpaddd ymm0, ymm0, ymm5
1630 vpaddd ymm1, ymm1, ymm6
1631 vpaddd ymm2, ymm2, ymm7
1632 vpaddd ymm3, ymm3, ymm4
1633 vpxord ymm15, ymm15, ymm0
1634 vpxord ymm12, ymm12, ymm1
1635 vpxord ymm13, ymm13, ymm2
1636 vpxord ymm14, ymm14, ymm3
1637 vprord ymm15, ymm15, 8
1638 vprord ymm12, ymm12, 8
1639 vprord ymm13, ymm13, 8
1640 vprord ymm14, ymm14, 8
1641 vpaddd ymm10, ymm10, ymm15
1642 vpaddd ymm11, ymm11, ymm12
1643 vpaddd ymm8, ymm8, ymm13
1644 vpaddd ymm9, ymm9, ymm14
1645 vpxord ymm5, ymm5, ymm10
1646 vpxord ymm6, ymm6, ymm11
1647 vpxord ymm7, ymm7, ymm8
1648 vpxord ymm4, ymm4, ymm9
1649 vprord ymm5, ymm5, 7
1650 vprord ymm6, ymm6, 7
1651 vprord ymm7, ymm7, 7
1652 vprord ymm4, ymm4, 7
1653 vpaddd ymm0, ymm0, ymm28
1654 vpaddd ymm1, ymm1, ymm25
1655 vpaddd ymm2, ymm2, ymm31
1656 vpaddd ymm3, ymm3, ymm30
1657 vpaddd ymm0, ymm0, ymm4
1658 vpaddd ymm1, ymm1, ymm5
1659 vpaddd ymm2, ymm2, ymm6
1660 vpaddd ymm3, ymm3, ymm7
1661 vpxord ymm12, ymm12, ymm0
1662 vpxord ymm13, ymm13, ymm1
1663 vpxord ymm14, ymm14, ymm2
1664 vpxord ymm15, ymm15, ymm3
1665 vprord ymm12, ymm12, 16
1666 vprord ymm13, ymm13, 16
1667 vprord ymm14, ymm14, 16
1668 vprord ymm15, ymm15, 16
1669 vpaddd ymm8, ymm8, ymm12
1670 vpaddd ymm9, ymm9, ymm13
1671 vpaddd ymm10, ymm10, ymm14
1672 vpaddd ymm11, ymm11, ymm15
1673 vpxord ymm4, ymm4, ymm8
1674 vpxord ymm5, ymm5, ymm9
1675 vpxord ymm6, ymm6, ymm10
1676 vpxord ymm7, ymm7, ymm11
1677 vprord ymm4, ymm4, 12
1678 vprord ymm5, ymm5, 12
1679 vprord ymm6, ymm6, 12
1680 vprord ymm7, ymm7, 12
1681 vpaddd ymm0, ymm0, ymm29
1682 vpaddd ymm1, ymm1, ymm27
1683 vpaddd ymm2, ymm2, ymm26
1684 vpaddd ymm3, ymm3, ymm24
1685 vpaddd ymm0, ymm0, ymm4
1686 vpaddd ymm1, ymm1, ymm5
1687 vpaddd ymm2, ymm2, ymm6
1688 vpaddd ymm3, ymm3, ymm7
1689 vpxord ymm12, ymm12, ymm0
1690 vpxord ymm13, ymm13, ymm1
1691 vpxord ymm14, ymm14, ymm2
1692 vpxord ymm15, ymm15, ymm3
1693 vprord ymm12, ymm12, 8
1694 vprord ymm13, ymm13, 8
1695 vprord ymm14, ymm14, 8
1696 vprord ymm15, ymm15, 8
1697 vpaddd ymm8, ymm8, ymm12
1698 vpaddd ymm9, ymm9, ymm13
1699 vpaddd ymm10, ymm10, ymm14
1700 vpaddd ymm11, ymm11, ymm15
1701 vpxord ymm4, ymm4, ymm8
1702 vpxord ymm5, ymm5, ymm9
1703 vpxord ymm6, ymm6, ymm10
1704 vpxord ymm7, ymm7, ymm11
1705 vprord ymm4, ymm4, 7
1706 vprord ymm5, ymm5, 7
1707 vprord ymm6, ymm6, 7
1708 vprord ymm7, ymm7, 7
1709 vpaddd ymm0, ymm0, ymm23
1710 vpaddd ymm1, ymm1, ymm21
1711 vpaddd ymm2, ymm2, ymm16
1712 vpaddd ymm3, ymm3, ymm22
1713 vpaddd ymm0, ymm0, ymm5
1714 vpaddd ymm1, ymm1, ymm6
1715 vpaddd ymm2, ymm2, ymm7
1716 vpaddd ymm3, ymm3, ymm4
1717 vpxord ymm15, ymm15, ymm0
1718 vpxord ymm12, ymm12, ymm1
1719 vpxord ymm13, ymm13, ymm2
1720 vpxord ymm14, ymm14, ymm3
1721 vprord ymm15, ymm15, 16
1722 vprord ymm12, ymm12, 16
1723 vprord ymm13, ymm13, 16
1724 vprord ymm14, ymm14, 16
1725 vpaddd ymm10, ymm10, ymm15
1726 vpaddd ymm11, ymm11, ymm12
1727 vpaddd ymm8, ymm8, ymm13
1728 vpaddd ymm9, ymm9, ymm14
1729 vpxord ymm5, ymm5, ymm10
1730 vpxord ymm6, ymm6, ymm11
1731 vpxord ymm7, ymm7, ymm8
1732 vpxord ymm4, ymm4, ymm9
1733 vprord ymm5, ymm5, 12
1734 vprord ymm6, ymm6, 12
1735 vprord ymm7, ymm7, 12
1736 vprord ymm4, ymm4, 12
1737 vpaddd ymm0, ymm0, ymm18
1738 vpaddd ymm1, ymm1, ymm19
1739 vpaddd ymm2, ymm2, ymm17
1740 vpaddd ymm3, ymm3, ymm20
1741 vpaddd ymm0, ymm0, ymm5
1742 vpaddd ymm1, ymm1, ymm6
1743 vpaddd ymm2, ymm2, ymm7
1744 vpaddd ymm3, ymm3, ymm4
1745 vpxord ymm15, ymm15, ymm0
1746 vpxord ymm12, ymm12, ymm1
1747 vpxord ymm13, ymm13, ymm2
1748 vpxord ymm14, ymm14, ymm3
1749 vprord ymm15, ymm15, 8
1750 vprord ymm12, ymm12, 8
1751 vprord ymm13, ymm13, 8
1752 vprord ymm14, ymm14, 8
1753 vpaddd ymm10, ymm10, ymm15
1754 vpaddd ymm11, ymm11, ymm12
1755 vpaddd ymm8, ymm8, ymm13
1756 vpaddd ymm9, ymm9, ymm14
1757 vpxord ymm5, ymm5, ymm10
1758 vpxord ymm6, ymm6, ymm11
1759 vpxord ymm7, ymm7, ymm8
1760 vpxord ymm4, ymm4, ymm9
1761 vprord ymm5, ymm5, 7
1762 vprord ymm6, ymm6, 7
1763 vprord ymm7, ymm7, 7
1764 vprord ymm4, ymm4, 7
1765 vpaddd ymm0, ymm0, ymm25
1766 vpaddd ymm1, ymm1, ymm27
1767 vpaddd ymm2, ymm2, ymm24
1768 vpaddd ymm3, ymm3, ymm31
1769 vpaddd ymm0, ymm0, ymm4
1770 vpaddd ymm1, ymm1, ymm5
1771 vpaddd ymm2, ymm2, ymm6
1772 vpaddd ymm3, ymm3, ymm7
1773 vpxord ymm12, ymm12, ymm0
1774 vpxord ymm13, ymm13, ymm1
1775 vpxord ymm14, ymm14, ymm2
1776 vpxord ymm15, ymm15, ymm3
1777 vprord ymm12, ymm12, 16
1778 vprord ymm13, ymm13, 16
1779 vprord ymm14, ymm14, 16
1780 vprord ymm15, ymm15, 16
1781 vpaddd ymm8, ymm8, ymm12
1782 vpaddd ymm9, ymm9, ymm13
1783 vpaddd ymm10, ymm10, ymm14
1784 vpaddd ymm11, ymm11, ymm15
1785 vpxord ymm4, ymm4, ymm8
1786 vpxord ymm5, ymm5, ymm9
1787 vpxord ymm6, ymm6, ymm10
1788 vpxord ymm7, ymm7, ymm11
1789 vprord ymm4, ymm4, 12
1790 vprord ymm5, ymm5, 12
1791 vprord ymm6, ymm6, 12
1792 vprord ymm7, ymm7, 12
1793 vpaddd ymm0, ymm0, ymm30
1794 vpaddd ymm1, ymm1, ymm21
1795 vpaddd ymm2, ymm2, ymm28
1796 vpaddd ymm3, ymm3, ymm17
1797 vpaddd ymm0, ymm0, ymm4
1798 vpaddd ymm1, ymm1, ymm5
1799 vpaddd ymm2, ymm2, ymm6
1800 vpaddd ymm3, ymm3, ymm7
1801 vpxord ymm12, ymm12, ymm0
1802 vpxord ymm13, ymm13, ymm1
1803 vpxord ymm14, ymm14, ymm2
1804 vpxord ymm15, ymm15, ymm3
1805 vprord ymm12, ymm12, 8
1806 vprord ymm13, ymm13, 8
1807 vprord ymm14, ymm14, 8
1808 vprord ymm15, ymm15, 8
1809 vpaddd ymm8, ymm8, ymm12
1810 vpaddd ymm9, ymm9, ymm13
1811 vpaddd ymm10, ymm10, ymm14
1812 vpaddd ymm11, ymm11, ymm15
1813 vpxord ymm4, ymm4, ymm8
1814 vpxord ymm5, ymm5, ymm9
1815 vpxord ymm6, ymm6, ymm10
1816 vpxord ymm7, ymm7, ymm11
1817 vprord ymm4, ymm4, 7
1818 vprord ymm5, ymm5, 7
1819 vprord ymm6, ymm6, 7
1820 vprord ymm7, ymm7, 7
1821 vpaddd ymm0, ymm0, ymm29
1822 vpaddd ymm1, ymm1, ymm16
1823 vpaddd ymm2, ymm2, ymm18
1824 vpaddd ymm3, ymm3, ymm20
1825 vpaddd ymm0, ymm0, ymm5
1826 vpaddd ymm1, ymm1, ymm6
1827 vpaddd ymm2, ymm2, ymm7
1828 vpaddd ymm3, ymm3, ymm4
1829 vpxord ymm15, ymm15, ymm0
1830 vpxord ymm12, ymm12, ymm1
1831 vpxord ymm13, ymm13, ymm2
1832 vpxord ymm14, ymm14, ymm3
1833 vprord ymm15, ymm15, 16
1834 vprord ymm12, ymm12, 16
1835 vprord ymm13, ymm13, 16
1836 vprord ymm14, ymm14, 16
1837 vpaddd ymm10, ymm10, ymm15
1838 vpaddd ymm11, ymm11, ymm12
1839 vpaddd ymm8, ymm8, ymm13
1840 vpaddd ymm9, ymm9, ymm14
1841 vpxord ymm5, ymm5, ymm10
1842 vpxord ymm6, ymm6, ymm11
1843 vpxord ymm7, ymm7, ymm8
1844 vpxord ymm4, ymm4, ymm9
1845 vprord ymm5, ymm5, 12
1846 vprord ymm6, ymm6, 12
1847 vprord ymm7, ymm7, 12
1848 vprord ymm4, ymm4, 12
1849 vpaddd ymm0, ymm0, ymm19
1850 vpaddd ymm1, ymm1, ymm26
1851 vpaddd ymm2, ymm2, ymm22
1852 vpaddd ymm3, ymm3, ymm23
1853 vpaddd ymm0, ymm0, ymm5
1854 vpaddd ymm1, ymm1, ymm6
1855 vpaddd ymm2, ymm2, ymm7
1856 vpaddd ymm3, ymm3, ymm4
1857 vpxord ymm15, ymm15, ymm0
1858 vpxord ymm12, ymm12, ymm1
1859 vpxord ymm13, ymm13, ymm2
1860 vpxord ymm14, ymm14, ymm3
1861 vprord ymm15, ymm15, 8
1862 vprord ymm12, ymm12, 8
1863 vprord ymm13, ymm13, 8
1864 vprord ymm14, ymm14, 8
1865 vpaddd ymm10, ymm10, ymm15
1866 vpaddd ymm11, ymm11, ymm12
1867 vpaddd ymm8, ymm8, ymm13
1868 vpaddd ymm9, ymm9, ymm14
1869 vpxord ymm5, ymm5, ymm10
1870 vpxord ymm6, ymm6, ymm11
1871 vpxord ymm7, ymm7, ymm8
1872 vpxord ymm4, ymm4, ymm9
1873 vprord ymm5, ymm5, 7
1874 vprord ymm6, ymm6, 7
1875 vprord ymm7, ymm7, 7
1876 vprord ymm4, ymm4, 7
1877 vpaddd ymm0, ymm0, ymm27
1878 vpaddd ymm1, ymm1, ymm21
1879 vpaddd ymm2, ymm2, ymm17
1880 vpaddd ymm3, ymm3, ymm24
1881 vpaddd ymm0, ymm0, ymm4
1882 vpaddd ymm1, ymm1, ymm5
1883 vpaddd ymm2, ymm2, ymm6
1884 vpaddd ymm3, ymm3, ymm7
1885 vpxord ymm12, ymm12, ymm0
1886 vpxord ymm13, ymm13, ymm1
1887 vpxord ymm14, ymm14, ymm2
1888 vpxord ymm15, ymm15, ymm3
1889 vprord ymm12, ymm12, 16
1890 vprord ymm13, ymm13, 16
1891 vprord ymm14, ymm14, 16
1892 vprord ymm15, ymm15, 16
1893 vpaddd ymm8, ymm8, ymm12
1894 vpaddd ymm9, ymm9, ymm13
1895 vpaddd ymm10, ymm10, ymm14
1896 vpaddd ymm11, ymm11, ymm15
1897 vpxord ymm4, ymm4, ymm8
1898 vpxord ymm5, ymm5, ymm9
1899 vpxord ymm6, ymm6, ymm10
1900 vpxord ymm7, ymm7, ymm11
1901 vprord ymm4, ymm4, 12
1902 vprord ymm5, ymm5, 12
1903 vprord ymm6, ymm6, 12
1904 vprord ymm7, ymm7, 12
1905 vpaddd ymm0, ymm0, ymm31
1906 vpaddd ymm1, ymm1, ymm16
1907 vpaddd ymm2, ymm2, ymm25
1908 vpaddd ymm3, ymm3, ymm22
1909 vpaddd ymm0, ymm0, ymm4
1910 vpaddd ymm1, ymm1, ymm5
1911 vpaddd ymm2, ymm2, ymm6
1912 vpaddd ymm3, ymm3, ymm7
1913 vpxord ymm12, ymm12, ymm0
1914 vpxord ymm13, ymm13, ymm1
1915 vpxord ymm14, ymm14, ymm2
1916 vpxord ymm15, ymm15, ymm3
1917 vprord ymm12, ymm12, 8
1918 vprord ymm13, ymm13, 8
1919 vprord ymm14, ymm14, 8
1920 vprord ymm15, ymm15, 8
1921 vpaddd ymm8, ymm8, ymm12
1922 vpaddd ymm9, ymm9, ymm13
1923 vpaddd ymm10, ymm10, ymm14
1924 vpaddd ymm11, ymm11, ymm15
1925 vpxord ymm4, ymm4, ymm8
1926 vpxord ymm5, ymm5, ymm9
1927 vpxord ymm6, ymm6, ymm10
1928 vpxord ymm7, ymm7, ymm11
1929 vprord ymm4, ymm4, 7
1930 vprord ymm5, ymm5, 7
1931 vprord ymm6, ymm6, 7
1932 vprord ymm7, ymm7, 7
1933 vpaddd ymm0, ymm0, ymm30
1934 vpaddd ymm1, ymm1, ymm18
1935 vpaddd ymm2, ymm2, ymm19
1936 vpaddd ymm3, ymm3, ymm23
1937 vpaddd ymm0, ymm0, ymm5
1938 vpaddd ymm1, ymm1, ymm6
1939 vpaddd ymm2, ymm2, ymm7
1940 vpaddd ymm3, ymm3, ymm4
1941 vpxord ymm15, ymm15, ymm0
1942 vpxord ymm12, ymm12, ymm1
1943 vpxord ymm13, ymm13, ymm2
1944 vpxord ymm14, ymm14, ymm3
1945 vprord ymm15, ymm15, 16
1946 vprord ymm12, ymm12, 16
1947 vprord ymm13, ymm13, 16
1948 vprord ymm14, ymm14, 16
1949 vpaddd ymm10, ymm10, ymm15
1950 vpaddd ymm11, ymm11, ymm12
1951 vpaddd ymm8, ymm8, ymm13
1952 vpaddd ymm9, ymm9, ymm14
1953 vpxord ymm5, ymm5, ymm10
1954 vpxord ymm6, ymm6, ymm11
1955 vpxord ymm7, ymm7, ymm8
1956 vpxord ymm4, ymm4, ymm9
1957 vprord ymm5, ymm5, 12
1958 vprord ymm6, ymm6, 12
1959 vprord ymm7, ymm7, 12
1960 vprord ymm4, ymm4, 12
1961 vpaddd ymm0, ymm0, ymm26
1962 vpaddd ymm1, ymm1, ymm28
1963 vpaddd ymm2, ymm2, ymm20
1964 vpaddd ymm3, ymm3, ymm29
1965 vpaddd ymm0, ymm0, ymm5
1966 vpaddd ymm1, ymm1, ymm6
1967 vpaddd ymm2, ymm2, ymm7
1968 vpaddd ymm3, ymm3, ymm4
1969 vpxord ymm15, ymm15, ymm0
1970 vpxord ymm12, ymm12, ymm1
1971 vpxord ymm13, ymm13, ymm2
1972 vpxord ymm14, ymm14, ymm3
1973 vprord ymm15, ymm15, 8
1974 vprord ymm12, ymm12, 8
1975 vprord ymm13, ymm13, 8
1976 vprord ymm14, ymm14, 8
1977 vpaddd ymm10, ymm10, ymm15
1978 vpaddd ymm11, ymm11, ymm12
1979 vpaddd ymm8, ymm8, ymm13
1980 vpaddd ymm9, ymm9, ymm14
1981 vpxord ymm5, ymm5, ymm10
1982 vpxord ymm6, ymm6, ymm11
1983 vpxord ymm7, ymm7, ymm8
1984 vpxord ymm4, ymm4, ymm9
1985 vprord ymm5, ymm5, 7
1986 vprord ymm6, ymm6, 7
1987 vprord ymm7, ymm7, 7
1988 vprord ymm4, ymm4, 7
1989 vpxor ymm0, ymm0, ymm8
1990 vpxor ymm1, ymm1, ymm9
1991 vpxor ymm2, ymm2, ymm10
1992 vpxor ymm3, ymm3, ymm11
1993 vpxor ymm4, ymm4, ymm12
1994 vpxor ymm5, ymm5, ymm13
1995 vpxor ymm6, ymm6, ymm14
1996 vpxor ymm7, ymm7, ymm15
1997 movzx eax, byte ptr [rbp+0x38]
1999 mov rbx, qword ptr [rbp+0x50]
2000 vunpcklps ymm8, ymm0, ymm1
2001 vunpcklps ymm9, ymm2, ymm3
2002 vunpckhps ymm10, ymm0, ymm1
2003 vunpcklps ymm11, ymm4, ymm5
2004 vunpcklps ymm0, ymm6, ymm7
2005 vshufps ymm12, ymm8, ymm9, 78
2006 vblendps ymm1, ymm8, ymm12, 0xCC
2007 vshufps ymm8, ymm11, ymm0, 78
2008 vunpckhps ymm13, ymm2, ymm3
2009 vblendps ymm2, ymm11, ymm8, 0xCC
2010 vblendps ymm3, ymm12, ymm9, 0xCC
2011 vperm2f128 ymm12, ymm1, ymm2, 0x20
2012 vmovups ymmword ptr [rbx], ymm12
2013 vunpckhps ymm14, ymm4, ymm5
2014 vblendps ymm4, ymm8, ymm0, 0xCC
2015 vunpckhps ymm15, ymm6, ymm7
2016 vperm2f128 ymm7, ymm3, ymm4, 0x20
2017 vmovups ymmword ptr [rbx+0x20], ymm7
2018 vshufps ymm5, ymm10, ymm13, 78
2019 vblendps ymm6, ymm5, ymm13, 0xCC
2020 vshufps ymm13, ymm14, ymm15, 78
2021 vblendps ymm10, ymm10, ymm5, 0xCC
2022 vblendps ymm14, ymm14, ymm13, 0xCC
2023 vperm2f128 ymm8, ymm10, ymm14, 0x20
2024 vmovups ymmword ptr [rbx+0x40], ymm8
2025 vblendps ymm15, ymm13, ymm15, 0xCC
2026 vperm2f128 ymm13, ymm6, ymm15, 0x20
2027 vmovups ymmword ptr [rbx+0x60], ymm13
2028 vperm2f128 ymm9, ymm1, ymm2, 0x31
2029 vperm2f128 ymm11, ymm3, ymm4, 0x31
2030 vmovups ymmword ptr [rbx+0x80], ymm9
2031 vperm2f128 ymm14, ymm10, ymm14, 0x31
2032 vperm2f128 ymm15, ymm6, ymm15, 0x31
2033 vmovups ymmword ptr [rbx+0xA0], ymm11
2034 vmovups ymmword ptr [rbx+0xC0], ymm14
2035 vmovups ymmword ptr [rbx+0xE0], ymm15
2036 vmovdqa ymm0, ymmword ptr [rsp]
2037 vmovdqa ymm2, ymmword ptr [rsp+0x2*0x20]
2038 vmovdqa32 ymm0 {k1}, ymmword ptr [rsp+0x1*0x20]
2039 vmovdqa32 ymm2 {k1}, ymmword ptr [rsp+0x3*0x20]
2040 vmovdqa ymmword ptr [rsp], ymm0
2041 vmovdqa ymmword ptr [rsp+0x2*0x20], ymm2
2043 mov qword ptr [rbp+0x50], rbx
2047 mov rbx, qword ptr [rbp+0x50]
2048 mov r15, qword ptr [rsp+0x80]
2049 movzx r13, byte ptr [rbp+0x38]
2050 movzx r12, byte ptr [rbp+0x48]
2053 vbroadcasti32x4 zmm0, xmmword ptr [rcx]
2054 vbroadcasti32x4 zmm1, xmmword ptr [rcx+0x1*0x10]
2055 vmovdqa xmm12, xmmword ptr [rsp]
2056 vmovdqa xmm13, xmmword ptr [rsp+0x4*0x10]
2057 vpunpckldq xmm14, xmm12, xmm13
2058 vpunpckhdq xmm15, xmm12, xmm13
2059 vpermq ymm14, ymm14, 0xDC
2060 vpermq ymm15, ymm15, 0xDC
2061 vpbroadcastd zmm12, dword ptr [BLAKE3_BLOCK_LEN+rip]
2062 vinserti32x8 zmm13, zmm14, ymm15, 0x01
2065 vpblendmd zmm13 {k2}, zmm13, zmm12
2066 vbroadcasti32x4 zmm15, xmmword ptr [BLAKE3_IV+rip]
2067 mov r8, qword ptr [rdi]
2068 mov r9, qword ptr [rdi+0x8]
2069 mov r10, qword ptr [rdi+0x10]
2070 mov r11, qword ptr [rdi+0x18]
2075 movzx eax, byte ptr [rbp+0x40]
2085 mov dword ptr [rsp+0x88], eax
2086 vmovdqa32 zmm2, zmm15
2087 vpbroadcastd zmm8, dword ptr [rsp+0x22*0x4]
2088 vpblendmd zmm3 {k4}, zmm13, zmm8
2089 vmovups zmm8, zmmword ptr [r8+rdx-0x1*0x40]
2090 vinserti32x4 zmm8, zmm8, xmmword ptr [r9+rdx-0x4*0x10], 0x01
2091 vinserti32x4 zmm8, zmm8, xmmword ptr [r10+rdx-0x4*0x10], 0x02
2092 vinserti32x4 zmm8, zmm8, xmmword ptr [r11+rdx-0x4*0x10], 0x03
2093 vmovups zmm9, zmmword ptr [r8+rdx-0x30]
2094 vinserti32x4 zmm9, zmm9, xmmword ptr [r9+rdx-0x3*0x10], 0x01
2095 vinserti32x4 zmm9, zmm9, xmmword ptr [r10+rdx-0x3*0x10], 0x02
2096 vinserti32x4 zmm9, zmm9, xmmword ptr [r11+rdx-0x3*0x10], 0x03
2097 vshufps zmm4, zmm8, zmm9, 136
2098 vshufps zmm5, zmm8, zmm9, 221
2099 vmovups zmm8, zmmword ptr [r8+rdx-0x20]
2100 vinserti32x4 zmm8, zmm8, xmmword ptr [r9+rdx-0x2*0x10], 0x01
2101 vinserti32x4 zmm8, zmm8, xmmword ptr [r10+rdx-0x2*0x10], 0x02
2102 vinserti32x4 zmm8, zmm8, xmmword ptr [r11+rdx-0x2*0x10], 0x03
2103 vmovups zmm9, zmmword ptr [r8+rdx-0x10]
2104 vinserti32x4 zmm9, zmm9, xmmword ptr [r9+rdx-0x1*0x10], 0x01
2105 vinserti32x4 zmm9, zmm9, xmmword ptr [r10+rdx-0x1*0x10], 0x02
2106 vinserti32x4 zmm9, zmm9, xmmword ptr [r11+rdx-0x1*0x10], 0x03
2107 vshufps zmm6, zmm8, zmm9, 136
2108 vshufps zmm7, zmm8, zmm9, 221
2109 vpshufd zmm6, zmm6, 0x93
2110 vpshufd zmm7, zmm7, 0x93
2113 vpaddd zmm0, zmm0, zmm4
2114 vpaddd zmm0, zmm0, zmm1
2115 vpxord zmm3, zmm3, zmm0
2116 vprord zmm3, zmm3, 16
2117 vpaddd zmm2, zmm2, zmm3
2118 vpxord zmm1, zmm1, zmm2
2119 vprord zmm1, zmm1, 12
2120 vpaddd zmm0, zmm0, zmm5
2121 vpaddd zmm0, zmm0, zmm1
2122 vpxord zmm3, zmm3, zmm0
2123 vprord zmm3, zmm3, 8
2124 vpaddd zmm2, zmm2, zmm3
2125 vpxord zmm1, zmm1, zmm2
2126 vprord zmm1, zmm1, 7
2127 vpshufd zmm0, zmm0, 0x93
2128 vpshufd zmm3, zmm3, 0x4E
2129 vpshufd zmm2, zmm2, 0x39
2130 vpaddd zmm0, zmm0, zmm6
2131 vpaddd zmm0, zmm0, zmm1
2132 vpxord zmm3, zmm3, zmm0
2133 vprord zmm3, zmm3, 16
2134 vpaddd zmm2, zmm2, zmm3
2135 vpxord zmm1, zmm1, zmm2
2136 vprord zmm1, zmm1, 12
2137 vpaddd zmm0, zmm0, zmm7
2138 vpaddd zmm0, zmm0, zmm1
2139 vpxord zmm3, zmm3, zmm0
2140 vprord zmm3, zmm3, 8
2141 vpaddd zmm2, zmm2, zmm3
2142 vpxord zmm1, zmm1, zmm2
2143 vprord zmm1, zmm1, 7
2144 vpshufd zmm0, zmm0, 0x39
2145 vpshufd zmm3, zmm3, 0x4E
2146 vpshufd zmm2, zmm2, 0x93
2149 vshufps zmm8, zmm4, zmm5, 214
2150 vpshufd zmm9, zmm4, 0x0F
2151 vpshufd zmm4, zmm8, 0x39
2152 vshufps zmm8, zmm6, zmm7, 250
2153 vpblendmd zmm9 {k3}, zmm9, zmm8
2154 vpunpcklqdq zmm8, zmm7, zmm5
2155 vpblendmd zmm8 {k4}, zmm8, zmm6
2156 vpshufd zmm8, zmm8, 0x78
2157 vpunpckhdq zmm5, zmm5, zmm7
2158 vpunpckldq zmm6, zmm6, zmm5
2159 vpshufd zmm7, zmm6, 0x1E
2160 vmovdqa32 zmm5, zmm9
2161 vmovdqa32 zmm6, zmm8
2164 vpxord zmm0, zmm0, zmm2
2165 vpxord zmm1, zmm1, zmm3
2169 vmovdqu xmmword ptr [rbx], xmm0
2170 vmovdqu xmmword ptr [rbx+0x10], xmm1
2171 vextracti128 xmmword ptr [rbx+0x20], ymm0, 0x01
2172 vextracti128 xmmword ptr [rbx+0x30], ymm1, 0x01
2173 vextracti32x4 xmmword ptr [rbx+0x4*0x10], zmm0, 0x02
2174 vextracti32x4 xmmword ptr [rbx+0x5*0x10], zmm1, 0x02
2175 vextracti32x4 xmmword ptr [rbx+0x6*0x10], zmm0, 0x03
2176 vextracti32x4 xmmword ptr [rbx+0x7*0x10], zmm1, 0x03
2177 vmovdqa xmm0, xmmword ptr [rsp]
2178 vmovdqa xmm2, xmmword ptr [rsp+0x40]
2179 vmovdqa32 xmm0 {k1}, xmmword ptr [rsp+0x1*0x10]
2180 vmovdqa32 xmm2 {k1}, xmmword ptr [rsp+0x5*0x10]
2181 vmovdqa xmmword ptr [rsp], xmm0
2182 vmovdqa xmmword ptr [rsp+0x40], xmm2
2189 vbroadcasti128 ymm0, xmmword ptr [rcx]
2190 vbroadcasti128 ymm1, xmmword ptr [rcx+0x10]
2191 vmovd xmm13, dword ptr [rsp]
2192 vpinsrd xmm13, xmm13, dword ptr [rsp+0x40], 1
2193 vpinsrd xmm13, xmm13, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
2194 vmovd xmm14, dword ptr [rsp+0x4]
2195 vpinsrd xmm14, xmm14, dword ptr [rsp+0x44], 1
2196 vpinsrd xmm14, xmm14, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
2197 vinserti128 ymm13, ymm13, xmm14, 0x01
2198 mov r8, qword ptr [rdi]
2199 mov r9, qword ptr [rdi+0x8]
2200 movzx eax, byte ptr [rbp+0x40]
2210 mov dword ptr [rsp+0x88], eax
2211 vbroadcasti128 ymm2, xmmword ptr [BLAKE3_IV+rip]
2212 vpbroadcastd ymm8, dword ptr [rsp+0x88]
2213 vpblendd ymm3, ymm13, ymm8, 0x88
2214 vmovups ymm8, ymmword ptr [r8+rdx-0x40]
2215 vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-0x40], 0x01
2216 vmovups ymm9, ymmword ptr [r8+rdx-0x30]
2217 vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-0x30], 0x01
2218 vshufps ymm4, ymm8, ymm9, 136
2219 vshufps ymm5, ymm8, ymm9, 221
2220 vmovups ymm8, ymmword ptr [r8+rdx-0x20]
2221 vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-0x20], 0x01
2222 vmovups ymm9, ymmword ptr [r8+rdx-0x10]
2223 vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-0x10], 0x01
2224 vshufps ymm6, ymm8, ymm9, 136
2225 vshufps ymm7, ymm8, ymm9, 221
2226 vpshufd ymm6, ymm6, 0x93
2227 vpshufd ymm7, ymm7, 0x93
2230 vpaddd ymm0, ymm0, ymm4
2231 vpaddd ymm0, ymm0, ymm1
2232 vpxord ymm3, ymm3, ymm0
2233 vprord ymm3, ymm3, 16
2234 vpaddd ymm2, ymm2, ymm3
2235 vpxord ymm1, ymm1, ymm2
2236 vprord ymm1, ymm1, 12
2237 vpaddd ymm0, ymm0, ymm5
2238 vpaddd ymm0, ymm0, ymm1
2239 vpxord ymm3, ymm3, ymm0
2240 vprord ymm3, ymm3, 8
2241 vpaddd ymm2, ymm2, ymm3
2242 vpxord ymm1, ymm1, ymm2
2243 vprord ymm1, ymm1, 7
2244 vpshufd ymm0, ymm0, 0x93
2245 vpshufd ymm3, ymm3, 0x4E
2246 vpshufd ymm2, ymm2, 0x39
2247 vpaddd ymm0, ymm0, ymm6
2248 vpaddd ymm0, ymm0, ymm1
2249 vpxord ymm3, ymm3, ymm0
2250 vprord ymm3, ymm3, 16
2251 vpaddd ymm2, ymm2, ymm3
2252 vpxord ymm1, ymm1, ymm2
2253 vprord ymm1, ymm1, 12
2254 vpaddd ymm0, ymm0, ymm7
2255 vpaddd ymm0, ymm0, ymm1
2256 vpxord ymm3, ymm3, ymm0
2257 vprord ymm3, ymm3, 8
2258 vpaddd ymm2, ymm2, ymm3
2259 vpxord ymm1, ymm1, ymm2
2260 vprord ymm1, ymm1, 7
2261 vpshufd ymm0, ymm0, 0x39
2262 vpshufd ymm3, ymm3, 0x4E
2263 vpshufd ymm2, ymm2, 0x93
2266 vshufps ymm8, ymm4, ymm5, 214
2267 vpshufd ymm9, ymm4, 0x0F
2268 vpshufd ymm4, ymm8, 0x39
2269 vshufps ymm8, ymm6, ymm7, 250
2270 vpblendd ymm9, ymm9, ymm8, 0xAA
2271 vpunpcklqdq ymm8, ymm7, ymm5
2272 vpblendd ymm8, ymm8, ymm6, 0x88
2273 vpshufd ymm8, ymm8, 0x78
2274 vpunpckhdq ymm5, ymm5, ymm7
2275 vpunpckldq ymm6, ymm6, ymm5
2276 vpshufd ymm7, ymm6, 0x1E
2281 vpxor ymm0, ymm0, ymm2
2282 vpxor ymm1, ymm1, ymm3
2286 vmovdqu xmmword ptr [rbx], xmm0
2287 vmovdqu xmmword ptr [rbx+0x10], xmm1
2288 vextracti128 xmmword ptr [rbx+0x20], ymm0, 0x01
2289 vextracti128 xmmword ptr [rbx+0x30], ymm1, 0x01
2290 vmovdqa xmm0, xmmword ptr [rsp]
2291 vmovdqa xmm2, xmmword ptr [rsp+0x4*0x10]
2292 vmovdqu32 xmm0 {k1}, xmmword ptr [rsp+0x8]
2293 vmovdqu32 xmm2 {k1}, xmmword ptr [rsp+0x48]
2294 vmovdqa xmmword ptr [rsp], xmm0
2295 vmovdqa xmmword ptr [rsp+0x4*0x10], xmm2
2302 vmovdqu xmm0, xmmword ptr [rcx]
2303 vmovdqu xmm1, xmmword ptr [rcx+0x10]
2304 vmovd xmm14, dword ptr [rsp]
2305 vpinsrd xmm14, xmm14, dword ptr [rsp+0x40], 1
2306 vpinsrd xmm14, xmm14, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
2307 vmovdqa xmm15, xmmword ptr [BLAKE3_IV+rip]
2308 mov r8, qword ptr [rdi]
2309 movzx eax, byte ptr [rbp+0x40]
2319 vpinsrd xmm3, xmm14, eax, 3
2321 vmovups xmm8, xmmword ptr [r8+rdx-0x40]
2322 vmovups xmm9, xmmword ptr [r8+rdx-0x30]
2323 vshufps xmm4, xmm8, xmm9, 136
2324 vshufps xmm5, xmm8, xmm9, 221
2325 vmovups xmm8, xmmword ptr [r8+rdx-0x20]
2326 vmovups xmm9, xmmword ptr [r8+rdx-0x10]
2327 vshufps xmm6, xmm8, xmm9, 136
2328 vshufps xmm7, xmm8, xmm9, 221
2329 vpshufd xmm6, xmm6, 0x93
2330 vpshufd xmm7, xmm7, 0x93
2333 vpaddd xmm0, xmm0, xmm4
2334 vpaddd xmm0, xmm0, xmm1
2335 vpxord xmm3, xmm3, xmm0
2336 vprord xmm3, xmm3, 16
2337 vpaddd xmm2, xmm2, xmm3
2338 vpxord xmm1, xmm1, xmm2
2339 vprord xmm1, xmm1, 12
2340 vpaddd xmm0, xmm0, xmm5
2341 vpaddd xmm0, xmm0, xmm1
2342 vpxord xmm3, xmm3, xmm0
2343 vprord xmm3, xmm3, 8
2344 vpaddd xmm2, xmm2, xmm3
2345 vpxord xmm1, xmm1, xmm2
2346 vprord xmm1, xmm1, 7
2347 vpshufd xmm0, xmm0, 0x93
2348 vpshufd xmm3, xmm3, 0x4E
2349 vpshufd xmm2, xmm2, 0x39
2350 vpaddd xmm0, xmm0, xmm6
2351 vpaddd xmm0, xmm0, xmm1
2352 vpxord xmm3, xmm3, xmm0
2353 vprord xmm3, xmm3, 16
2354 vpaddd xmm2, xmm2, xmm3
2355 vpxord xmm1, xmm1, xmm2
2356 vprord xmm1, xmm1, 12
2357 vpaddd xmm0, xmm0, xmm7
2358 vpaddd xmm0, xmm0, xmm1
2359 vpxord xmm3, xmm3, xmm0
2360 vprord xmm3, xmm3, 8
2361 vpaddd xmm2, xmm2, xmm3
2362 vpxord xmm1, xmm1, xmm2
2363 vprord xmm1, xmm1, 7
2364 vpshufd xmm0, xmm0, 0x39
2365 vpshufd xmm3, xmm3, 0x4E
2366 vpshufd xmm2, xmm2, 0x93
2369 vshufps xmm8, xmm4, xmm5, 214
2370 vpshufd xmm9, xmm4, 0x0F
2371 vpshufd xmm4, xmm8, 0x39
2372 vshufps xmm8, xmm6, xmm7, 250
2373 vpblendd xmm9, xmm9, xmm8, 0xAA
2374 vpunpcklqdq xmm8, xmm7, xmm5
2375 vpblendd xmm8, xmm8, xmm6, 0x88
2376 vpshufd xmm8, xmm8, 0x78
2377 vpunpckhdq xmm5, xmm5, xmm7
2378 vpunpckldq xmm6, xmm6, xmm5
2379 vpshufd xmm7, xmm6, 0x1E
2384 vpxor xmm0, xmm0, xmm2
2385 vpxor xmm1, xmm1, xmm3
2389 vmovdqu xmmword ptr [rbx], xmm0
2390 vmovdqu xmmword ptr [rbx+0x10], xmm1
2392 SET_SIZE(zfs_blake3_hash_many_avx512)
2394 ENTRY_ALIGN(zfs_blake3_compress_in_place_avx512, 64)
2396 vmovdqu xmm0, xmmword ptr [rdi]
2397 vmovdqu xmm1, xmmword ptr [rdi+0x10]
2404 vpunpcklqdq xmm3, xmm3, xmm4
2405 vmovaps xmm2, xmmword ptr [BLAKE3_IV+rip]
2406 vmovups xmm8, xmmword ptr [rsi]
2407 vmovups xmm9, xmmword ptr [rsi+0x10]
2408 vshufps xmm4, xmm8, xmm9, 136
2409 vshufps xmm5, xmm8, xmm9, 221
2410 vmovups xmm8, xmmword ptr [rsi+0x20]
2411 vmovups xmm9, xmmword ptr [rsi+0x30]
2412 vshufps xmm6, xmm8, xmm9, 136
2413 vshufps xmm7, xmm8, xmm9, 221
2414 vpshufd xmm6, xmm6, 0x93
2415 vpshufd xmm7, xmm7, 0x93
2418 vpaddd xmm0, xmm0, xmm4
2419 vpaddd xmm0, xmm0, xmm1
2420 vpxord xmm3, xmm3, xmm0
2421 vprord xmm3, xmm3, 16
2422 vpaddd xmm2, xmm2, xmm3
2423 vpxord xmm1, xmm1, xmm2
2424 vprord xmm1, xmm1, 12
2425 vpaddd xmm0, xmm0, xmm5
2426 vpaddd xmm0, xmm0, xmm1
2427 vpxord xmm3, xmm3, xmm0
2428 vprord xmm3, xmm3, 8
2429 vpaddd xmm2, xmm2, xmm3
2430 vpxord xmm1, xmm1, xmm2
2431 vprord xmm1, xmm1, 7
2432 vpshufd xmm0, xmm0, 0x93
2433 vpshufd xmm3, xmm3, 0x4E
2434 vpshufd xmm2, xmm2, 0x39
2435 vpaddd xmm0, xmm0, xmm6
2436 vpaddd xmm0, xmm0, xmm1
2437 vpxord xmm3, xmm3, xmm0
2438 vprord xmm3, xmm3, 16
2439 vpaddd xmm2, xmm2, xmm3
2440 vpxord xmm1, xmm1, xmm2
2441 vprord xmm1, xmm1, 12
2442 vpaddd xmm0, xmm0, xmm7
2443 vpaddd xmm0, xmm0, xmm1
2444 vpxord xmm3, xmm3, xmm0
2445 vprord xmm3, xmm3, 8
2446 vpaddd xmm2, xmm2, xmm3
2447 vpxord xmm1, xmm1, xmm2
2448 vprord xmm1, xmm1, 7
2449 vpshufd xmm0, xmm0, 0x39
2450 vpshufd xmm3, xmm3, 0x4E
2451 vpshufd xmm2, xmm2, 0x93
2454 vshufps xmm8, xmm4, xmm5, 214
2455 vpshufd xmm9, xmm4, 0x0F
2456 vpshufd xmm4, xmm8, 0x39
2457 vshufps xmm8, xmm6, xmm7, 250
2458 vpblendd xmm9, xmm9, xmm8, 0xAA
2459 vpunpcklqdq xmm8, xmm7, xmm5
2460 vpblendd xmm8, xmm8, xmm6, 0x88
2461 vpshufd xmm8, xmm8, 0x78
2462 vpunpckhdq xmm5, xmm5, xmm7
2463 vpunpckldq xmm6, xmm6, xmm5
2464 vpshufd xmm7, xmm6, 0x1E
2469 vpxor xmm0, xmm0, xmm2
2470 vpxor xmm1, xmm1, xmm3
2471 vmovdqu xmmword ptr [rdi], xmm0
2472 vmovdqu xmmword ptr [rdi+0x10], xmm1
2474 SET_SIZE(zfs_blake3_compress_in_place_avx512)
2476 ENTRY_ALIGN(zfs_blake3_compress_xof_avx512, 64)
2478 vmovdqu xmm0, xmmword ptr [rdi]
2479 vmovdqu xmm1, xmmword ptr [rdi+0x10]
2486 vpunpcklqdq xmm3, xmm3, xmm4
2487 vmovaps xmm2, xmmword ptr [BLAKE3_IV+rip]
2488 vmovups xmm8, xmmword ptr [rsi]
2489 vmovups xmm9, xmmword ptr [rsi+0x10]
2490 vshufps xmm4, xmm8, xmm9, 136
2491 vshufps xmm5, xmm8, xmm9, 221
2492 vmovups xmm8, xmmword ptr [rsi+0x20]
2493 vmovups xmm9, xmmword ptr [rsi+0x30]
2494 vshufps xmm6, xmm8, xmm9, 136
2495 vshufps xmm7, xmm8, xmm9, 221
2496 vpshufd xmm6, xmm6, 0x93
2497 vpshufd xmm7, xmm7, 0x93
2500 vpaddd xmm0, xmm0, xmm4
2501 vpaddd xmm0, xmm0, xmm1
2502 vpxord xmm3, xmm3, xmm0
2503 vprord xmm3, xmm3, 16
2504 vpaddd xmm2, xmm2, xmm3
2505 vpxord xmm1, xmm1, xmm2
2506 vprord xmm1, xmm1, 12
2507 vpaddd xmm0, xmm0, xmm5
2508 vpaddd xmm0, xmm0, xmm1
2509 vpxord xmm3, xmm3, xmm0
2510 vprord xmm3, xmm3, 8
2511 vpaddd xmm2, xmm2, xmm3
2512 vpxord xmm1, xmm1, xmm2
2513 vprord xmm1, xmm1, 7
2514 vpshufd xmm0, xmm0, 0x93
2515 vpshufd xmm3, xmm3, 0x4E
2516 vpshufd xmm2, xmm2, 0x39
2517 vpaddd xmm0, xmm0, xmm6
2518 vpaddd xmm0, xmm0, xmm1
2519 vpxord xmm3, xmm3, xmm0
2520 vprord xmm3, xmm3, 16
2521 vpaddd xmm2, xmm2, xmm3
2522 vpxord xmm1, xmm1, xmm2
2523 vprord xmm1, xmm1, 12
2524 vpaddd xmm0, xmm0, xmm7
2525 vpaddd xmm0, xmm0, xmm1
2526 vpxord xmm3, xmm3, xmm0
2527 vprord xmm3, xmm3, 8
2528 vpaddd xmm2, xmm2, xmm3
2529 vpxord xmm1, xmm1, xmm2
2530 vprord xmm1, xmm1, 7
2531 vpshufd xmm0, xmm0, 0x39
2532 vpshufd xmm3, xmm3, 0x4E
2533 vpshufd xmm2, xmm2, 0x93
2536 vshufps xmm8, xmm4, xmm5, 214
2537 vpshufd xmm9, xmm4, 0x0F
2538 vpshufd xmm4, xmm8, 0x39
2539 vshufps xmm8, xmm6, xmm7, 250
2540 vpblendd xmm9, xmm9, xmm8, 0xAA
2541 vpunpcklqdq xmm8, xmm7, xmm5
2542 vpblendd xmm8, xmm8, xmm6, 0x88
2543 vpshufd xmm8, xmm8, 0x78
2544 vpunpckhdq xmm5, xmm5, xmm7
2545 vpunpckldq xmm6, xmm6, xmm5
2546 vpshufd xmm7, xmm6, 0x1E
2551 vpxor xmm0, xmm0, xmm2
2552 vpxor xmm1, xmm1, xmm3
2553 vpxor xmm2, xmm2, [rdi]
2554 vpxor xmm3, xmm3, [rdi+0x10]
2555 vmovdqu xmmword ptr [r9], xmm0
2556 vmovdqu xmmword ptr [r9+0x10], xmm1
2557 vmovdqu xmmword ptr [r9+0x20], xmm2
2558 vmovdqu xmmword ptr [r9+0x30], xmm3
2560 SET_SIZE(zfs_blake3_compress_xof_avx512)
2566 .long 0, 1, 2, 3, 16, 17, 18, 19
2567 .long 8, 9, 10, 11, 24, 25, 26, 27
2569 .long 4, 5, 6, 7, 20, 21, 22, 23
2570 .long 12, 13, 14, 15, 28, 29, 30, 31
2572 .long 0, 1, 2, 3, 4, 5, 6, 7
2573 .long 8, 9, 10, 11, 12, 13, 14, 15
2590 #endif /* HAVE_AVX512 */
2593 .section .note.GNU-stack,"",%progbits