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