mirror of https://github.com/BLAKE3-team/BLAKE3
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2586 lines
87 KiB
ArmAsm
2586 lines
87 KiB
ArmAsm
#if defined(__ELF__) && defined(__linux__)
|
|
.section .note.GNU-stack,"",%progbits
|
|
#endif
|
|
|
|
#if defined(__ELF__) && defined(__CET__) && defined(__has_include)
|
|
#if __has_include(<cet.h>)
|
|
#include <cet.h>
|
|
#endif
|
|
#endif
|
|
|
|
#if !defined(_CET_ENDBR)
|
|
#define _CET_ENDBR
|
|
#endif
|
|
|
|
.intel_syntax noprefix
|
|
.global _blake3_hash_many_avx512
|
|
.global blake3_hash_many_avx512
|
|
.global blake3_compress_in_place_avx512
|
|
.global _blake3_compress_in_place_avx512
|
|
.global blake3_compress_xof_avx512
|
|
.global _blake3_compress_xof_avx512
|
|
|
|
#ifdef __APPLE__
|
|
.text
|
|
#else
|
|
.section .text
|
|
#endif
|
|
.p2align 6
|
|
_blake3_hash_many_avx512:
|
|
blake3_hash_many_avx512:
|
|
_CET_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]
|
|
vinserti64x4 zmm16, zmm16, ymmword ptr [rdx+r12-0x2*0x20], 0x01
|
|
vmovdqu32 ymm17, ymmword ptr [rdx+r9-0x2*0x20]
|
|
vinserti64x4 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]
|
|
vinserti64x4 zmm18, zmm18, ymmword ptr [rdx+r14-0x2*0x20], 0x01
|
|
vmovdqu32 ymm19, ymmword ptr [rdx+r11-0x2*0x20]
|
|
vinserti64x4 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]
|
|
vinserti64x4 zmm16, zmm16, ymmword ptr [rdx+r12-0x2*0x20], 0x01
|
|
vmovdqu32 ymm17, ymmword ptr [rdx+r9-0x2*0x20]
|
|
vinserti64x4 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]
|
|
vinserti64x4 zmm18, zmm18, ymmword ptr [rdx+r14-0x2*0x20], 0x01
|
|
vmovdqu32 ymm19, ymmword ptr [rdx+r11-0x2*0x20]
|
|
vinserti64x4 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]
|
|
vinserti64x4 zmm24, zmm24, ymmword ptr [r12+rdx-0x1*0x20], 0x01
|
|
vmovdqu32 ymm25, ymmword ptr [r9+rdx-0x1*0x20]
|
|
vinserti64x4 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]
|
|
vinserti64x4 zmm24, zmm24, ymmword ptr [r14+rdx-0x1*0x20], 0x01
|
|
vmovdqu32 ymm25, ymmword ptr [r11+rdx-0x1*0x20]
|
|
vinserti64x4 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]
|
|
vinserti64x4 zmm24, zmm24, ymmword ptr [r12+rdx-0x1*0x20], 0x01
|
|
vmovdqu32 ymm25, ymmword ptr [r9+rdx-0x1*0x20]
|
|
vinserti64x4 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]
|
|
vinserti64x4 zmm24, zmm24, ymmword ptr [r14+rdx-0x1*0x20], 0x01
|
|
vmovdqu32 ymm25, ymmword ptr [r11+rdx-0x1*0x20]
|
|
vinserti64x4 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
|
|