SHA-512 AVX2: use register for wk other than rsp

Valgrind thinks that stack values are uninitialised when the stack
pointer is added to.
The asm code was moving rsp around rather than use another register.
Put length to hash onto stack and use that register instead.
This commit is contained in:
Sean Parkinson
2020-11-04 12:02:34 +10:00
parent f8176dd646
commit 235ea98b90

View File

@@ -6431,6 +6431,7 @@ _Transform_Sha512_AVX2_Len:
subl $0x80, %ebp subl $0x80, %ebp
jz L_sha512_len_avx2_done jz L_sha512_len_avx2_done
L_sha512_len_avx2_block: L_sha512_len_avx2_block:
subq $0x548, %rsp
movq 224(%rdi), %rcx movq 224(%rdi), %rcx
vmovdqa L_avx2_sha512_flip_mask(%rip), %ymm15 vmovdqa L_avx2_sha512_flip_mask(%rip), %ymm15
movq (%rdi), %r8 movq (%rdi), %r8
@@ -6441,9 +6442,10 @@ L_sha512_len_avx2_block:
movq 40(%rdi), %r13 movq 40(%rdi), %r13
movq 48(%rdi), %r14 movq 48(%rdi), %r14
movq 56(%rdi), %r15 movq 56(%rdi), %r15
movq %rbp, 1344(%rsp)
# Start of loop processing two blocks # Start of loop processing two blocks
L_sha512_len_avx2_begin: L_sha512_len_avx2_begin:
subq $0x540, %rsp movq %rsp, %rbp
leaq L_avx2_sha512_k_2(%rip), %rsi leaq L_avx2_sha512_k_2(%rip), %rsi
movq %r9, %rbx movq %r9, %rbx
movq %r12, %rax movq %r12, %rax
@@ -6476,27 +6478,27 @@ L_sha512_len_avx2_begin:
L_sha512_len_avx2_start: L_sha512_len_avx2_start:
vpaddq (%rsi), %ymm0, %ymm8 vpaddq (%rsi), %ymm0, %ymm8
vpaddq 32(%rsi), %ymm1, %ymm9 vpaddq 32(%rsi), %ymm1, %ymm9
vmovdqu %ymm8, (%rsp) vmovdqu %ymm8, (%rbp)
vmovdqu %ymm9, 32(%rsp) vmovdqu %ymm9, 32(%rbp)
vpaddq 64(%rsi), %ymm2, %ymm8 vpaddq 64(%rsi), %ymm2, %ymm8
vpaddq 96(%rsi), %ymm3, %ymm9 vpaddq 96(%rsi), %ymm3, %ymm9
vmovdqu %ymm8, 64(%rsp) vmovdqu %ymm8, 64(%rbp)
vmovdqu %ymm9, 96(%rsp) vmovdqu %ymm9, 96(%rbp)
vpaddq 128(%rsi), %ymm4, %ymm8 vpaddq 128(%rsi), %ymm4, %ymm8
vpaddq 160(%rsi), %ymm5, %ymm9 vpaddq 160(%rsi), %ymm5, %ymm9
vmovdqu %ymm8, 128(%rsp) vmovdqu %ymm8, 128(%rbp)
vmovdqu %ymm9, 160(%rsp) vmovdqu %ymm9, 160(%rbp)
vpaddq 192(%rsi), %ymm6, %ymm8 vpaddq 192(%rsi), %ymm6, %ymm8
vpaddq 224(%rsi), %ymm7, %ymm9 vpaddq 224(%rsi), %ymm7, %ymm9
vmovdqu %ymm8, 192(%rsp) vmovdqu %ymm8, 192(%rbp)
vmovdqu %ymm9, 224(%rsp) vmovdqu %ymm9, 224(%rbp)
# msg_sched: 0-1 # msg_sched: 0-1
rorq $23, %rax rorq $23, %rax
vpalignr $8, %ymm0, %ymm1, %ymm12 vpalignr $8, %ymm0, %ymm1, %ymm12
vpalignr $8, %ymm4, %ymm5, %ymm13 vpalignr $8, %ymm4, %ymm5, %ymm13
movq %r8, %rdx movq %r8, %rdx
movq %r13, %rcx movq %r13, %rcx
addq (%rsp), %r15 addq (%rbp), %r15
xorq %r14, %rcx xorq %r14, %rcx
vpsrlq $0x01, %ymm12, %ymm8 vpsrlq $0x01, %ymm12, %ymm8
vpsllq $63, %ymm12, %ymm9 vpsllq $63, %ymm12, %ymm9
@@ -6533,7 +6535,7 @@ L_sha512_len_avx2_start:
vpaddq %ymm0, %ymm8, %ymm0 vpaddq %ymm0, %ymm8, %ymm0
movq %r15, %rbx movq %r15, %rbx
movq %r12, %rcx movq %r12, %rcx
addq 8(%rsp), %r14 addq 8(%rbp), %r14
xorq %r13, %rcx xorq %r13, %rcx
vpsrlq $19, %ymm7, %ymm8 vpsrlq $19, %ymm7, %ymm8
vpsllq $45, %ymm7, %ymm9 vpsllq $45, %ymm7, %ymm9
@@ -6573,7 +6575,7 @@ L_sha512_len_avx2_start:
vpalignr $8, %ymm5, %ymm6, %ymm13 vpalignr $8, %ymm5, %ymm6, %ymm13
movq %r14, %rdx movq %r14, %rdx
movq %r11, %rcx movq %r11, %rcx
addq 32(%rsp), %r13 addq 32(%rbp), %r13
xorq %r12, %rcx xorq %r12, %rcx
vpsrlq $0x01, %ymm12, %ymm8 vpsrlq $0x01, %ymm12, %ymm8
vpsllq $63, %ymm12, %ymm9 vpsllq $63, %ymm12, %ymm9
@@ -6610,7 +6612,7 @@ L_sha512_len_avx2_start:
vpaddq %ymm1, %ymm8, %ymm1 vpaddq %ymm1, %ymm8, %ymm1
movq %r13, %rbx movq %r13, %rbx
movq %r10, %rcx movq %r10, %rcx
addq 40(%rsp), %r12 addq 40(%rbp), %r12
xorq %r11, %rcx xorq %r11, %rcx
vpsrlq $19, %ymm0, %ymm8 vpsrlq $19, %ymm0, %ymm8
vpsllq $45, %ymm0, %ymm9 vpsllq $45, %ymm0, %ymm9
@@ -6650,7 +6652,7 @@ L_sha512_len_avx2_start:
vpalignr $8, %ymm6, %ymm7, %ymm13 vpalignr $8, %ymm6, %ymm7, %ymm13
movq %r12, %rdx movq %r12, %rdx
movq %r9, %rcx movq %r9, %rcx
addq 64(%rsp), %r11 addq 64(%rbp), %r11
xorq %r10, %rcx xorq %r10, %rcx
vpsrlq $0x01, %ymm12, %ymm8 vpsrlq $0x01, %ymm12, %ymm8
vpsllq $63, %ymm12, %ymm9 vpsllq $63, %ymm12, %ymm9
@@ -6687,7 +6689,7 @@ L_sha512_len_avx2_start:
vpaddq %ymm2, %ymm8, %ymm2 vpaddq %ymm2, %ymm8, %ymm2
movq %r11, %rbx movq %r11, %rbx
movq %r8, %rcx movq %r8, %rcx
addq 72(%rsp), %r10 addq 72(%rbp), %r10
xorq %r9, %rcx xorq %r9, %rcx
vpsrlq $19, %ymm1, %ymm8 vpsrlq $19, %ymm1, %ymm8
vpsllq $45, %ymm1, %ymm9 vpsllq $45, %ymm1, %ymm9
@@ -6727,7 +6729,7 @@ L_sha512_len_avx2_start:
vpalignr $8, %ymm7, %ymm0, %ymm13 vpalignr $8, %ymm7, %ymm0, %ymm13
movq %r10, %rdx movq %r10, %rdx
movq %r15, %rcx movq %r15, %rcx
addq 96(%rsp), %r9 addq 96(%rbp), %r9
xorq %r8, %rcx xorq %r8, %rcx
vpsrlq $0x01, %ymm12, %ymm8 vpsrlq $0x01, %ymm12, %ymm8
vpsllq $63, %ymm12, %ymm9 vpsllq $63, %ymm12, %ymm9
@@ -6764,7 +6766,7 @@ L_sha512_len_avx2_start:
vpaddq %ymm3, %ymm8, %ymm3 vpaddq %ymm3, %ymm8, %ymm3
movq %r9, %rbx movq %r9, %rbx
movq %r14, %rcx movq %r14, %rcx
addq 104(%rsp), %r8 addq 104(%rbp), %r8
xorq %r15, %rcx xorq %r15, %rcx
vpsrlq $19, %ymm2, %ymm8 vpsrlq $19, %ymm2, %ymm8
vpsllq $45, %ymm2, %ymm9 vpsllq $45, %ymm2, %ymm9
@@ -6804,7 +6806,7 @@ L_sha512_len_avx2_start:
vpalignr $8, %ymm0, %ymm1, %ymm13 vpalignr $8, %ymm0, %ymm1, %ymm13
movq %r8, %rdx movq %r8, %rdx
movq %r13, %rcx movq %r13, %rcx
addq 128(%rsp), %r15 addq 128(%rbp), %r15
xorq %r14, %rcx xorq %r14, %rcx
vpsrlq $0x01, %ymm12, %ymm8 vpsrlq $0x01, %ymm12, %ymm8
vpsllq $63, %ymm12, %ymm9 vpsllq $63, %ymm12, %ymm9
@@ -6841,7 +6843,7 @@ L_sha512_len_avx2_start:
vpaddq %ymm4, %ymm8, %ymm4 vpaddq %ymm4, %ymm8, %ymm4
movq %r15, %rbx movq %r15, %rbx
movq %r12, %rcx movq %r12, %rcx
addq 136(%rsp), %r14 addq 136(%rbp), %r14
xorq %r13, %rcx xorq %r13, %rcx
vpsrlq $19, %ymm3, %ymm8 vpsrlq $19, %ymm3, %ymm8
vpsllq $45, %ymm3, %ymm9 vpsllq $45, %ymm3, %ymm9
@@ -6881,7 +6883,7 @@ L_sha512_len_avx2_start:
vpalignr $8, %ymm1, %ymm2, %ymm13 vpalignr $8, %ymm1, %ymm2, %ymm13
movq %r14, %rdx movq %r14, %rdx
movq %r11, %rcx movq %r11, %rcx
addq 160(%rsp), %r13 addq 160(%rbp), %r13
xorq %r12, %rcx xorq %r12, %rcx
vpsrlq $0x01, %ymm12, %ymm8 vpsrlq $0x01, %ymm12, %ymm8
vpsllq $63, %ymm12, %ymm9 vpsllq $63, %ymm12, %ymm9
@@ -6918,7 +6920,7 @@ L_sha512_len_avx2_start:
vpaddq %ymm5, %ymm8, %ymm5 vpaddq %ymm5, %ymm8, %ymm5
movq %r13, %rbx movq %r13, %rbx
movq %r10, %rcx movq %r10, %rcx
addq 168(%rsp), %r12 addq 168(%rbp), %r12
xorq %r11, %rcx xorq %r11, %rcx
vpsrlq $19, %ymm4, %ymm8 vpsrlq $19, %ymm4, %ymm8
vpsllq $45, %ymm4, %ymm9 vpsllq $45, %ymm4, %ymm9
@@ -6958,7 +6960,7 @@ L_sha512_len_avx2_start:
vpalignr $8, %ymm2, %ymm3, %ymm13 vpalignr $8, %ymm2, %ymm3, %ymm13
movq %r12, %rdx movq %r12, %rdx
movq %r9, %rcx movq %r9, %rcx
addq 192(%rsp), %r11 addq 192(%rbp), %r11
xorq %r10, %rcx xorq %r10, %rcx
vpsrlq $0x01, %ymm12, %ymm8 vpsrlq $0x01, %ymm12, %ymm8
vpsllq $63, %ymm12, %ymm9 vpsllq $63, %ymm12, %ymm9
@@ -6995,7 +6997,7 @@ L_sha512_len_avx2_start:
vpaddq %ymm6, %ymm8, %ymm6 vpaddq %ymm6, %ymm8, %ymm6
movq %r11, %rbx movq %r11, %rbx
movq %r8, %rcx movq %r8, %rcx
addq 200(%rsp), %r10 addq 200(%rbp), %r10
xorq %r9, %rcx xorq %r9, %rcx
vpsrlq $19, %ymm5, %ymm8 vpsrlq $19, %ymm5, %ymm8
vpsllq $45, %ymm5, %ymm9 vpsllq $45, %ymm5, %ymm9
@@ -7035,7 +7037,7 @@ L_sha512_len_avx2_start:
vpalignr $8, %ymm3, %ymm4, %ymm13 vpalignr $8, %ymm3, %ymm4, %ymm13
movq %r10, %rdx movq %r10, %rdx
movq %r15, %rcx movq %r15, %rcx
addq 224(%rsp), %r9 addq 224(%rbp), %r9
xorq %r8, %rcx xorq %r8, %rcx
vpsrlq $0x01, %ymm12, %ymm8 vpsrlq $0x01, %ymm12, %ymm8
vpsllq $63, %ymm12, %ymm9 vpsllq $63, %ymm12, %ymm9
@@ -7072,7 +7074,7 @@ L_sha512_len_avx2_start:
vpaddq %ymm7, %ymm8, %ymm7 vpaddq %ymm7, %ymm8, %ymm7
movq %r9, %rbx movq %r9, %rbx
movq %r14, %rcx movq %r14, %rcx
addq 232(%rsp), %r8 addq 232(%rbp), %r8
xorq %r15, %rcx xorq %r15, %rcx
vpsrlq $19, %ymm6, %ymm8 vpsrlq $19, %ymm6, %ymm8
vpsllq $45, %ymm6, %ymm9 vpsllq $45, %ymm6, %ymm9
@@ -7107,29 +7109,29 @@ L_sha512_len_avx2_start:
vpaddq %ymm7, %ymm8, %ymm7 vpaddq %ymm7, %ymm8, %ymm7
# msg_sched done: 28-31 # msg_sched done: 28-31
addq $0x100, %rsi addq $0x100, %rsi
addq $0x100, %rsp addq $0x100, %rbp
cmpq L_avx2_sha512_k_2_end(%rip), %rsi cmpq L_avx2_sha512_k_2_end(%rip), %rsi
jne L_sha512_len_avx2_start jne L_sha512_len_avx2_start
vpaddq (%rsi), %ymm0, %ymm8 vpaddq (%rsi), %ymm0, %ymm8
vpaddq 32(%rsi), %ymm1, %ymm9 vpaddq 32(%rsi), %ymm1, %ymm9
vmovdqu %ymm8, (%rsp) vmovdqu %ymm8, (%rbp)
vmovdqu %ymm9, 32(%rsp) vmovdqu %ymm9, 32(%rbp)
vpaddq 64(%rsi), %ymm2, %ymm8 vpaddq 64(%rsi), %ymm2, %ymm8
vpaddq 96(%rsi), %ymm3, %ymm9 vpaddq 96(%rsi), %ymm3, %ymm9
vmovdqu %ymm8, 64(%rsp) vmovdqu %ymm8, 64(%rbp)
vmovdqu %ymm9, 96(%rsp) vmovdqu %ymm9, 96(%rbp)
vpaddq 128(%rsi), %ymm4, %ymm8 vpaddq 128(%rsi), %ymm4, %ymm8
vpaddq 160(%rsi), %ymm5, %ymm9 vpaddq 160(%rsi), %ymm5, %ymm9
vmovdqu %ymm8, 128(%rsp) vmovdqu %ymm8, 128(%rbp)
vmovdqu %ymm9, 160(%rsp) vmovdqu %ymm9, 160(%rbp)
vpaddq 192(%rsi), %ymm6, %ymm8 vpaddq 192(%rsi), %ymm6, %ymm8
vpaddq 224(%rsi), %ymm7, %ymm9 vpaddq 224(%rsi), %ymm7, %ymm9
vmovdqu %ymm8, 192(%rsp) vmovdqu %ymm8, 192(%rbp)
vmovdqu %ymm9, 224(%rsp) vmovdqu %ymm9, 224(%rbp)
rorq $23, %rax rorq $23, %rax
movq %r8, %rdx movq %r8, %rdx
movq %r13, %rcx movq %r13, %rcx
addq (%rsp), %r15 addq (%rbp), %r15
xorq %r14, %rcx xorq %r14, %rcx
xorq %r12, %rax xorq %r12, %rax
andq %r12, %rcx andq %r12, %rcx
@@ -7155,7 +7157,7 @@ L_sha512_len_avx2_start:
rorq $23, %rax rorq $23, %rax
movq %r15, %rbx movq %r15, %rbx
movq %r12, %rcx movq %r12, %rcx
addq 8(%rsp), %r14 addq 8(%rbp), %r14
xorq %r13, %rcx xorq %r13, %rcx
xorq %r11, %rax xorq %r11, %rax
andq %r11, %rcx andq %r11, %rcx
@@ -7181,7 +7183,7 @@ L_sha512_len_avx2_start:
rorq $23, %rax rorq $23, %rax
movq %r14, %rdx movq %r14, %rdx
movq %r11, %rcx movq %r11, %rcx
addq 32(%rsp), %r13 addq 32(%rbp), %r13
xorq %r12, %rcx xorq %r12, %rcx
xorq %r10, %rax xorq %r10, %rax
andq %r10, %rcx andq %r10, %rcx
@@ -7207,7 +7209,7 @@ L_sha512_len_avx2_start:
rorq $23, %rax rorq $23, %rax
movq %r13, %rbx movq %r13, %rbx
movq %r10, %rcx movq %r10, %rcx
addq 40(%rsp), %r12 addq 40(%rbp), %r12
xorq %r11, %rcx xorq %r11, %rcx
xorq %r9, %rax xorq %r9, %rax
andq %r9, %rcx andq %r9, %rcx
@@ -7233,7 +7235,7 @@ L_sha512_len_avx2_start:
rorq $23, %rax rorq $23, %rax
movq %r12, %rdx movq %r12, %rdx
movq %r9, %rcx movq %r9, %rcx
addq 64(%rsp), %r11 addq 64(%rbp), %r11
xorq %r10, %rcx xorq %r10, %rcx
xorq %r8, %rax xorq %r8, %rax
andq %r8, %rcx andq %r8, %rcx
@@ -7259,7 +7261,7 @@ L_sha512_len_avx2_start:
rorq $23, %rax rorq $23, %rax
movq %r11, %rbx movq %r11, %rbx
movq %r8, %rcx movq %r8, %rcx
addq 72(%rsp), %r10 addq 72(%rbp), %r10
xorq %r9, %rcx xorq %r9, %rcx
xorq %r15, %rax xorq %r15, %rax
andq %r15, %rcx andq %r15, %rcx
@@ -7285,7 +7287,7 @@ L_sha512_len_avx2_start:
rorq $23, %rax rorq $23, %rax
movq %r10, %rdx movq %r10, %rdx
movq %r15, %rcx movq %r15, %rcx
addq 96(%rsp), %r9 addq 96(%rbp), %r9
xorq %r8, %rcx xorq %r8, %rcx
xorq %r14, %rax xorq %r14, %rax
andq %r14, %rcx andq %r14, %rcx
@@ -7311,7 +7313,7 @@ L_sha512_len_avx2_start:
rorq $23, %rax rorq $23, %rax
movq %r9, %rbx movq %r9, %rbx
movq %r14, %rcx movq %r14, %rcx
addq 104(%rsp), %r8 addq 104(%rbp), %r8
xorq %r15, %rcx xorq %r15, %rcx
xorq %r13, %rax xorq %r13, %rax
andq %r13, %rcx andq %r13, %rcx
@@ -7337,7 +7339,7 @@ L_sha512_len_avx2_start:
rorq $23, %rax rorq $23, %rax
movq %r8, %rdx movq %r8, %rdx
movq %r13, %rcx movq %r13, %rcx
addq 128(%rsp), %r15 addq 128(%rbp), %r15
xorq %r14, %rcx xorq %r14, %rcx
xorq %r12, %rax xorq %r12, %rax
andq %r12, %rcx andq %r12, %rcx
@@ -7363,7 +7365,7 @@ L_sha512_len_avx2_start:
rorq $23, %rax rorq $23, %rax
movq %r15, %rbx movq %r15, %rbx
movq %r12, %rcx movq %r12, %rcx
addq 136(%rsp), %r14 addq 136(%rbp), %r14
xorq %r13, %rcx xorq %r13, %rcx
xorq %r11, %rax xorq %r11, %rax
andq %r11, %rcx andq %r11, %rcx
@@ -7389,7 +7391,7 @@ L_sha512_len_avx2_start:
rorq $23, %rax rorq $23, %rax
movq %r14, %rdx movq %r14, %rdx
movq %r11, %rcx movq %r11, %rcx
addq 160(%rsp), %r13 addq 160(%rbp), %r13
xorq %r12, %rcx xorq %r12, %rcx
xorq %r10, %rax xorq %r10, %rax
andq %r10, %rcx andq %r10, %rcx
@@ -7415,7 +7417,7 @@ L_sha512_len_avx2_start:
rorq $23, %rax rorq $23, %rax
movq %r13, %rbx movq %r13, %rbx
movq %r10, %rcx movq %r10, %rcx
addq 168(%rsp), %r12 addq 168(%rbp), %r12
xorq %r11, %rcx xorq %r11, %rcx
xorq %r9, %rax xorq %r9, %rax
andq %r9, %rcx andq %r9, %rcx
@@ -7441,7 +7443,7 @@ L_sha512_len_avx2_start:
rorq $23, %rax rorq $23, %rax
movq %r12, %rdx movq %r12, %rdx
movq %r9, %rcx movq %r9, %rcx
addq 192(%rsp), %r11 addq 192(%rbp), %r11
xorq %r10, %rcx xorq %r10, %rcx
xorq %r8, %rax xorq %r8, %rax
andq %r8, %rcx andq %r8, %rcx
@@ -7467,7 +7469,7 @@ L_sha512_len_avx2_start:
rorq $23, %rax rorq $23, %rax
movq %r11, %rbx movq %r11, %rbx
movq %r8, %rcx movq %r8, %rcx
addq 200(%rsp), %r10 addq 200(%rbp), %r10
xorq %r9, %rcx xorq %r9, %rcx
xorq %r15, %rax xorq %r15, %rax
andq %r15, %rcx andq %r15, %rcx
@@ -7493,7 +7495,7 @@ L_sha512_len_avx2_start:
rorq $23, %rax rorq $23, %rax
movq %r10, %rdx movq %r10, %rdx
movq %r15, %rcx movq %r15, %rcx
addq 224(%rsp), %r9 addq 224(%rbp), %r9
xorq %r8, %rcx xorq %r8, %rcx
xorq %r14, %rax xorq %r14, %rax
andq %r14, %rcx andq %r14, %rcx
@@ -7519,7 +7521,7 @@ L_sha512_len_avx2_start:
rorq $23, %rax rorq $23, %rax
movq %r9, %rbx movq %r9, %rbx
movq %r14, %rcx movq %r14, %rcx
addq 232(%rsp), %r8 addq 232(%rbp), %r8
xorq %r15, %rcx xorq %r15, %rcx
xorq %r13, %rax xorq %r13, %rax
andq %r13, %rcx andq %r13, %rcx
@@ -7542,7 +7544,7 @@ L_sha512_len_avx2_start:
rorq $28, %rcx rorq $28, %rcx
movq %r12, %rax movq %r12, %rax
addq %rcx, %r8 addq %rcx, %r8
subq $0x400, %rsp subq $0x400, %rbp
addq (%rdi), %r8 addq (%rdi), %r8
addq 8(%rdi), %r9 addq 8(%rdi), %r9
addq 16(%rdi), %r10 addq 16(%rdi), %r10
@@ -7567,7 +7569,7 @@ L_sha512_len_avx2_tail:
rorq $23, %rax rorq $23, %rax
movq %r8, %rdx movq %r8, %rdx
movq %r13, %rcx movq %r13, %rcx
addq 16(%rsp), %r15 addq 16(%rbp), %r15
xorq %r14, %rcx xorq %r14, %rcx
xorq %r12, %rax xorq %r12, %rax
andq %r12, %rcx andq %r12, %rcx
@@ -7593,7 +7595,7 @@ L_sha512_len_avx2_tail:
rorq $23, %rax rorq $23, %rax
movq %r15, %rbx movq %r15, %rbx
movq %r12, %rcx movq %r12, %rcx
addq 24(%rsp), %r14 addq 24(%rbp), %r14
xorq %r13, %rcx xorq %r13, %rcx
xorq %r11, %rax xorq %r11, %rax
andq %r11, %rcx andq %r11, %rcx
@@ -7619,7 +7621,7 @@ L_sha512_len_avx2_tail:
rorq $23, %rax rorq $23, %rax
movq %r14, %rdx movq %r14, %rdx
movq %r11, %rcx movq %r11, %rcx
addq 48(%rsp), %r13 addq 48(%rbp), %r13
xorq %r12, %rcx xorq %r12, %rcx
xorq %r10, %rax xorq %r10, %rax
andq %r10, %rcx andq %r10, %rcx
@@ -7645,7 +7647,7 @@ L_sha512_len_avx2_tail:
rorq $23, %rax rorq $23, %rax
movq %r13, %rbx movq %r13, %rbx
movq %r10, %rcx movq %r10, %rcx
addq 56(%rsp), %r12 addq 56(%rbp), %r12
xorq %r11, %rcx xorq %r11, %rcx
xorq %r9, %rax xorq %r9, %rax
andq %r9, %rcx andq %r9, %rcx
@@ -7671,7 +7673,7 @@ L_sha512_len_avx2_tail:
rorq $23, %rax rorq $23, %rax
movq %r12, %rdx movq %r12, %rdx
movq %r9, %rcx movq %r9, %rcx
addq 80(%rsp), %r11 addq 80(%rbp), %r11
xorq %r10, %rcx xorq %r10, %rcx
xorq %r8, %rax xorq %r8, %rax
andq %r8, %rcx andq %r8, %rcx
@@ -7697,7 +7699,7 @@ L_sha512_len_avx2_tail:
rorq $23, %rax rorq $23, %rax
movq %r11, %rbx movq %r11, %rbx
movq %r8, %rcx movq %r8, %rcx
addq 88(%rsp), %r10 addq 88(%rbp), %r10
xorq %r9, %rcx xorq %r9, %rcx
xorq %r15, %rax xorq %r15, %rax
andq %r15, %rcx andq %r15, %rcx
@@ -7723,7 +7725,7 @@ L_sha512_len_avx2_tail:
rorq $23, %rax rorq $23, %rax
movq %r10, %rdx movq %r10, %rdx
movq %r15, %rcx movq %r15, %rcx
addq 112(%rsp), %r9 addq 112(%rbp), %r9
xorq %r8, %rcx xorq %r8, %rcx
xorq %r14, %rax xorq %r14, %rax
andq %r14, %rcx andq %r14, %rcx
@@ -7749,7 +7751,7 @@ L_sha512_len_avx2_tail:
rorq $23, %rax rorq $23, %rax
movq %r9, %rbx movq %r9, %rbx
movq %r14, %rcx movq %r14, %rcx
addq 120(%rsp), %r8 addq 120(%rbp), %r8
xorq %r15, %rcx xorq %r15, %rcx
xorq %r13, %rax xorq %r13, %rax
andq %r13, %rcx andq %r13, %rcx
@@ -7775,7 +7777,7 @@ L_sha512_len_avx2_tail:
rorq $23, %rax rorq $23, %rax
movq %r8, %rdx movq %r8, %rdx
movq %r13, %rcx movq %r13, %rcx
addq 144(%rsp), %r15 addq 144(%rbp), %r15
xorq %r14, %rcx xorq %r14, %rcx
xorq %r12, %rax xorq %r12, %rax
andq %r12, %rcx andq %r12, %rcx
@@ -7801,7 +7803,7 @@ L_sha512_len_avx2_tail:
rorq $23, %rax rorq $23, %rax
movq %r15, %rbx movq %r15, %rbx
movq %r12, %rcx movq %r12, %rcx
addq 152(%rsp), %r14 addq 152(%rbp), %r14
xorq %r13, %rcx xorq %r13, %rcx
xorq %r11, %rax xorq %r11, %rax
andq %r11, %rcx andq %r11, %rcx
@@ -7827,7 +7829,7 @@ L_sha512_len_avx2_tail:
rorq $23, %rax rorq $23, %rax
movq %r14, %rdx movq %r14, %rdx
movq %r11, %rcx movq %r11, %rcx
addq 176(%rsp), %r13 addq 176(%rbp), %r13
xorq %r12, %rcx xorq %r12, %rcx
xorq %r10, %rax xorq %r10, %rax
andq %r10, %rcx andq %r10, %rcx
@@ -7853,7 +7855,7 @@ L_sha512_len_avx2_tail:
rorq $23, %rax rorq $23, %rax
movq %r13, %rbx movq %r13, %rbx
movq %r10, %rcx movq %r10, %rcx
addq 184(%rsp), %r12 addq 184(%rbp), %r12
xorq %r11, %rcx xorq %r11, %rcx
xorq %r9, %rax xorq %r9, %rax
andq %r9, %rcx andq %r9, %rcx
@@ -7879,7 +7881,7 @@ L_sha512_len_avx2_tail:
rorq $23, %rax rorq $23, %rax
movq %r12, %rdx movq %r12, %rdx
movq %r9, %rcx movq %r9, %rcx
addq 208(%rsp), %r11 addq 208(%rbp), %r11
xorq %r10, %rcx xorq %r10, %rcx
xorq %r8, %rax xorq %r8, %rax
andq %r8, %rcx andq %r8, %rcx
@@ -7905,7 +7907,7 @@ L_sha512_len_avx2_tail:
rorq $23, %rax rorq $23, %rax
movq %r11, %rbx movq %r11, %rbx
movq %r8, %rcx movq %r8, %rcx
addq 216(%rsp), %r10 addq 216(%rbp), %r10
xorq %r9, %rcx xorq %r9, %rcx
xorq %r15, %rax xorq %r15, %rax
andq %r15, %rcx andq %r15, %rcx
@@ -7931,7 +7933,7 @@ L_sha512_len_avx2_tail:
rorq $23, %rax rorq $23, %rax
movq %r10, %rdx movq %r10, %rdx
movq %r15, %rcx movq %r15, %rcx
addq 240(%rsp), %r9 addq 240(%rbp), %r9
xorq %r8, %rcx xorq %r8, %rcx
xorq %r14, %rax xorq %r14, %rax
andq %r14, %rcx andq %r14, %rcx
@@ -7957,7 +7959,7 @@ L_sha512_len_avx2_tail:
rorq $23, %rax rorq $23, %rax
movq %r9, %rbx movq %r9, %rbx
movq %r14, %rcx movq %r14, %rcx
addq 248(%rsp), %r8 addq 248(%rbp), %r8
xorq %r15, %rcx xorq %r15, %rcx
xorq %r13, %rax xorq %r13, %rax
andq %r13, %rcx andq %r13, %rcx
@@ -7980,7 +7982,7 @@ L_sha512_len_avx2_tail:
rorq $28, %rcx rorq $28, %rcx
movq %r12, %rax movq %r12, %rax
addq %rcx, %r8 addq %rcx, %r8
addq $0x100, %rsp addq $0x100, %rbp
subq $0x01, %rsi subq $0x01, %rsi
jnz L_sha512_len_avx2_tail jnz L_sha512_len_avx2_tail
addq (%rdi), %r8 addq (%rdi), %r8
@@ -7992,9 +7994,8 @@ L_sha512_len_avx2_tail:
addq 48(%rdi), %r14 addq 48(%rdi), %r14
addq 56(%rdi), %r15 addq 56(%rdi), %r15
movq 224(%rdi), %rcx movq 224(%rdi), %rcx
addq $0x40, %rsp
addq $0x100, %rcx addq $0x100, %rcx
subl $0x100, %ebp subl $0x100, 1344(%rsp)
movq %rcx, 224(%rdi) movq %rcx, 224(%rdi)
movq %r8, (%rdi) movq %r8, (%rdi)
movq %r9, 8(%rdi) movq %r9, 8(%rdi)
@@ -8005,6 +8006,7 @@ L_sha512_len_avx2_tail:
movq %r14, 48(%rdi) movq %r14, 48(%rdi)
movq %r15, 56(%rdi) movq %r15, 56(%rdi)
jnz L_sha512_len_avx2_begin jnz L_sha512_len_avx2_begin
addq $0x548, %rsp
L_sha512_len_avx2_done: L_sha512_len_avx2_done:
xorq %rax, %rax xorq %rax, %rax
vzeroupper vzeroupper
@@ -9229,6 +9231,7 @@ _Transform_Sha512_AVX2_RORX_Len:
subl $0x80, %esi subl $0x80, %esi
jz L_sha512_len_avx2_rorx_done jz L_sha512_len_avx2_rorx_done
L_sha512_len_avx2_rorx_block: L_sha512_len_avx2_rorx_block:
subq $0x548, %rsp
movq 224(%rdi), %rax movq 224(%rdi), %rax
vmovdqa L_avx2_rorx_sha512_flip_mask(%rip), %ymm15 vmovdqa L_avx2_rorx_sha512_flip_mask(%rip), %ymm15
movq (%rdi), %r8 movq (%rdi), %r8
@@ -9239,9 +9242,10 @@ L_sha512_len_avx2_rorx_block:
movq 40(%rdi), %r13 movq 40(%rdi), %r13
movq 48(%rdi), %r14 movq 48(%rdi), %r14
movq 56(%rdi), %r15 movq 56(%rdi), %r15
movl %esi, 1344(%rsp)
# Start of loop processing two blocks # Start of loop processing two blocks
L_sha512_len_avx2_rorx_begin: L_sha512_len_avx2_rorx_begin:
subq $0x540, %rsp movq %rsp, %rsi
leaq L_avx2_rorx_sha512_k_2(%rip), %rbp leaq L_avx2_rorx_sha512_k_2(%rip), %rbp
movq %r9, %rbx movq %r9, %rbx
xorq %rdx, %rdx xorq %rdx, %rdx
@@ -9274,26 +9278,26 @@ L_sha512_len_avx2_rorx_begin:
L_sha512_len_avx2_rorx_start: L_sha512_len_avx2_rorx_start:
vpaddq (%rbp), %ymm0, %ymm8 vpaddq (%rbp), %ymm0, %ymm8
vpaddq 32(%rbp), %ymm1, %ymm9 vpaddq 32(%rbp), %ymm1, %ymm9
vmovdqu %ymm8, (%rsp) vmovdqu %ymm8, (%rsi)
vmovdqu %ymm9, 32(%rsp) vmovdqu %ymm9, 32(%rsi)
vpaddq 64(%rbp), %ymm2, %ymm8 vpaddq 64(%rbp), %ymm2, %ymm8
vpaddq 96(%rbp), %ymm3, %ymm9 vpaddq 96(%rbp), %ymm3, %ymm9
vmovdqu %ymm8, 64(%rsp) vmovdqu %ymm8, 64(%rsi)
vmovdqu %ymm9, 96(%rsp) vmovdqu %ymm9, 96(%rsi)
vpaddq 128(%rbp), %ymm4, %ymm8 vpaddq 128(%rbp), %ymm4, %ymm8
vpaddq 160(%rbp), %ymm5, %ymm9 vpaddq 160(%rbp), %ymm5, %ymm9
vmovdqu %ymm8, 128(%rsp) vmovdqu %ymm8, 128(%rsi)
vmovdqu %ymm9, 160(%rsp) vmovdqu %ymm9, 160(%rsi)
vpaddq 192(%rbp), %ymm6, %ymm8 vpaddq 192(%rbp), %ymm6, %ymm8
vpaddq 224(%rbp), %ymm7, %ymm9 vpaddq 224(%rbp), %ymm7, %ymm9
vmovdqu %ymm8, 192(%rsp) vmovdqu %ymm8, 192(%rsi)
vmovdqu %ymm9, 224(%rsp) vmovdqu %ymm9, 224(%rsi)
# msg_sched: 0-1 # msg_sched: 0-1
rorxq $14, %r12, %rax rorxq $14, %r12, %rax
rorxq $18, %r12, %rcx rorxq $18, %r12, %rcx
addq %rdx, %r8 addq %rdx, %r8
vpalignr $8, %ymm0, %ymm1, %ymm12 vpalignr $8, %ymm0, %ymm1, %ymm12
addq (%rsp), %r15 addq (%rsi), %r15
movq %r13, %rdx movq %r13, %rdx
xorq %rax, %rcx xorq %rax, %rcx
vpalignr $8, %ymm4, %ymm5, %ymm13 vpalignr $8, %ymm4, %ymm5, %ymm13
@@ -9331,7 +9335,7 @@ L_sha512_len_avx2_rorx_start:
addq %rbx, %r15 addq %rbx, %r15
vpsrlq $19, %ymm7, %ymm8 vpsrlq $19, %ymm7, %ymm8
vpsllq $45, %ymm7, %ymm9 vpsllq $45, %ymm7, %ymm9
addq 8(%rsp), %r14 addq 8(%rsi), %r14
movq %r12, %rbx movq %r12, %rbx
xorq %rax, %rcx xorq %rax, %rcx
vpsrlq $61, %ymm7, %ymm10 vpsrlq $61, %ymm7, %ymm10
@@ -9366,7 +9370,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $18, %r10, %rcx rorxq $18, %r10, %rcx
addq %rdx, %r14 addq %rdx, %r14
vpalignr $8, %ymm1, %ymm2, %ymm12 vpalignr $8, %ymm1, %ymm2, %ymm12
addq 32(%rsp), %r13 addq 32(%rsi), %r13
movq %r11, %rdx movq %r11, %rdx
xorq %rax, %rcx xorq %rax, %rcx
vpalignr $8, %ymm5, %ymm6, %ymm13 vpalignr $8, %ymm5, %ymm6, %ymm13
@@ -9404,7 +9408,7 @@ L_sha512_len_avx2_rorx_start:
addq %rbx, %r13 addq %rbx, %r13
vpsrlq $19, %ymm0, %ymm8 vpsrlq $19, %ymm0, %ymm8
vpsllq $45, %ymm0, %ymm9 vpsllq $45, %ymm0, %ymm9
addq 40(%rsp), %r12 addq 40(%rsi), %r12
movq %r10, %rbx movq %r10, %rbx
xorq %rax, %rcx xorq %rax, %rcx
vpsrlq $61, %ymm0, %ymm10 vpsrlq $61, %ymm0, %ymm10
@@ -9439,7 +9443,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $18, %r8, %rcx rorxq $18, %r8, %rcx
addq %rdx, %r12 addq %rdx, %r12
vpalignr $8, %ymm2, %ymm3, %ymm12 vpalignr $8, %ymm2, %ymm3, %ymm12
addq 64(%rsp), %r11 addq 64(%rsi), %r11
movq %r9, %rdx movq %r9, %rdx
xorq %rax, %rcx xorq %rax, %rcx
vpalignr $8, %ymm6, %ymm7, %ymm13 vpalignr $8, %ymm6, %ymm7, %ymm13
@@ -9477,7 +9481,7 @@ L_sha512_len_avx2_rorx_start:
addq %rbx, %r11 addq %rbx, %r11
vpsrlq $19, %ymm1, %ymm8 vpsrlq $19, %ymm1, %ymm8
vpsllq $45, %ymm1, %ymm9 vpsllq $45, %ymm1, %ymm9
addq 72(%rsp), %r10 addq 72(%rsi), %r10
movq %r8, %rbx movq %r8, %rbx
xorq %rax, %rcx xorq %rax, %rcx
vpsrlq $61, %ymm1, %ymm10 vpsrlq $61, %ymm1, %ymm10
@@ -9512,7 +9516,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $18, %r14, %rcx rorxq $18, %r14, %rcx
addq %rdx, %r10 addq %rdx, %r10
vpalignr $8, %ymm3, %ymm4, %ymm12 vpalignr $8, %ymm3, %ymm4, %ymm12
addq 96(%rsp), %r9 addq 96(%rsi), %r9
movq %r15, %rdx movq %r15, %rdx
xorq %rax, %rcx xorq %rax, %rcx
vpalignr $8, %ymm7, %ymm0, %ymm13 vpalignr $8, %ymm7, %ymm0, %ymm13
@@ -9550,7 +9554,7 @@ L_sha512_len_avx2_rorx_start:
addq %rbx, %r9 addq %rbx, %r9
vpsrlq $19, %ymm2, %ymm8 vpsrlq $19, %ymm2, %ymm8
vpsllq $45, %ymm2, %ymm9 vpsllq $45, %ymm2, %ymm9
addq 104(%rsp), %r8 addq 104(%rsi), %r8
movq %r14, %rbx movq %r14, %rbx
xorq %rax, %rcx xorq %rax, %rcx
vpsrlq $61, %ymm2, %ymm10 vpsrlq $61, %ymm2, %ymm10
@@ -9585,7 +9589,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $18, %r12, %rcx rorxq $18, %r12, %rcx
addq %rdx, %r8 addq %rdx, %r8
vpalignr $8, %ymm4, %ymm5, %ymm12 vpalignr $8, %ymm4, %ymm5, %ymm12
addq 128(%rsp), %r15 addq 128(%rsi), %r15
movq %r13, %rdx movq %r13, %rdx
xorq %rax, %rcx xorq %rax, %rcx
vpalignr $8, %ymm0, %ymm1, %ymm13 vpalignr $8, %ymm0, %ymm1, %ymm13
@@ -9623,7 +9627,7 @@ L_sha512_len_avx2_rorx_start:
addq %rbx, %r15 addq %rbx, %r15
vpsrlq $19, %ymm3, %ymm8 vpsrlq $19, %ymm3, %ymm8
vpsllq $45, %ymm3, %ymm9 vpsllq $45, %ymm3, %ymm9
addq 136(%rsp), %r14 addq 136(%rsi), %r14
movq %r12, %rbx movq %r12, %rbx
xorq %rax, %rcx xorq %rax, %rcx
vpsrlq $61, %ymm3, %ymm10 vpsrlq $61, %ymm3, %ymm10
@@ -9658,7 +9662,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $18, %r10, %rcx rorxq $18, %r10, %rcx
addq %rdx, %r14 addq %rdx, %r14
vpalignr $8, %ymm5, %ymm6, %ymm12 vpalignr $8, %ymm5, %ymm6, %ymm12
addq 160(%rsp), %r13 addq 160(%rsi), %r13
movq %r11, %rdx movq %r11, %rdx
xorq %rax, %rcx xorq %rax, %rcx
vpalignr $8, %ymm1, %ymm2, %ymm13 vpalignr $8, %ymm1, %ymm2, %ymm13
@@ -9696,7 +9700,7 @@ L_sha512_len_avx2_rorx_start:
addq %rbx, %r13 addq %rbx, %r13
vpsrlq $19, %ymm4, %ymm8 vpsrlq $19, %ymm4, %ymm8
vpsllq $45, %ymm4, %ymm9 vpsllq $45, %ymm4, %ymm9
addq 168(%rsp), %r12 addq 168(%rsi), %r12
movq %r10, %rbx movq %r10, %rbx
xorq %rax, %rcx xorq %rax, %rcx
vpsrlq $61, %ymm4, %ymm10 vpsrlq $61, %ymm4, %ymm10
@@ -9731,7 +9735,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $18, %r8, %rcx rorxq $18, %r8, %rcx
addq %rdx, %r12 addq %rdx, %r12
vpalignr $8, %ymm6, %ymm7, %ymm12 vpalignr $8, %ymm6, %ymm7, %ymm12
addq 192(%rsp), %r11 addq 192(%rsi), %r11
movq %r9, %rdx movq %r9, %rdx
xorq %rax, %rcx xorq %rax, %rcx
vpalignr $8, %ymm2, %ymm3, %ymm13 vpalignr $8, %ymm2, %ymm3, %ymm13
@@ -9769,7 +9773,7 @@ L_sha512_len_avx2_rorx_start:
addq %rbx, %r11 addq %rbx, %r11
vpsrlq $19, %ymm5, %ymm8 vpsrlq $19, %ymm5, %ymm8
vpsllq $45, %ymm5, %ymm9 vpsllq $45, %ymm5, %ymm9
addq 200(%rsp), %r10 addq 200(%rsi), %r10
movq %r8, %rbx movq %r8, %rbx
xorq %rax, %rcx xorq %rax, %rcx
vpsrlq $61, %ymm5, %ymm10 vpsrlq $61, %ymm5, %ymm10
@@ -9804,7 +9808,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $18, %r14, %rcx rorxq $18, %r14, %rcx
addq %rdx, %r10 addq %rdx, %r10
vpalignr $8, %ymm7, %ymm0, %ymm12 vpalignr $8, %ymm7, %ymm0, %ymm12
addq 224(%rsp), %r9 addq 224(%rsi), %r9
movq %r15, %rdx movq %r15, %rdx
xorq %rax, %rcx xorq %rax, %rcx
vpalignr $8, %ymm3, %ymm4, %ymm13 vpalignr $8, %ymm3, %ymm4, %ymm13
@@ -9842,7 +9846,7 @@ L_sha512_len_avx2_rorx_start:
addq %rbx, %r9 addq %rbx, %r9
vpsrlq $19, %ymm6, %ymm8 vpsrlq $19, %ymm6, %ymm8
vpsllq $45, %ymm6, %ymm9 vpsllq $45, %ymm6, %ymm9
addq 232(%rsp), %r8 addq 232(%rsi), %r8
movq %r14, %rbx movq %r14, %rbx
xorq %rax, %rcx xorq %rax, %rcx
vpsrlq $61, %ymm6, %ymm10 vpsrlq $61, %ymm6, %ymm10
@@ -9873,30 +9877,30 @@ L_sha512_len_avx2_rorx_start:
vpaddq %ymm7, %ymm8, %ymm7 vpaddq %ymm7, %ymm8, %ymm7
# msg_sched done: 28-31 # msg_sched done: 28-31
addq $0x100, %rbp addq $0x100, %rbp
addq $0x100, %rsp addq $0x100, %rsi
cmpq L_avx2_rorx_sha512_k_2_end(%rip), %rbp cmpq L_avx2_rorx_sha512_k_2_end(%rip), %rbp
jne L_sha512_len_avx2_rorx_start jne L_sha512_len_avx2_rorx_start
vpaddq (%rbp), %ymm0, %ymm8 vpaddq (%rbp), %ymm0, %ymm8
vpaddq 32(%rbp), %ymm1, %ymm9 vpaddq 32(%rbp), %ymm1, %ymm9
vmovdqu %ymm8, (%rsp) vmovdqu %ymm8, (%rsi)
vmovdqu %ymm9, 32(%rsp) vmovdqu %ymm9, 32(%rsi)
vpaddq 64(%rbp), %ymm2, %ymm8 vpaddq 64(%rbp), %ymm2, %ymm8
vpaddq 96(%rbp), %ymm3, %ymm9 vpaddq 96(%rbp), %ymm3, %ymm9
vmovdqu %ymm8, 64(%rsp) vmovdqu %ymm8, 64(%rsi)
vmovdqu %ymm9, 96(%rsp) vmovdqu %ymm9, 96(%rsi)
vpaddq 128(%rbp), %ymm4, %ymm8 vpaddq 128(%rbp), %ymm4, %ymm8
vpaddq 160(%rbp), %ymm5, %ymm9 vpaddq 160(%rbp), %ymm5, %ymm9
vmovdqu %ymm8, 128(%rsp) vmovdqu %ymm8, 128(%rsi)
vmovdqu %ymm9, 160(%rsp) vmovdqu %ymm9, 160(%rsi)
vpaddq 192(%rbp), %ymm6, %ymm8 vpaddq 192(%rbp), %ymm6, %ymm8
vpaddq 224(%rbp), %ymm7, %ymm9 vpaddq 224(%rbp), %ymm7, %ymm9
vmovdqu %ymm8, 192(%rsp) vmovdqu %ymm8, 192(%rsi)
vmovdqu %ymm9, 224(%rsp) vmovdqu %ymm9, 224(%rsi)
# rnd_all_2: 0-1 # rnd_all_2: 0-1
rorxq $14, %r12, %rax rorxq $14, %r12, %rax
rorxq $18, %r12, %rcx rorxq $18, %r12, %rcx
addq %rdx, %r8 addq %rdx, %r8
addq (%rsp), %r15 addq (%rsi), %r15
movq %r13, %rdx movq %r13, %rdx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r14, %rdx xorq %r14, %rdx
@@ -9920,7 +9924,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $14, %r11, %rax rorxq $14, %r11, %rax
rorxq $18, %r11, %rcx rorxq $18, %r11, %rcx
addq %rbx, %r15 addq %rbx, %r15
addq 8(%rsp), %r14 addq 8(%rsi), %r14
movq %r12, %rbx movq %r12, %rbx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r13, %rbx xorq %r13, %rbx
@@ -9945,7 +9949,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $14, %r10, %rax rorxq $14, %r10, %rax
rorxq $18, %r10, %rcx rorxq $18, %r10, %rcx
addq %rdx, %r14 addq %rdx, %r14
addq 32(%rsp), %r13 addq 32(%rsi), %r13
movq %r11, %rdx movq %r11, %rdx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r12, %rdx xorq %r12, %rdx
@@ -9969,7 +9973,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $14, %r9, %rax rorxq $14, %r9, %rax
rorxq $18, %r9, %rcx rorxq $18, %r9, %rcx
addq %rbx, %r13 addq %rbx, %r13
addq 40(%rsp), %r12 addq 40(%rsi), %r12
movq %r10, %rbx movq %r10, %rbx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r11, %rbx xorq %r11, %rbx
@@ -9994,7 +9998,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $14, %r8, %rax rorxq $14, %r8, %rax
rorxq $18, %r8, %rcx rorxq $18, %r8, %rcx
addq %rdx, %r12 addq %rdx, %r12
addq 64(%rsp), %r11 addq 64(%rsi), %r11
movq %r9, %rdx movq %r9, %rdx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r10, %rdx xorq %r10, %rdx
@@ -10018,7 +10022,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $14, %r15, %rax rorxq $14, %r15, %rax
rorxq $18, %r15, %rcx rorxq $18, %r15, %rcx
addq %rbx, %r11 addq %rbx, %r11
addq 72(%rsp), %r10 addq 72(%rsi), %r10
movq %r8, %rbx movq %r8, %rbx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r9, %rbx xorq %r9, %rbx
@@ -10043,7 +10047,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $14, %r14, %rax rorxq $14, %r14, %rax
rorxq $18, %r14, %rcx rorxq $18, %r14, %rcx
addq %rdx, %r10 addq %rdx, %r10
addq 96(%rsp), %r9 addq 96(%rsi), %r9
movq %r15, %rdx movq %r15, %rdx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r8, %rdx xorq %r8, %rdx
@@ -10067,7 +10071,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $14, %r13, %rax rorxq $14, %r13, %rax
rorxq $18, %r13, %rcx rorxq $18, %r13, %rcx
addq %rbx, %r9 addq %rbx, %r9
addq 104(%rsp), %r8 addq 104(%rsi), %r8
movq %r14, %rbx movq %r14, %rbx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r15, %rbx xorq %r15, %rbx
@@ -10092,7 +10096,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $14, %r12, %rax rorxq $14, %r12, %rax
rorxq $18, %r12, %rcx rorxq $18, %r12, %rcx
addq %rdx, %r8 addq %rdx, %r8
addq 128(%rsp), %r15 addq 128(%rsi), %r15
movq %r13, %rdx movq %r13, %rdx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r14, %rdx xorq %r14, %rdx
@@ -10116,7 +10120,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $14, %r11, %rax rorxq $14, %r11, %rax
rorxq $18, %r11, %rcx rorxq $18, %r11, %rcx
addq %rbx, %r15 addq %rbx, %r15
addq 136(%rsp), %r14 addq 136(%rsi), %r14
movq %r12, %rbx movq %r12, %rbx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r13, %rbx xorq %r13, %rbx
@@ -10141,7 +10145,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $14, %r10, %rax rorxq $14, %r10, %rax
rorxq $18, %r10, %rcx rorxq $18, %r10, %rcx
addq %rdx, %r14 addq %rdx, %r14
addq 160(%rsp), %r13 addq 160(%rsi), %r13
movq %r11, %rdx movq %r11, %rdx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r12, %rdx xorq %r12, %rdx
@@ -10165,7 +10169,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $14, %r9, %rax rorxq $14, %r9, %rax
rorxq $18, %r9, %rcx rorxq $18, %r9, %rcx
addq %rbx, %r13 addq %rbx, %r13
addq 168(%rsp), %r12 addq 168(%rsi), %r12
movq %r10, %rbx movq %r10, %rbx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r11, %rbx xorq %r11, %rbx
@@ -10190,7 +10194,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $14, %r8, %rax rorxq $14, %r8, %rax
rorxq $18, %r8, %rcx rorxq $18, %r8, %rcx
addq %rdx, %r12 addq %rdx, %r12
addq 192(%rsp), %r11 addq 192(%rsi), %r11
movq %r9, %rdx movq %r9, %rdx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r10, %rdx xorq %r10, %rdx
@@ -10214,7 +10218,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $14, %r15, %rax rorxq $14, %r15, %rax
rorxq $18, %r15, %rcx rorxq $18, %r15, %rcx
addq %rbx, %r11 addq %rbx, %r11
addq 200(%rsp), %r10 addq 200(%rsi), %r10
movq %r8, %rbx movq %r8, %rbx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r9, %rbx xorq %r9, %rbx
@@ -10239,7 +10243,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $14, %r14, %rax rorxq $14, %r14, %rax
rorxq $18, %r14, %rcx rorxq $18, %r14, %rcx
addq %rdx, %r10 addq %rdx, %r10
addq 224(%rsp), %r9 addq 224(%rsi), %r9
movq %r15, %rdx movq %r15, %rdx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r8, %rdx xorq %r8, %rdx
@@ -10263,7 +10267,7 @@ L_sha512_len_avx2_rorx_start:
rorxq $14, %r13, %rax rorxq $14, %r13, %rax
rorxq $18, %r13, %rcx rorxq $18, %r13, %rcx
addq %rbx, %r9 addq %rbx, %r9
addq 232(%rsp), %r8 addq 232(%rsi), %r8
movq %r14, %rbx movq %r14, %rbx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r15, %rbx xorq %r15, %rbx
@@ -10285,7 +10289,7 @@ L_sha512_len_avx2_rorx_start:
addq %rax, %r8 addq %rax, %r8
xorq %r10, %rdx xorq %r10, %rdx
addq %rdx, %r8 addq %rdx, %r8
subq $0x400, %rsp subq $0x400, %rsi
addq (%rdi), %r8 addq (%rdi), %r8
addq 8(%rdi), %r9 addq 8(%rdi), %r9
addq 16(%rdi), %r10 addq 16(%rdi), %r10
@@ -10311,7 +10315,7 @@ L_sha512_len_avx2_rorx_tail:
rorxq $14, %r12, %rax rorxq $14, %r12, %rax
rorxq $18, %r12, %rcx rorxq $18, %r12, %rcx
addq %rdx, %r8 addq %rdx, %r8
addq 16(%rsp), %r15 addq 16(%rsi), %r15
movq %r13, %rdx movq %r13, %rdx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r14, %rdx xorq %r14, %rdx
@@ -10335,7 +10339,7 @@ L_sha512_len_avx2_rorx_tail:
rorxq $14, %r11, %rax rorxq $14, %r11, %rax
rorxq $18, %r11, %rcx rorxq $18, %r11, %rcx
addq %rbx, %r15 addq %rbx, %r15
addq 24(%rsp), %r14 addq 24(%rsi), %r14
movq %r12, %rbx movq %r12, %rbx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r13, %rbx xorq %r13, %rbx
@@ -10360,7 +10364,7 @@ L_sha512_len_avx2_rorx_tail:
rorxq $14, %r10, %rax rorxq $14, %r10, %rax
rorxq $18, %r10, %rcx rorxq $18, %r10, %rcx
addq %rdx, %r14 addq %rdx, %r14
addq 48(%rsp), %r13 addq 48(%rsi), %r13
movq %r11, %rdx movq %r11, %rdx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r12, %rdx xorq %r12, %rdx
@@ -10384,7 +10388,7 @@ L_sha512_len_avx2_rorx_tail:
rorxq $14, %r9, %rax rorxq $14, %r9, %rax
rorxq $18, %r9, %rcx rorxq $18, %r9, %rcx
addq %rbx, %r13 addq %rbx, %r13
addq 56(%rsp), %r12 addq 56(%rsi), %r12
movq %r10, %rbx movq %r10, %rbx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r11, %rbx xorq %r11, %rbx
@@ -10409,7 +10413,7 @@ L_sha512_len_avx2_rorx_tail:
rorxq $14, %r8, %rax rorxq $14, %r8, %rax
rorxq $18, %r8, %rcx rorxq $18, %r8, %rcx
addq %rdx, %r12 addq %rdx, %r12
addq 80(%rsp), %r11 addq 80(%rsi), %r11
movq %r9, %rdx movq %r9, %rdx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r10, %rdx xorq %r10, %rdx
@@ -10433,7 +10437,7 @@ L_sha512_len_avx2_rorx_tail:
rorxq $14, %r15, %rax rorxq $14, %r15, %rax
rorxq $18, %r15, %rcx rorxq $18, %r15, %rcx
addq %rbx, %r11 addq %rbx, %r11
addq 88(%rsp), %r10 addq 88(%rsi), %r10
movq %r8, %rbx movq %r8, %rbx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r9, %rbx xorq %r9, %rbx
@@ -10458,7 +10462,7 @@ L_sha512_len_avx2_rorx_tail:
rorxq $14, %r14, %rax rorxq $14, %r14, %rax
rorxq $18, %r14, %rcx rorxq $18, %r14, %rcx
addq %rdx, %r10 addq %rdx, %r10
addq 112(%rsp), %r9 addq 112(%rsi), %r9
movq %r15, %rdx movq %r15, %rdx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r8, %rdx xorq %r8, %rdx
@@ -10482,7 +10486,7 @@ L_sha512_len_avx2_rorx_tail:
rorxq $14, %r13, %rax rorxq $14, %r13, %rax
rorxq $18, %r13, %rcx rorxq $18, %r13, %rcx
addq %rbx, %r9 addq %rbx, %r9
addq 120(%rsp), %r8 addq 120(%rsi), %r8
movq %r14, %rbx movq %r14, %rbx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r15, %rbx xorq %r15, %rbx
@@ -10507,7 +10511,7 @@ L_sha512_len_avx2_rorx_tail:
rorxq $14, %r12, %rax rorxq $14, %r12, %rax
rorxq $18, %r12, %rcx rorxq $18, %r12, %rcx
addq %rdx, %r8 addq %rdx, %r8
addq 144(%rsp), %r15 addq 144(%rsi), %r15
movq %r13, %rdx movq %r13, %rdx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r14, %rdx xorq %r14, %rdx
@@ -10531,7 +10535,7 @@ L_sha512_len_avx2_rorx_tail:
rorxq $14, %r11, %rax rorxq $14, %r11, %rax
rorxq $18, %r11, %rcx rorxq $18, %r11, %rcx
addq %rbx, %r15 addq %rbx, %r15
addq 152(%rsp), %r14 addq 152(%rsi), %r14
movq %r12, %rbx movq %r12, %rbx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r13, %rbx xorq %r13, %rbx
@@ -10556,7 +10560,7 @@ L_sha512_len_avx2_rorx_tail:
rorxq $14, %r10, %rax rorxq $14, %r10, %rax
rorxq $18, %r10, %rcx rorxq $18, %r10, %rcx
addq %rdx, %r14 addq %rdx, %r14
addq 176(%rsp), %r13 addq 176(%rsi), %r13
movq %r11, %rdx movq %r11, %rdx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r12, %rdx xorq %r12, %rdx
@@ -10580,7 +10584,7 @@ L_sha512_len_avx2_rorx_tail:
rorxq $14, %r9, %rax rorxq $14, %r9, %rax
rorxq $18, %r9, %rcx rorxq $18, %r9, %rcx
addq %rbx, %r13 addq %rbx, %r13
addq 184(%rsp), %r12 addq 184(%rsi), %r12
movq %r10, %rbx movq %r10, %rbx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r11, %rbx xorq %r11, %rbx
@@ -10605,7 +10609,7 @@ L_sha512_len_avx2_rorx_tail:
rorxq $14, %r8, %rax rorxq $14, %r8, %rax
rorxq $18, %r8, %rcx rorxq $18, %r8, %rcx
addq %rdx, %r12 addq %rdx, %r12
addq 208(%rsp), %r11 addq 208(%rsi), %r11
movq %r9, %rdx movq %r9, %rdx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r10, %rdx xorq %r10, %rdx
@@ -10629,7 +10633,7 @@ L_sha512_len_avx2_rorx_tail:
rorxq $14, %r15, %rax rorxq $14, %r15, %rax
rorxq $18, %r15, %rcx rorxq $18, %r15, %rcx
addq %rbx, %r11 addq %rbx, %r11
addq 216(%rsp), %r10 addq 216(%rsi), %r10
movq %r8, %rbx movq %r8, %rbx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r9, %rbx xorq %r9, %rbx
@@ -10654,7 +10658,7 @@ L_sha512_len_avx2_rorx_tail:
rorxq $14, %r14, %rax rorxq $14, %r14, %rax
rorxq $18, %r14, %rcx rorxq $18, %r14, %rcx
addq %rdx, %r10 addq %rdx, %r10
addq 240(%rsp), %r9 addq 240(%rsi), %r9
movq %r15, %rdx movq %r15, %rdx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r8, %rdx xorq %r8, %rdx
@@ -10678,7 +10682,7 @@ L_sha512_len_avx2_rorx_tail:
rorxq $14, %r13, %rax rorxq $14, %r13, %rax
rorxq $18, %r13, %rcx rorxq $18, %r13, %rcx
addq %rbx, %r9 addq %rbx, %r9
addq 248(%rsp), %r8 addq 248(%rsi), %r8
movq %r14, %rbx movq %r14, %rbx
xorq %rax, %rcx xorq %rax, %rcx
xorq %r15, %rbx xorq %r15, %rbx
@@ -10699,7 +10703,7 @@ L_sha512_len_avx2_rorx_tail:
andq %rbx, %rdx andq %rbx, %rdx
addq %rax, %r8 addq %rax, %r8
xorq %r10, %rdx xorq %r10, %rdx
addq $0x100, %rsp addq $0x100, %rsi
subq $0x01, %rbp subq $0x01, %rbp
jnz L_sha512_len_avx2_rorx_tail jnz L_sha512_len_avx2_rorx_tail
addq %rdx, %r8 addq %rdx, %r8
@@ -10712,9 +10716,8 @@ L_sha512_len_avx2_rorx_tail:
addq 48(%rdi), %r14 addq 48(%rdi), %r14
addq 56(%rdi), %r15 addq 56(%rdi), %r15
movq 224(%rdi), %rax movq 224(%rdi), %rax
addq $0x40, %rsp
addq $0x100, %rax addq $0x100, %rax
subl $0x100, %esi subl $0x100, 1344(%rsp)
movq %rax, 224(%rdi) movq %rax, 224(%rdi)
movq %r8, (%rdi) movq %r8, (%rdi)
movq %r9, 8(%rdi) movq %r9, 8(%rdi)
@@ -10725,6 +10728,7 @@ L_sha512_len_avx2_rorx_tail:
movq %r14, 48(%rdi) movq %r14, 48(%rdi)
movq %r15, 56(%rdi) movq %r15, 56(%rdi)
jnz L_sha512_len_avx2_rorx_begin jnz L_sha512_len_avx2_rorx_begin
addq $0x548, %rsp
L_sha512_len_avx2_rorx_done: L_sha512_len_avx2_rorx_done:
xorq %rax, %rax xorq %rax, %rax
vzeroupper vzeroupper