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