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