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