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