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