mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-28 20:09:35 +03:00
73b8f700b6
Currently, only Blake3 x86 Asm code has signs of being ENDBR-aware. At least, under certain conditions it includes some header file and uses some custom macro from there. Linux has its own NOENDBR since several releases ago. It's defined in the same <asm/linkage.h>, so currently <sys/asm_linkage.h> already is provided with it. Let's unify those two into one %ENDBR macro. At first, check if it's present already. If so -- use Linux kernel version. Otherwise, try to go that second way and use %_CET_ENDBR from <cet.h> if available. If no, fall back to just empty definition. This fixes a couple more 'relocations to !ENDBR' across the module. And now that we always have the latest/actual ENDBR definition, use it at the entrance of the few corresponding functions that objtool still complains about. This matches the way how it's used in the upstream x86 core Asm code. Reviewed-by: Attila Fülöp <attila@fueloep.org> Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de> Reviewed-by: Richard Yao <richard.yao@alumni.stonybrook.edu> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Alexander Lobakin <alobakin@pm.me> Closes #14035
2609 lines
88 KiB
ArmAsm
2609 lines
88 KiB
ArmAsm
/*
|
|
* CDDL HEADER START
|
|
*
|
|
* The contents of this file are subject to the terms of the
|
|
* Common Development and Distribution License (the "License").
|
|
* You may not use this file except in compliance with the License.
|
|
*
|
|
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
|
|
* or https://opensource.org/licenses/CDDL-1.0.
|
|
* See the License for the specific language governing permissions
|
|
* and limitations under the License.
|
|
*
|
|
* When distributing Covered Code, include this CDDL HEADER in each
|
|
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
|
|
* If applicable, add the following below this CDDL HEADER, with the
|
|
* fields enclosed by brackets "[]" replaced with your own identifying
|
|
* information: Portions Copyright [yyyy] [name of copyright owner]
|
|
*
|
|
* CDDL HEADER END
|
|
*/
|
|
|
|
/*
|
|
* Based on BLAKE3 v1.3.1, https://github.com/BLAKE3-team/BLAKE3
|
|
* Copyright (c) 2019-2020 Samuel Neves
|
|
* Copyright (c) 2022 Tino Reichardt <milky-zfs@mcmilk.de>
|
|
*/
|
|
|
|
#if defined(HAVE_AVX512F) && defined(HAVE_AVX512VL)
|
|
|
|
#define _ASM
|
|
#include <sys/asm_linkage.h>
|
|
|
|
.intel_syntax noprefix
|
|
.global zfs_blake3_hash_many_avx512
|
|
.global zfs_blake3_compress_in_place_avx512
|
|
.global zfs_blake3_compress_xof_avx512
|
|
.text
|
|
|
|
.type zfs_blake3_hash_many_avx512,@function
|
|
.type zfs_blake3_compress_xof_avx512,@function
|
|
.type zfs_blake3_compress_in_place_avx512,@function
|
|
|
|
.p2align 6
|
|
zfs_blake3_hash_many_avx512:
|
|
ENDBR
|
|
push r15
|
|
push r14
|
|
push r13
|
|
push r12
|
|
push rbx
|
|
push rbp
|
|
mov rbp, rsp
|
|
sub rsp, 144
|
|
and rsp, 0xFFFFFFFFFFFFFFC0
|
|
neg r9
|
|
kmovw k1, r9d
|
|
vmovd xmm0, r8d
|
|
vpbroadcastd ymm0, xmm0
|
|
shr r8, 32
|
|
vmovd xmm1, r8d
|
|
vpbroadcastd ymm1, xmm1
|
|
vmovdqa ymm4, ymm1
|
|
vmovdqa ymm5, ymm1
|
|
vpaddd ymm2, ymm0, ymmword ptr [ADD0+rip]
|
|
vpaddd ymm3, ymm0, ymmword ptr [ADD0+32+rip]
|
|
vpcmpltud k2, ymm2, ymm0
|
|
vpcmpltud k3, ymm3, ymm0
|
|
vpaddd ymm4 {k2}, ymm4, dword ptr [ADD1+rip] {1to8}
|
|
vpaddd ymm5 {k3}, ymm5, dword ptr [ADD1+rip] {1to8}
|
|
knotw k2, k1
|
|
vmovdqa32 ymm2 {k2}, ymm0
|
|
vmovdqa32 ymm3 {k2}, ymm0
|
|
vmovdqa32 ymm4 {k2}, ymm1
|
|
vmovdqa32 ymm5 {k2}, ymm1
|
|
vmovdqa ymmword ptr [rsp], ymm2
|
|
vmovdqa ymmword ptr [rsp+0x1*0x20], ymm3
|
|
vmovdqa ymmword ptr [rsp+0x2*0x20], ymm4
|
|
vmovdqa ymmword ptr [rsp+0x3*0x20], ymm5
|
|
shl rdx, 6
|
|
mov qword ptr [rsp+0x80], rdx
|
|
cmp rsi, 16
|
|
jc 3f
|
|
2:
|
|
vpbroadcastd zmm0, dword ptr [rcx]
|
|
vpbroadcastd zmm1, dword ptr [rcx+0x1*0x4]
|
|
vpbroadcastd zmm2, dword ptr [rcx+0x2*0x4]
|
|
vpbroadcastd zmm3, dword ptr [rcx+0x3*0x4]
|
|
vpbroadcastd zmm4, dword ptr [rcx+0x4*0x4]
|
|
vpbroadcastd zmm5, dword ptr [rcx+0x5*0x4]
|
|
vpbroadcastd zmm6, dword ptr [rcx+0x6*0x4]
|
|
vpbroadcastd zmm7, dword ptr [rcx+0x7*0x4]
|
|
movzx eax, byte ptr [rbp+0x38]
|
|
movzx ebx, byte ptr [rbp+0x40]
|
|
or eax, ebx
|
|
xor edx, edx
|
|
.p2align 5
|
|
9:
|
|
movzx ebx, byte ptr [rbp+0x48]
|
|
or ebx, eax
|
|
add rdx, 64
|
|
cmp rdx, qword ptr [rsp+0x80]
|
|
cmove eax, ebx
|
|
mov dword ptr [rsp+0x88], eax
|
|
mov r8, qword ptr [rdi]
|
|
mov r9, qword ptr [rdi+0x8]
|
|
mov r10, qword ptr [rdi+0x10]
|
|
mov r11, qword ptr [rdi+0x18]
|
|
mov r12, qword ptr [rdi+0x40]
|
|
mov r13, qword ptr [rdi+0x48]
|
|
mov r14, qword ptr [rdi+0x50]
|
|
mov r15, qword ptr [rdi+0x58]
|
|
vmovdqu32 ymm16, ymmword ptr [rdx+r8-0x2*0x20]
|
|
vinserti32x8 zmm16, zmm16, ymmword ptr [rdx+r12-0x2*0x20], 0x01
|
|
vmovdqu32 ymm17, ymmword ptr [rdx+r9-0x2*0x20]
|
|
vinserti32x8 zmm17, zmm17, ymmword ptr [rdx+r13-0x2*0x20], 0x01
|
|
vpunpcklqdq zmm8, zmm16, zmm17
|
|
vpunpckhqdq zmm9, zmm16, zmm17
|
|
vmovdqu32 ymm18, ymmword ptr [rdx+r10-0x2*0x20]
|
|
vinserti32x8 zmm18, zmm18, ymmword ptr [rdx+r14-0x2*0x20], 0x01
|
|
vmovdqu32 ymm19, ymmword ptr [rdx+r11-0x2*0x20]
|
|
vinserti32x8 zmm19, zmm19, ymmword ptr [rdx+r15-0x2*0x20], 0x01
|
|
vpunpcklqdq zmm10, zmm18, zmm19
|
|
vpunpckhqdq zmm11, zmm18, zmm19
|
|
mov r8, qword ptr [rdi+0x20]
|
|
mov r9, qword ptr [rdi+0x28]
|
|
mov r10, qword ptr [rdi+0x30]
|
|
mov r11, qword ptr [rdi+0x38]
|
|
mov r12, qword ptr [rdi+0x60]
|
|
mov r13, qword ptr [rdi+0x68]
|
|
mov r14, qword ptr [rdi+0x70]
|
|
mov r15, qword ptr [rdi+0x78]
|
|
vmovdqu32 ymm16, ymmword ptr [rdx+r8-0x2*0x20]
|
|
vinserti32x8 zmm16, zmm16, ymmword ptr [rdx+r12-0x2*0x20], 0x01
|
|
vmovdqu32 ymm17, ymmword ptr [rdx+r9-0x2*0x20]
|
|
vinserti32x8 zmm17, zmm17, ymmword ptr [rdx+r13-0x2*0x20], 0x01
|
|
vpunpcklqdq zmm12, zmm16, zmm17
|
|
vpunpckhqdq zmm13, zmm16, zmm17
|
|
vmovdqu32 ymm18, ymmword ptr [rdx+r10-0x2*0x20]
|
|
vinserti32x8 zmm18, zmm18, ymmword ptr [rdx+r14-0x2*0x20], 0x01
|
|
vmovdqu32 ymm19, ymmword ptr [rdx+r11-0x2*0x20]
|
|
vinserti32x8 zmm19, zmm19, ymmword ptr [rdx+r15-0x2*0x20], 0x01
|
|
vpunpcklqdq zmm14, zmm18, zmm19
|
|
vpunpckhqdq zmm15, zmm18, zmm19
|
|
vmovdqa32 zmm27, zmmword ptr [INDEX0+rip]
|
|
vmovdqa32 zmm31, zmmword ptr [INDEX1+rip]
|
|
vshufps zmm16, zmm8, zmm10, 136
|
|
vshufps zmm17, zmm12, zmm14, 136
|
|
vmovdqa32 zmm20, zmm16
|
|
vpermt2d zmm16, zmm27, zmm17
|
|
vpermt2d zmm20, zmm31, zmm17
|
|
vshufps zmm17, zmm8, zmm10, 221
|
|
vshufps zmm30, zmm12, zmm14, 221
|
|
vmovdqa32 zmm21, zmm17
|
|
vpermt2d zmm17, zmm27, zmm30
|
|
vpermt2d zmm21, zmm31, zmm30
|
|
vshufps zmm18, zmm9, zmm11, 136
|
|
vshufps zmm8, zmm13, zmm15, 136
|
|
vmovdqa32 zmm22, zmm18
|
|
vpermt2d zmm18, zmm27, zmm8
|
|
vpermt2d zmm22, zmm31, zmm8
|
|
vshufps zmm19, zmm9, zmm11, 221
|
|
vshufps zmm8, zmm13, zmm15, 221
|
|
vmovdqa32 zmm23, zmm19
|
|
vpermt2d zmm19, zmm27, zmm8
|
|
vpermt2d zmm23, zmm31, zmm8
|
|
mov r8, qword ptr [rdi]
|
|
mov r9, qword ptr [rdi+0x8]
|
|
mov r10, qword ptr [rdi+0x10]
|
|
mov r11, qword ptr [rdi+0x18]
|
|
mov r12, qword ptr [rdi+0x40]
|
|
mov r13, qword ptr [rdi+0x48]
|
|
mov r14, qword ptr [rdi+0x50]
|
|
mov r15, qword ptr [rdi+0x58]
|
|
vmovdqu32 ymm24, ymmword ptr [r8+rdx-0x1*0x20]
|
|
vinserti32x8 zmm24, zmm24, ymmword ptr [r12+rdx-0x1*0x20], 0x01
|
|
vmovdqu32 ymm25, ymmword ptr [r9+rdx-0x1*0x20]
|
|
vinserti32x8 zmm25, zmm25, ymmword ptr [r13+rdx-0x1*0x20], 0x01
|
|
vpunpcklqdq zmm8, zmm24, zmm25
|
|
vpunpckhqdq zmm9, zmm24, zmm25
|
|
vmovdqu32 ymm24, ymmword ptr [r10+rdx-0x1*0x20]
|
|
vinserti32x8 zmm24, zmm24, ymmword ptr [r14+rdx-0x1*0x20], 0x01
|
|
vmovdqu32 ymm25, ymmword ptr [r11+rdx-0x1*0x20]
|
|
vinserti32x8 zmm25, zmm25, ymmword ptr [r15+rdx-0x1*0x20], 0x01
|
|
vpunpcklqdq zmm10, zmm24, zmm25
|
|
vpunpckhqdq zmm11, zmm24, zmm25
|
|
prefetcht0 [r8+rdx+0x80]
|
|
prefetcht0 [r12+rdx+0x80]
|
|
prefetcht0 [r9+rdx+0x80]
|
|
prefetcht0 [r13+rdx+0x80]
|
|
prefetcht0 [r10+rdx+0x80]
|
|
prefetcht0 [r14+rdx+0x80]
|
|
prefetcht0 [r11+rdx+0x80]
|
|
prefetcht0 [r15+rdx+0x80]
|
|
mov r8, qword ptr [rdi+0x20]
|
|
mov r9, qword ptr [rdi+0x28]
|
|
mov r10, qword ptr [rdi+0x30]
|
|
mov r11, qword ptr [rdi+0x38]
|
|
mov r12, qword ptr [rdi+0x60]
|
|
mov r13, qword ptr [rdi+0x68]
|
|
mov r14, qword ptr [rdi+0x70]
|
|
mov r15, qword ptr [rdi+0x78]
|
|
vmovdqu32 ymm24, ymmword ptr [r8+rdx-0x1*0x20]
|
|
vinserti32x8 zmm24, zmm24, ymmword ptr [r12+rdx-0x1*0x20], 0x01
|
|
vmovdqu32 ymm25, ymmword ptr [r9+rdx-0x1*0x20]
|
|
vinserti32x8 zmm25, zmm25, ymmword ptr [r13+rdx-0x1*0x20], 0x01
|
|
vpunpcklqdq zmm12, zmm24, zmm25
|
|
vpunpckhqdq zmm13, zmm24, zmm25
|
|
vmovdqu32 ymm24, ymmword ptr [r10+rdx-0x1*0x20]
|
|
vinserti32x8 zmm24, zmm24, ymmword ptr [r14+rdx-0x1*0x20], 0x01
|
|
vmovdqu32 ymm25, ymmword ptr [r11+rdx-0x1*0x20]
|
|
vinserti32x8 zmm25, zmm25, ymmword ptr [r15+rdx-0x1*0x20], 0x01
|
|
vpunpcklqdq zmm14, zmm24, zmm25
|
|
vpunpckhqdq zmm15, zmm24, zmm25
|
|
prefetcht0 [r8+rdx+0x80]
|
|
prefetcht0 [r12+rdx+0x80]
|
|
prefetcht0 [r9+rdx+0x80]
|
|
prefetcht0 [r13+rdx+0x80]
|
|
prefetcht0 [r10+rdx+0x80]
|
|
prefetcht0 [r14+rdx+0x80]
|
|
prefetcht0 [r11+rdx+0x80]
|
|
prefetcht0 [r15+rdx+0x80]
|
|
vshufps zmm24, zmm8, zmm10, 136
|
|
vshufps zmm30, zmm12, zmm14, 136
|
|
vmovdqa32 zmm28, zmm24
|
|
vpermt2d zmm24, zmm27, zmm30
|
|
vpermt2d zmm28, zmm31, zmm30
|
|
vshufps zmm25, zmm8, zmm10, 221
|
|
vshufps zmm30, zmm12, zmm14, 221
|
|
vmovdqa32 zmm29, zmm25
|
|
vpermt2d zmm25, zmm27, zmm30
|
|
vpermt2d zmm29, zmm31, zmm30
|
|
vshufps zmm26, zmm9, zmm11, 136
|
|
vshufps zmm8, zmm13, zmm15, 136
|
|
vmovdqa32 zmm30, zmm26
|
|
vpermt2d zmm26, zmm27, zmm8
|
|
vpermt2d zmm30, zmm31, zmm8
|
|
vshufps zmm8, zmm9, zmm11, 221
|
|
vshufps zmm10, zmm13, zmm15, 221
|
|
vpermi2d zmm27, zmm8, zmm10
|
|
vpermi2d zmm31, zmm8, zmm10
|
|
vpbroadcastd zmm8, dword ptr [BLAKE3_IV_0+rip]
|
|
vpbroadcastd zmm9, dword ptr [BLAKE3_IV_1+rip]
|
|
vpbroadcastd zmm10, dword ptr [BLAKE3_IV_2+rip]
|
|
vpbroadcastd zmm11, dword ptr [BLAKE3_IV_3+rip]
|
|
vmovdqa32 zmm12, zmmword ptr [rsp]
|
|
vmovdqa32 zmm13, zmmword ptr [rsp+0x1*0x40]
|
|
vpbroadcastd zmm14, dword ptr [BLAKE3_BLOCK_LEN+rip]
|
|
vpbroadcastd zmm15, dword ptr [rsp+0x22*0x4]
|
|
vpaddd zmm0, zmm0, zmm16
|
|
vpaddd zmm1, zmm1, zmm18
|
|
vpaddd zmm2, zmm2, zmm20
|
|
vpaddd zmm3, zmm3, zmm22
|
|
vpaddd zmm0, zmm0, zmm4
|
|
vpaddd zmm1, zmm1, zmm5
|
|
vpaddd zmm2, zmm2, zmm6
|
|
vpaddd zmm3, zmm3, zmm7
|
|
vpxord zmm12, zmm12, zmm0
|
|
vpxord zmm13, zmm13, zmm1
|
|
vpxord zmm14, zmm14, zmm2
|
|
vpxord zmm15, zmm15, zmm3
|
|
vprord zmm12, zmm12, 16
|
|
vprord zmm13, zmm13, 16
|
|
vprord zmm14, zmm14, 16
|
|
vprord zmm15, zmm15, 16
|
|
vpaddd zmm8, zmm8, zmm12
|
|
vpaddd zmm9, zmm9, zmm13
|
|
vpaddd zmm10, zmm10, zmm14
|
|
vpaddd zmm11, zmm11, zmm15
|
|
vpxord zmm4, zmm4, zmm8
|
|
vpxord zmm5, zmm5, zmm9
|
|
vpxord zmm6, zmm6, zmm10
|
|
vpxord zmm7, zmm7, zmm11
|
|
vprord zmm4, zmm4, 12
|
|
vprord zmm5, zmm5, 12
|
|
vprord zmm6, zmm6, 12
|
|
vprord zmm7, zmm7, 12
|
|
vpaddd zmm0, zmm0, zmm17
|
|
vpaddd zmm1, zmm1, zmm19
|
|
vpaddd zmm2, zmm2, zmm21
|
|
vpaddd zmm3, zmm3, zmm23
|
|
vpaddd zmm0, zmm0, zmm4
|
|
vpaddd zmm1, zmm1, zmm5
|
|
vpaddd zmm2, zmm2, zmm6
|
|
vpaddd zmm3, zmm3, zmm7
|
|
vpxord zmm12, zmm12, zmm0
|
|
vpxord zmm13, zmm13, zmm1
|
|
vpxord zmm14, zmm14, zmm2
|
|
vpxord zmm15, zmm15, zmm3
|
|
vprord zmm12, zmm12, 8
|
|
vprord zmm13, zmm13, 8
|
|
vprord zmm14, zmm14, 8
|
|
vprord zmm15, zmm15, 8
|
|
vpaddd zmm8, zmm8, zmm12
|
|
vpaddd zmm9, zmm9, zmm13
|
|
vpaddd zmm10, zmm10, zmm14
|
|
vpaddd zmm11, zmm11, zmm15
|
|
vpxord zmm4, zmm4, zmm8
|
|
vpxord zmm5, zmm5, zmm9
|
|
vpxord zmm6, zmm6, zmm10
|
|
vpxord zmm7, zmm7, zmm11
|
|
vprord zmm4, zmm4, 7
|
|
vprord zmm5, zmm5, 7
|
|
vprord zmm6, zmm6, 7
|
|
vprord zmm7, zmm7, 7
|
|
vpaddd zmm0, zmm0, zmm24
|
|
vpaddd zmm1, zmm1, zmm26
|
|
vpaddd zmm2, zmm2, zmm28
|
|
vpaddd zmm3, zmm3, zmm30
|
|
vpaddd zmm0, zmm0, zmm5
|
|
vpaddd zmm1, zmm1, zmm6
|
|
vpaddd zmm2, zmm2, zmm7
|
|
vpaddd zmm3, zmm3, zmm4
|
|
vpxord zmm15, zmm15, zmm0
|
|
vpxord zmm12, zmm12, zmm1
|
|
vpxord zmm13, zmm13, zmm2
|
|
vpxord zmm14, zmm14, zmm3
|
|
vprord zmm15, zmm15, 16
|
|
vprord zmm12, zmm12, 16
|
|
vprord zmm13, zmm13, 16
|
|
vprord zmm14, zmm14, 16
|
|
vpaddd zmm10, zmm10, zmm15
|
|
vpaddd zmm11, zmm11, zmm12
|
|
vpaddd zmm8, zmm8, zmm13
|
|
vpaddd zmm9, zmm9, zmm14
|
|
vpxord zmm5, zmm5, zmm10
|
|
vpxord zmm6, zmm6, zmm11
|
|
vpxord zmm7, zmm7, zmm8
|
|
vpxord zmm4, zmm4, zmm9
|
|
vprord zmm5, zmm5, 12
|
|
vprord zmm6, zmm6, 12
|
|
vprord zmm7, zmm7, 12
|
|
vprord zmm4, zmm4, 12
|
|
vpaddd zmm0, zmm0, zmm25
|
|
vpaddd zmm1, zmm1, zmm27
|
|
vpaddd zmm2, zmm2, zmm29
|
|
vpaddd zmm3, zmm3, zmm31
|
|
vpaddd zmm0, zmm0, zmm5
|
|
vpaddd zmm1, zmm1, zmm6
|
|
vpaddd zmm2, zmm2, zmm7
|
|
vpaddd zmm3, zmm3, zmm4
|
|
vpxord zmm15, zmm15, zmm0
|
|
vpxord zmm12, zmm12, zmm1
|
|
vpxord zmm13, zmm13, zmm2
|
|
vpxord zmm14, zmm14, zmm3
|
|
vprord zmm15, zmm15, 8
|
|
vprord zmm12, zmm12, 8
|
|
vprord zmm13, zmm13, 8
|
|
vprord zmm14, zmm14, 8
|
|
vpaddd zmm10, zmm10, zmm15
|
|
vpaddd zmm11, zmm11, zmm12
|
|
vpaddd zmm8, zmm8, zmm13
|
|
vpaddd zmm9, zmm9, zmm14
|
|
vpxord zmm5, zmm5, zmm10
|
|
vpxord zmm6, zmm6, zmm11
|
|
vpxord zmm7, zmm7, zmm8
|
|
vpxord zmm4, zmm4, zmm9
|
|
vprord zmm5, zmm5, 7
|
|
vprord zmm6, zmm6, 7
|
|
vprord zmm7, zmm7, 7
|
|
vprord zmm4, zmm4, 7
|
|
vpaddd zmm0, zmm0, zmm18
|
|
vpaddd zmm1, zmm1, zmm19
|
|
vpaddd zmm2, zmm2, zmm23
|
|
vpaddd zmm3, zmm3, zmm20
|
|
vpaddd zmm0, zmm0, zmm4
|
|
vpaddd zmm1, zmm1, zmm5
|
|
vpaddd zmm2, zmm2, zmm6
|
|
vpaddd zmm3, zmm3, zmm7
|
|
vpxord zmm12, zmm12, zmm0
|
|
vpxord zmm13, zmm13, zmm1
|
|
vpxord zmm14, zmm14, zmm2
|
|
vpxord zmm15, zmm15, zmm3
|
|
vprord zmm12, zmm12, 16
|
|
vprord zmm13, zmm13, 16
|
|
vprord zmm14, zmm14, 16
|
|
vprord zmm15, zmm15, 16
|
|
vpaddd zmm8, zmm8, zmm12
|
|
vpaddd zmm9, zmm9, zmm13
|
|
vpaddd zmm10, zmm10, zmm14
|
|
vpaddd zmm11, zmm11, zmm15
|
|
vpxord zmm4, zmm4, zmm8
|
|
vpxord zmm5, zmm5, zmm9
|
|
vpxord zmm6, zmm6, zmm10
|
|
vpxord zmm7, zmm7, zmm11
|
|
vprord zmm4, zmm4, 12
|
|
vprord zmm5, zmm5, 12
|
|
vprord zmm6, zmm6, 12
|
|
vprord zmm7, zmm7, 12
|
|
vpaddd zmm0, zmm0, zmm22
|
|
vpaddd zmm1, zmm1, zmm26
|
|
vpaddd zmm2, zmm2, zmm16
|
|
vpaddd zmm3, zmm3, zmm29
|
|
vpaddd zmm0, zmm0, zmm4
|
|
vpaddd zmm1, zmm1, zmm5
|
|
vpaddd zmm2, zmm2, zmm6
|
|
vpaddd zmm3, zmm3, zmm7
|
|
vpxord zmm12, zmm12, zmm0
|
|
vpxord zmm13, zmm13, zmm1
|
|
vpxord zmm14, zmm14, zmm2
|
|
vpxord zmm15, zmm15, zmm3
|
|
vprord zmm12, zmm12, 8
|
|
vprord zmm13, zmm13, 8
|
|
vprord zmm14, zmm14, 8
|
|
vprord zmm15, zmm15, 8
|
|
vpaddd zmm8, zmm8, zmm12
|
|
vpaddd zmm9, zmm9, zmm13
|
|
vpaddd zmm10, zmm10, zmm14
|
|
vpaddd zmm11, zmm11, zmm15
|
|
vpxord zmm4, zmm4, zmm8
|
|
vpxord zmm5, zmm5, zmm9
|
|
vpxord zmm6, zmm6, zmm10
|
|
vpxord zmm7, zmm7, zmm11
|
|
vprord zmm4, zmm4, 7
|
|
vprord zmm5, zmm5, 7
|
|
vprord zmm6, zmm6, 7
|
|
vprord zmm7, zmm7, 7
|
|
vpaddd zmm0, zmm0, zmm17
|
|
vpaddd zmm1, zmm1, zmm28
|
|
vpaddd zmm2, zmm2, zmm25
|
|
vpaddd zmm3, zmm3, zmm31
|
|
vpaddd zmm0, zmm0, zmm5
|
|
vpaddd zmm1, zmm1, zmm6
|
|
vpaddd zmm2, zmm2, zmm7
|
|
vpaddd zmm3, zmm3, zmm4
|
|
vpxord zmm15, zmm15, zmm0
|
|
vpxord zmm12, zmm12, zmm1
|
|
vpxord zmm13, zmm13, zmm2
|
|
vpxord zmm14, zmm14, zmm3
|
|
vprord zmm15, zmm15, 16
|
|
vprord zmm12, zmm12, 16
|
|
vprord zmm13, zmm13, 16
|
|
vprord zmm14, zmm14, 16
|
|
vpaddd zmm10, zmm10, zmm15
|
|
vpaddd zmm11, zmm11, zmm12
|
|
vpaddd zmm8, zmm8, zmm13
|
|
vpaddd zmm9, zmm9, zmm14
|
|
vpxord zmm5, zmm5, zmm10
|
|
vpxord zmm6, zmm6, zmm11
|
|
vpxord zmm7, zmm7, zmm8
|
|
vpxord zmm4, zmm4, zmm9
|
|
vprord zmm5, zmm5, 12
|
|
vprord zmm6, zmm6, 12
|
|
vprord zmm7, zmm7, 12
|
|
vprord zmm4, zmm4, 12
|
|
vpaddd zmm0, zmm0, zmm27
|
|
vpaddd zmm1, zmm1, zmm21
|
|
vpaddd zmm2, zmm2, zmm30
|
|
vpaddd zmm3, zmm3, zmm24
|
|
vpaddd zmm0, zmm0, zmm5
|
|
vpaddd zmm1, zmm1, zmm6
|
|
vpaddd zmm2, zmm2, zmm7
|
|
vpaddd zmm3, zmm3, zmm4
|
|
vpxord zmm15, zmm15, zmm0
|
|
vpxord zmm12, zmm12, zmm1
|
|
vpxord zmm13, zmm13, zmm2
|
|
vpxord zmm14, zmm14, zmm3
|
|
vprord zmm15, zmm15, 8
|
|
vprord zmm12, zmm12, 8
|
|
vprord zmm13, zmm13, 8
|
|
vprord zmm14, zmm14, 8
|
|
vpaddd zmm10, zmm10, zmm15
|
|
vpaddd zmm11, zmm11, zmm12
|
|
vpaddd zmm8, zmm8, zmm13
|
|
vpaddd zmm9, zmm9, zmm14
|
|
vpxord zmm5, zmm5, zmm10
|
|
vpxord zmm6, zmm6, zmm11
|
|
vpxord zmm7, zmm7, zmm8
|
|
vpxord zmm4, zmm4, zmm9
|
|
vprord zmm5, zmm5, 7
|
|
vprord zmm6, zmm6, 7
|
|
vprord zmm7, zmm7, 7
|
|
vprord zmm4, zmm4, 7
|
|
vpaddd zmm0, zmm0, zmm19
|
|
vpaddd zmm1, zmm1, zmm26
|
|
vpaddd zmm2, zmm2, zmm29
|
|
vpaddd zmm3, zmm3, zmm23
|
|
vpaddd zmm0, zmm0, zmm4
|
|
vpaddd zmm1, zmm1, zmm5
|
|
vpaddd zmm2, zmm2, zmm6
|
|
vpaddd zmm3, zmm3, zmm7
|
|
vpxord zmm12, zmm12, zmm0
|
|
vpxord zmm13, zmm13, zmm1
|
|
vpxord zmm14, zmm14, zmm2
|
|
vpxord zmm15, zmm15, zmm3
|
|
vprord zmm12, zmm12, 16
|
|
vprord zmm13, zmm13, 16
|
|
vprord zmm14, zmm14, 16
|
|
vprord zmm15, zmm15, 16
|
|
vpaddd zmm8, zmm8, zmm12
|
|
vpaddd zmm9, zmm9, zmm13
|
|
vpaddd zmm10, zmm10, zmm14
|
|
vpaddd zmm11, zmm11, zmm15
|
|
vpxord zmm4, zmm4, zmm8
|
|
vpxord zmm5, zmm5, zmm9
|
|
vpxord zmm6, zmm6, zmm10
|
|
vpxord zmm7, zmm7, zmm11
|
|
vprord zmm4, zmm4, 12
|
|
vprord zmm5, zmm5, 12
|
|
vprord zmm6, zmm6, 12
|
|
vprord zmm7, zmm7, 12
|
|
vpaddd zmm0, zmm0, zmm20
|
|
vpaddd zmm1, zmm1, zmm28
|
|
vpaddd zmm2, zmm2, zmm18
|
|
vpaddd zmm3, zmm3, zmm30
|
|
vpaddd zmm0, zmm0, zmm4
|
|
vpaddd zmm1, zmm1, zmm5
|
|
vpaddd zmm2, zmm2, zmm6
|
|
vpaddd zmm3, zmm3, zmm7
|
|
vpxord zmm12, zmm12, zmm0
|
|
vpxord zmm13, zmm13, zmm1
|
|
vpxord zmm14, zmm14, zmm2
|
|
vpxord zmm15, zmm15, zmm3
|
|
vprord zmm12, zmm12, 8
|
|
vprord zmm13, zmm13, 8
|
|
vprord zmm14, zmm14, 8
|
|
vprord zmm15, zmm15, 8
|
|
vpaddd zmm8, zmm8, zmm12
|
|
vpaddd zmm9, zmm9, zmm13
|
|
vpaddd zmm10, zmm10, zmm14
|
|
vpaddd zmm11, zmm11, zmm15
|
|
vpxord zmm4, zmm4, zmm8
|
|
vpxord zmm5, zmm5, zmm9
|
|
vpxord zmm6, zmm6, zmm10
|
|
vpxord zmm7, zmm7, zmm11
|
|
vprord zmm4, zmm4, 7
|
|
vprord zmm5, zmm5, 7
|
|
vprord zmm6, zmm6, 7
|
|
vprord zmm7, zmm7, 7
|
|
vpaddd zmm0, zmm0, zmm22
|
|
vpaddd zmm1, zmm1, zmm25
|
|
vpaddd zmm2, zmm2, zmm27
|
|
vpaddd zmm3, zmm3, zmm24
|
|
vpaddd zmm0, zmm0, zmm5
|
|
vpaddd zmm1, zmm1, zmm6
|
|
vpaddd zmm2, zmm2, zmm7
|
|
vpaddd zmm3, zmm3, zmm4
|
|
vpxord zmm15, zmm15, zmm0
|
|
vpxord zmm12, zmm12, zmm1
|
|
vpxord zmm13, zmm13, zmm2
|
|
vpxord zmm14, zmm14, zmm3
|
|
vprord zmm15, zmm15, 16
|
|
vprord zmm12, zmm12, 16
|
|
vprord zmm13, zmm13, 16
|
|
vprord zmm14, zmm14, 16
|
|
vpaddd zmm10, zmm10, zmm15
|
|
vpaddd zmm11, zmm11, zmm12
|
|
vpaddd zmm8, zmm8, zmm13
|
|
vpaddd zmm9, zmm9, zmm14
|
|
vpxord zmm5, zmm5, zmm10
|
|
vpxord zmm6, zmm6, zmm11
|
|
vpxord zmm7, zmm7, zmm8
|
|
vpxord zmm4, zmm4, zmm9
|
|
vprord zmm5, zmm5, 12
|
|
vprord zmm6, zmm6, 12
|
|
vprord zmm7, zmm7, 12
|
|
vprord zmm4, zmm4, 12
|
|
vpaddd zmm0, zmm0, zmm21
|
|
vpaddd zmm1, zmm1, zmm16
|
|
vpaddd zmm2, zmm2, zmm31
|
|
vpaddd zmm3, zmm3, zmm17
|
|
vpaddd zmm0, zmm0, zmm5
|
|
vpaddd zmm1, zmm1, zmm6
|
|
vpaddd zmm2, zmm2, zmm7
|
|
vpaddd zmm3, zmm3, zmm4
|
|
vpxord zmm15, zmm15, zmm0
|
|
vpxord zmm12, zmm12, zmm1
|
|
vpxord zmm13, zmm13, zmm2
|
|
vpxord zmm14, zmm14, zmm3
|
|
vprord zmm15, zmm15, 8
|
|
vprord zmm12, zmm12, 8
|
|
vprord zmm13, zmm13, 8
|
|
vprord zmm14, zmm14, 8
|
|
vpaddd zmm10, zmm10, zmm15
|
|
vpaddd zmm11, zmm11, zmm12
|
|
vpaddd zmm8, zmm8, zmm13
|
|
vpaddd zmm9, zmm9, zmm14
|
|
vpxord zmm5, zmm5, zmm10
|
|
vpxord zmm6, zmm6, zmm11
|
|
vpxord zmm7, zmm7, zmm8
|
|
vpxord zmm4, zmm4, zmm9
|
|
vprord zmm5, zmm5, 7
|
|
vprord zmm6, zmm6, 7
|
|
vprord zmm7, zmm7, 7
|
|
vprord zmm4, zmm4, 7
|
|
vpaddd zmm0, zmm0, zmm26
|
|
vpaddd zmm1, zmm1, zmm28
|
|
vpaddd zmm2, zmm2, zmm30
|
|
vpaddd zmm3, zmm3, zmm29
|
|
vpaddd zmm0, zmm0, zmm4
|
|
vpaddd zmm1, zmm1, zmm5
|
|
vpaddd zmm2, zmm2, zmm6
|
|
vpaddd zmm3, zmm3, zmm7
|
|
vpxord zmm12, zmm12, zmm0
|
|
vpxord zmm13, zmm13, zmm1
|
|
vpxord zmm14, zmm14, zmm2
|
|
vpxord zmm15, zmm15, zmm3
|
|
vprord zmm12, zmm12, 16
|
|
vprord zmm13, zmm13, 16
|
|
vprord zmm14, zmm14, 16
|
|
vprord zmm15, zmm15, 16
|
|
vpaddd zmm8, zmm8, zmm12
|
|
vpaddd zmm9, zmm9, zmm13
|
|
vpaddd zmm10, zmm10, zmm14
|
|
vpaddd zmm11, zmm11, zmm15
|
|
vpxord zmm4, zmm4, zmm8
|
|
vpxord zmm5, zmm5, zmm9
|
|
vpxord zmm6, zmm6, zmm10
|
|
vpxord zmm7, zmm7, zmm11
|
|
vprord zmm4, zmm4, 12
|
|
vprord zmm5, zmm5, 12
|
|
vprord zmm6, zmm6, 12
|
|
vprord zmm7, zmm7, 12
|
|
vpaddd zmm0, zmm0, zmm23
|
|
vpaddd zmm1, zmm1, zmm25
|
|
vpaddd zmm2, zmm2, zmm19
|
|
vpaddd zmm3, zmm3, zmm31
|
|
vpaddd zmm0, zmm0, zmm4
|
|
vpaddd zmm1, zmm1, zmm5
|
|
vpaddd zmm2, zmm2, zmm6
|
|
vpaddd zmm3, zmm3, zmm7
|
|
vpxord zmm12, zmm12, zmm0
|
|
vpxord zmm13, zmm13, zmm1
|
|
vpxord zmm14, zmm14, zmm2
|
|
vpxord zmm15, zmm15, zmm3
|
|
vprord zmm12, zmm12, 8
|
|
vprord zmm13, zmm13, 8
|
|
vprord zmm14, zmm14, 8
|
|
vprord zmm15, zmm15, 8
|
|
vpaddd zmm8, zmm8, zmm12
|
|
vpaddd zmm9, zmm9, zmm13
|
|
vpaddd zmm10, zmm10, zmm14
|
|
vpaddd zmm11, zmm11, zmm15
|
|
vpxord zmm4, zmm4, zmm8
|
|
vpxord zmm5, zmm5, zmm9
|
|
vpxord zmm6, zmm6, zmm10
|
|
vpxord zmm7, zmm7, zmm11
|
|
vprord zmm4, zmm4, 7
|
|
vprord zmm5, zmm5, 7
|
|
vprord zmm6, zmm6, 7
|
|
vprord zmm7, zmm7, 7
|
|
vpaddd zmm0, zmm0, zmm20
|
|
vpaddd zmm1, zmm1, zmm27
|
|
vpaddd zmm2, zmm2, zmm21
|
|
vpaddd zmm3, zmm3, zmm17
|
|
vpaddd zmm0, zmm0, zmm5
|
|
vpaddd zmm1, zmm1, zmm6
|
|
vpaddd zmm2, zmm2, zmm7
|
|
vpaddd zmm3, zmm3, zmm4
|
|
vpxord zmm15, zmm15, zmm0
|
|
vpxord zmm12, zmm12, zmm1
|
|
vpxord zmm13, zmm13, zmm2
|
|
vpxord zmm14, zmm14, zmm3
|
|
vprord zmm15, zmm15, 16
|
|
vprord zmm12, zmm12, 16
|
|
vprord zmm13, zmm13, 16
|
|
vprord zmm14, zmm14, 16
|
|
vpaddd zmm10, zmm10, zmm15
|
|
vpaddd zmm11, zmm11, zmm12
|
|
vpaddd zmm8, zmm8, zmm13
|
|
vpaddd zmm9, zmm9, zmm14
|
|
vpxord zmm5, zmm5, zmm10
|
|
vpxord zmm6, zmm6, zmm11
|
|
vpxord zmm7, zmm7, zmm8
|
|
vpxord zmm4, zmm4, zmm9
|
|
vprord zmm5, zmm5, 12
|
|
vprord zmm6, zmm6, 12
|
|
vprord zmm7, zmm7, 12
|
|
vprord zmm4, zmm4, 12
|
|
vpaddd zmm0, zmm0, zmm16
|
|
vpaddd zmm1, zmm1, zmm18
|
|
vpaddd zmm2, zmm2, zmm24
|
|
vpaddd zmm3, zmm3, zmm22
|
|
vpaddd zmm0, zmm0, zmm5
|
|
vpaddd zmm1, zmm1, zmm6
|
|
vpaddd zmm2, zmm2, zmm7
|
|
vpaddd zmm3, zmm3, zmm4
|
|
vpxord zmm15, zmm15, zmm0
|
|
vpxord zmm12, zmm12, zmm1
|
|
vpxord zmm13, zmm13, zmm2
|
|
vpxord zmm14, zmm14, zmm3
|
|
vprord zmm15, zmm15, 8
|
|
vprord zmm12, zmm12, 8
|
|
vprord zmm13, zmm13, 8
|
|
vprord zmm14, zmm14, 8
|
|
vpaddd zmm10, zmm10, zmm15
|
|
vpaddd zmm11, zmm11, zmm12
|
|
vpaddd zmm8, zmm8, zmm13
|
|
vpaddd zmm9, zmm9, zmm14
|
|
vpxord zmm5, zmm5, zmm10
|
|
vpxord zmm6, zmm6, zmm11
|
|
vpxord zmm7, zmm7, zmm8
|
|
vpxord zmm4, zmm4, zmm9
|
|
vprord zmm5, zmm5, 7
|
|
vprord zmm6, zmm6, 7
|
|
vprord zmm7, zmm7, 7
|
|
vprord zmm4, zmm4, 7
|
|
vpaddd zmm0, zmm0, zmm28
|
|
vpaddd zmm1, zmm1, zmm25
|
|
vpaddd zmm2, zmm2, zmm31
|
|
vpaddd zmm3, zmm3, zmm30
|
|
vpaddd zmm0, zmm0, zmm4
|
|
vpaddd zmm1, zmm1, zmm5
|
|
vpaddd zmm2, zmm2, zmm6
|
|
vpaddd zmm3, zmm3, zmm7
|
|
vpxord zmm12, zmm12, zmm0
|
|
vpxord zmm13, zmm13, zmm1
|
|
vpxord zmm14, zmm14, zmm2
|
|
vpxord zmm15, zmm15, zmm3
|
|
vprord zmm12, zmm12, 16
|
|
vprord zmm13, zmm13, 16
|
|
vprord zmm14, zmm14, 16
|
|
vprord zmm15, zmm15, 16
|
|
vpaddd zmm8, zmm8, zmm12
|
|
vpaddd zmm9, zmm9, zmm13
|
|
vpaddd zmm10, zmm10, zmm14
|
|
vpaddd zmm11, zmm11, zmm15
|
|
vpxord zmm4, zmm4, zmm8
|
|
vpxord zmm5, zmm5, zmm9
|
|
vpxord zmm6, zmm6, zmm10
|
|
vpxord zmm7, zmm7, zmm11
|
|
vprord zmm4, zmm4, 12
|
|
vprord zmm5, zmm5, 12
|
|
vprord zmm6, zmm6, 12
|
|
vprord zmm7, zmm7, 12
|
|
vpaddd zmm0, zmm0, zmm29
|
|
vpaddd zmm1, zmm1, zmm27
|
|
vpaddd zmm2, zmm2, zmm26
|
|
vpaddd zmm3, zmm3, zmm24
|
|
vpaddd zmm0, zmm0, zmm4
|
|
vpaddd zmm1, zmm1, zmm5
|
|
vpaddd zmm2, zmm2, zmm6
|
|
vpaddd zmm3, zmm3, zmm7
|
|
vpxord zmm12, zmm12, zmm0
|
|
vpxord zmm13, zmm13, zmm1
|
|
vpxord zmm14, zmm14, zmm2
|
|
vpxord zmm15, zmm15, zmm3
|
|
vprord zmm12, zmm12, 8
|
|
vprord zmm13, zmm13, 8
|
|
vprord zmm14, zmm14, 8
|
|
vprord zmm15, zmm15, 8
|
|
vpaddd zmm8, zmm8, zmm12
|
|
vpaddd zmm9, zmm9, zmm13
|
|
vpaddd zmm10, zmm10, zmm14
|
|
vpaddd zmm11, zmm11, zmm15
|
|
vpxord zmm4, zmm4, zmm8
|
|
vpxord zmm5, zmm5, zmm9
|
|
vpxord zmm6, zmm6, zmm10
|
|
vpxord zmm7, zmm7, zmm11
|
|
vprord zmm4, zmm4, 7
|
|
vprord zmm5, zmm5, 7
|
|
vprord zmm6, zmm6, 7
|
|
vprord zmm7, zmm7, 7
|
|
vpaddd zmm0, zmm0, zmm23
|
|
vpaddd zmm1, zmm1, zmm21
|
|
vpaddd zmm2, zmm2, zmm16
|
|
vpaddd zmm3, zmm3, zmm22
|
|
vpaddd zmm0, zmm0, zmm5
|
|
vpaddd zmm1, zmm1, zmm6
|
|
vpaddd zmm2, zmm2, zmm7
|
|
vpaddd zmm3, zmm3, zmm4
|
|
vpxord zmm15, zmm15, zmm0
|
|
vpxord zmm12, zmm12, zmm1
|
|
vpxord zmm13, zmm13, zmm2
|
|
vpxord zmm14, zmm14, zmm3
|
|
vprord zmm15, zmm15, 16
|
|
vprord zmm12, zmm12, 16
|
|
vprord zmm13, zmm13, 16
|
|
vprord zmm14, zmm14, 16
|
|
vpaddd zmm10, zmm10, zmm15
|
|
vpaddd zmm11, zmm11, zmm12
|
|
vpaddd zmm8, zmm8, zmm13
|
|
vpaddd zmm9, zmm9, zmm14
|
|
vpxord zmm5, zmm5, zmm10
|
|
vpxord zmm6, zmm6, zmm11
|
|
vpxord zmm7, zmm7, zmm8
|
|
vpxord zmm4, zmm4, zmm9
|
|
vprord zmm5, zmm5, 12
|
|
vprord zmm6, zmm6, 12
|
|
vprord zmm7, zmm7, 12
|
|
vprord zmm4, zmm4, 12
|
|
vpaddd zmm0, zmm0, zmm18
|
|
vpaddd zmm1, zmm1, zmm19
|
|
vpaddd zmm2, zmm2, zmm17
|
|
vpaddd zmm3, zmm3, zmm20
|
|
vpaddd zmm0, zmm0, zmm5
|
|
vpaddd zmm1, zmm1, zmm6
|
|
vpaddd zmm2, zmm2, zmm7
|
|
vpaddd zmm3, zmm3, zmm4
|
|
vpxord zmm15, zmm15, zmm0
|
|
vpxord zmm12, zmm12, zmm1
|
|
vpxord zmm13, zmm13, zmm2
|
|
vpxord zmm14, zmm14, zmm3
|
|
vprord zmm15, zmm15, 8
|
|
vprord zmm12, zmm12, 8
|
|
vprord zmm13, zmm13, 8
|
|
vprord zmm14, zmm14, 8
|
|
vpaddd zmm10, zmm10, zmm15
|
|
vpaddd zmm11, zmm11, zmm12
|
|
vpaddd zmm8, zmm8, zmm13
|
|
vpaddd zmm9, zmm9, zmm14
|
|
vpxord zmm5, zmm5, zmm10
|
|
vpxord zmm6, zmm6, zmm11
|
|
vpxord zmm7, zmm7, zmm8
|
|
vpxord zmm4, zmm4, zmm9
|
|
vprord zmm5, zmm5, 7
|
|
vprord zmm6, zmm6, 7
|
|
vprord zmm7, zmm7, 7
|
|
vprord zmm4, zmm4, 7
|
|
vpaddd zmm0, zmm0, zmm25
|
|
vpaddd zmm1, zmm1, zmm27
|
|
vpaddd zmm2, zmm2, zmm24
|
|
vpaddd zmm3, zmm3, zmm31
|
|
vpaddd zmm0, zmm0, zmm4
|
|
vpaddd zmm1, zmm1, zmm5
|
|
vpaddd zmm2, zmm2, zmm6
|
|
vpaddd zmm3, zmm3, zmm7
|
|
vpxord zmm12, zmm12, zmm0
|
|
vpxord zmm13, zmm13, zmm1
|
|
vpxord zmm14, zmm14, zmm2
|
|
vpxord zmm15, zmm15, zmm3
|
|
vprord zmm12, zmm12, 16
|
|
vprord zmm13, zmm13, 16
|
|
vprord zmm14, zmm14, 16
|
|
vprord zmm15, zmm15, 16
|
|
vpaddd zmm8, zmm8, zmm12
|
|
vpaddd zmm9, zmm9, zmm13
|
|
vpaddd zmm10, zmm10, zmm14
|
|
vpaddd zmm11, zmm11, zmm15
|
|
vpxord zmm4, zmm4, zmm8
|
|
vpxord zmm5, zmm5, zmm9
|
|
vpxord zmm6, zmm6, zmm10
|
|
vpxord zmm7, zmm7, zmm11
|
|
vprord zmm4, zmm4, 12
|
|
vprord zmm5, zmm5, 12
|
|
vprord zmm6, zmm6, 12
|
|
vprord zmm7, zmm7, 12
|
|
vpaddd zmm0, zmm0, zmm30
|
|
vpaddd zmm1, zmm1, zmm21
|
|
vpaddd zmm2, zmm2, zmm28
|
|
vpaddd zmm3, zmm3, zmm17
|
|
vpaddd zmm0, zmm0, zmm4
|
|
vpaddd zmm1, zmm1, zmm5
|
|
vpaddd zmm2, zmm2, zmm6
|
|
vpaddd zmm3, zmm3, zmm7
|
|
vpxord zmm12, zmm12, zmm0
|
|
vpxord zmm13, zmm13, zmm1
|
|
vpxord zmm14, zmm14, zmm2
|
|
vpxord zmm15, zmm15, zmm3
|
|
vprord zmm12, zmm12, 8
|
|
vprord zmm13, zmm13, 8
|
|
vprord zmm14, zmm14, 8
|
|
vprord zmm15, zmm15, 8
|
|
vpaddd zmm8, zmm8, zmm12
|
|
vpaddd zmm9, zmm9, zmm13
|
|
vpaddd zmm10, zmm10, zmm14
|
|
vpaddd zmm11, zmm11, zmm15
|
|
vpxord zmm4, zmm4, zmm8
|
|
vpxord zmm5, zmm5, zmm9
|
|
vpxord zmm6, zmm6, zmm10
|
|
vpxord zmm7, zmm7, zmm11
|
|
vprord zmm4, zmm4, 7
|
|
vprord zmm5, zmm5, 7
|
|
vprord zmm6, zmm6, 7
|
|
vprord zmm7, zmm7, 7
|
|
vpaddd zmm0, zmm0, zmm29
|
|
vpaddd zmm1, zmm1, zmm16
|
|
vpaddd zmm2, zmm2, zmm18
|
|
vpaddd zmm3, zmm3, zmm20
|
|
vpaddd zmm0, zmm0, zmm5
|
|
vpaddd zmm1, zmm1, zmm6
|
|
vpaddd zmm2, zmm2, zmm7
|
|
vpaddd zmm3, zmm3, zmm4
|
|
vpxord zmm15, zmm15, zmm0
|
|
vpxord zmm12, zmm12, zmm1
|
|
vpxord zmm13, zmm13, zmm2
|
|
vpxord zmm14, zmm14, zmm3
|
|
vprord zmm15, zmm15, 16
|
|
vprord zmm12, zmm12, 16
|
|
vprord zmm13, zmm13, 16
|
|
vprord zmm14, zmm14, 16
|
|
vpaddd zmm10, zmm10, zmm15
|
|
vpaddd zmm11, zmm11, zmm12
|
|
vpaddd zmm8, zmm8, zmm13
|
|
vpaddd zmm9, zmm9, zmm14
|
|
vpxord zmm5, zmm5, zmm10
|
|
vpxord zmm6, zmm6, zmm11
|
|
vpxord zmm7, zmm7, zmm8
|
|
vpxord zmm4, zmm4, zmm9
|
|
vprord zmm5, zmm5, 12
|
|
vprord zmm6, zmm6, 12
|
|
vprord zmm7, zmm7, 12
|
|
vprord zmm4, zmm4, 12
|
|
vpaddd zmm0, zmm0, zmm19
|
|
vpaddd zmm1, zmm1, zmm26
|
|
vpaddd zmm2, zmm2, zmm22
|
|
vpaddd zmm3, zmm3, zmm23
|
|
vpaddd zmm0, zmm0, zmm5
|
|
vpaddd zmm1, zmm1, zmm6
|
|
vpaddd zmm2, zmm2, zmm7
|
|
vpaddd zmm3, zmm3, zmm4
|
|
vpxord zmm15, zmm15, zmm0
|
|
vpxord zmm12, zmm12, zmm1
|
|
vpxord zmm13, zmm13, zmm2
|
|
vpxord zmm14, zmm14, zmm3
|
|
vprord zmm15, zmm15, 8
|
|
vprord zmm12, zmm12, 8
|
|
vprord zmm13, zmm13, 8
|
|
vprord zmm14, zmm14, 8
|
|
vpaddd zmm10, zmm10, zmm15
|
|
vpaddd zmm11, zmm11, zmm12
|
|
vpaddd zmm8, zmm8, zmm13
|
|
vpaddd zmm9, zmm9, zmm14
|
|
vpxord zmm5, zmm5, zmm10
|
|
vpxord zmm6, zmm6, zmm11
|
|
vpxord zmm7, zmm7, zmm8
|
|
vpxord zmm4, zmm4, zmm9
|
|
vprord zmm5, zmm5, 7
|
|
vprord zmm6, zmm6, 7
|
|
vprord zmm7, zmm7, 7
|
|
vprord zmm4, zmm4, 7
|
|
vpaddd zmm0, zmm0, zmm27
|
|
vpaddd zmm1, zmm1, zmm21
|
|
vpaddd zmm2, zmm2, zmm17
|
|
vpaddd zmm3, zmm3, zmm24
|
|
vpaddd zmm0, zmm0, zmm4
|
|
vpaddd zmm1, zmm1, zmm5
|
|
vpaddd zmm2, zmm2, zmm6
|
|
vpaddd zmm3, zmm3, zmm7
|
|
vpxord zmm12, zmm12, zmm0
|
|
vpxord zmm13, zmm13, zmm1
|
|
vpxord zmm14, zmm14, zmm2
|
|
vpxord zmm15, zmm15, zmm3
|
|
vprord zmm12, zmm12, 16
|
|
vprord zmm13, zmm13, 16
|
|
vprord zmm14, zmm14, 16
|
|
vprord zmm15, zmm15, 16
|
|
vpaddd zmm8, zmm8, zmm12
|
|
vpaddd zmm9, zmm9, zmm13
|
|
vpaddd zmm10, zmm10, zmm14
|
|
vpaddd zmm11, zmm11, zmm15
|
|
vpxord zmm4, zmm4, zmm8
|
|
vpxord zmm5, zmm5, zmm9
|
|
vpxord zmm6, zmm6, zmm10
|
|
vpxord zmm7, zmm7, zmm11
|
|
vprord zmm4, zmm4, 12
|
|
vprord zmm5, zmm5, 12
|
|
vprord zmm6, zmm6, 12
|
|
vprord zmm7, zmm7, 12
|
|
vpaddd zmm0, zmm0, zmm31
|
|
vpaddd zmm1, zmm1, zmm16
|
|
vpaddd zmm2, zmm2, zmm25
|
|
vpaddd zmm3, zmm3, zmm22
|
|
vpaddd zmm0, zmm0, zmm4
|
|
vpaddd zmm1, zmm1, zmm5
|
|
vpaddd zmm2, zmm2, zmm6
|
|
vpaddd zmm3, zmm3, zmm7
|
|
vpxord zmm12, zmm12, zmm0
|
|
vpxord zmm13, zmm13, zmm1
|
|
vpxord zmm14, zmm14, zmm2
|
|
vpxord zmm15, zmm15, zmm3
|
|
vprord zmm12, zmm12, 8
|
|
vprord zmm13, zmm13, 8
|
|
vprord zmm14, zmm14, 8
|
|
vprord zmm15, zmm15, 8
|
|
vpaddd zmm8, zmm8, zmm12
|
|
vpaddd zmm9, zmm9, zmm13
|
|
vpaddd zmm10, zmm10, zmm14
|
|
vpaddd zmm11, zmm11, zmm15
|
|
vpxord zmm4, zmm4, zmm8
|
|
vpxord zmm5, zmm5, zmm9
|
|
vpxord zmm6, zmm6, zmm10
|
|
vpxord zmm7, zmm7, zmm11
|
|
vprord zmm4, zmm4, 7
|
|
vprord zmm5, zmm5, 7
|
|
vprord zmm6, zmm6, 7
|
|
vprord zmm7, zmm7, 7
|
|
vpaddd zmm0, zmm0, zmm30
|
|
vpaddd zmm1, zmm1, zmm18
|
|
vpaddd zmm2, zmm2, zmm19
|
|
vpaddd zmm3, zmm3, zmm23
|
|
vpaddd zmm0, zmm0, zmm5
|
|
vpaddd zmm1, zmm1, zmm6
|
|
vpaddd zmm2, zmm2, zmm7
|
|
vpaddd zmm3, zmm3, zmm4
|
|
vpxord zmm15, zmm15, zmm0
|
|
vpxord zmm12, zmm12, zmm1
|
|
vpxord zmm13, zmm13, zmm2
|
|
vpxord zmm14, zmm14, zmm3
|
|
vprord zmm15, zmm15, 16
|
|
vprord zmm12, zmm12, 16
|
|
vprord zmm13, zmm13, 16
|
|
vprord zmm14, zmm14, 16
|
|
vpaddd zmm10, zmm10, zmm15
|
|
vpaddd zmm11, zmm11, zmm12
|
|
vpaddd zmm8, zmm8, zmm13
|
|
vpaddd zmm9, zmm9, zmm14
|
|
vpxord zmm5, zmm5, zmm10
|
|
vpxord zmm6, zmm6, zmm11
|
|
vpxord zmm7, zmm7, zmm8
|
|
vpxord zmm4, zmm4, zmm9
|
|
vprord zmm5, zmm5, 12
|
|
vprord zmm6, zmm6, 12
|
|
vprord zmm7, zmm7, 12
|
|
vprord zmm4, zmm4, 12
|
|
vpaddd zmm0, zmm0, zmm26
|
|
vpaddd zmm1, zmm1, zmm28
|
|
vpaddd zmm2, zmm2, zmm20
|
|
vpaddd zmm3, zmm3, zmm29
|
|
vpaddd zmm0, zmm0, zmm5
|
|
vpaddd zmm1, zmm1, zmm6
|
|
vpaddd zmm2, zmm2, zmm7
|
|
vpaddd zmm3, zmm3, zmm4
|
|
vpxord zmm15, zmm15, zmm0
|
|
vpxord zmm12, zmm12, zmm1
|
|
vpxord zmm13, zmm13, zmm2
|
|
vpxord zmm14, zmm14, zmm3
|
|
vprord zmm15, zmm15, 8
|
|
vprord zmm12, zmm12, 8
|
|
vprord zmm13, zmm13, 8
|
|
vprord zmm14, zmm14, 8
|
|
vpaddd zmm10, zmm10, zmm15
|
|
vpaddd zmm11, zmm11, zmm12
|
|
vpaddd zmm8, zmm8, zmm13
|
|
vpaddd zmm9, zmm9, zmm14
|
|
vpxord zmm5, zmm5, zmm10
|
|
vpxord zmm6, zmm6, zmm11
|
|
vpxord zmm7, zmm7, zmm8
|
|
vpxord zmm4, zmm4, zmm9
|
|
vprord zmm5, zmm5, 7
|
|
vprord zmm6, zmm6, 7
|
|
vprord zmm7, zmm7, 7
|
|
vprord zmm4, zmm4, 7
|
|
vpxord zmm0, zmm0, zmm8
|
|
vpxord zmm1, zmm1, zmm9
|
|
vpxord zmm2, zmm2, zmm10
|
|
vpxord zmm3, zmm3, zmm11
|
|
vpxord zmm4, zmm4, zmm12
|
|
vpxord zmm5, zmm5, zmm13
|
|
vpxord zmm6, zmm6, zmm14
|
|
vpxord zmm7, zmm7, zmm15
|
|
movzx eax, byte ptr [rbp+0x38]
|
|
jne 9b
|
|
mov rbx, qword ptr [rbp+0x50]
|
|
vpunpckldq zmm16, zmm0, zmm1
|
|
vpunpckhdq zmm17, zmm0, zmm1
|
|
vpunpckldq zmm18, zmm2, zmm3
|
|
vpunpckhdq zmm19, zmm2, zmm3
|
|
vpunpckldq zmm20, zmm4, zmm5
|
|
vpunpckhdq zmm21, zmm4, zmm5
|
|
vpunpckldq zmm22, zmm6, zmm7
|
|
vpunpckhdq zmm23, zmm6, zmm7
|
|
vpunpcklqdq zmm0, zmm16, zmm18
|
|
vpunpckhqdq zmm1, zmm16, zmm18
|
|
vpunpcklqdq zmm2, zmm17, zmm19
|
|
vpunpckhqdq zmm3, zmm17, zmm19
|
|
vpunpcklqdq zmm4, zmm20, zmm22
|
|
vpunpckhqdq zmm5, zmm20, zmm22
|
|
vpunpcklqdq zmm6, zmm21, zmm23
|
|
vpunpckhqdq zmm7, zmm21, zmm23
|
|
vshufi32x4 zmm16, zmm0, zmm4, 0x88
|
|
vshufi32x4 zmm17, zmm1, zmm5, 0x88
|
|
vshufi32x4 zmm18, zmm2, zmm6, 0x88
|
|
vshufi32x4 zmm19, zmm3, zmm7, 0x88
|
|
vshufi32x4 zmm20, zmm0, zmm4, 0xDD
|
|
vshufi32x4 zmm21, zmm1, zmm5, 0xDD
|
|
vshufi32x4 zmm22, zmm2, zmm6, 0xDD
|
|
vshufi32x4 zmm23, zmm3, zmm7, 0xDD
|
|
vshufi32x4 zmm0, zmm16, zmm17, 0x88
|
|
vshufi32x4 zmm1, zmm18, zmm19, 0x88
|
|
vshufi32x4 zmm2, zmm20, zmm21, 0x88
|
|
vshufi32x4 zmm3, zmm22, zmm23, 0x88
|
|
vshufi32x4 zmm4, zmm16, zmm17, 0xDD
|
|
vshufi32x4 zmm5, zmm18, zmm19, 0xDD
|
|
vshufi32x4 zmm6, zmm20, zmm21, 0xDD
|
|
vshufi32x4 zmm7, zmm22, zmm23, 0xDD
|
|
vmovdqu32 zmmword ptr [rbx], zmm0
|
|
vmovdqu32 zmmword ptr [rbx+0x1*0x40], zmm1
|
|
vmovdqu32 zmmword ptr [rbx+0x2*0x40], zmm2
|
|
vmovdqu32 zmmword ptr [rbx+0x3*0x40], zmm3
|
|
vmovdqu32 zmmword ptr [rbx+0x4*0x40], zmm4
|
|
vmovdqu32 zmmword ptr [rbx+0x5*0x40], zmm5
|
|
vmovdqu32 zmmword ptr [rbx+0x6*0x40], zmm6
|
|
vmovdqu32 zmmword ptr [rbx+0x7*0x40], zmm7
|
|
vmovdqa32 zmm0, zmmword ptr [rsp]
|
|
vmovdqa32 zmm1, zmmword ptr [rsp+0x1*0x40]
|
|
vmovdqa32 zmm2, zmm0
|
|
vpaddd zmm2{k1}, zmm0, dword ptr [ADD16+rip] {1to16}
|
|
vpcmpltud k2, zmm2, zmm0
|
|
vpaddd zmm1 {k2}, zmm1, dword ptr [ADD1+rip] {1to16}
|
|
vmovdqa32 zmmword ptr [rsp], zmm2
|
|
vmovdqa32 zmmword ptr [rsp+0x1*0x40], zmm1
|
|
add rdi, 128
|
|
add rbx, 512
|
|
mov qword ptr [rbp+0x50], rbx
|
|
sub rsi, 16
|
|
cmp rsi, 16
|
|
jnc 2b
|
|
test rsi, rsi
|
|
jnz 3f
|
|
4:
|
|
vzeroupper
|
|
mov rsp, rbp
|
|
pop rbp
|
|
pop rbx
|
|
pop r12
|
|
pop r13
|
|
pop r14
|
|
pop r15
|
|
RET
|
|
.p2align 6
|
|
3:
|
|
test esi, 0x8
|
|
je 3f
|
|
vpbroadcastd ymm0, dword ptr [rcx]
|
|
vpbroadcastd ymm1, dword ptr [rcx+0x4]
|
|
vpbroadcastd ymm2, dword ptr [rcx+0x8]
|
|
vpbroadcastd ymm3, dword ptr [rcx+0xC]
|
|
vpbroadcastd ymm4, dword ptr [rcx+0x10]
|
|
vpbroadcastd ymm5, dword ptr [rcx+0x14]
|
|
vpbroadcastd ymm6, dword ptr [rcx+0x18]
|
|
vpbroadcastd ymm7, dword ptr [rcx+0x1C]
|
|
mov r8, qword ptr [rdi]
|
|
mov r9, qword ptr [rdi+0x8]
|
|
mov r10, qword ptr [rdi+0x10]
|
|
mov r11, qword ptr [rdi+0x18]
|
|
mov r12, qword ptr [rdi+0x20]
|
|
mov r13, qword ptr [rdi+0x28]
|
|
mov r14, qword ptr [rdi+0x30]
|
|
mov r15, qword ptr [rdi+0x38]
|
|
movzx eax, byte ptr [rbp+0x38]
|
|
movzx ebx, byte ptr [rbp+0x40]
|
|
or eax, ebx
|
|
xor edx, edx
|
|
2:
|
|
movzx ebx, byte ptr [rbp+0x48]
|
|
or ebx, eax
|
|
add rdx, 64
|
|
cmp rdx, qword ptr [rsp+0x80]
|
|
cmove eax, ebx
|
|
mov dword ptr [rsp+0x88], eax
|
|
vmovups xmm8, xmmword ptr [r8+rdx-0x40]
|
|
vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x40], 0x01
|
|
vmovups xmm9, xmmword ptr [r9+rdx-0x40]
|
|
vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x40], 0x01
|
|
vunpcklpd ymm12, ymm8, ymm9
|
|
vunpckhpd ymm13, ymm8, ymm9
|
|
vmovups xmm10, xmmword ptr [r10+rdx-0x40]
|
|
vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x40], 0x01
|
|
vmovups xmm11, xmmword ptr [r11+rdx-0x40]
|
|
vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x40], 0x01
|
|
vunpcklpd ymm14, ymm10, ymm11
|
|
vunpckhpd ymm15, ymm10, ymm11
|
|
vshufps ymm16, ymm12, ymm14, 136
|
|
vshufps ymm17, ymm12, ymm14, 221
|
|
vshufps ymm18, ymm13, ymm15, 136
|
|
vshufps ymm19, ymm13, ymm15, 221
|
|
vmovups xmm8, xmmword ptr [r8+rdx-0x30]
|
|
vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x30], 0x01
|
|
vmovups xmm9, xmmword ptr [r9+rdx-0x30]
|
|
vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x30], 0x01
|
|
vunpcklpd ymm12, ymm8, ymm9
|
|
vunpckhpd ymm13, ymm8, ymm9
|
|
vmovups xmm10, xmmword ptr [r10+rdx-0x30]
|
|
vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x30], 0x01
|
|
vmovups xmm11, xmmword ptr [r11+rdx-0x30]
|
|
vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x30], 0x01
|
|
vunpcklpd ymm14, ymm10, ymm11
|
|
vunpckhpd ymm15, ymm10, ymm11
|
|
vshufps ymm20, ymm12, ymm14, 136
|
|
vshufps ymm21, ymm12, ymm14, 221
|
|
vshufps ymm22, ymm13, ymm15, 136
|
|
vshufps ymm23, ymm13, ymm15, 221
|
|
vmovups xmm8, xmmword ptr [r8+rdx-0x20]
|
|
vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x20], 0x01
|
|
vmovups xmm9, xmmword ptr [r9+rdx-0x20]
|
|
vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x20], 0x01
|
|
vunpcklpd ymm12, ymm8, ymm9
|
|
vunpckhpd ymm13, ymm8, ymm9
|
|
vmovups xmm10, xmmword ptr [r10+rdx-0x20]
|
|
vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x20], 0x01
|
|
vmovups xmm11, xmmword ptr [r11+rdx-0x20]
|
|
vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x20], 0x01
|
|
vunpcklpd ymm14, ymm10, ymm11
|
|
vunpckhpd ymm15, ymm10, ymm11
|
|
vshufps ymm24, ymm12, ymm14, 136
|
|
vshufps ymm25, ymm12, ymm14, 221
|
|
vshufps ymm26, ymm13, ymm15, 136
|
|
vshufps ymm27, ymm13, ymm15, 221
|
|
vmovups xmm8, xmmword ptr [r8+rdx-0x10]
|
|
vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x10], 0x01
|
|
vmovups xmm9, xmmword ptr [r9+rdx-0x10]
|
|
vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x10], 0x01
|
|
vunpcklpd ymm12, ymm8, ymm9
|
|
vunpckhpd ymm13, ymm8, ymm9
|
|
vmovups xmm10, xmmword ptr [r10+rdx-0x10]
|
|
vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x10], 0x01
|
|
vmovups xmm11, xmmword ptr [r11+rdx-0x10]
|
|
vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x10], 0x01
|
|
vunpcklpd ymm14, ymm10, ymm11
|
|
vunpckhpd ymm15, ymm10, ymm11
|
|
vshufps ymm28, ymm12, ymm14, 136
|
|
vshufps ymm29, ymm12, ymm14, 221
|
|
vshufps ymm30, ymm13, ymm15, 136
|
|
vshufps ymm31, ymm13, ymm15, 221
|
|
vpbroadcastd ymm8, dword ptr [BLAKE3_IV_0+rip]
|
|
vpbroadcastd ymm9, dword ptr [BLAKE3_IV_1+rip]
|
|
vpbroadcastd ymm10, dword ptr [BLAKE3_IV_2+rip]
|
|
vpbroadcastd ymm11, dword ptr [BLAKE3_IV_3+rip]
|
|
vmovdqa ymm12, ymmword ptr [rsp]
|
|
vmovdqa ymm13, ymmword ptr [rsp+0x40]
|
|
vpbroadcastd ymm14, dword ptr [BLAKE3_BLOCK_LEN+rip]
|
|
vpbroadcastd ymm15, dword ptr [rsp+0x88]
|
|
vpaddd ymm0, ymm0, ymm16
|
|
vpaddd ymm1, ymm1, ymm18
|
|
vpaddd ymm2, ymm2, ymm20
|
|
vpaddd ymm3, ymm3, ymm22
|
|
vpaddd ymm0, ymm0, ymm4
|
|
vpaddd ymm1, ymm1, ymm5
|
|
vpaddd ymm2, ymm2, ymm6
|
|
vpaddd ymm3, ymm3, ymm7
|
|
vpxord ymm12, ymm12, ymm0
|
|
vpxord ymm13, ymm13, ymm1
|
|
vpxord ymm14, ymm14, ymm2
|
|
vpxord ymm15, ymm15, ymm3
|
|
vprord ymm12, ymm12, 16
|
|
vprord ymm13, ymm13, 16
|
|
vprord ymm14, ymm14, 16
|
|
vprord ymm15, ymm15, 16
|
|
vpaddd ymm8, ymm8, ymm12
|
|
vpaddd ymm9, ymm9, ymm13
|
|
vpaddd ymm10, ymm10, ymm14
|
|
vpaddd ymm11, ymm11, ymm15
|
|
vpxord ymm4, ymm4, ymm8
|
|
vpxord ymm5, ymm5, ymm9
|
|
vpxord ymm6, ymm6, ymm10
|
|
vpxord ymm7, ymm7, ymm11
|
|
vprord ymm4, ymm4, 12
|
|
vprord ymm5, ymm5, 12
|
|
vprord ymm6, ymm6, 12
|
|
vprord ymm7, ymm7, 12
|
|
vpaddd ymm0, ymm0, ymm17
|
|
vpaddd ymm1, ymm1, ymm19
|
|
vpaddd ymm2, ymm2, ymm21
|
|
vpaddd ymm3, ymm3, ymm23
|
|
vpaddd ymm0, ymm0, ymm4
|
|
vpaddd ymm1, ymm1, ymm5
|
|
vpaddd ymm2, ymm2, ymm6
|
|
vpaddd ymm3, ymm3, ymm7
|
|
vpxord ymm12, ymm12, ymm0
|
|
vpxord ymm13, ymm13, ymm1
|
|
vpxord ymm14, ymm14, ymm2
|
|
vpxord ymm15, ymm15, ymm3
|
|
vprord ymm12, ymm12, 8
|
|
vprord ymm13, ymm13, 8
|
|
vprord ymm14, ymm14, 8
|
|
vprord ymm15, ymm15, 8
|
|
vpaddd ymm8, ymm8, ymm12
|
|
vpaddd ymm9, ymm9, ymm13
|
|
vpaddd ymm10, ymm10, ymm14
|
|
vpaddd ymm11, ymm11, ymm15
|
|
vpxord ymm4, ymm4, ymm8
|
|
vpxord ymm5, ymm5, ymm9
|
|
vpxord ymm6, ymm6, ymm10
|
|
vpxord ymm7, ymm7, ymm11
|
|
vprord ymm4, ymm4, 7
|
|
vprord ymm5, ymm5, 7
|
|
vprord ymm6, ymm6, 7
|
|
vprord ymm7, ymm7, 7
|
|
vpaddd ymm0, ymm0, ymm24
|
|
vpaddd ymm1, ymm1, ymm26
|
|
vpaddd ymm2, ymm2, ymm28
|
|
vpaddd ymm3, ymm3, ymm30
|
|
vpaddd ymm0, ymm0, ymm5
|
|
vpaddd ymm1, ymm1, ymm6
|
|
vpaddd ymm2, ymm2, ymm7
|
|
vpaddd ymm3, ymm3, ymm4
|
|
vpxord ymm15, ymm15, ymm0
|
|
vpxord ymm12, ymm12, ymm1
|
|
vpxord ymm13, ymm13, ymm2
|
|
vpxord ymm14, ymm14, ymm3
|
|
vprord ymm15, ymm15, 16
|
|
vprord ymm12, ymm12, 16
|
|
vprord ymm13, ymm13, 16
|
|
vprord ymm14, ymm14, 16
|
|
vpaddd ymm10, ymm10, ymm15
|
|
vpaddd ymm11, ymm11, ymm12
|
|
vpaddd ymm8, ymm8, ymm13
|
|
vpaddd ymm9, ymm9, ymm14
|
|
vpxord ymm5, ymm5, ymm10
|
|
vpxord ymm6, ymm6, ymm11
|
|
vpxord ymm7, ymm7, ymm8
|
|
vpxord ymm4, ymm4, ymm9
|
|
vprord ymm5, ymm5, 12
|
|
vprord ymm6, ymm6, 12
|
|
vprord ymm7, ymm7, 12
|
|
vprord ymm4, ymm4, 12
|
|
vpaddd ymm0, ymm0, ymm25
|
|
vpaddd ymm1, ymm1, ymm27
|
|
vpaddd ymm2, ymm2, ymm29
|
|
vpaddd ymm3, ymm3, ymm31
|
|
vpaddd ymm0, ymm0, ymm5
|
|
vpaddd ymm1, ymm1, ymm6
|
|
vpaddd ymm2, ymm2, ymm7
|
|
vpaddd ymm3, ymm3, ymm4
|
|
vpxord ymm15, ymm15, ymm0
|
|
vpxord ymm12, ymm12, ymm1
|
|
vpxord ymm13, ymm13, ymm2
|
|
vpxord ymm14, ymm14, ymm3
|
|
vprord ymm15, ymm15, 8
|
|
vprord ymm12, ymm12, 8
|
|
vprord ymm13, ymm13, 8
|
|
vprord ymm14, ymm14, 8
|
|
vpaddd ymm10, ymm10, ymm15
|
|
vpaddd ymm11, ymm11, ymm12
|
|
vpaddd ymm8, ymm8, ymm13
|
|
vpaddd ymm9, ymm9, ymm14
|
|
vpxord ymm5, ymm5, ymm10
|
|
vpxord ymm6, ymm6, ymm11
|
|
vpxord ymm7, ymm7, ymm8
|
|
vpxord ymm4, ymm4, ymm9
|
|
vprord ymm5, ymm5, 7
|
|
vprord ymm6, ymm6, 7
|
|
vprord ymm7, ymm7, 7
|
|
vprord ymm4, ymm4, 7
|
|
vpaddd ymm0, ymm0, ymm18
|
|
vpaddd ymm1, ymm1, ymm19
|
|
vpaddd ymm2, ymm2, ymm23
|
|
vpaddd ymm3, ymm3, ymm20
|
|
vpaddd ymm0, ymm0, ymm4
|
|
vpaddd ymm1, ymm1, ymm5
|
|
vpaddd ymm2, ymm2, ymm6
|
|
vpaddd ymm3, ymm3, ymm7
|
|
vpxord ymm12, ymm12, ymm0
|
|
vpxord ymm13, ymm13, ymm1
|
|
vpxord ymm14, ymm14, ymm2
|
|
vpxord ymm15, ymm15, ymm3
|
|
vprord ymm12, ymm12, 16
|
|
vprord ymm13, ymm13, 16
|
|
vprord ymm14, ymm14, 16
|
|
vprord ymm15, ymm15, 16
|
|
vpaddd ymm8, ymm8, ymm12
|
|
vpaddd ymm9, ymm9, ymm13
|
|
vpaddd ymm10, ymm10, ymm14
|
|
vpaddd ymm11, ymm11, ymm15
|
|
vpxord ymm4, ymm4, ymm8
|
|
vpxord ymm5, ymm5, ymm9
|
|
vpxord ymm6, ymm6, ymm10
|
|
vpxord ymm7, ymm7, ymm11
|
|
vprord ymm4, ymm4, 12
|
|
vprord ymm5, ymm5, 12
|
|
vprord ymm6, ymm6, 12
|
|
vprord ymm7, ymm7, 12
|
|
vpaddd ymm0, ymm0, ymm22
|
|
vpaddd ymm1, ymm1, ymm26
|
|
vpaddd ymm2, ymm2, ymm16
|
|
vpaddd ymm3, ymm3, ymm29
|
|
vpaddd ymm0, ymm0, ymm4
|
|
vpaddd ymm1, ymm1, ymm5
|
|
vpaddd ymm2, ymm2, ymm6
|
|
vpaddd ymm3, ymm3, ymm7
|
|
vpxord ymm12, ymm12, ymm0
|
|
vpxord ymm13, ymm13, ymm1
|
|
vpxord ymm14, ymm14, ymm2
|
|
vpxord ymm15, ymm15, ymm3
|
|
vprord ymm12, ymm12, 8
|
|
vprord ymm13, ymm13, 8
|
|
vprord ymm14, ymm14, 8
|
|
vprord ymm15, ymm15, 8
|
|
vpaddd ymm8, ymm8, ymm12
|
|
vpaddd ymm9, ymm9, ymm13
|
|
vpaddd ymm10, ymm10, ymm14
|
|
vpaddd ymm11, ymm11, ymm15
|
|
vpxord ymm4, ymm4, ymm8
|
|
vpxord ymm5, ymm5, ymm9
|
|
vpxord ymm6, ymm6, ymm10
|
|
vpxord ymm7, ymm7, ymm11
|
|
vprord ymm4, ymm4, 7
|
|
vprord ymm5, ymm5, 7
|
|
vprord ymm6, ymm6, 7
|
|
vprord ymm7, ymm7, 7
|
|
vpaddd ymm0, ymm0, ymm17
|
|
vpaddd ymm1, ymm1, ymm28
|
|
vpaddd ymm2, ymm2, ymm25
|
|
vpaddd ymm3, ymm3, ymm31
|
|
vpaddd ymm0, ymm0, ymm5
|
|
vpaddd ymm1, ymm1, ymm6
|
|
vpaddd ymm2, ymm2, ymm7
|
|
vpaddd ymm3, ymm3, ymm4
|
|
vpxord ymm15, ymm15, ymm0
|
|
vpxord ymm12, ymm12, ymm1
|
|
vpxord ymm13, ymm13, ymm2
|
|
vpxord ymm14, ymm14, ymm3
|
|
vprord ymm15, ymm15, 16
|
|
vprord ymm12, ymm12, 16
|
|
vprord ymm13, ymm13, 16
|
|
vprord ymm14, ymm14, 16
|
|
vpaddd ymm10, ymm10, ymm15
|
|
vpaddd ymm11, ymm11, ymm12
|
|
vpaddd ymm8, ymm8, ymm13
|
|
vpaddd ymm9, ymm9, ymm14
|
|
vpxord ymm5, ymm5, ymm10
|
|
vpxord ymm6, ymm6, ymm11
|
|
vpxord ymm7, ymm7, ymm8
|
|
vpxord ymm4, ymm4, ymm9
|
|
vprord ymm5, ymm5, 12
|
|
vprord ymm6, ymm6, 12
|
|
vprord ymm7, ymm7, 12
|
|
vprord ymm4, ymm4, 12
|
|
vpaddd ymm0, ymm0, ymm27
|
|
vpaddd ymm1, ymm1, ymm21
|
|
vpaddd ymm2, ymm2, ymm30
|
|
vpaddd ymm3, ymm3, ymm24
|
|
vpaddd ymm0, ymm0, ymm5
|
|
vpaddd ymm1, ymm1, ymm6
|
|
vpaddd ymm2, ymm2, ymm7
|
|
vpaddd ymm3, ymm3, ymm4
|
|
vpxord ymm15, ymm15, ymm0
|
|
vpxord ymm12, ymm12, ymm1
|
|
vpxord ymm13, ymm13, ymm2
|
|
vpxord ymm14, ymm14, ymm3
|
|
vprord ymm15, ymm15, 8
|
|
vprord ymm12, ymm12, 8
|
|
vprord ymm13, ymm13, 8
|
|
vprord ymm14, ymm14, 8
|
|
vpaddd ymm10, ymm10, ymm15
|
|
vpaddd ymm11, ymm11, ymm12
|
|
vpaddd ymm8, ymm8, ymm13
|
|
vpaddd ymm9, ymm9, ymm14
|
|
vpxord ymm5, ymm5, ymm10
|
|
vpxord ymm6, ymm6, ymm11
|
|
vpxord ymm7, ymm7, ymm8
|
|
vpxord ymm4, ymm4, ymm9
|
|
vprord ymm5, ymm5, 7
|
|
vprord ymm6, ymm6, 7
|
|
vprord ymm7, ymm7, 7
|
|
vprord ymm4, ymm4, 7
|
|
vpaddd ymm0, ymm0, ymm19
|
|
vpaddd ymm1, ymm1, ymm26
|
|
vpaddd ymm2, ymm2, ymm29
|
|
vpaddd ymm3, ymm3, ymm23
|
|
vpaddd ymm0, ymm0, ymm4
|
|
vpaddd ymm1, ymm1, ymm5
|
|
vpaddd ymm2, ymm2, ymm6
|
|
vpaddd ymm3, ymm3, ymm7
|
|
vpxord ymm12, ymm12, ymm0
|
|
vpxord ymm13, ymm13, ymm1
|
|
vpxord ymm14, ymm14, ymm2
|
|
vpxord ymm15, ymm15, ymm3
|
|
vprord ymm12, ymm12, 16
|
|
vprord ymm13, ymm13, 16
|
|
vprord ymm14, ymm14, 16
|
|
vprord ymm15, ymm15, 16
|
|
vpaddd ymm8, ymm8, ymm12
|
|
vpaddd ymm9, ymm9, ymm13
|
|
vpaddd ymm10, ymm10, ymm14
|
|
vpaddd ymm11, ymm11, ymm15
|
|
vpxord ymm4, ymm4, ymm8
|
|
vpxord ymm5, ymm5, ymm9
|
|
vpxord ymm6, ymm6, ymm10
|
|
vpxord ymm7, ymm7, ymm11
|
|
vprord ymm4, ymm4, 12
|
|
vprord ymm5, ymm5, 12
|
|
vprord ymm6, ymm6, 12
|
|
vprord ymm7, ymm7, 12
|
|
vpaddd ymm0, ymm0, ymm20
|
|
vpaddd ymm1, ymm1, ymm28
|
|
vpaddd ymm2, ymm2, ymm18
|
|
vpaddd ymm3, ymm3, ymm30
|
|
vpaddd ymm0, ymm0, ymm4
|
|
vpaddd ymm1, ymm1, ymm5
|
|
vpaddd ymm2, ymm2, ymm6
|
|
vpaddd ymm3, ymm3, ymm7
|
|
vpxord ymm12, ymm12, ymm0
|
|
vpxord ymm13, ymm13, ymm1
|
|
vpxord ymm14, ymm14, ymm2
|
|
vpxord ymm15, ymm15, ymm3
|
|
vprord ymm12, ymm12, 8
|
|
vprord ymm13, ymm13, 8
|
|
vprord ymm14, ymm14, 8
|
|
vprord ymm15, ymm15, 8
|
|
vpaddd ymm8, ymm8, ymm12
|
|
vpaddd ymm9, ymm9, ymm13
|
|
vpaddd ymm10, ymm10, ymm14
|
|
vpaddd ymm11, ymm11, ymm15
|
|
vpxord ymm4, ymm4, ymm8
|
|
vpxord ymm5, ymm5, ymm9
|
|
vpxord ymm6, ymm6, ymm10
|
|
vpxord ymm7, ymm7, ymm11
|
|
vprord ymm4, ymm4, 7
|
|
vprord ymm5, ymm5, 7
|
|
vprord ymm6, ymm6, 7
|
|
vprord ymm7, ymm7, 7
|
|
vpaddd ymm0, ymm0, ymm22
|
|
vpaddd ymm1, ymm1, ymm25
|
|
vpaddd ymm2, ymm2, ymm27
|
|
vpaddd ymm3, ymm3, ymm24
|
|
vpaddd ymm0, ymm0, ymm5
|
|
vpaddd ymm1, ymm1, ymm6
|
|
vpaddd ymm2, ymm2, ymm7
|
|
vpaddd ymm3, ymm3, ymm4
|
|
vpxord ymm15, ymm15, ymm0
|
|
vpxord ymm12, ymm12, ymm1
|
|
vpxord ymm13, ymm13, ymm2
|
|
vpxord ymm14, ymm14, ymm3
|
|
vprord ymm15, ymm15, 16
|
|
vprord ymm12, ymm12, 16
|
|
vprord ymm13, ymm13, 16
|
|
vprord ymm14, ymm14, 16
|
|
vpaddd ymm10, ymm10, ymm15
|
|
vpaddd ymm11, ymm11, ymm12
|
|
vpaddd ymm8, ymm8, ymm13
|
|
vpaddd ymm9, ymm9, ymm14
|
|
vpxord ymm5, ymm5, ymm10
|
|
vpxord ymm6, ymm6, ymm11
|
|
vpxord ymm7, ymm7, ymm8
|
|
vpxord ymm4, ymm4, ymm9
|
|
vprord ymm5, ymm5, 12
|
|
vprord ymm6, ymm6, 12
|
|
vprord ymm7, ymm7, 12
|
|
vprord ymm4, ymm4, 12
|
|
vpaddd ymm0, ymm0, ymm21
|
|
vpaddd ymm1, ymm1, ymm16
|
|
vpaddd ymm2, ymm2, ymm31
|
|
vpaddd ymm3, ymm3, ymm17
|
|
vpaddd ymm0, ymm0, ymm5
|
|
vpaddd ymm1, ymm1, ymm6
|
|
vpaddd ymm2, ymm2, ymm7
|
|
vpaddd ymm3, ymm3, ymm4
|
|
vpxord ymm15, ymm15, ymm0
|
|
vpxord ymm12, ymm12, ymm1
|
|
vpxord ymm13, ymm13, ymm2
|
|
vpxord ymm14, ymm14, ymm3
|
|
vprord ymm15, ymm15, 8
|
|
vprord ymm12, ymm12, 8
|
|
vprord ymm13, ymm13, 8
|
|
vprord ymm14, ymm14, 8
|
|
vpaddd ymm10, ymm10, ymm15
|
|
vpaddd ymm11, ymm11, ymm12
|
|
vpaddd ymm8, ymm8, ymm13
|
|
vpaddd ymm9, ymm9, ymm14
|
|
vpxord ymm5, ymm5, ymm10
|
|
vpxord ymm6, ymm6, ymm11
|
|
vpxord ymm7, ymm7, ymm8
|
|
vpxord ymm4, ymm4, ymm9
|
|
vprord ymm5, ymm5, 7
|
|
vprord ymm6, ymm6, 7
|
|
vprord ymm7, ymm7, 7
|
|
vprord ymm4, ymm4, 7
|
|
vpaddd ymm0, ymm0, ymm26
|
|
vpaddd ymm1, ymm1, ymm28
|
|
vpaddd ymm2, ymm2, ymm30
|
|
vpaddd ymm3, ymm3, ymm29
|
|
vpaddd ymm0, ymm0, ymm4
|
|
vpaddd ymm1, ymm1, ymm5
|
|
vpaddd ymm2, ymm2, ymm6
|
|
vpaddd ymm3, ymm3, ymm7
|
|
vpxord ymm12, ymm12, ymm0
|
|
vpxord ymm13, ymm13, ymm1
|
|
vpxord ymm14, ymm14, ymm2
|
|
vpxord ymm15, ymm15, ymm3
|
|
vprord ymm12, ymm12, 16
|
|
vprord ymm13, ymm13, 16
|
|
vprord ymm14, ymm14, 16
|
|
vprord ymm15, ymm15, 16
|
|
vpaddd ymm8, ymm8, ymm12
|
|
vpaddd ymm9, ymm9, ymm13
|
|
vpaddd ymm10, ymm10, ymm14
|
|
vpaddd ymm11, ymm11, ymm15
|
|
vpxord ymm4, ymm4, ymm8
|
|
vpxord ymm5, ymm5, ymm9
|
|
vpxord ymm6, ymm6, ymm10
|
|
vpxord ymm7, ymm7, ymm11
|
|
vprord ymm4, ymm4, 12
|
|
vprord ymm5, ymm5, 12
|
|
vprord ymm6, ymm6, 12
|
|
vprord ymm7, ymm7, 12
|
|
vpaddd ymm0, ymm0, ymm23
|
|
vpaddd ymm1, ymm1, ymm25
|
|
vpaddd ymm2, ymm2, ymm19
|
|
vpaddd ymm3, ymm3, ymm31
|
|
vpaddd ymm0, ymm0, ymm4
|
|
vpaddd ymm1, ymm1, ymm5
|
|
vpaddd ymm2, ymm2, ymm6
|
|
vpaddd ymm3, ymm3, ymm7
|
|
vpxord ymm12, ymm12, ymm0
|
|
vpxord ymm13, ymm13, ymm1
|
|
vpxord ymm14, ymm14, ymm2
|
|
vpxord ymm15, ymm15, ymm3
|
|
vprord ymm12, ymm12, 8
|
|
vprord ymm13, ymm13, 8
|
|
vprord ymm14, ymm14, 8
|
|
vprord ymm15, ymm15, 8
|
|
vpaddd ymm8, ymm8, ymm12
|
|
vpaddd ymm9, ymm9, ymm13
|
|
vpaddd ymm10, ymm10, ymm14
|
|
vpaddd ymm11, ymm11, ymm15
|
|
vpxord ymm4, ymm4, ymm8
|
|
vpxord ymm5, ymm5, ymm9
|
|
vpxord ymm6, ymm6, ymm10
|
|
vpxord ymm7, ymm7, ymm11
|
|
vprord ymm4, ymm4, 7
|
|
vprord ymm5, ymm5, 7
|
|
vprord ymm6, ymm6, 7
|
|
vprord ymm7, ymm7, 7
|
|
vpaddd ymm0, ymm0, ymm20
|
|
vpaddd ymm1, ymm1, ymm27
|
|
vpaddd ymm2, ymm2, ymm21
|
|
vpaddd ymm3, ymm3, ymm17
|
|
vpaddd ymm0, ymm0, ymm5
|
|
vpaddd ymm1, ymm1, ymm6
|
|
vpaddd ymm2, ymm2, ymm7
|
|
vpaddd ymm3, ymm3, ymm4
|
|
vpxord ymm15, ymm15, ymm0
|
|
vpxord ymm12, ymm12, ymm1
|
|
vpxord ymm13, ymm13, ymm2
|
|
vpxord ymm14, ymm14, ymm3
|
|
vprord ymm15, ymm15, 16
|
|
vprord ymm12, ymm12, 16
|
|
vprord ymm13, ymm13, 16
|
|
vprord ymm14, ymm14, 16
|
|
vpaddd ymm10, ymm10, ymm15
|
|
vpaddd ymm11, ymm11, ymm12
|
|
vpaddd ymm8, ymm8, ymm13
|
|
vpaddd ymm9, ymm9, ymm14
|
|
vpxord ymm5, ymm5, ymm10
|
|
vpxord ymm6, ymm6, ymm11
|
|
vpxord ymm7, ymm7, ymm8
|
|
vpxord ymm4, ymm4, ymm9
|
|
vprord ymm5, ymm5, 12
|
|
vprord ymm6, ymm6, 12
|
|
vprord ymm7, ymm7, 12
|
|
vprord ymm4, ymm4, 12
|
|
vpaddd ymm0, ymm0, ymm16
|
|
vpaddd ymm1, ymm1, ymm18
|
|
vpaddd ymm2, ymm2, ymm24
|
|
vpaddd ymm3, ymm3, ymm22
|
|
vpaddd ymm0, ymm0, ymm5
|
|
vpaddd ymm1, ymm1, ymm6
|
|
vpaddd ymm2, ymm2, ymm7
|
|
vpaddd ymm3, ymm3, ymm4
|
|
vpxord ymm15, ymm15, ymm0
|
|
vpxord ymm12, ymm12, ymm1
|
|
vpxord ymm13, ymm13, ymm2
|
|
vpxord ymm14, ymm14, ymm3
|
|
vprord ymm15, ymm15, 8
|
|
vprord ymm12, ymm12, 8
|
|
vprord ymm13, ymm13, 8
|
|
vprord ymm14, ymm14, 8
|
|
vpaddd ymm10, ymm10, ymm15
|
|
vpaddd ymm11, ymm11, ymm12
|
|
vpaddd ymm8, ymm8, ymm13
|
|
vpaddd ymm9, ymm9, ymm14
|
|
vpxord ymm5, ymm5, ymm10
|
|
vpxord ymm6, ymm6, ymm11
|
|
vpxord ymm7, ymm7, ymm8
|
|
vpxord ymm4, ymm4, ymm9
|
|
vprord ymm5, ymm5, 7
|
|
vprord ymm6, ymm6, 7
|
|
vprord ymm7, ymm7, 7
|
|
vprord ymm4, ymm4, 7
|
|
vpaddd ymm0, ymm0, ymm28
|
|
vpaddd ymm1, ymm1, ymm25
|
|
vpaddd ymm2, ymm2, ymm31
|
|
vpaddd ymm3, ymm3, ymm30
|
|
vpaddd ymm0, ymm0, ymm4
|
|
vpaddd ymm1, ymm1, ymm5
|
|
vpaddd ymm2, ymm2, ymm6
|
|
vpaddd ymm3, ymm3, ymm7
|
|
vpxord ymm12, ymm12, ymm0
|
|
vpxord ymm13, ymm13, ymm1
|
|
vpxord ymm14, ymm14, ymm2
|
|
vpxord ymm15, ymm15, ymm3
|
|
vprord ymm12, ymm12, 16
|
|
vprord ymm13, ymm13, 16
|
|
vprord ymm14, ymm14, 16
|
|
vprord ymm15, ymm15, 16
|
|
vpaddd ymm8, ymm8, ymm12
|
|
vpaddd ymm9, ymm9, ymm13
|
|
vpaddd ymm10, ymm10, ymm14
|
|
vpaddd ymm11, ymm11, ymm15
|
|
vpxord ymm4, ymm4, ymm8
|
|
vpxord ymm5, ymm5, ymm9
|
|
vpxord ymm6, ymm6, ymm10
|
|
vpxord ymm7, ymm7, ymm11
|
|
vprord ymm4, ymm4, 12
|
|
vprord ymm5, ymm5, 12
|
|
vprord ymm6, ymm6, 12
|
|
vprord ymm7, ymm7, 12
|
|
vpaddd ymm0, ymm0, ymm29
|
|
vpaddd ymm1, ymm1, ymm27
|
|
vpaddd ymm2, ymm2, ymm26
|
|
vpaddd ymm3, ymm3, ymm24
|
|
vpaddd ymm0, ymm0, ymm4
|
|
vpaddd ymm1, ymm1, ymm5
|
|
vpaddd ymm2, ymm2, ymm6
|
|
vpaddd ymm3, ymm3, ymm7
|
|
vpxord ymm12, ymm12, ymm0
|
|
vpxord ymm13, ymm13, ymm1
|
|
vpxord ymm14, ymm14, ymm2
|
|
vpxord ymm15, ymm15, ymm3
|
|
vprord ymm12, ymm12, 8
|
|
vprord ymm13, ymm13, 8
|
|
vprord ymm14, ymm14, 8
|
|
vprord ymm15, ymm15, 8
|
|
vpaddd ymm8, ymm8, ymm12
|
|
vpaddd ymm9, ymm9, ymm13
|
|
vpaddd ymm10, ymm10, ymm14
|
|
vpaddd ymm11, ymm11, ymm15
|
|
vpxord ymm4, ymm4, ymm8
|
|
vpxord ymm5, ymm5, ymm9
|
|
vpxord ymm6, ymm6, ymm10
|
|
vpxord ymm7, ymm7, ymm11
|
|
vprord ymm4, ymm4, 7
|
|
vprord ymm5, ymm5, 7
|
|
vprord ymm6, ymm6, 7
|
|
vprord ymm7, ymm7, 7
|
|
vpaddd ymm0, ymm0, ymm23
|
|
vpaddd ymm1, ymm1, ymm21
|
|
vpaddd ymm2, ymm2, ymm16
|
|
vpaddd ymm3, ymm3, ymm22
|
|
vpaddd ymm0, ymm0, ymm5
|
|
vpaddd ymm1, ymm1, ymm6
|
|
vpaddd ymm2, ymm2, ymm7
|
|
vpaddd ymm3, ymm3, ymm4
|
|
vpxord ymm15, ymm15, ymm0
|
|
vpxord ymm12, ymm12, ymm1
|
|
vpxord ymm13, ymm13, ymm2
|
|
vpxord ymm14, ymm14, ymm3
|
|
vprord ymm15, ymm15, 16
|
|
vprord ymm12, ymm12, 16
|
|
vprord ymm13, ymm13, 16
|
|
vprord ymm14, ymm14, 16
|
|
vpaddd ymm10, ymm10, ymm15
|
|
vpaddd ymm11, ymm11, ymm12
|
|
vpaddd ymm8, ymm8, ymm13
|
|
vpaddd ymm9, ymm9, ymm14
|
|
vpxord ymm5, ymm5, ymm10
|
|
vpxord ymm6, ymm6, ymm11
|
|
vpxord ymm7, ymm7, ymm8
|
|
vpxord ymm4, ymm4, ymm9
|
|
vprord ymm5, ymm5, 12
|
|
vprord ymm6, ymm6, 12
|
|
vprord ymm7, ymm7, 12
|
|
vprord ymm4, ymm4, 12
|
|
vpaddd ymm0, ymm0, ymm18
|
|
vpaddd ymm1, ymm1, ymm19
|
|
vpaddd ymm2, ymm2, ymm17
|
|
vpaddd ymm3, ymm3, ymm20
|
|
vpaddd ymm0, ymm0, ymm5
|
|
vpaddd ymm1, ymm1, ymm6
|
|
vpaddd ymm2, ymm2, ymm7
|
|
vpaddd ymm3, ymm3, ymm4
|
|
vpxord ymm15, ymm15, ymm0
|
|
vpxord ymm12, ymm12, ymm1
|
|
vpxord ymm13, ymm13, ymm2
|
|
vpxord ymm14, ymm14, ymm3
|
|
vprord ymm15, ymm15, 8
|
|
vprord ymm12, ymm12, 8
|
|
vprord ymm13, ymm13, 8
|
|
vprord ymm14, ymm14, 8
|
|
vpaddd ymm10, ymm10, ymm15
|
|
vpaddd ymm11, ymm11, ymm12
|
|
vpaddd ymm8, ymm8, ymm13
|
|
vpaddd ymm9, ymm9, ymm14
|
|
vpxord ymm5, ymm5, ymm10
|
|
vpxord ymm6, ymm6, ymm11
|
|
vpxord ymm7, ymm7, ymm8
|
|
vpxord ymm4, ymm4, ymm9
|
|
vprord ymm5, ymm5, 7
|
|
vprord ymm6, ymm6, 7
|
|
vprord ymm7, ymm7, 7
|
|
vprord ymm4, ymm4, 7
|
|
vpaddd ymm0, ymm0, ymm25
|
|
vpaddd ymm1, ymm1, ymm27
|
|
vpaddd ymm2, ymm2, ymm24
|
|
vpaddd ymm3, ymm3, ymm31
|
|
vpaddd ymm0, ymm0, ymm4
|
|
vpaddd ymm1, ymm1, ymm5
|
|
vpaddd ymm2, ymm2, ymm6
|
|
vpaddd ymm3, ymm3, ymm7
|
|
vpxord ymm12, ymm12, ymm0
|
|
vpxord ymm13, ymm13, ymm1
|
|
vpxord ymm14, ymm14, ymm2
|
|
vpxord ymm15, ymm15, ymm3
|
|
vprord ymm12, ymm12, 16
|
|
vprord ymm13, ymm13, 16
|
|
vprord ymm14, ymm14, 16
|
|
vprord ymm15, ymm15, 16
|
|
vpaddd ymm8, ymm8, ymm12
|
|
vpaddd ymm9, ymm9, ymm13
|
|
vpaddd ymm10, ymm10, ymm14
|
|
vpaddd ymm11, ymm11, ymm15
|
|
vpxord ymm4, ymm4, ymm8
|
|
vpxord ymm5, ymm5, ymm9
|
|
vpxord ymm6, ymm6, ymm10
|
|
vpxord ymm7, ymm7, ymm11
|
|
vprord ymm4, ymm4, 12
|
|
vprord ymm5, ymm5, 12
|
|
vprord ymm6, ymm6, 12
|
|
vprord ymm7, ymm7, 12
|
|
vpaddd ymm0, ymm0, ymm30
|
|
vpaddd ymm1, ymm1, ymm21
|
|
vpaddd ymm2, ymm2, ymm28
|
|
vpaddd ymm3, ymm3, ymm17
|
|
vpaddd ymm0, ymm0, ymm4
|
|
vpaddd ymm1, ymm1, ymm5
|
|
vpaddd ymm2, ymm2, ymm6
|
|
vpaddd ymm3, ymm3, ymm7
|
|
vpxord ymm12, ymm12, ymm0
|
|
vpxord ymm13, ymm13, ymm1
|
|
vpxord ymm14, ymm14, ymm2
|
|
vpxord ymm15, ymm15, ymm3
|
|
vprord ymm12, ymm12, 8
|
|
vprord ymm13, ymm13, 8
|
|
vprord ymm14, ymm14, 8
|
|
vprord ymm15, ymm15, 8
|
|
vpaddd ymm8, ymm8, ymm12
|
|
vpaddd ymm9, ymm9, ymm13
|
|
vpaddd ymm10, ymm10, ymm14
|
|
vpaddd ymm11, ymm11, ymm15
|
|
vpxord ymm4, ymm4, ymm8
|
|
vpxord ymm5, ymm5, ymm9
|
|
vpxord ymm6, ymm6, ymm10
|
|
vpxord ymm7, ymm7, ymm11
|
|
vprord ymm4, ymm4, 7
|
|
vprord ymm5, ymm5, 7
|
|
vprord ymm6, ymm6, 7
|
|
vprord ymm7, ymm7, 7
|
|
vpaddd ymm0, ymm0, ymm29
|
|
vpaddd ymm1, ymm1, ymm16
|
|
vpaddd ymm2, ymm2, ymm18
|
|
vpaddd ymm3, ymm3, ymm20
|
|
vpaddd ymm0, ymm0, ymm5
|
|
vpaddd ymm1, ymm1, ymm6
|
|
vpaddd ymm2, ymm2, ymm7
|
|
vpaddd ymm3, ymm3, ymm4
|
|
vpxord ymm15, ymm15, ymm0
|
|
vpxord ymm12, ymm12, ymm1
|
|
vpxord ymm13, ymm13, ymm2
|
|
vpxord ymm14, ymm14, ymm3
|
|
vprord ymm15, ymm15, 16
|
|
vprord ymm12, ymm12, 16
|
|
vprord ymm13, ymm13, 16
|
|
vprord ymm14, ymm14, 16
|
|
vpaddd ymm10, ymm10, ymm15
|
|
vpaddd ymm11, ymm11, ymm12
|
|
vpaddd ymm8, ymm8, ymm13
|
|
vpaddd ymm9, ymm9, ymm14
|
|
vpxord ymm5, ymm5, ymm10
|
|
vpxord ymm6, ymm6, ymm11
|
|
vpxord ymm7, ymm7, ymm8
|
|
vpxord ymm4, ymm4, ymm9
|
|
vprord ymm5, ymm5, 12
|
|
vprord ymm6, ymm6, 12
|
|
vprord ymm7, ymm7, 12
|
|
vprord ymm4, ymm4, 12
|
|
vpaddd ymm0, ymm0, ymm19
|
|
vpaddd ymm1, ymm1, ymm26
|
|
vpaddd ymm2, ymm2, ymm22
|
|
vpaddd ymm3, ymm3, ymm23
|
|
vpaddd ymm0, ymm0, ymm5
|
|
vpaddd ymm1, ymm1, ymm6
|
|
vpaddd ymm2, ymm2, ymm7
|
|
vpaddd ymm3, ymm3, ymm4
|
|
vpxord ymm15, ymm15, ymm0
|
|
vpxord ymm12, ymm12, ymm1
|
|
vpxord ymm13, ymm13, ymm2
|
|
vpxord ymm14, ymm14, ymm3
|
|
vprord ymm15, ymm15, 8
|
|
vprord ymm12, ymm12, 8
|
|
vprord ymm13, ymm13, 8
|
|
vprord ymm14, ymm14, 8
|
|
vpaddd ymm10, ymm10, ymm15
|
|
vpaddd ymm11, ymm11, ymm12
|
|
vpaddd ymm8, ymm8, ymm13
|
|
vpaddd ymm9, ymm9, ymm14
|
|
vpxord ymm5, ymm5, ymm10
|
|
vpxord ymm6, ymm6, ymm11
|
|
vpxord ymm7, ymm7, ymm8
|
|
vpxord ymm4, ymm4, ymm9
|
|
vprord ymm5, ymm5, 7
|
|
vprord ymm6, ymm6, 7
|
|
vprord ymm7, ymm7, 7
|
|
vprord ymm4, ymm4, 7
|
|
vpaddd ymm0, ymm0, ymm27
|
|
vpaddd ymm1, ymm1, ymm21
|
|
vpaddd ymm2, ymm2, ymm17
|
|
vpaddd ymm3, ymm3, ymm24
|
|
vpaddd ymm0, ymm0, ymm4
|
|
vpaddd ymm1, ymm1, ymm5
|
|
vpaddd ymm2, ymm2, ymm6
|
|
vpaddd ymm3, ymm3, ymm7
|
|
vpxord ymm12, ymm12, ymm0
|
|
vpxord ymm13, ymm13, ymm1
|
|
vpxord ymm14, ymm14, ymm2
|
|
vpxord ymm15, ymm15, ymm3
|
|
vprord ymm12, ymm12, 16
|
|
vprord ymm13, ymm13, 16
|
|
vprord ymm14, ymm14, 16
|
|
vprord ymm15, ymm15, 16
|
|
vpaddd ymm8, ymm8, ymm12
|
|
vpaddd ymm9, ymm9, ymm13
|
|
vpaddd ymm10, ymm10, ymm14
|
|
vpaddd ymm11, ymm11, ymm15
|
|
vpxord ymm4, ymm4, ymm8
|
|
vpxord ymm5, ymm5, ymm9
|
|
vpxord ymm6, ymm6, ymm10
|
|
vpxord ymm7, ymm7, ymm11
|
|
vprord ymm4, ymm4, 12
|
|
vprord ymm5, ymm5, 12
|
|
vprord ymm6, ymm6, 12
|
|
vprord ymm7, ymm7, 12
|
|
vpaddd ymm0, ymm0, ymm31
|
|
vpaddd ymm1, ymm1, ymm16
|
|
vpaddd ymm2, ymm2, ymm25
|
|
vpaddd ymm3, ymm3, ymm22
|
|
vpaddd ymm0, ymm0, ymm4
|
|
vpaddd ymm1, ymm1, ymm5
|
|
vpaddd ymm2, ymm2, ymm6
|
|
vpaddd ymm3, ymm3, ymm7
|
|
vpxord ymm12, ymm12, ymm0
|
|
vpxord ymm13, ymm13, ymm1
|
|
vpxord ymm14, ymm14, ymm2
|
|
vpxord ymm15, ymm15, ymm3
|
|
vprord ymm12, ymm12, 8
|
|
vprord ymm13, ymm13, 8
|
|
vprord ymm14, ymm14, 8
|
|
vprord ymm15, ymm15, 8
|
|
vpaddd ymm8, ymm8, ymm12
|
|
vpaddd ymm9, ymm9, ymm13
|
|
vpaddd ymm10, ymm10, ymm14
|
|
vpaddd ymm11, ymm11, ymm15
|
|
vpxord ymm4, ymm4, ymm8
|
|
vpxord ymm5, ymm5, ymm9
|
|
vpxord ymm6, ymm6, ymm10
|
|
vpxord ymm7, ymm7, ymm11
|
|
vprord ymm4, ymm4, 7
|
|
vprord ymm5, ymm5, 7
|
|
vprord ymm6, ymm6, 7
|
|
vprord ymm7, ymm7, 7
|
|
vpaddd ymm0, ymm0, ymm30
|
|
vpaddd ymm1, ymm1, ymm18
|
|
vpaddd ymm2, ymm2, ymm19
|
|
vpaddd ymm3, ymm3, ymm23
|
|
vpaddd ymm0, ymm0, ymm5
|
|
vpaddd ymm1, ymm1, ymm6
|
|
vpaddd ymm2, ymm2, ymm7
|
|
vpaddd ymm3, ymm3, ymm4
|
|
vpxord ymm15, ymm15, ymm0
|
|
vpxord ymm12, ymm12, ymm1
|
|
vpxord ymm13, ymm13, ymm2
|
|
vpxord ymm14, ymm14, ymm3
|
|
vprord ymm15, ymm15, 16
|
|
vprord ymm12, ymm12, 16
|
|
vprord ymm13, ymm13, 16
|
|
vprord ymm14, ymm14, 16
|
|
vpaddd ymm10, ymm10, ymm15
|
|
vpaddd ymm11, ymm11, ymm12
|
|
vpaddd ymm8, ymm8, ymm13
|
|
vpaddd ymm9, ymm9, ymm14
|
|
vpxord ymm5, ymm5, ymm10
|
|
vpxord ymm6, ymm6, ymm11
|
|
vpxord ymm7, ymm7, ymm8
|
|
vpxord ymm4, ymm4, ymm9
|
|
vprord ymm5, ymm5, 12
|
|
vprord ymm6, ymm6, 12
|
|
vprord ymm7, ymm7, 12
|
|
vprord ymm4, ymm4, 12
|
|
vpaddd ymm0, ymm0, ymm26
|
|
vpaddd ymm1, ymm1, ymm28
|
|
vpaddd ymm2, ymm2, ymm20
|
|
vpaddd ymm3, ymm3, ymm29
|
|
vpaddd ymm0, ymm0, ymm5
|
|
vpaddd ymm1, ymm1, ymm6
|
|
vpaddd ymm2, ymm2, ymm7
|
|
vpaddd ymm3, ymm3, ymm4
|
|
vpxord ymm15, ymm15, ymm0
|
|
vpxord ymm12, ymm12, ymm1
|
|
vpxord ymm13, ymm13, ymm2
|
|
vpxord ymm14, ymm14, ymm3
|
|
vprord ymm15, ymm15, 8
|
|
vprord ymm12, ymm12, 8
|
|
vprord ymm13, ymm13, 8
|
|
vprord ymm14, ymm14, 8
|
|
vpaddd ymm10, ymm10, ymm15
|
|
vpaddd ymm11, ymm11, ymm12
|
|
vpaddd ymm8, ymm8, ymm13
|
|
vpaddd ymm9, ymm9, ymm14
|
|
vpxord ymm5, ymm5, ymm10
|
|
vpxord ymm6, ymm6, ymm11
|
|
vpxord ymm7, ymm7, ymm8
|
|
vpxord ymm4, ymm4, ymm9
|
|
vprord ymm5, ymm5, 7
|
|
vprord ymm6, ymm6, 7
|
|
vprord ymm7, ymm7, 7
|
|
vprord ymm4, ymm4, 7
|
|
vpxor ymm0, ymm0, ymm8
|
|
vpxor ymm1, ymm1, ymm9
|
|
vpxor ymm2, ymm2, ymm10
|
|
vpxor ymm3, ymm3, ymm11
|
|
vpxor ymm4, ymm4, ymm12
|
|
vpxor ymm5, ymm5, ymm13
|
|
vpxor ymm6, ymm6, ymm14
|
|
vpxor ymm7, ymm7, ymm15
|
|
movzx eax, byte ptr [rbp+0x38]
|
|
jne 2b
|
|
mov rbx, qword ptr [rbp+0x50]
|
|
vunpcklps ymm8, ymm0, ymm1
|
|
vunpcklps ymm9, ymm2, ymm3
|
|
vunpckhps ymm10, ymm0, ymm1
|
|
vunpcklps ymm11, ymm4, ymm5
|
|
vunpcklps ymm0, ymm6, ymm7
|
|
vshufps ymm12, ymm8, ymm9, 78
|
|
vblendps ymm1, ymm8, ymm12, 0xCC
|
|
vshufps ymm8, ymm11, ymm0, 78
|
|
vunpckhps ymm13, ymm2, ymm3
|
|
vblendps ymm2, ymm11, ymm8, 0xCC
|
|
vblendps ymm3, ymm12, ymm9, 0xCC
|
|
vperm2f128 ymm12, ymm1, ymm2, 0x20
|
|
vmovups ymmword ptr [rbx], ymm12
|
|
vunpckhps ymm14, ymm4, ymm5
|
|
vblendps ymm4, ymm8, ymm0, 0xCC
|
|
vunpckhps ymm15, ymm6, ymm7
|
|
vperm2f128 ymm7, ymm3, ymm4, 0x20
|
|
vmovups ymmword ptr [rbx+0x20], ymm7
|
|
vshufps ymm5, ymm10, ymm13, 78
|
|
vblendps ymm6, ymm5, ymm13, 0xCC
|
|
vshufps ymm13, ymm14, ymm15, 78
|
|
vblendps ymm10, ymm10, ymm5, 0xCC
|
|
vblendps ymm14, ymm14, ymm13, 0xCC
|
|
vperm2f128 ymm8, ymm10, ymm14, 0x20
|
|
vmovups ymmword ptr [rbx+0x40], ymm8
|
|
vblendps ymm15, ymm13, ymm15, 0xCC
|
|
vperm2f128 ymm13, ymm6, ymm15, 0x20
|
|
vmovups ymmword ptr [rbx+0x60], ymm13
|
|
vperm2f128 ymm9, ymm1, ymm2, 0x31
|
|
vperm2f128 ymm11, ymm3, ymm4, 0x31
|
|
vmovups ymmword ptr [rbx+0x80], ymm9
|
|
vperm2f128 ymm14, ymm10, ymm14, 0x31
|
|
vperm2f128 ymm15, ymm6, ymm15, 0x31
|
|
vmovups ymmword ptr [rbx+0xA0], ymm11
|
|
vmovups ymmword ptr [rbx+0xC0], ymm14
|
|
vmovups ymmword ptr [rbx+0xE0], ymm15
|
|
vmovdqa ymm0, ymmword ptr [rsp]
|
|
vmovdqa ymm2, ymmword ptr [rsp+0x2*0x20]
|
|
vmovdqa32 ymm0 {k1}, ymmword ptr [rsp+0x1*0x20]
|
|
vmovdqa32 ymm2 {k1}, ymmword ptr [rsp+0x3*0x20]
|
|
vmovdqa ymmword ptr [rsp], ymm0
|
|
vmovdqa ymmword ptr [rsp+0x2*0x20], ymm2
|
|
add rbx, 256
|
|
mov qword ptr [rbp+0x50], rbx
|
|
add rdi, 64
|
|
sub rsi, 8
|
|
3:
|
|
mov rbx, qword ptr [rbp+0x50]
|
|
mov r15, qword ptr [rsp+0x80]
|
|
movzx r13, byte ptr [rbp+0x38]
|
|
movzx r12, byte ptr [rbp+0x48]
|
|
test esi, 0x4
|
|
je 3f
|
|
vbroadcasti32x4 zmm0, xmmword ptr [rcx]
|
|
vbroadcasti32x4 zmm1, xmmword ptr [rcx+0x1*0x10]
|
|
vmovdqa xmm12, xmmword ptr [rsp]
|
|
vmovdqa xmm13, xmmword ptr [rsp+0x4*0x10]
|
|
vpunpckldq xmm14, xmm12, xmm13
|
|
vpunpckhdq xmm15, xmm12, xmm13
|
|
vpermq ymm14, ymm14, 0xDC
|
|
vpermq ymm15, ymm15, 0xDC
|
|
vpbroadcastd zmm12, dword ptr [BLAKE3_BLOCK_LEN+rip]
|
|
vinserti32x8 zmm13, zmm14, ymm15, 0x01
|
|
mov eax, 17476
|
|
kmovw k2, eax
|
|
vpblendmd zmm13 {k2}, zmm13, zmm12
|
|
vbroadcasti32x4 zmm15, xmmword ptr [BLAKE3_IV+rip]
|
|
mov r8, qword ptr [rdi]
|
|
mov r9, qword ptr [rdi+0x8]
|
|
mov r10, qword ptr [rdi+0x10]
|
|
mov r11, qword ptr [rdi+0x18]
|
|
mov eax, 43690
|
|
kmovw k3, eax
|
|
mov eax, 34952
|
|
kmovw k4, eax
|
|
movzx eax, byte ptr [rbp+0x40]
|
|
or eax, r13d
|
|
xor edx, edx
|
|
.p2align 5
|
|
2:
|
|
mov r14d, eax
|
|
or eax, r12d
|
|
add rdx, 64
|
|
cmp rdx, r15
|
|
cmovne eax, r14d
|
|
mov dword ptr [rsp+0x88], eax
|
|
vmovdqa32 zmm2, zmm15
|
|
vpbroadcastd zmm8, dword ptr [rsp+0x22*0x4]
|
|
vpblendmd zmm3 {k4}, zmm13, zmm8
|
|
vmovups zmm8, zmmword ptr [r8+rdx-0x1*0x40]
|
|
vinserti32x4 zmm8, zmm8, xmmword ptr [r9+rdx-0x4*0x10], 0x01
|
|
vinserti32x4 zmm8, zmm8, xmmword ptr [r10+rdx-0x4*0x10], 0x02
|
|
vinserti32x4 zmm8, zmm8, xmmword ptr [r11+rdx-0x4*0x10], 0x03
|
|
vmovups zmm9, zmmword ptr [r8+rdx-0x30]
|
|
vinserti32x4 zmm9, zmm9, xmmword ptr [r9+rdx-0x3*0x10], 0x01
|
|
vinserti32x4 zmm9, zmm9, xmmword ptr [r10+rdx-0x3*0x10], 0x02
|
|
vinserti32x4 zmm9, zmm9, xmmword ptr [r11+rdx-0x3*0x10], 0x03
|
|
vshufps zmm4, zmm8, zmm9, 136
|
|
vshufps zmm5, zmm8, zmm9, 221
|
|
vmovups zmm8, zmmword ptr [r8+rdx-0x20]
|
|
vinserti32x4 zmm8, zmm8, xmmword ptr [r9+rdx-0x2*0x10], 0x01
|
|
vinserti32x4 zmm8, zmm8, xmmword ptr [r10+rdx-0x2*0x10], 0x02
|
|
vinserti32x4 zmm8, zmm8, xmmword ptr [r11+rdx-0x2*0x10], 0x03
|
|
vmovups zmm9, zmmword ptr [r8+rdx-0x10]
|
|
vinserti32x4 zmm9, zmm9, xmmword ptr [r9+rdx-0x1*0x10], 0x01
|
|
vinserti32x4 zmm9, zmm9, xmmword ptr [r10+rdx-0x1*0x10], 0x02
|
|
vinserti32x4 zmm9, zmm9, xmmword ptr [r11+rdx-0x1*0x10], 0x03
|
|
vshufps zmm6, zmm8, zmm9, 136
|
|
vshufps zmm7, zmm8, zmm9, 221
|
|
vpshufd zmm6, zmm6, 0x93
|
|
vpshufd zmm7, zmm7, 0x93
|
|
mov al, 7
|
|
9:
|
|
vpaddd zmm0, zmm0, zmm4
|
|
vpaddd zmm0, zmm0, zmm1
|
|
vpxord zmm3, zmm3, zmm0
|
|
vprord zmm3, zmm3, 16
|
|
vpaddd zmm2, zmm2, zmm3
|
|
vpxord zmm1, zmm1, zmm2
|
|
vprord zmm1, zmm1, 12
|
|
vpaddd zmm0, zmm0, zmm5
|
|
vpaddd zmm0, zmm0, zmm1
|
|
vpxord zmm3, zmm3, zmm0
|
|
vprord zmm3, zmm3, 8
|
|
vpaddd zmm2, zmm2, zmm3
|
|
vpxord zmm1, zmm1, zmm2
|
|
vprord zmm1, zmm1, 7
|
|
vpshufd zmm0, zmm0, 0x93
|
|
vpshufd zmm3, zmm3, 0x4E
|
|
vpshufd zmm2, zmm2, 0x39
|
|
vpaddd zmm0, zmm0, zmm6
|
|
vpaddd zmm0, zmm0, zmm1
|
|
vpxord zmm3, zmm3, zmm0
|
|
vprord zmm3, zmm3, 16
|
|
vpaddd zmm2, zmm2, zmm3
|
|
vpxord zmm1, zmm1, zmm2
|
|
vprord zmm1, zmm1, 12
|
|
vpaddd zmm0, zmm0, zmm7
|
|
vpaddd zmm0, zmm0, zmm1
|
|
vpxord zmm3, zmm3, zmm0
|
|
vprord zmm3, zmm3, 8
|
|
vpaddd zmm2, zmm2, zmm3
|
|
vpxord zmm1, zmm1, zmm2
|
|
vprord zmm1, zmm1, 7
|
|
vpshufd zmm0, zmm0, 0x39
|
|
vpshufd zmm3, zmm3, 0x4E
|
|
vpshufd zmm2, zmm2, 0x93
|
|
dec al
|
|
jz 9f
|
|
vshufps zmm8, zmm4, zmm5, 214
|
|
vpshufd zmm9, zmm4, 0x0F
|
|
vpshufd zmm4, zmm8, 0x39
|
|
vshufps zmm8, zmm6, zmm7, 250
|
|
vpblendmd zmm9 {k3}, zmm9, zmm8
|
|
vpunpcklqdq zmm8, zmm7, zmm5
|
|
vpblendmd zmm8 {k4}, zmm8, zmm6
|
|
vpshufd zmm8, zmm8, 0x78
|
|
vpunpckhdq zmm5, zmm5, zmm7
|
|
vpunpckldq zmm6, zmm6, zmm5
|
|
vpshufd zmm7, zmm6, 0x1E
|
|
vmovdqa32 zmm5, zmm9
|
|
vmovdqa32 zmm6, zmm8
|
|
jmp 9b
|
|
9:
|
|
vpxord zmm0, zmm0, zmm2
|
|
vpxord zmm1, zmm1, zmm3
|
|
mov eax, r13d
|
|
cmp rdx, r15
|
|
jne 2b
|
|
vmovdqu xmmword ptr [rbx], xmm0
|
|
vmovdqu xmmword ptr [rbx+0x10], xmm1
|
|
vextracti128 xmmword ptr [rbx+0x20], ymm0, 0x01
|
|
vextracti128 xmmword ptr [rbx+0x30], ymm1, 0x01
|
|
vextracti32x4 xmmword ptr [rbx+0x4*0x10], zmm0, 0x02
|
|
vextracti32x4 xmmword ptr [rbx+0x5*0x10], zmm1, 0x02
|
|
vextracti32x4 xmmword ptr [rbx+0x6*0x10], zmm0, 0x03
|
|
vextracti32x4 xmmword ptr [rbx+0x7*0x10], zmm1, 0x03
|
|
vmovdqa xmm0, xmmword ptr [rsp]
|
|
vmovdqa xmm2, xmmword ptr [rsp+0x40]
|
|
vmovdqa32 xmm0 {k1}, xmmword ptr [rsp+0x1*0x10]
|
|
vmovdqa32 xmm2 {k1}, xmmword ptr [rsp+0x5*0x10]
|
|
vmovdqa xmmword ptr [rsp], xmm0
|
|
vmovdqa xmmword ptr [rsp+0x40], xmm2
|
|
add rbx, 128
|
|
add rdi, 32
|
|
sub rsi, 4
|
|
3:
|
|
test esi, 0x2
|
|
je 3f
|
|
vbroadcasti128 ymm0, xmmword ptr [rcx]
|
|
vbroadcasti128 ymm1, xmmword ptr [rcx+0x10]
|
|
vmovd xmm13, dword ptr [rsp]
|
|
vpinsrd xmm13, xmm13, dword ptr [rsp+0x40], 1
|
|
vpinsrd xmm13, xmm13, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
|
|
vmovd xmm14, dword ptr [rsp+0x4]
|
|
vpinsrd xmm14, xmm14, dword ptr [rsp+0x44], 1
|
|
vpinsrd xmm14, xmm14, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
|
|
vinserti128 ymm13, ymm13, xmm14, 0x01
|
|
mov r8, qword ptr [rdi]
|
|
mov r9, qword ptr [rdi+0x8]
|
|
movzx eax, byte ptr [rbp+0x40]
|
|
or eax, r13d
|
|
xor edx, edx
|
|
.p2align 5
|
|
2:
|
|
mov r14d, eax
|
|
or eax, r12d
|
|
add rdx, 64
|
|
cmp rdx, r15
|
|
cmovne eax, r14d
|
|
mov dword ptr [rsp+0x88], eax
|
|
vbroadcasti128 ymm2, xmmword ptr [BLAKE3_IV+rip]
|
|
vpbroadcastd ymm8, dword ptr [rsp+0x88]
|
|
vpblendd ymm3, ymm13, ymm8, 0x88
|
|
vmovups ymm8, ymmword ptr [r8+rdx-0x40]
|
|
vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-0x40], 0x01
|
|
vmovups ymm9, ymmword ptr [r8+rdx-0x30]
|
|
vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-0x30], 0x01
|
|
vshufps ymm4, ymm8, ymm9, 136
|
|
vshufps ymm5, ymm8, ymm9, 221
|
|
vmovups ymm8, ymmword ptr [r8+rdx-0x20]
|
|
vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-0x20], 0x01
|
|
vmovups ymm9, ymmword ptr [r8+rdx-0x10]
|
|
vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-0x10], 0x01
|
|
vshufps ymm6, ymm8, ymm9, 136
|
|
vshufps ymm7, ymm8, ymm9, 221
|
|
vpshufd ymm6, ymm6, 0x93
|
|
vpshufd ymm7, ymm7, 0x93
|
|
mov al, 7
|
|
9:
|
|
vpaddd ymm0, ymm0, ymm4
|
|
vpaddd ymm0, ymm0, ymm1
|
|
vpxord ymm3, ymm3, ymm0
|
|
vprord ymm3, ymm3, 16
|
|
vpaddd ymm2, ymm2, ymm3
|
|
vpxord ymm1, ymm1, ymm2
|
|
vprord ymm1, ymm1, 12
|
|
vpaddd ymm0, ymm0, ymm5
|
|
vpaddd ymm0, ymm0, ymm1
|
|
vpxord ymm3, ymm3, ymm0
|
|
vprord ymm3, ymm3, 8
|
|
vpaddd ymm2, ymm2, ymm3
|
|
vpxord ymm1, ymm1, ymm2
|
|
vprord ymm1, ymm1, 7
|
|
vpshufd ymm0, ymm0, 0x93
|
|
vpshufd ymm3, ymm3, 0x4E
|
|
vpshufd ymm2, ymm2, 0x39
|
|
vpaddd ymm0, ymm0, ymm6
|
|
vpaddd ymm0, ymm0, ymm1
|
|
vpxord ymm3, ymm3, ymm0
|
|
vprord ymm3, ymm3, 16
|
|
vpaddd ymm2, ymm2, ymm3
|
|
vpxord ymm1, ymm1, ymm2
|
|
vprord ymm1, ymm1, 12
|
|
vpaddd ymm0, ymm0, ymm7
|
|
vpaddd ymm0, ymm0, ymm1
|
|
vpxord ymm3, ymm3, ymm0
|
|
vprord ymm3, ymm3, 8
|
|
vpaddd ymm2, ymm2, ymm3
|
|
vpxord ymm1, ymm1, ymm2
|
|
vprord ymm1, ymm1, 7
|
|
vpshufd ymm0, ymm0, 0x39
|
|
vpshufd ymm3, ymm3, 0x4E
|
|
vpshufd ymm2, ymm2, 0x93
|
|
dec al
|
|
jz 9f
|
|
vshufps ymm8, ymm4, ymm5, 214
|
|
vpshufd ymm9, ymm4, 0x0F
|
|
vpshufd ymm4, ymm8, 0x39
|
|
vshufps ymm8, ymm6, ymm7, 250
|
|
vpblendd ymm9, ymm9, ymm8, 0xAA
|
|
vpunpcklqdq ymm8, ymm7, ymm5
|
|
vpblendd ymm8, ymm8, ymm6, 0x88
|
|
vpshufd ymm8, ymm8, 0x78
|
|
vpunpckhdq ymm5, ymm5, ymm7
|
|
vpunpckldq ymm6, ymm6, ymm5
|
|
vpshufd ymm7, ymm6, 0x1E
|
|
vmovdqa ymm5, ymm9
|
|
vmovdqa ymm6, ymm8
|
|
jmp 9b
|
|
9:
|
|
vpxor ymm0, ymm0, ymm2
|
|
vpxor ymm1, ymm1, ymm3
|
|
mov eax, r13d
|
|
cmp rdx, r15
|
|
jne 2b
|
|
vmovdqu xmmword ptr [rbx], xmm0
|
|
vmovdqu xmmword ptr [rbx+0x10], xmm1
|
|
vextracti128 xmmword ptr [rbx+0x20], ymm0, 0x01
|
|
vextracti128 xmmword ptr [rbx+0x30], ymm1, 0x01
|
|
vmovdqa xmm0, xmmword ptr [rsp]
|
|
vmovdqa xmm2, xmmword ptr [rsp+0x4*0x10]
|
|
vmovdqu32 xmm0 {k1}, xmmword ptr [rsp+0x8]
|
|
vmovdqu32 xmm2 {k1}, xmmword ptr [rsp+0x48]
|
|
vmovdqa xmmword ptr [rsp], xmm0
|
|
vmovdqa xmmword ptr [rsp+0x4*0x10], xmm2
|
|
add rbx, 64
|
|
add rdi, 16
|
|
sub rsi, 2
|
|
3:
|
|
test esi, 0x1
|
|
je 4b
|
|
vmovdqu xmm0, xmmword ptr [rcx]
|
|
vmovdqu xmm1, xmmword ptr [rcx+0x10]
|
|
vmovd xmm14, dword ptr [rsp]
|
|
vpinsrd xmm14, xmm14, dword ptr [rsp+0x40], 1
|
|
vpinsrd xmm14, xmm14, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
|
|
vmovdqa xmm15, xmmword ptr [BLAKE3_IV+rip]
|
|
mov r8, qword ptr [rdi]
|
|
movzx eax, byte ptr [rbp+0x40]
|
|
or eax, r13d
|
|
xor edx, edx
|
|
.p2align 5
|
|
2:
|
|
mov r14d, eax
|
|
or eax, r12d
|
|
add rdx, 64
|
|
cmp rdx, r15
|
|
cmovne eax, r14d
|
|
vpinsrd xmm3, xmm14, eax, 3
|
|
vmovdqa xmm2, xmm15
|
|
vmovups xmm8, xmmword ptr [r8+rdx-0x40]
|
|
vmovups xmm9, xmmword ptr [r8+rdx-0x30]
|
|
vshufps xmm4, xmm8, xmm9, 136
|
|
vshufps xmm5, xmm8, xmm9, 221
|
|
vmovups xmm8, xmmword ptr [r8+rdx-0x20]
|
|
vmovups xmm9, xmmword ptr [r8+rdx-0x10]
|
|
vshufps xmm6, xmm8, xmm9, 136
|
|
vshufps xmm7, xmm8, xmm9, 221
|
|
vpshufd xmm6, xmm6, 0x93
|
|
vpshufd xmm7, xmm7, 0x93
|
|
mov al, 7
|
|
9:
|
|
vpaddd xmm0, xmm0, xmm4
|
|
vpaddd xmm0, xmm0, xmm1
|
|
vpxord xmm3, xmm3, xmm0
|
|
vprord xmm3, xmm3, 16
|
|
vpaddd xmm2, xmm2, xmm3
|
|
vpxord xmm1, xmm1, xmm2
|
|
vprord xmm1, xmm1, 12
|
|
vpaddd xmm0, xmm0, xmm5
|
|
vpaddd xmm0, xmm0, xmm1
|
|
vpxord xmm3, xmm3, xmm0
|
|
vprord xmm3, xmm3, 8
|
|
vpaddd xmm2, xmm2, xmm3
|
|
vpxord xmm1, xmm1, xmm2
|
|
vprord xmm1, xmm1, 7
|
|
vpshufd xmm0, xmm0, 0x93
|
|
vpshufd xmm3, xmm3, 0x4E
|
|
vpshufd xmm2, xmm2, 0x39
|
|
vpaddd xmm0, xmm0, xmm6
|
|
vpaddd xmm0, xmm0, xmm1
|
|
vpxord xmm3, xmm3, xmm0
|
|
vprord xmm3, xmm3, 16
|
|
vpaddd xmm2, xmm2, xmm3
|
|
vpxord xmm1, xmm1, xmm2
|
|
vprord xmm1, xmm1, 12
|
|
vpaddd xmm0, xmm0, xmm7
|
|
vpaddd xmm0, xmm0, xmm1
|
|
vpxord xmm3, xmm3, xmm0
|
|
vprord xmm3, xmm3, 8
|
|
vpaddd xmm2, xmm2, xmm3
|
|
vpxord xmm1, xmm1, xmm2
|
|
vprord xmm1, xmm1, 7
|
|
vpshufd xmm0, xmm0, 0x39
|
|
vpshufd xmm3, xmm3, 0x4E
|
|
vpshufd xmm2, xmm2, 0x93
|
|
dec al
|
|
jz 9f
|
|
vshufps xmm8, xmm4, xmm5, 214
|
|
vpshufd xmm9, xmm4, 0x0F
|
|
vpshufd xmm4, xmm8, 0x39
|
|
vshufps xmm8, xmm6, xmm7, 250
|
|
vpblendd xmm9, xmm9, xmm8, 0xAA
|
|
vpunpcklqdq xmm8, xmm7, xmm5
|
|
vpblendd xmm8, xmm8, xmm6, 0x88
|
|
vpshufd xmm8, xmm8, 0x78
|
|
vpunpckhdq xmm5, xmm5, xmm7
|
|
vpunpckldq xmm6, xmm6, xmm5
|
|
vpshufd xmm7, xmm6, 0x1E
|
|
vmovdqa xmm5, xmm9
|
|
vmovdqa xmm6, xmm8
|
|
jmp 9b
|
|
9:
|
|
vpxor xmm0, xmm0, xmm2
|
|
vpxor xmm1, xmm1, xmm3
|
|
mov eax, r13d
|
|
cmp rdx, r15
|
|
jne 2b
|
|
vmovdqu xmmword ptr [rbx], xmm0
|
|
vmovdqu xmmword ptr [rbx+0x10], xmm1
|
|
jmp 4b
|
|
.p2align 6
|
|
zfs_blake3_compress_in_place_avx512:
|
|
ENDBR
|
|
vmovdqu xmm0, xmmword ptr [rdi]
|
|
vmovdqu xmm1, xmmword ptr [rdi+0x10]
|
|
movzx eax, r8b
|
|
movzx edx, dl
|
|
shl rax, 32
|
|
add rdx, rax
|
|
vmovq xmm3, rcx
|
|
vmovq xmm4, rdx
|
|
vpunpcklqdq xmm3, xmm3, xmm4
|
|
vmovaps xmm2, xmmword ptr [BLAKE3_IV+rip]
|
|
vmovups xmm8, xmmword ptr [rsi]
|
|
vmovups xmm9, xmmword ptr [rsi+0x10]
|
|
vshufps xmm4, xmm8, xmm9, 136
|
|
vshufps xmm5, xmm8, xmm9, 221
|
|
vmovups xmm8, xmmword ptr [rsi+0x20]
|
|
vmovups xmm9, xmmword ptr [rsi+0x30]
|
|
vshufps xmm6, xmm8, xmm9, 136
|
|
vshufps xmm7, xmm8, xmm9, 221
|
|
vpshufd xmm6, xmm6, 0x93
|
|
vpshufd xmm7, xmm7, 0x93
|
|
mov al, 7
|
|
9:
|
|
vpaddd xmm0, xmm0, xmm4
|
|
vpaddd xmm0, xmm0, xmm1
|
|
vpxord xmm3, xmm3, xmm0
|
|
vprord xmm3, xmm3, 16
|
|
vpaddd xmm2, xmm2, xmm3
|
|
vpxord xmm1, xmm1, xmm2
|
|
vprord xmm1, xmm1, 12
|
|
vpaddd xmm0, xmm0, xmm5
|
|
vpaddd xmm0, xmm0, xmm1
|
|
vpxord xmm3, xmm3, xmm0
|
|
vprord xmm3, xmm3, 8
|
|
vpaddd xmm2, xmm2, xmm3
|
|
vpxord xmm1, xmm1, xmm2
|
|
vprord xmm1, xmm1, 7
|
|
vpshufd xmm0, xmm0, 0x93
|
|
vpshufd xmm3, xmm3, 0x4E
|
|
vpshufd xmm2, xmm2, 0x39
|
|
vpaddd xmm0, xmm0, xmm6
|
|
vpaddd xmm0, xmm0, xmm1
|
|
vpxord xmm3, xmm3, xmm0
|
|
vprord xmm3, xmm3, 16
|
|
vpaddd xmm2, xmm2, xmm3
|
|
vpxord xmm1, xmm1, xmm2
|
|
vprord xmm1, xmm1, 12
|
|
vpaddd xmm0, xmm0, xmm7
|
|
vpaddd xmm0, xmm0, xmm1
|
|
vpxord xmm3, xmm3, xmm0
|
|
vprord xmm3, xmm3, 8
|
|
vpaddd xmm2, xmm2, xmm3
|
|
vpxord xmm1, xmm1, xmm2
|
|
vprord xmm1, xmm1, 7
|
|
vpshufd xmm0, xmm0, 0x39
|
|
vpshufd xmm3, xmm3, 0x4E
|
|
vpshufd xmm2, xmm2, 0x93
|
|
dec al
|
|
jz 9f
|
|
vshufps xmm8, xmm4, xmm5, 214
|
|
vpshufd xmm9, xmm4, 0x0F
|
|
vpshufd xmm4, xmm8, 0x39
|
|
vshufps xmm8, xmm6, xmm7, 250
|
|
vpblendd xmm9, xmm9, xmm8, 0xAA
|
|
vpunpcklqdq xmm8, xmm7, xmm5
|
|
vpblendd xmm8, xmm8, xmm6, 0x88
|
|
vpshufd xmm8, xmm8, 0x78
|
|
vpunpckhdq xmm5, xmm5, xmm7
|
|
vpunpckldq xmm6, xmm6, xmm5
|
|
vpshufd xmm7, xmm6, 0x1E
|
|
vmovdqa xmm5, xmm9
|
|
vmovdqa xmm6, xmm8
|
|
jmp 9b
|
|
9:
|
|
vpxor xmm0, xmm0, xmm2
|
|
vpxor xmm1, xmm1, xmm3
|
|
vmovdqu xmmword ptr [rdi], xmm0
|
|
vmovdqu xmmword ptr [rdi+0x10], xmm1
|
|
RET
|
|
|
|
.p2align 6
|
|
zfs_blake3_compress_xof_avx512:
|
|
ENDBR
|
|
vmovdqu xmm0, xmmword ptr [rdi]
|
|
vmovdqu xmm1, xmmword ptr [rdi+0x10]
|
|
movzx eax, r8b
|
|
movzx edx, dl
|
|
shl rax, 32
|
|
add rdx, rax
|
|
vmovq xmm3, rcx
|
|
vmovq xmm4, rdx
|
|
vpunpcklqdq xmm3, xmm3, xmm4
|
|
vmovaps xmm2, xmmword ptr [BLAKE3_IV+rip]
|
|
vmovups xmm8, xmmword ptr [rsi]
|
|
vmovups xmm9, xmmword ptr [rsi+0x10]
|
|
vshufps xmm4, xmm8, xmm9, 136
|
|
vshufps xmm5, xmm8, xmm9, 221
|
|
vmovups xmm8, xmmword ptr [rsi+0x20]
|
|
vmovups xmm9, xmmword ptr [rsi+0x30]
|
|
vshufps xmm6, xmm8, xmm9, 136
|
|
vshufps xmm7, xmm8, xmm9, 221
|
|
vpshufd xmm6, xmm6, 0x93
|
|
vpshufd xmm7, xmm7, 0x93
|
|
mov al, 7
|
|
9:
|
|
vpaddd xmm0, xmm0, xmm4
|
|
vpaddd xmm0, xmm0, xmm1
|
|
vpxord xmm3, xmm3, xmm0
|
|
vprord xmm3, xmm3, 16
|
|
vpaddd xmm2, xmm2, xmm3
|
|
vpxord xmm1, xmm1, xmm2
|
|
vprord xmm1, xmm1, 12
|
|
vpaddd xmm0, xmm0, xmm5
|
|
vpaddd xmm0, xmm0, xmm1
|
|
vpxord xmm3, xmm3, xmm0
|
|
vprord xmm3, xmm3, 8
|
|
vpaddd xmm2, xmm2, xmm3
|
|
vpxord xmm1, xmm1, xmm2
|
|
vprord xmm1, xmm1, 7
|
|
vpshufd xmm0, xmm0, 0x93
|
|
vpshufd xmm3, xmm3, 0x4E
|
|
vpshufd xmm2, xmm2, 0x39
|
|
vpaddd xmm0, xmm0, xmm6
|
|
vpaddd xmm0, xmm0, xmm1
|
|
vpxord xmm3, xmm3, xmm0
|
|
vprord xmm3, xmm3, 16
|
|
vpaddd xmm2, xmm2, xmm3
|
|
vpxord xmm1, xmm1, xmm2
|
|
vprord xmm1, xmm1, 12
|
|
vpaddd xmm0, xmm0, xmm7
|
|
vpaddd xmm0, xmm0, xmm1
|
|
vpxord xmm3, xmm3, xmm0
|
|
vprord xmm3, xmm3, 8
|
|
vpaddd xmm2, xmm2, xmm3
|
|
vpxord xmm1, xmm1, xmm2
|
|
vprord xmm1, xmm1, 7
|
|
vpshufd xmm0, xmm0, 0x39
|
|
vpshufd xmm3, xmm3, 0x4E
|
|
vpshufd xmm2, xmm2, 0x93
|
|
dec al
|
|
jz 9f
|
|
vshufps xmm8, xmm4, xmm5, 214
|
|
vpshufd xmm9, xmm4, 0x0F
|
|
vpshufd xmm4, xmm8, 0x39
|
|
vshufps xmm8, xmm6, xmm7, 250
|
|
vpblendd xmm9, xmm9, xmm8, 0xAA
|
|
vpunpcklqdq xmm8, xmm7, xmm5
|
|
vpblendd xmm8, xmm8, xmm6, 0x88
|
|
vpshufd xmm8, xmm8, 0x78
|
|
vpunpckhdq xmm5, xmm5, xmm7
|
|
vpunpckldq xmm6, xmm6, xmm5
|
|
vpshufd xmm7, xmm6, 0x1E
|
|
vmovdqa xmm5, xmm9
|
|
vmovdqa xmm6, xmm8
|
|
jmp 9b
|
|
9:
|
|
vpxor xmm0, xmm0, xmm2
|
|
vpxor xmm1, xmm1, xmm3
|
|
vpxor xmm2, xmm2, [rdi]
|
|
vpxor xmm3, xmm3, [rdi+0x10]
|
|
vmovdqu xmmword ptr [r9], xmm0
|
|
vmovdqu xmmword ptr [r9+0x10], xmm1
|
|
vmovdqu xmmword ptr [r9+0x20], xmm2
|
|
vmovdqu xmmword ptr [r9+0x30], xmm3
|
|
RET
|
|
|
|
.size zfs_blake3_hash_many_avx512, . - zfs_blake3_hash_many_avx512
|
|
.size zfs_blake3_compress_in_place_avx512, . - zfs_blake3_compress_in_place_avx512
|
|
.size zfs_blake3_compress_xof_avx512, . - zfs_blake3_compress_xof_avx512
|
|
|
|
#ifdef __APPLE__
|
|
.static_data
|
|
#else
|
|
.section .rodata
|
|
#endif
|
|
|
|
.p2align 6
|
|
INDEX0:
|
|
.long 0, 1, 2, 3, 16, 17, 18, 19
|
|
.long 8, 9, 10, 11, 24, 25, 26, 27
|
|
INDEX1:
|
|
.long 4, 5, 6, 7, 20, 21, 22, 23
|
|
.long 12, 13, 14, 15, 28, 29, 30, 31
|
|
ADD0:
|
|
.long 0, 1, 2, 3, 4, 5, 6, 7
|
|
.long 8, 9, 10, 11, 12, 13, 14, 15
|
|
ADD1: .long 1
|
|
|
|
ADD16: .long 16
|
|
BLAKE3_BLOCK_LEN:
|
|
.long 64
|
|
.p2align 6
|
|
BLAKE3_IV:
|
|
BLAKE3_IV_0:
|
|
.long 0x6A09E667
|
|
BLAKE3_IV_1:
|
|
.long 0xBB67AE85
|
|
BLAKE3_IV_2:
|
|
.long 0x3C6EF372
|
|
BLAKE3_IV_3:
|
|
.long 0xA54FF53A
|
|
|
|
#endif /* HAVE_AVX512 */
|
|
|
|
#ifdef __ELF__
|
|
.section .note.GNU-stack,"",%progbits
|
|
#endif
|