From: CryptoManiac Date: Tue, 13 Oct 2015 19:06:33 +0000 (+0300) Subject: Remove sha256d implementation. X-Git-Tag: nvc-v0.5.5~29 X-Git-Url: https://git.novaco.in/?p=novacoin.git;a=commitdiff_plain;h=b634cbfd3dcb24a86bb0b1ca5d0f038fe7c141d5 Remove sha256d implementation. --- diff --git a/src/crypto/sha2/asm/sha2-x86_64.S b/src/crypto/sha2/asm/sha2-x86_64.S index 6554ef0..f9cd45f 100644 --- a/src/crypto/sha2/asm/sha2-x86_64.S +++ b/src/crypto/sha2/asm/sha2-x86_64.S @@ -489,74 +489,6 @@ _sha256_transform: jmp *sha256_transform_addr(%rip) - .text - .p2align 6 - .globl sha256d_ms - .globl _sha256d_ms -sha256d_ms: -_sha256d_ms: -#if defined(_WIN64) || defined(__CYGWIN__) - pushq %rdi - pushq %rsi - movq %rcx, %rdi - movq %rdx, %rsi - movq %r8, %rdx -#endif - movq %rsp, %r8 - subq $32, %rsp - andq $-32, %rsp - - movdqa 0*16(%rdx), %xmm0 - movdqa 1*16(%rdx), %xmm1 - movdqa %xmm0, 0*16(%rdi) - movdqa %xmm1, 1*16(%rdi) - - movl 0*4(%rsi), %eax - movl 1*4(%rsi), %ecx - movl 2*4(%rsi), %edx - movl 3*4(%rsi), %r9d - bswapl %eax - bswapl %ecx - bswapl %edx - bswapl %r9d - movl %eax, 0*4(%rsp) - movl %ecx, 1*4(%rsp) - movl %edx, 2*4(%rsp) - movl %r9d, 3*4(%rsp) - - movq %rsp, %rsi - movl $64, %eax - movl $80, %ecx - /* rep xsha256 */ - .byte 0xf3, 0x0f, 0xa6, 0xd0 - - movdqa bswap_xmm_mask(%rip), %xmm1 - movdqa 0*16(%rdi), %xmm0 - movdqa 1*16(%rdi), %xmm2 - pshufb %xmm1, %xmm0 - pshufb %xmm1, %xmm2 - movdqa %xmm0, 0*16(%rsp) - movdqa %xmm2, 1*16(%rsp) - - movdqa sha256_h+0*16(%rip), %xmm0 - movdqa sha256_h+1*16(%rip), %xmm1 - movdqa %xmm0, 0*16(%rdi) - movdqa %xmm1, 1*16(%rdi) - - movq %rsp, %rsi - xorq %rax, %rax - movl $32, %ecx - /* rep xsha256 */ - .byte 0xf3, 0x0f, 0xa6, 0xd0 - - movq %r8, %rsp -#if defined(_WIN64) || defined(__CYGWIN__) - popq %rsi - popq %rdi -#endif - ret - - .data .p2align 7 sha256_4h: @@ -638,17 +570,6 @@ sha256_4k: .long 0xc67178f2, 0xc67178f2, 0xc67178f2, 0xc67178f2 .data - .p2align 6 -sha256d_4preext2_17: - .long 0x00a00000, 0x00a00000, 0x00a00000, 0x00a00000 -sha256d_4preext2_23: - .long 0x11002000, 0x11002000, 0x11002000, 0x11002000 -sha256d_4preext2_24: - .long 0x80000000, 0x80000000, 0x80000000, 0x80000000 -sha256d_4preext2_30: - .long 0x00400022, 0x00400022, 0x00400022, 0x00400022 - - .data .p2align 7 sha256_8h: .long 0x6a09e667, 0x6a09e667, 0x6a09e667, 0x6a09e667, 0x6a09e667, 0x6a09e667, 0x6a09e667, 0x6a09e667 @@ -728,17 +649,6 @@ sha256_8k: .long 0xbef9a3f7, 0xbef9a3f7, 0xbef9a3f7, 0xbef9a3f7, 0xbef9a3f7, 0xbef9a3f7, 0xbef9a3f7, 0xbef9a3f7 .long 0xc67178f2, 0xc67178f2, 0xc67178f2, 0xc67178f2, 0xc67178f2, 0xc67178f2, 0xc67178f2, 0xc67178f2 - .data - .p2align 6 -sha256d_8preext2_17: - .long 0x00a00000, 0x00a00000, 0x00a00000, 0x00a00000, 0x00a00000, 0x00a00000, 0x00a00000, 0x00a00000 -sha256d_8preext2_23: - .long 0x11002000, 0x11002000, 0x11002000, 0x11002000, 0x11002000, 0x11002000, 0x11002000, 0x11002000 -sha256d_8preext2_24: - .long 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000 -sha256d_8preext2_30: - .long 0x00400022, 0x00400022, 0x00400022, 0x00400022, 0x00400022, 0x00400022, 0x00400022, 0x00400022 - .text .p2align 6 .globl sha256_init_4way @@ -1925,577 +1835,6 @@ sha256_transform_8way_finish: ret - .data - .p2align 3 -sha256d_ms_4way_addr: - .quad 0x0 - - .text - .p2align 6 - .globl sha256d_ms_4way - .globl _sha256d_ms_4way -sha256d_ms_4way: -_sha256d_ms_4way: - jmp *sha256d_ms_4way_addr(%rip) - - - .p2align 6 -sha256d_ms_4way_sse2: -#if defined(_WIN64) || defined(__CYGWIN__) - pushq %rdi - subq $32, %rsp - movdqa %xmm6, 0(%rsp) - movdqa %xmm7, 16(%rsp) - pushq %rsi - movq %rcx, %rdi - movq %rdx, %rsi - movq %r8, %rdx - movq %r9, %rcx -#endif - subq $8+67*16, %rsp - - leaq 256(%rsi), %rax - -sha256d_ms_4way_sse2_extend_loop1: - movdqa 3*16(%rsi), %xmm0 - movdqa 2*16(%rax), %xmm3 - movdqa 3*16(%rax), %xmm7 - movdqa %xmm3, 5*16(%rsp) - movdqa %xmm7, 6*16(%rsp) - movdqa %xmm0, %xmm2 - paddd %xmm0, %xmm7 - psrld $3, %xmm0 - movdqa %xmm0, %xmm1 - pslld $14, %xmm2 - psrld $4, %xmm1 - pxor %xmm1, %xmm0 - pxor %xmm2, %xmm0 - psrld $11, %xmm1 - pslld $11, %xmm2 - pxor %xmm1, %xmm0 - pxor %xmm2, %xmm0 - paddd %xmm0, %xmm3 - movdqa %xmm3, 2*16(%rax) - movdqa %xmm7, 3*16(%rax) - - movdqa 4*16(%rax), %xmm0 - movdqa %xmm0, 7*16(%rsp) - movdqa %xmm3, %xmm2 - movdqa %xmm7, %xmm6 - psrld $10, %xmm3 - psrld $10, %xmm7 - movdqa %xmm3, %xmm1 - movdqa %xmm7, %xmm5 - pslld $13, %xmm2 - pslld $13, %xmm6 - psrld $7, %xmm1 - psrld $7, %xmm5 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - psrld $2, %xmm1 - psrld $2, %xmm5 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - pslld $2, %xmm2 - pslld $2, %xmm6 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - paddd %xmm0, %xmm3 - movdqa %xmm3, 4*16(%rax) - movdqa %xmm7, 5*16(%rax) - - movdqa 6*16(%rax), %xmm0 - movdqa 7*16(%rax), %xmm4 - movdqa %xmm0, 9*16(%rsp) - movdqa %xmm4, 10*16(%rsp) - movdqa %xmm3, %xmm2 - movdqa %xmm7, %xmm6 - psrld $10, %xmm3 - psrld $10, %xmm7 - movdqa %xmm3, %xmm1 - movdqa %xmm7, %xmm5 - pslld $13, %xmm2 - pslld $13, %xmm6 - psrld $7, %xmm1 - psrld $7, %xmm5 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - psrld $2, %xmm1 - psrld $2, %xmm5 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - pslld $2, %xmm2 - pslld $2, %xmm6 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - paddd %xmm0, %xmm3 - paddd %xmm4, %xmm7 - movdqa %xmm3, 6*16(%rax) - movdqa %xmm7, 7*16(%rax) - - movdqa 8*16(%rax), %xmm0 - movdqa 2*16(%rax), %xmm4 - movdqa %xmm0, 11*16(%rsp) - movdqa %xmm3, %xmm2 - movdqa %xmm7, %xmm6 - psrld $10, %xmm3 - psrld $10, %xmm7 - movdqa %xmm3, %xmm1 - movdqa %xmm7, %xmm5 - pslld $13, %xmm2 - pslld $13, %xmm6 - psrld $7, %xmm1 - psrld $7, %xmm5 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - psrld $2, %xmm1 - psrld $2, %xmm5 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - pslld $2, %xmm2 - pslld $2, %xmm6 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - paddd %xmm0, %xmm3 - paddd %xmm4, %xmm7 - movdqa %xmm3, 8*16(%rax) - movdqa %xmm7, 9*16(%rax) - - movdqa %xmm3, %xmm2 - movdqa %xmm7, %xmm6 - psrld $10, %xmm3 - psrld $10, %xmm7 - movdqa %xmm3, %xmm1 - movdqa %xmm7, %xmm5 - pslld $13, %xmm2 - pslld $13, %xmm6 - psrld $7, %xmm1 - psrld $7, %xmm5 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - psrld $2, %xmm1 - psrld $2, %xmm5 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - pslld $2, %xmm2 - pslld $2, %xmm6 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - paddd 3*16(%rax), %xmm3 - paddd 4*16(%rax), %xmm7 - movdqa %xmm3, 10*16(%rax) - movdqa %xmm7, 11*16(%rax) - - movdqa %xmm3, %xmm2 - movdqa %xmm7, %xmm6 - psrld $10, %xmm3 - psrld $10, %xmm7 - movdqa %xmm3, %xmm1 - movdqa %xmm7, %xmm5 - pslld $13, %xmm2 - pslld $13, %xmm6 - psrld $7, %xmm1 - psrld $7, %xmm5 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - psrld $2, %xmm1 - psrld $2, %xmm5 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - pslld $2, %xmm2 - pslld $2, %xmm6 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - paddd 5*16(%rax), %xmm3 - paddd 6*16(%rax), %xmm7 - movdqa %xmm3, 12*16(%rax) - movdqa %xmm7, 13*16(%rax) - - movdqa 14*16(%rax), %xmm0 - movdqa 15*16(%rax), %xmm4 - movdqa %xmm0, 17*16(%rsp) - movdqa %xmm4, 18*16(%rsp) - movdqa %xmm3, %xmm2 - movdqa %xmm7, %xmm6 - psrld $10, %xmm3 - psrld $10, %xmm7 - movdqa %xmm3, %xmm1 - movdqa %xmm7, %xmm5 - paddd 7*16(%rax), %xmm0 - paddd 8*16(%rax), %xmm4 - pslld $13, %xmm2 - pslld $13, %xmm6 - psrld $7, %xmm1 - psrld $7, %xmm5 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - psrld $2, %xmm1 - psrld $2, %xmm5 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - pslld $2, %xmm2 - pslld $2, %xmm6 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - paddd %xmm0, %xmm3 - paddd %xmm4, %xmm7 - movdqa %xmm3, 14*16(%rax) - movdqa %xmm7, 15*16(%rax) - -sha256d_ms_4way_sse2_extend_loop2: - sha256_sse2_extend_doubleround 16 - sha256_sse2_extend_doubleround 18 - sha256_sse2_extend_doubleround 20 - sha256_sse2_extend_doubleround 22 - sha256_sse2_extend_doubleround 24 - sha256_sse2_extend_doubleround 26 - sha256_sse2_extend_doubleround 28 - sha256_sse2_extend_doubleround 30 - sha256_sse2_extend_doubleround 32 - sha256_sse2_extend_doubleround 34 - sha256_sse2_extend_doubleround 36 - sha256_sse2_extend_doubleround 38 - sha256_sse2_extend_doubleround 40 - sha256_sse2_extend_doubleround 42 - jz sha256d_ms_4way_sse2_extend_coda2 - sha256_sse2_extend_doubleround 44 - sha256_sse2_extend_doubleround 46 - - movdqa 0(%rcx), %xmm3 - movdqa 16(%rcx), %xmm0 - movdqa 32(%rcx), %xmm1 - movdqa 48(%rcx), %xmm2 - movdqa 64(%rcx), %xmm6 - movdqa 80(%rcx), %xmm7 - movdqa 96(%rcx), %xmm5 - movdqa 112(%rcx), %xmm4 - movdqa %xmm1, 0(%rsp) - movdqa %xmm2, 16(%rsp) - movdqa %xmm6, 32(%rsp) - - movq %rsi, %rax - leaq sha256_4k(%rip), %rcx - jmp sha256d_ms_4way_sse2_main_loop1 - -sha256d_ms_4way_sse2_main_loop2: - sha256_sse2_main_round 0 - sha256_sse2_main_round 1 - sha256_sse2_main_round 2 -sha256d_ms_4way_sse2_main_loop1: - sha256_sse2_main_round 3 - sha256_sse2_main_quadround 4 - sha256_sse2_main_quadround 8 - sha256_sse2_main_quadround 12 - sha256_sse2_main_quadround 16 - sha256_sse2_main_quadround 20 - sha256_sse2_main_quadround 24 - sha256_sse2_main_quadround 28 - sha256_sse2_main_quadround 32 - sha256_sse2_main_quadround 36 - sha256_sse2_main_quadround 40 - sha256_sse2_main_quadround 44 - sha256_sse2_main_quadround 48 - sha256_sse2_main_quadround 52 - sha256_sse2_main_round 56 - jz sha256d_ms_4way_sse2_finish - sha256_sse2_main_round 57 - sha256_sse2_main_round 58 - sha256_sse2_main_round 59 - sha256_sse2_main_quadround 60 - - movdqa 5*16(%rsp), %xmm1 - movdqa 6*16(%rsp), %xmm2 - movdqa 7*16(%rsp), %xmm6 - movdqa %xmm1, 18*16(%rsi) - movdqa %xmm2, 19*16(%rsi) - movdqa %xmm6, 20*16(%rsi) - movdqa 9*16(%rsp), %xmm1 - movdqa 10*16(%rsp), %xmm2 - movdqa 11*16(%rsp), %xmm6 - movdqa %xmm1, 22*16(%rsi) - movdqa %xmm2, 23*16(%rsi) - movdqa %xmm6, 24*16(%rsi) - movdqa 17*16(%rsp), %xmm1 - movdqa 18*16(%rsp), %xmm2 - movdqa %xmm1, 30*16(%rsi) - movdqa %xmm2, 31*16(%rsi) - - movdqa 0(%rsp), %xmm1 - movdqa 16(%rsp), %xmm2 - movdqa 32(%rsp), %xmm6 - paddd 0(%rdx), %xmm7 - paddd 16(%rdx), %xmm5 - paddd 32(%rdx), %xmm4 - paddd 48(%rdx), %xmm3 - paddd 64(%rdx), %xmm0 - paddd 80(%rdx), %xmm1 - paddd 96(%rdx), %xmm2 - paddd 112(%rdx), %xmm6 - - movdqa %xmm7, 48+0(%rsp) - movdqa %xmm5, 48+16(%rsp) - movdqa %xmm4, 48+32(%rsp) - movdqa %xmm3, 48+48(%rsp) - movdqa %xmm0, 48+64(%rsp) - movdqa %xmm1, 48+80(%rsp) - movdqa %xmm2, 48+96(%rsp) - movdqa %xmm6, 48+112(%rsp) - - pxor %xmm0, %xmm0 - movq $0x8000000000000100, %rax - movd %rax, %xmm1 - pshufd $0x55, %xmm1, %xmm2 - pshufd $0x00, %xmm1, %xmm1 - movdqa %xmm2, 48+128(%rsp) - movdqa %xmm0, 48+144(%rsp) - movdqa %xmm0, 48+160(%rsp) - movdqa %xmm0, 48+176(%rsp) - movdqa %xmm0, 48+192(%rsp) - movdqa %xmm0, 48+208(%rsp) - movdqa %xmm0, 48+224(%rsp) - movdqa %xmm1, 48+240(%rsp) - - leaq 19*16(%rsp), %rax - cmpq %rax, %rax - - movdqa -15*16(%rax), %xmm0 - movdqa -14*16(%rax), %xmm4 - movdqa %xmm0, %xmm2 - movdqa %xmm4, %xmm6 - psrld $3, %xmm0 - psrld $3, %xmm4 - movdqa %xmm0, %xmm1 - movdqa %xmm4, %xmm5 - pslld $14, %xmm2 - pslld $14, %xmm6 - psrld $4, %xmm1 - psrld $4, %xmm5 - pxor %xmm1, %xmm0 - pxor %xmm5, %xmm4 - psrld $11, %xmm1 - psrld $11, %xmm5 - pxor %xmm2, %xmm0 - pxor %xmm6, %xmm4 - pslld $11, %xmm2 - pslld $11, %xmm6 - pxor %xmm1, %xmm0 - pxor %xmm5, %xmm4 - pxor %xmm2, %xmm0 - pxor %xmm6, %xmm4 - paddd -16*16(%rax), %xmm0 - paddd -15*16(%rax), %xmm4 - paddd sha256d_4preext2_17(%rip), %xmm4 - movdqa %xmm0, %xmm3 - movdqa %xmm4, %xmm7 - movdqa %xmm3, 0*16(%rax) - movdqa %xmm7, 1*16(%rax) - - sha256_sse2_extend_doubleround 2 - sha256_sse2_extend_doubleround 4 - - movdqa -9*16(%rax), %xmm0 - movdqa sha256d_4preext2_23(%rip), %xmm4 - movdqa %xmm0, %xmm2 - psrld $3, %xmm0 - movdqa %xmm0, %xmm1 - pslld $14, %xmm2 - psrld $4, %xmm1 - pxor %xmm1, %xmm0 - pxor %xmm2, %xmm0 - psrld $11, %xmm1 - pslld $11, %xmm2 - pxor %xmm1, %xmm0 - pxor %xmm2, %xmm0 - paddd -10*16(%rax), %xmm0 - paddd -9*16(%rax), %xmm4 - movdqa %xmm3, %xmm2 - movdqa %xmm7, %xmm6 - psrld $10, %xmm3 - psrld $10, %xmm7 - movdqa %xmm3, %xmm1 - movdqa %xmm7, %xmm5 - paddd -1*16(%rax), %xmm0 - pslld $13, %xmm2 - pslld $13, %xmm6 - psrld $7, %xmm1 - psrld $7, %xmm5 - paddd 0*16(%rax), %xmm4 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - psrld $2, %xmm1 - psrld $2, %xmm5 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - pslld $2, %xmm2 - pslld $2, %xmm6 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - paddd %xmm0, %xmm3 - paddd %xmm4, %xmm7 - movdqa %xmm3, 6*16(%rax) - movdqa %xmm7, 7*16(%rax) - - movdqa sha256d_4preext2_24(%rip), %xmm0 - movdqa %xmm3, %xmm2 - movdqa %xmm7, %xmm6 - psrld $10, %xmm3 - psrld $10, %xmm7 - movdqa %xmm3, %xmm1 - movdqa %xmm7, %xmm5 - paddd 1*16(%rax), %xmm0 - pslld $13, %xmm2 - pslld $13, %xmm6 - psrld $7, %xmm1 - psrld $7, %xmm5 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - psrld $2, %xmm1 - psrld $2, %xmm5 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - pslld $2, %xmm2 - pslld $2, %xmm6 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - paddd %xmm0, %xmm3 - paddd 2*16(%rax), %xmm7 - movdqa %xmm3, 8*16(%rax) - movdqa %xmm7, 9*16(%rax) - - movdqa %xmm3, %xmm2 - movdqa %xmm7, %xmm6 - psrld $10, %xmm3 - psrld $10, %xmm7 - movdqa %xmm3, %xmm1 - movdqa %xmm7, %xmm5 - pslld $13, %xmm2 - pslld $13, %xmm6 - psrld $7, %xmm1 - psrld $7, %xmm5 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - psrld $2, %xmm1 - psrld $2, %xmm5 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - pslld $2, %xmm2 - pslld $2, %xmm6 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - paddd 3*16(%rax), %xmm3 - paddd 4*16(%rax), %xmm7 - movdqa %xmm3, 10*16(%rax) - movdqa %xmm7, 11*16(%rax) - - movdqa %xmm3, %xmm2 - movdqa %xmm7, %xmm6 - psrld $10, %xmm3 - psrld $10, %xmm7 - movdqa %xmm3, %xmm1 - movdqa %xmm7, %xmm5 - pslld $13, %xmm2 - pslld $13, %xmm6 - psrld $7, %xmm1 - psrld $7, %xmm5 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - psrld $2, %xmm1 - psrld $2, %xmm5 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - pslld $2, %xmm2 - pslld $2, %xmm6 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - paddd 5*16(%rax), %xmm3 - paddd 6*16(%rax), %xmm7 - movdqa %xmm3, 12*16(%rax) - movdqa %xmm7, 13*16(%rax) - - movdqa sha256d_4preext2_30(%rip), %xmm0 - movdqa 0*16(%rax), %xmm4 - movdqa %xmm4, %xmm6 - psrld $3, %xmm4 - movdqa %xmm4, %xmm5 - pslld $14, %xmm6 - psrld $4, %xmm5 - pxor %xmm5, %xmm4 - pxor %xmm6, %xmm4 - psrld $11, %xmm5 - pslld $11, %xmm6 - pxor %xmm5, %xmm4 - pxor %xmm6, %xmm4 - paddd -1*16(%rax), %xmm4 - movdqa %xmm3, %xmm2 - movdqa %xmm7, %xmm6 - psrld $10, %xmm3 - psrld $10, %xmm7 - movdqa %xmm3, %xmm1 - movdqa %xmm7, %xmm5 - paddd 7*16(%rax), %xmm0 - pslld $13, %xmm2 - pslld $13, %xmm6 - psrld $7, %xmm1 - psrld $7, %xmm5 - paddd 8*16(%rax), %xmm4 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - psrld $2, %xmm1 - psrld $2, %xmm5 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - pslld $2, %xmm2 - pslld $2, %xmm6 - pxor %xmm1, %xmm3 - pxor %xmm5, %xmm7 - pxor %xmm2, %xmm3 - pxor %xmm6, %xmm7 - paddd %xmm0, %xmm3 - paddd %xmm4, %xmm7 - movdqa %xmm3, 14*16(%rax) - movdqa %xmm7, 15*16(%rax) - - jmp sha256d_ms_4way_sse2_extend_loop2 - -sha256d_ms_4way_sse2_extend_coda2: - sha256_sse2_extend_round 44 - - movdqa sha256_4h+0(%rip), %xmm7 - movdqa sha256_4h+16(%rip), %xmm5 - movdqa sha256_4h+32(%rip), %xmm4 - movdqa sha256_4h+48(%rip), %xmm3 - movdqa sha256_4h+64(%rip), %xmm0 - movdqa sha256_4h+80(%rip), %xmm1 - movdqa sha256_4h+96(%rip), %xmm2 - movdqa sha256_4h+112(%rip), %xmm6 - movdqa %xmm1, 0(%rsp) - movdqa %xmm2, 16(%rsp) - movdqa %xmm6, 32(%rsp) - - leaq 48(%rsp), %rax - leaq sha256_4k(%rip), %rcx - jmp sha256d_ms_4way_sse2_main_loop2 - .macro sha256_sse2_main_round_red i, r7 movdqa 16*\i(%rax), %xmm6 paddd 16*\i(%rcx), %xmm6 @@ -2527,519 +1866,6 @@ sha256d_ms_4way_sse2_extend_coda2: paddd %xmm6, %xmm0 .endm -sha256d_ms_4way_sse2_finish: - sha256_sse2_main_round_red 57, %xmm3 - sha256_sse2_main_round_red 58, %xmm4 - sha256_sse2_main_round_red 59, %xmm5 - sha256_sse2_main_round_red 60, %xmm7 - - paddd sha256_4h+112(%rip), %xmm0 - movdqa %xmm0, 112(%rdi) - - addq $8+67*16, %rsp -#if defined(_WIN64) || defined(__CYGWIN__) - popq %rsi - movdqa 0(%rsp), %xmm6 - movdqa 16(%rsp), %xmm7 - addq $32, %rsp - popq %rdi -#endif - ret - - - .p2align 6 -sha256d_ms_4way_avx: -#if defined(_WIN64) || defined(__CYGWIN__) - pushq %rdi - subq $80, %rsp - movdqa %xmm6, 0(%rsp) - movdqa %xmm7, 16(%rsp) - movdqa %xmm8, 32(%rsp) - movdqa %xmm9, 48(%rsp) - movdqa %xmm10, 64(%rsp) - pushq %rsi - movq %rcx, %rdi - movq %rdx, %rsi - movq %r8, %rdx - movq %r9, %rcx -#endif - subq $1032, %rsp - - leaq 256(%rsi), %rax - -sha256d_ms_4way_avx_extend_loop1: - vmovdqa 3*16(%rsi), %xmm0 - vmovdqa 2*16(%rax), %xmm3 - vmovdqa 3*16(%rax), %xmm7 - vmovdqa %xmm3, 2*16(%rsp) - vmovdqa %xmm7, 3*16(%rsp) - vpaddd %xmm0, %xmm7, %xmm7 - vpslld $14, %xmm0, %xmm2 - vpsrld $3, %xmm0, %xmm0 - vpsrld $4, %xmm0, %xmm1 - vpxor %xmm1, %xmm0, %xmm0 - vpxor %xmm2, %xmm0, %xmm0 - vpsrld $11, %xmm1, %xmm1 - vpslld $11, %xmm2, %xmm2 - vpxor %xmm1, %xmm0, %xmm0 - vpxor %xmm2, %xmm0, %xmm0 - vpaddd %xmm0, %xmm3, %xmm3 - vmovdqa %xmm3, 2*16(%rax) - vmovdqa %xmm7, 3*16(%rax) - - vmovdqa 4*16(%rax), %xmm0 - vmovdqa %xmm0, 4*16(%rsp) - vpslld $13, %xmm3, %xmm2 - vpslld $13, %xmm7, %xmm6 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpsrld $7, %xmm3, %xmm1 - vpsrld $7, %xmm7, %xmm5 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpsrld $2, %xmm1, %xmm1 - vpsrld $2, %xmm5, %xmm5 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpslld $2, %xmm2, %xmm2 - vpslld $2, %xmm6, %xmm6 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd %xmm0, %xmm3, %xmm3 - vmovdqa %xmm3, 4*16(%rax) - vmovdqa %xmm7, 5*16(%rax) - - vmovdqa 6*16(%rax), %xmm0 - vmovdqa 7*16(%rax), %xmm4 - vmovdqa %xmm0, 6*16(%rsp) - vmovdqa %xmm4, 7*16(%rsp) - vpslld $13, %xmm3, %xmm2 - vpslld $13, %xmm7, %xmm6 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpsrld $7, %xmm3, %xmm1 - vpsrld $7, %xmm7, %xmm5 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpsrld $2, %xmm1, %xmm1 - vpsrld $2, %xmm5, %xmm5 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpslld $2, %xmm2, %xmm2 - vpslld $2, %xmm6, %xmm6 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd %xmm0, %xmm3, %xmm3 - vpaddd %xmm4, %xmm7, %xmm7 - vmovdqa %xmm3, 6*16(%rax) - vmovdqa %xmm7, 7*16(%rax) - - vmovdqa 8*16(%rax), %xmm0 - vmovdqa 2*16(%rax), %xmm4 - vmovdqa %xmm0, 8*16(%rsp) - vpslld $13, %xmm3, %xmm2 - vpslld $13, %xmm7, %xmm6 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpsrld $7, %xmm3, %xmm1 - vpsrld $7, %xmm7, %xmm5 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpsrld $2, %xmm1, %xmm1 - vpsrld $2, %xmm5, %xmm5 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpslld $2, %xmm2, %xmm2 - vpslld $2, %xmm6, %xmm6 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd %xmm0, %xmm3, %xmm3 - vpaddd %xmm4, %xmm7, %xmm7 - vmovdqa %xmm3, 8*16(%rax) - vmovdqa %xmm7, 9*16(%rax) - - vpslld $13, %xmm3, %xmm2 - vpslld $13, %xmm7, %xmm6 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpsrld $7, %xmm3, %xmm1 - vpsrld $7, %xmm7, %xmm5 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpsrld $2, %xmm1, %xmm1 - vpsrld $2, %xmm5, %xmm5 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpslld $2, %xmm2, %xmm2 - vpslld $2, %xmm6, %xmm6 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd 3*16(%rax), %xmm3, %xmm3 - vpaddd 4*16(%rax), %xmm7, %xmm7 - vmovdqa %xmm3, 10*16(%rax) - vmovdqa %xmm7, 11*16(%rax) - - vpslld $13, %xmm3, %xmm2 - vpslld $13, %xmm7, %xmm6 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpsrld $7, %xmm3, %xmm1 - vpsrld $7, %xmm7, %xmm5 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpsrld $2, %xmm1, %xmm1 - vpsrld $2, %xmm5, %xmm5 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpslld $2, %xmm2, %xmm2 - vpslld $2, %xmm6, %xmm6 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd 5*16(%rax), %xmm3, %xmm3 - vpaddd 6*16(%rax), %xmm7, %xmm7 - vmovdqa %xmm3, 12*16(%rax) - vmovdqa %xmm7, 13*16(%rax) - - vmovdqa 14*16(%rax), %xmm0 - vmovdqa 15*16(%rax), %xmm4 - vmovdqa %xmm0, 14*16(%rsp) - vmovdqa %xmm4, 15*16(%rsp) - vpslld $13, %xmm3, %xmm2 - vpslld $13, %xmm7, %xmm6 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpaddd 7*16(%rax), %xmm0, %xmm0 - vpaddd 8*16(%rax), %xmm4, %xmm4 - vpsrld $7, %xmm3, %xmm1 - vpsrld $7, %xmm7, %xmm5 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpsrld $2, %xmm1, %xmm1 - vpsrld $2, %xmm5, %xmm5 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpslld $2, %xmm2, %xmm2 - vpslld $2, %xmm6, %xmm6 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd %xmm0, %xmm3, %xmm3 - vpaddd %xmm4, %xmm7, %xmm7 - vmovdqa %xmm3, 14*16(%rax) - vmovdqa %xmm7, 15*16(%rax) - -sha256d_ms_4way_avx_extend_loop2: - sha256_avx_extend_doubleround 16 - sha256_avx_extend_doubleround 18 - sha256_avx_extend_doubleround 20 - sha256_avx_extend_doubleround 22 - sha256_avx_extend_doubleround 24 - sha256_avx_extend_doubleround 26 - sha256_avx_extend_doubleround 28 - sha256_avx_extend_doubleround 30 - sha256_avx_extend_doubleround 32 - sha256_avx_extend_doubleround 34 - sha256_avx_extend_doubleround 36 - sha256_avx_extend_doubleround 38 - sha256_avx_extend_doubleround 40 - sha256_avx_extend_doubleround 42 - jz sha256d_ms_4way_avx_extend_coda2 - sha256_avx_extend_doubleround 44 - sha256_avx_extend_doubleround 46 - - movdqa 0(%rcx), %xmm7 - movdqa 16(%rcx), %xmm8 - movdqa 32(%rcx), %xmm9 - movdqa 48(%rcx), %xmm10 - movdqa 64(%rcx), %xmm0 - movdqa 80(%rcx), %xmm5 - movdqa 96(%rcx), %xmm4 - movdqa 112(%rcx), %xmm3 - - movq %rsi, %rax - leaq sha256_4k(%rip), %rcx - jmp sha256d_ms_4way_avx_main_loop1 - -sha256d_ms_4way_avx_main_loop2: - sha256_avx_main_round 0, %xmm10, %xmm9, %xmm8, %xmm0, %xmm3, %xmm4, %xmm5, %xmm7 - sha256_avx_main_round 1, %xmm9, %xmm8, %xmm0, %xmm10, %xmm4, %xmm5, %xmm7, %xmm3 - sha256_avx_main_round 2, %xmm8, %xmm0, %xmm10, %xmm9, %xmm5, %xmm7, %xmm3, %xmm4 -sha256d_ms_4way_avx_main_loop1: - sha256_avx_main_round 3, %xmm0, %xmm10, %xmm9, %xmm8, %xmm7, %xmm3, %xmm4, %xmm5 - sha256_avx_main_quadround 4 - sha256_avx_main_quadround 8 - sha256_avx_main_quadround 12 - sha256_avx_main_quadround 16 - sha256_avx_main_quadround 20 - sha256_avx_main_quadround 24 - sha256_avx_main_quadround 28 - sha256_avx_main_quadround 32 - sha256_avx_main_quadround 36 - sha256_avx_main_quadround 40 - sha256_avx_main_quadround 44 - sha256_avx_main_quadround 48 - sha256_avx_main_quadround 52 - sha256_avx_main_round 56, %xmm10, %xmm9, %xmm8, %xmm0, %xmm3, %xmm4, %xmm5, %xmm7 - jz sha256d_ms_4way_avx_finish - sha256_avx_main_round 57, %xmm9, %xmm8, %xmm0, %xmm10, %xmm4, %xmm5, %xmm7, %xmm3 - sha256_avx_main_round 58, %xmm8, %xmm0, %xmm10, %xmm9, %xmm5, %xmm7, %xmm3, %xmm4 - sha256_avx_main_round 59, %xmm0, %xmm10, %xmm9, %xmm8, %xmm7, %xmm3, %xmm4, %xmm5 - sha256_avx_main_quadround 60 - - movdqa 2*16(%rsp), %xmm1 - movdqa 3*16(%rsp), %xmm2 - movdqa 4*16(%rsp), %xmm6 - movdqa %xmm1, 18*16(%rsi) - movdqa %xmm2, 19*16(%rsi) - movdqa %xmm6, 20*16(%rsi) - movdqa 6*16(%rsp), %xmm1 - movdqa 7*16(%rsp), %xmm2 - movdqa 8*16(%rsp), %xmm6 - movdqa %xmm1, 22*16(%rsi) - movdqa %xmm2, 23*16(%rsi) - movdqa %xmm6, 24*16(%rsi) - movdqa 14*16(%rsp), %xmm1 - movdqa 15*16(%rsp), %xmm2 - movdqa %xmm1, 30*16(%rsi) - movdqa %xmm2, 31*16(%rsi) - - paddd 0(%rdx), %xmm7 - paddd 16(%rdx), %xmm5 - paddd 32(%rdx), %xmm4 - paddd 48(%rdx), %xmm3 - paddd 64(%rdx), %xmm0 - paddd 80(%rdx), %xmm8 - paddd 96(%rdx), %xmm9 - paddd 112(%rdx), %xmm10 - - movdqa %xmm7, 0(%rsp) - movdqa %xmm5, 16(%rsp) - movdqa %xmm4, 32(%rsp) - movdqa %xmm3, 48(%rsp) - movdqa %xmm0, 64(%rsp) - movdqa %xmm8, 80(%rsp) - movdqa %xmm9, 96(%rsp) - movdqa %xmm10, 112(%rsp) - - pxor %xmm0, %xmm0 - movq $0x8000000000000100, %rax - movd %rax, %xmm1 - pshufd $0x55, %xmm1, %xmm2 - pshufd $0x00, %xmm1, %xmm1 - movdqa %xmm2, 128(%rsp) - movdqa %xmm0, 144(%rsp) - movdqa %xmm0, 160(%rsp) - movdqa %xmm0, 176(%rsp) - movdqa %xmm0, 192(%rsp) - movdqa %xmm0, 208(%rsp) - movdqa %xmm0, 224(%rsp) - movdqa %xmm1, 240(%rsp) - - leaq 256(%rsp), %rax - cmpq %rax, %rax - - vmovdqa -15*16(%rax), %xmm0 - vmovdqa -14*16(%rax), %xmm4 - vpslld $14, %xmm0, %xmm2 - vpslld $14, %xmm4, %xmm6 - vpsrld $3, %xmm0, %xmm8 - vpsrld $3, %xmm4, %xmm4 - vpsrld $7, %xmm0, %xmm1 - vpsrld $4, %xmm4, %xmm5 - vpxor %xmm1, %xmm8, %xmm8 - vpxor %xmm5, %xmm4, %xmm4 - vpsrld $11, %xmm1, %xmm1 - vpsrld $11, %xmm5, %xmm5 - vpxor %xmm2, %xmm8, %xmm8 - vpxor %xmm6, %xmm4, %xmm4 - vpslld $11, %xmm2, %xmm2 - vpslld $11, %xmm6, %xmm6 - vpxor %xmm1, %xmm8, %xmm8 - vpxor %xmm5, %xmm4, %xmm4 - vpxor %xmm2, %xmm8, %xmm8 - vpxor %xmm6, %xmm4, %xmm4 - vpaddd %xmm0, %xmm4, %xmm4 - vpaddd -16*16(%rax), %xmm8, %xmm3 - vpaddd sha256d_4preext2_17(%rip), %xmm4, %xmm7 - vmovdqa %xmm3, 0*16(%rax) - vmovdqa %xmm7, 1*16(%rax) - - sha256_avx_extend_doubleround 2 - sha256_avx_extend_doubleround 4 - - vmovdqa -9*16(%rax), %xmm0 - vpslld $14, %xmm0, %xmm2 - vpsrld $3, %xmm0, %xmm8 - vpsrld $7, %xmm0, %xmm1 - vpxor %xmm1, %xmm8, %xmm8 - vpxor %xmm2, %xmm8, %xmm8 - vpsrld $11, %xmm1, %xmm1 - vpslld $11, %xmm2, %xmm2 - vpxor %xmm1, %xmm8, %xmm8 - vpxor %xmm2, %xmm8, %xmm8 - vpaddd sha256d_4preext2_23(%rip), %xmm0, %xmm4 - vpaddd -10*16(%rax), %xmm8, %xmm0 - vpslld $13, %xmm3, %xmm2 - vpslld $13, %xmm7, %xmm6 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpaddd -1*16(%rax), %xmm0, %xmm0 - vpaddd 0*16(%rax), %xmm4, %xmm4 - vpsrld $7, %xmm3, %xmm1 - vpsrld $7, %xmm7, %xmm5 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpsrld $2, %xmm1, %xmm1 - vpsrld $2, %xmm5, %xmm5 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpslld $2, %xmm2, %xmm2 - vpslld $2, %xmm6, %xmm6 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd %xmm0, %xmm3, %xmm3 - vpaddd %xmm4, %xmm7, %xmm7 - vmovdqa %xmm3, 6*16(%rax) - vmovdqa %xmm7, 7*16(%rax) - - vpslld $13, %xmm3, %xmm2 - vpslld $13, %xmm7, %xmm6 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpsrld $7, %xmm3, %xmm1 - vpsrld $7, %xmm7, %xmm5 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpsrld $2, %xmm1, %xmm1 - vpsrld $2, %xmm5, %xmm5 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpslld $2, %xmm2, %xmm2 - vpslld $2, %xmm6, %xmm6 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd sha256d_4preext2_24(%rip), %xmm3, %xmm3 - vpaddd 1*16(%rax), %xmm3, %xmm3 - vpaddd 2*16(%rax), %xmm7, %xmm7 - vmovdqa %xmm3, 8*16(%rax) - vmovdqa %xmm7, 9*16(%rax) - - vpslld $13, %xmm3, %xmm2 - vpslld $13, %xmm7, %xmm6 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpsrld $7, %xmm3, %xmm1 - vpsrld $7, %xmm7, %xmm5 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpsrld $2, %xmm1, %xmm1 - vpsrld $2, %xmm5, %xmm5 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpslld $2, %xmm2, %xmm2 - vpslld $2, %xmm6, %xmm6 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd 3*16(%rax), %xmm3, %xmm3 - vpaddd 4*16(%rax), %xmm7, %xmm7 - vmovdqa %xmm3, 10*16(%rax) - vmovdqa %xmm7, 11*16(%rax) - - vpslld $13, %xmm3, %xmm2 - vpslld $13, %xmm7, %xmm6 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpsrld $7, %xmm3, %xmm1 - vpsrld $7, %xmm7, %xmm5 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpsrld $2, %xmm1, %xmm1 - vpsrld $2, %xmm5, %xmm5 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpslld $2, %xmm2, %xmm2 - vpslld $2, %xmm6, %xmm6 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd 5*16(%rax), %xmm3, %xmm3 - vpaddd 6*16(%rax), %xmm7, %xmm7 - vmovdqa %xmm3, 12*16(%rax) - vmovdqa %xmm7, 13*16(%rax) - - vmovdqa sha256d_4preext2_30(%rip), %xmm0 - vmovdqa 0*16(%rax), %xmm4 - vpslld $14, %xmm4, %xmm6 - vpsrld $3, %xmm4, %xmm4 - vpsrld $4, %xmm4, %xmm5 - vpxor %xmm5, %xmm4, %xmm4 - vpxor %xmm6, %xmm4, %xmm4 - vpsrld $11, %xmm5, %xmm5 - vpslld $11, %xmm6, %xmm6 - vpxor %xmm5, %xmm4, %xmm4 - vpxor %xmm6, %xmm4, %xmm4 - vpaddd -1*16(%rax), %xmm4, %xmm4 - vpslld $13, %xmm3, %xmm2 - vpslld $13, %xmm7, %xmm6 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpaddd 7*16(%rax), %xmm0, %xmm0 - vpaddd 8*16(%rax), %xmm4, %xmm4 - vpsrld $7, %xmm3, %xmm1 - vpsrld $7, %xmm7, %xmm5 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpsrld $2, %xmm1, %xmm1 - vpsrld $2, %xmm5, %xmm5 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpslld $2, %xmm2, %xmm2 - vpslld $2, %xmm6, %xmm6 - vpxor %xmm1, %xmm3, %xmm3 - vpxor %xmm5, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd %xmm0, %xmm3, %xmm3 - vpaddd %xmm4, %xmm7, %xmm7 - vmovdqa %xmm3, 14*16(%rax) - vmovdqa %xmm7, 15*16(%rax) - - jmp sha256d_ms_4way_avx_extend_loop2 - -sha256d_ms_4way_avx_extend_coda2: - sha256_avx_extend_round 44 - - movdqa sha256_4h+0(%rip), %xmm7 - movdqa sha256_4h+16(%rip), %xmm5 - movdqa sha256_4h+32(%rip), %xmm4 - movdqa sha256_4h+48(%rip), %xmm3 - movdqa sha256_4h+64(%rip), %xmm0 - movdqa sha256_4h+80(%rip), %xmm8 - movdqa sha256_4h+96(%rip), %xmm9 - movdqa sha256_4h+112(%rip), %xmm10 - - movq %rsp, %rax - leaq sha256_4k(%rip), %rcx - jmp sha256d_ms_4way_avx_main_loop2 - .macro sha256_avx_main_round_red i, r0, r1, r2, r3, r4 vpaddd 16*\i(%rax), \r0, %xmm6 vpaddd 16*\i(%rcx), %xmm6, %xmm6 @@ -3062,413 +1888,6 @@ sha256d_ms_4way_avx_extend_coda2: vpaddd %xmm6, \r4, \r0 .endm -sha256d_ms_4way_avx_finish: - sha256_avx_main_round_red 57, %xmm9, %xmm8, %xmm0, %xmm10, %xmm4 - sha256_avx_main_round_red 58, %xmm8, %xmm0, %xmm10, %xmm9, %xmm5 - sha256_avx_main_round_red 59, %xmm0, %xmm10, %xmm9, %xmm8, %xmm7 - sha256_avx_main_round_red 60, %xmm10, %xmm9, %xmm8, %xmm0, %xmm3 - - paddd sha256_4h+112(%rip), %xmm10 - movdqa %xmm10, 112(%rdi) - - addq $1032, %rsp -#if defined(_WIN64) || defined(__CYGWIN__) - popq %rsi - movdqa 0(%rsp), %xmm6 - movdqa 16(%rsp), %xmm7 - movdqa 32(%rsp), %xmm8 - movdqa 48(%rsp), %xmm9 - movdqa 64(%rsp), %xmm10 - addq $80, %rsp - popq %rdi -#endif - ret - - .p2align 6 -sha256d_ms_4way_xop: -#if defined(_WIN64) || defined(__CYGWIN__) - pushq %rdi - subq $80, %rsp - movdqa %xmm6, 0(%rsp) - movdqa %xmm7, 16(%rsp) - movdqa %xmm8, 32(%rsp) - movdqa %xmm9, 48(%rsp) - movdqa %xmm10, 64(%rsp) - pushq %rsi - movq %rcx, %rdi - movq %rdx, %rsi - movq %r8, %rdx - movq %r9, %rcx -#endif - subq $1032, %rsp - - leaq 256(%rsi), %rax - -sha256d_ms_4way_xop_extend_loop1: - vmovdqa 3*16(%rsi), %xmm0 - vmovdqa 2*16(%rax), %xmm3 - vmovdqa 3*16(%rax), %xmm7 - vmovdqa %xmm3, 2*16(%rsp) - vmovdqa %xmm7, 3*16(%rsp) - vpaddd %xmm0, %xmm7, %xmm7 - vprotd $25, %xmm0, %xmm1 - vprotd $14, %xmm0, %xmm2 - vpsrld $3, %xmm0, %xmm0 - vpxor %xmm1, %xmm2, %xmm2 - vpxor %xmm2, %xmm0, %xmm0 - vpaddd %xmm0, %xmm3, %xmm3 - vmovdqa %xmm3, 2*16(%rax) - vmovdqa %xmm7, 3*16(%rax) - - vmovdqa 4*16(%rax), %xmm0 - vmovdqa %xmm0, 4*16(%rsp) - vprotd $15, %xmm3, %xmm1 - vprotd $15, %xmm7, %xmm5 - vprotd $13, %xmm3, %xmm2 - vprotd $13, %xmm7, %xmm6 - vpxor %xmm1, %xmm2, %xmm2 - vpxor %xmm5, %xmm6, %xmm6 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd %xmm0, %xmm3, %xmm3 - vmovdqa %xmm3, 4*16(%rax) - vmovdqa %xmm7, 5*16(%rax) - - vmovdqa 6*16(%rax), %xmm0 - vmovdqa 7*16(%rax), %xmm4 - vmovdqa %xmm0, 6*16(%rsp) - vmovdqa %xmm4, 7*16(%rsp) - vprotd $15, %xmm3, %xmm1 - vprotd $15, %xmm7, %xmm5 - vprotd $13, %xmm3, %xmm2 - vprotd $13, %xmm7, %xmm6 - vpxor %xmm1, %xmm2, %xmm2 - vpxor %xmm5, %xmm6, %xmm6 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd %xmm0, %xmm3, %xmm3 - vpaddd %xmm4, %xmm7, %xmm7 - vmovdqa %xmm3, 6*16(%rax) - vmovdqa %xmm7, 7*16(%rax) - - vmovdqa 8*16(%rax), %xmm0 - vmovdqa 2*16(%rax), %xmm4 - vmovdqa %xmm0, 8*16(%rsp) - vprotd $15, %xmm3, %xmm1 - vprotd $15, %xmm7, %xmm5 - vprotd $13, %xmm3, %xmm2 - vprotd $13, %xmm7, %xmm6 - vpxor %xmm1, %xmm2, %xmm2 - vpxor %xmm5, %xmm6, %xmm6 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd %xmm0, %xmm3, %xmm3 - vpaddd %xmm4, %xmm7, %xmm7 - vmovdqa %xmm3, 8*16(%rax) - vmovdqa %xmm7, 9*16(%rax) - - vprotd $15, %xmm3, %xmm1 - vprotd $15, %xmm7, %xmm5 - vprotd $13, %xmm3, %xmm2 - vprotd $13, %xmm7, %xmm6 - vpxor %xmm1, %xmm2, %xmm2 - vpxor %xmm5, %xmm6, %xmm6 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd 3*16(%rax), %xmm3, %xmm3 - vpaddd 4*16(%rax), %xmm7, %xmm7 - vmovdqa %xmm3, 10*16(%rax) - vmovdqa %xmm7, 11*16(%rax) - - vprotd $15, %xmm3, %xmm1 - vprotd $15, %xmm7, %xmm5 - vprotd $13, %xmm3, %xmm2 - vprotd $13, %xmm7, %xmm6 - vpxor %xmm1, %xmm2, %xmm2 - vpxor %xmm5, %xmm6, %xmm6 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd 5*16(%rax), %xmm3, %xmm3 - vpaddd 6*16(%rax), %xmm7, %xmm7 - vmovdqa %xmm3, 12*16(%rax) - vmovdqa %xmm7, 13*16(%rax) - - vmovdqa 14*16(%rax), %xmm0 - vmovdqa 15*16(%rax), %xmm4 - vmovdqa %xmm0, 14*16(%rsp) - vmovdqa %xmm4, 15*16(%rsp) - vprotd $15, %xmm3, %xmm1 - vprotd $15, %xmm7, %xmm5 - vprotd $13, %xmm3, %xmm2 - vprotd $13, %xmm7, %xmm6 - vpxor %xmm1, %xmm2, %xmm2 - vpxor %xmm5, %xmm6, %xmm6 - vpaddd 7*16(%rax), %xmm0, %xmm0 - vpaddd 8*16(%rax), %xmm4, %xmm4 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd %xmm0, %xmm3, %xmm3 - vpaddd %xmm4, %xmm7, %xmm7 - vmovdqa %xmm3, 14*16(%rax) - vmovdqa %xmm7, 15*16(%rax) - -sha256d_ms_4way_xop_extend_loop2: - sha256_xop_extend_doubleround 16 - sha256_xop_extend_doubleround 18 - sha256_xop_extend_doubleround 20 - sha256_xop_extend_doubleround 22 - sha256_xop_extend_doubleround 24 - sha256_xop_extend_doubleround 26 - sha256_xop_extend_doubleround 28 - sha256_xop_extend_doubleround 30 - sha256_xop_extend_doubleround 32 - sha256_xop_extend_doubleround 34 - sha256_xop_extend_doubleround 36 - sha256_xop_extend_doubleround 38 - sha256_xop_extend_doubleround 40 - sha256_xop_extend_doubleround 42 - jz sha256d_ms_4way_xop_extend_coda2 - sha256_xop_extend_doubleround 44 - sha256_xop_extend_doubleround 46 - - movdqa 0(%rcx), %xmm7 - movdqa 16(%rcx), %xmm8 - movdqa 32(%rcx), %xmm9 - movdqa 48(%rcx), %xmm10 - movdqa 64(%rcx), %xmm0 - movdqa 80(%rcx), %xmm5 - movdqa 96(%rcx), %xmm4 - movdqa 112(%rcx), %xmm3 - - movq %rsi, %rax - leaq sha256_4k(%rip), %rcx - jmp sha256d_ms_4way_xop_main_loop1 - -sha256d_ms_4way_xop_main_loop2: - sha256_xop_main_round 0, %xmm10, %xmm9, %xmm8, %xmm0, %xmm3, %xmm4, %xmm5, %xmm7 - sha256_xop_main_round 1, %xmm9, %xmm8, %xmm0, %xmm10, %xmm4, %xmm5, %xmm7, %xmm3 - sha256_xop_main_round 2, %xmm8, %xmm0, %xmm10, %xmm9, %xmm5, %xmm7, %xmm3, %xmm4 -sha256d_ms_4way_xop_main_loop1: - sha256_xop_main_round 3, %xmm0, %xmm10, %xmm9, %xmm8, %xmm7, %xmm3, %xmm4, %xmm5 - sha256_xop_main_quadround 4 - sha256_xop_main_quadround 8 - sha256_xop_main_quadround 12 - sha256_xop_main_quadround 16 - sha256_xop_main_quadround 20 - sha256_xop_main_quadround 24 - sha256_xop_main_quadround 28 - sha256_xop_main_quadround 32 - sha256_xop_main_quadround 36 - sha256_xop_main_quadround 40 - sha256_xop_main_quadround 44 - sha256_xop_main_quadround 48 - sha256_xop_main_quadround 52 - sha256_xop_main_round 56, %xmm10, %xmm9, %xmm8, %xmm0, %xmm3, %xmm4, %xmm5, %xmm7 - jz sha256d_ms_4way_xop_finish - sha256_xop_main_round 57, %xmm9, %xmm8, %xmm0, %xmm10, %xmm4, %xmm5, %xmm7, %xmm3 - sha256_xop_main_round 58, %xmm8, %xmm0, %xmm10, %xmm9, %xmm5, %xmm7, %xmm3, %xmm4 - sha256_xop_main_round 59, %xmm0, %xmm10, %xmm9, %xmm8, %xmm7, %xmm3, %xmm4, %xmm5 - sha256_xop_main_quadround 60 - - movdqa 2*16(%rsp), %xmm1 - movdqa 3*16(%rsp), %xmm2 - movdqa 4*16(%rsp), %xmm6 - movdqa %xmm1, 18*16(%rsi) - movdqa %xmm2, 19*16(%rsi) - movdqa %xmm6, 20*16(%rsi) - movdqa 6*16(%rsp), %xmm1 - movdqa 7*16(%rsp), %xmm2 - movdqa 8*16(%rsp), %xmm6 - movdqa %xmm1, 22*16(%rsi) - movdqa %xmm2, 23*16(%rsi) - movdqa %xmm6, 24*16(%rsi) - movdqa 14*16(%rsp), %xmm1 - movdqa 15*16(%rsp), %xmm2 - movdqa %xmm1, 30*16(%rsi) - movdqa %xmm2, 31*16(%rsi) - - paddd 0(%rdx), %xmm7 - paddd 16(%rdx), %xmm5 - paddd 32(%rdx), %xmm4 - paddd 48(%rdx), %xmm3 - paddd 64(%rdx), %xmm0 - paddd 80(%rdx), %xmm8 - paddd 96(%rdx), %xmm9 - paddd 112(%rdx), %xmm10 - - movdqa %xmm7, 0(%rsp) - movdqa %xmm5, 16(%rsp) - movdqa %xmm4, 32(%rsp) - movdqa %xmm3, 48(%rsp) - movdqa %xmm0, 64(%rsp) - movdqa %xmm8, 80(%rsp) - movdqa %xmm9, 96(%rsp) - movdqa %xmm10, 112(%rsp) - - pxor %xmm0, %xmm0 - movq $0x8000000000000100, %rax - movd %rax, %xmm1 - pshufd $0x55, %xmm1, %xmm2 - pshufd $0x00, %xmm1, %xmm1 - movdqa %xmm2, 128(%rsp) - movdqa %xmm0, 144(%rsp) - movdqa %xmm0, 160(%rsp) - movdqa %xmm0, 176(%rsp) - movdqa %xmm0, 192(%rsp) - movdqa %xmm0, 208(%rsp) - movdqa %xmm0, 224(%rsp) - movdqa %xmm1, 240(%rsp) - - leaq 256(%rsp), %rax - cmpq %rax, %rax - - vmovdqa -15*16(%rax), %xmm0 - vmovdqa -14*16(%rax), %xmm4 - vprotd $25, %xmm0, %xmm1 - vprotd $25, %xmm4, %xmm5 - vprotd $14, %xmm0, %xmm2 - vprotd $14, %xmm4, %xmm6 - vpxor %xmm1, %xmm2, %xmm2 - vpxor %xmm5, %xmm6, %xmm6 - vpsrld $3, %xmm0, %xmm8 - vpsrld $3, %xmm4, %xmm4 - vpxor %xmm2, %xmm8, %xmm8 - vpxor %xmm6, %xmm4, %xmm4 - vpaddd %xmm0, %xmm4, %xmm4 - vpaddd -16*16(%rax), %xmm8, %xmm3 - vpaddd sha256d_4preext2_17(%rip), %xmm4, %xmm7 - vmovdqa %xmm3, 0*16(%rax) - vmovdqa %xmm7, 1*16(%rax) - - sha256_xop_extend_doubleround 2 - sha256_xop_extend_doubleround 4 - - vmovdqa -9*16(%rax), %xmm0 - vprotd $25, %xmm0, %xmm1 - vprotd $14, %xmm0, %xmm2 - vpsrld $3, %xmm0, %xmm8 - vpxor %xmm1, %xmm2, %xmm2 - vpxor %xmm2, %xmm8, %xmm8 - vpaddd sha256d_4preext2_23(%rip), %xmm0, %xmm4 - vpaddd -10*16(%rax), %xmm8, %xmm0 - vprotd $15, %xmm3, %xmm1 - vprotd $15, %xmm7, %xmm5 - vprotd $13, %xmm3, %xmm2 - vprotd $13, %xmm7, %xmm6 - vpxor %xmm1, %xmm2, %xmm2 - vpxor %xmm5, %xmm6, %xmm6 - vpaddd -1*16(%rax), %xmm0, %xmm0 - vpaddd 0*16(%rax), %xmm4, %xmm4 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd %xmm0, %xmm3, %xmm3 - vpaddd %xmm4, %xmm7, %xmm7 - vmovdqa %xmm3, 6*16(%rax) - vmovdqa %xmm7, 7*16(%rax) - - vprotd $15, %xmm3, %xmm1 - vprotd $15, %xmm7, %xmm5 - vprotd $13, %xmm3, %xmm2 - vprotd $13, %xmm7, %xmm6 - vpxor %xmm1, %xmm2, %xmm2 - vpxor %xmm5, %xmm6, %xmm6 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd sha256d_4preext2_24(%rip), %xmm3, %xmm3 - vpaddd 1*16(%rax), %xmm3, %xmm3 - vpaddd 2*16(%rax), %xmm7, %xmm7 - vmovdqa %xmm3, 8*16(%rax) - vmovdqa %xmm7, 9*16(%rax) - - vprotd $15, %xmm3, %xmm1 - vprotd $15, %xmm7, %xmm5 - vprotd $13, %xmm3, %xmm2 - vprotd $13, %xmm7, %xmm6 - vpxor %xmm1, %xmm2, %xmm2 - vpxor %xmm5, %xmm6, %xmm6 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd 3*16(%rax), %xmm3, %xmm3 - vpaddd 4*16(%rax), %xmm7, %xmm7 - vmovdqa %xmm3, 10*16(%rax) - vmovdqa %xmm7, 11*16(%rax) - - vprotd $15, %xmm3, %xmm1 - vprotd $15, %xmm7, %xmm5 - vprotd $13, %xmm3, %xmm2 - vprotd $13, %xmm7, %xmm6 - vpxor %xmm1, %xmm2, %xmm2 - vpxor %xmm5, %xmm6, %xmm6 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd 5*16(%rax), %xmm3, %xmm3 - vpaddd 6*16(%rax), %xmm7, %xmm7 - vmovdqa %xmm3, 12*16(%rax) - vmovdqa %xmm7, 13*16(%rax) - - vmovdqa sha256d_4preext2_30(%rip), %xmm0 - vmovdqa 0*16(%rax), %xmm4 - vprotd $25, %xmm4, %xmm5 - vprotd $14, %xmm4, %xmm6 - vpxor %xmm5, %xmm6, %xmm6 - vpsrld $3, %xmm4, %xmm4 - vpxor %xmm6, %xmm4, %xmm4 - vpaddd -1*16(%rax), %xmm4, %xmm4 - vprotd $15, %xmm3, %xmm1 - vprotd $15, %xmm7, %xmm5 - vprotd $13, %xmm3, %xmm2 - vprotd $13, %xmm7, %xmm6 - vpxor %xmm1, %xmm2, %xmm2 - vpxor %xmm5, %xmm6, %xmm6 - vpaddd 7*16(%rax), %xmm0, %xmm0 - vpaddd 8*16(%rax), %xmm4, %xmm4 - vpsrld $10, %xmm3, %xmm3 - vpsrld $10, %xmm7, %xmm7 - vpxor %xmm2, %xmm3, %xmm3 - vpxor %xmm6, %xmm7, %xmm7 - vpaddd %xmm0, %xmm3, %xmm3 - vpaddd %xmm4, %xmm7, %xmm7 - vmovdqa %xmm3, 14*16(%rax) - vmovdqa %xmm7, 15*16(%rax) - - jmp sha256d_ms_4way_xop_extend_loop2 - -sha256d_ms_4way_xop_extend_coda2: - sha256_xop_extend_round 44 - - movdqa sha256_4h+0(%rip), %xmm7 - movdqa sha256_4h+16(%rip), %xmm5 - movdqa sha256_4h+32(%rip), %xmm4 - movdqa sha256_4h+48(%rip), %xmm3 - movdqa sha256_4h+64(%rip), %xmm0 - movdqa sha256_4h+80(%rip), %xmm8 - movdqa sha256_4h+96(%rip), %xmm9 - movdqa sha256_4h+112(%rip), %xmm10 - - movq %rsp, %rax - leaq sha256_4k(%rip), %rcx - jmp sha256d_ms_4way_xop_main_loop2 - .macro sha256_xop_main_round_red i, r0, r1, r2, r3, r4 vpaddd 16*\i(%rax), \r0, %xmm6 vpaddd 16*\i(%rcx), %xmm6, %xmm6 @@ -3484,28 +1903,6 @@ sha256d_ms_4way_xop_extend_coda2: vpaddd \r0, %xmm6, %xmm6 vpaddd %xmm6, \r4, \r0 .endm - -sha256d_ms_4way_xop_finish: - sha256_xop_main_round_red 57, %xmm9, %xmm8, %xmm0, %xmm10, %xmm4 - sha256_xop_main_round_red 58, %xmm8, %xmm0, %xmm10, %xmm9, %xmm5 - sha256_xop_main_round_red 59, %xmm0, %xmm10, %xmm9, %xmm8, %xmm7 - sha256_xop_main_round_red 60, %xmm10, %xmm9, %xmm8, %xmm0, %xmm3 - - paddd sha256_4h+112(%rip), %xmm10 - movdqa %xmm10, 112(%rdi) - - addq $1032, %rsp -#if defined(_WIN64) || defined(__CYGWIN__) - popq %rsi - movdqa 0(%rsp), %xmm6 - movdqa 16(%rsp), %xmm7 - movdqa 32(%rsp), %xmm8 - movdqa 48(%rsp), %xmm9 - movdqa 64(%rsp), %xmm10 - addq $80, %rsp - popq %rdi -#endif - ret .text .p2align 6 @@ -3551,21 +1948,17 @@ sha256_use_4way_no_phe: jz sha256_use_4way_avx sha256_use_4way_xop: - leaq sha256d_ms_4way_xop(%rip), %rcx leaq sha256_transform_4way_core_xop(%rip), %rdx jmp sha256_use_4way_done sha256_use_4way_avx: - leaq sha256d_ms_4way_avx(%rip), %rcx leaq sha256_transform_4way_core_avx(%rip), %rdx jmp sha256_use_4way_done sha256_use_4way_base: - leaq sha256d_ms_4way_sse2(%rip), %rcx leaq sha256_transform_4way_core_sse2(%rip), %rdx sha256_use_4way_done: - movq %rcx, sha256d_ms_4way_addr(%rip) movq %rdx, sha256_transform_4way_core_addr(%rip) movl $1, %eax sha256_use_4way_exit: @@ -3601,508 +1994,6 @@ sha256_use_ssse3_done: ret #endif - .text - .p2align 6 - .globl sha256d_ms_8way - .globl _sha256d_ms_8way -sha256d_ms_8way: -_sha256d_ms_8way: -sha256d_ms_8way_avx2: -#if defined(_WIN64) || defined(__CYGWIN__) - pushq %rdi - subq $80, %rsp - vmovdqa %xmm6, 0(%rsp) - vmovdqa %xmm7, 16(%rsp) - vmovdqa %xmm8, 32(%rsp) - vmovdqa %xmm9, 48(%rsp) - vmovdqa %xmm10, 64(%rsp) - pushq %rsi - movq %rcx, %rdi - movq %rdx, %rsi - movq %r8, %rdx - movq %r9, %rcx -#endif - pushq %rbp - movq %rsp, %rbp - subq $64*32, %rsp - andq $-128, %rsp - - leaq 16*32(%rsi), %rax - -sha256d_ms_8way_avx2_extend_loop1: - vmovdqa 3*32(%rsi), %ymm0 - vmovdqa 2*32(%rax), %ymm3 - vmovdqa 3*32(%rax), %ymm7 - vmovdqa %ymm3, 2*32(%rsp) - vmovdqa %ymm7, 3*32(%rsp) - vpaddd %ymm0, %ymm7, %ymm7 - vpslld $14, %ymm0, %ymm2 - vpsrld $3, %ymm0, %ymm0 - vpsrld $4, %ymm0, %ymm1 - vpxor %ymm1, %ymm0, %ymm0 - vpxor %ymm2, %ymm0, %ymm0 - vpsrld $11, %ymm1, %ymm1 - vpslld $11, %ymm2, %ymm2 - vpxor %ymm1, %ymm0, %ymm0 - vpxor %ymm2, %ymm0, %ymm0 - vpaddd %ymm0, %ymm3, %ymm3 - vmovdqa %ymm3, 2*32(%rax) - vmovdqa %ymm7, 3*32(%rax) - - vmovdqa 4*32(%rax), %ymm0 - vmovdqa %ymm0, 4*32(%rsp) - vpslld $13, %ymm3, %ymm2 - vpslld $13, %ymm7, %ymm6 - vpsrld $10, %ymm3, %ymm3 - vpsrld $10, %ymm7, %ymm7 - vpsrld $7, %ymm3, %ymm1 - vpsrld $7, %ymm7, %ymm5 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpsrld $2, %ymm1, %ymm1 - vpsrld $2, %ymm5, %ymm5 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpslld $2, %ymm2, %ymm2 - vpslld $2, %ymm6, %ymm6 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpaddd %ymm0, %ymm3, %ymm3 - vmovdqa %ymm3, 4*32(%rax) - vmovdqa %ymm7, 5*32(%rax) - - vmovdqa 6*32(%rax), %ymm0 - vmovdqa 7*32(%rax), %ymm4 - vmovdqa %ymm0, 6*32(%rsp) - vmovdqa %ymm4, 7*32(%rsp) - vpslld $13, %ymm3, %ymm2 - vpslld $13, %ymm7, %ymm6 - vpsrld $10, %ymm3, %ymm3 - vpsrld $10, %ymm7, %ymm7 - vpsrld $7, %ymm3, %ymm1 - vpsrld $7, %ymm7, %ymm5 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpsrld $2, %ymm1, %ymm1 - vpsrld $2, %ymm5, %ymm5 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpslld $2, %ymm2, %ymm2 - vpslld $2, %ymm6, %ymm6 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpaddd %ymm0, %ymm3, %ymm3 - vpaddd %ymm4, %ymm7, %ymm7 - vmovdqa %ymm3, 6*32(%rax) - vmovdqa %ymm7, 7*32(%rax) - - vmovdqa 8*32(%rax), %ymm0 - vmovdqa 2*32(%rax), %ymm4 - vmovdqa %ymm0, 8*32(%rsp) - vpslld $13, %ymm3, %ymm2 - vpslld $13, %ymm7, %ymm6 - vpsrld $10, %ymm3, %ymm3 - vpsrld $10, %ymm7, %ymm7 - vpsrld $7, %ymm3, %ymm1 - vpsrld $7, %ymm7, %ymm5 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpsrld $2, %ymm1, %ymm1 - vpsrld $2, %ymm5, %ymm5 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpslld $2, %ymm2, %ymm2 - vpslld $2, %ymm6, %ymm6 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpaddd %ymm0, %ymm3, %ymm3 - vpaddd %ymm4, %ymm7, %ymm7 - vmovdqa %ymm3, 8*32(%rax) - vmovdqa %ymm7, 9*32(%rax) - - vpslld $13, %ymm3, %ymm2 - vpslld $13, %ymm7, %ymm6 - vpsrld $10, %ymm3, %ymm3 - vpsrld $10, %ymm7, %ymm7 - vpsrld $7, %ymm3, %ymm1 - vpsrld $7, %ymm7, %ymm5 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpsrld $2, %ymm1, %ymm1 - vpsrld $2, %ymm5, %ymm5 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpslld $2, %ymm2, %ymm2 - vpslld $2, %ymm6, %ymm6 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpaddd 3*32(%rax), %ymm3, %ymm3 - vpaddd 4*32(%rax), %ymm7, %ymm7 - vmovdqa %ymm3, 10*32(%rax) - vmovdqa %ymm7, 11*32(%rax) - - vpslld $13, %ymm3, %ymm2 - vpslld $13, %ymm7, %ymm6 - vpsrld $10, %ymm3, %ymm3 - vpsrld $10, %ymm7, %ymm7 - vpsrld $7, %ymm3, %ymm1 - vpsrld $7, %ymm7, %ymm5 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpsrld $2, %ymm1, %ymm1 - vpsrld $2, %ymm5, %ymm5 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpslld $2, %ymm2, %ymm2 - vpslld $2, %ymm6, %ymm6 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpaddd 5*32(%rax), %ymm3, %ymm3 - vpaddd 6*32(%rax), %ymm7, %ymm7 - vmovdqa %ymm3, 12*32(%rax) - vmovdqa %ymm7, 13*32(%rax) - - vmovdqa 14*32(%rax), %ymm0 - vmovdqa 15*32(%rax), %ymm4 - vmovdqa %ymm0, 14*32(%rsp) - vmovdqa %ymm4, 15*32(%rsp) - vpslld $13, %ymm3, %ymm2 - vpslld $13, %ymm7, %ymm6 - vpsrld $10, %ymm3, %ymm3 - vpsrld $10, %ymm7, %ymm7 - vpaddd 7*32(%rax), %ymm0, %ymm0 - vpaddd 8*32(%rax), %ymm4, %ymm4 - vpsrld $7, %ymm3, %ymm1 - vpsrld $7, %ymm7, %ymm5 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpsrld $2, %ymm1, %ymm1 - vpsrld $2, %ymm5, %ymm5 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpslld $2, %ymm2, %ymm2 - vpslld $2, %ymm6, %ymm6 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpaddd %ymm0, %ymm3, %ymm3 - vpaddd %ymm4, %ymm7, %ymm7 - vmovdqa %ymm3, 14*32(%rax) - vmovdqa %ymm7, 15*32(%rax) - -sha256d_ms_8way_avx2_extend_loop2: - sha256_avx2_extend_doubleround 16 - sha256_avx2_extend_doubleround 18 - sha256_avx2_extend_doubleround 20 - sha256_avx2_extend_doubleround 22 - sha256_avx2_extend_doubleround 24 - sha256_avx2_extend_doubleround 26 - sha256_avx2_extend_doubleround 28 - sha256_avx2_extend_doubleround 30 - sha256_avx2_extend_doubleround 32 - sha256_avx2_extend_doubleround 34 - sha256_avx2_extend_doubleround 36 - sha256_avx2_extend_doubleround 38 - sha256_avx2_extend_doubleround 40 - sha256_avx2_extend_doubleround 42 - jz sha256d_ms_8way_avx2_extend_coda2 - sha256_avx2_extend_doubleround 44 - sha256_avx2_extend_doubleround 46 - - vmovdqa 0(%rcx), %ymm7 - vmovdqa 32(%rcx), %ymm8 - vmovdqa 64(%rcx), %ymm9 - vmovdqa 96(%rcx), %ymm10 - vmovdqa 128(%rcx), %ymm0 - vmovdqa 160(%rcx), %ymm5 - vmovdqa 192(%rcx), %ymm4 - vmovdqa 224(%rcx), %ymm3 - - movq %rsi, %rax - leaq sha256_8k(%rip), %rcx - jmp sha256d_ms_8way_avx2_main_loop1 - -sha256d_ms_8way_avx2_main_loop2: - sha256_avx2_main_round 0, %ymm10, %ymm9, %ymm8, %ymm0, %ymm3, %ymm4, %ymm5, %ymm7 - sha256_avx2_main_round 1, %ymm9, %ymm8, %ymm0, %ymm10, %ymm4, %ymm5, %ymm7, %ymm3 - sha256_avx2_main_round 2, %ymm8, %ymm0, %ymm10, %ymm9, %ymm5, %ymm7, %ymm3, %ymm4 -sha256d_ms_8way_avx2_main_loop1: - sha256_avx2_main_round 3, %ymm0, %ymm10, %ymm9, %ymm8, %ymm7, %ymm3, %ymm4, %ymm5 - sha256_avx2_main_quadround 4 - sha256_avx2_main_quadround 8 - sha256_avx2_main_quadround 12 - sha256_avx2_main_quadround 16 - sha256_avx2_main_quadround 20 - sha256_avx2_main_quadround 24 - sha256_avx2_main_quadround 28 - sha256_avx2_main_quadround 32 - sha256_avx2_main_quadround 36 - sha256_avx2_main_quadround 40 - sha256_avx2_main_quadround 44 - sha256_avx2_main_quadround 48 - sha256_avx2_main_quadround 52 - sha256_avx2_main_round 56, %ymm10, %ymm9, %ymm8, %ymm0, %ymm3, %ymm4, %ymm5, %ymm7 - jz sha256d_ms_8way_avx2_finish - sha256_avx2_main_round 57, %ymm9, %ymm8, %ymm0, %ymm10, %ymm4, %ymm5, %ymm7, %ymm3 - sha256_avx2_main_round 58, %ymm8, %ymm0, %ymm10, %ymm9, %ymm5, %ymm7, %ymm3, %ymm4 - sha256_avx2_main_round 59, %ymm0, %ymm10, %ymm9, %ymm8, %ymm7, %ymm3, %ymm4, %ymm5 - sha256_avx2_main_quadround 60 - - vmovdqa 2*32(%rsp), %ymm1 - vmovdqa 3*32(%rsp), %ymm2 - vmovdqa 4*32(%rsp), %ymm6 - vmovdqa %ymm1, 18*32(%rsi) - vmovdqa %ymm2, 19*32(%rsi) - vmovdqa %ymm6, 20*32(%rsi) - vmovdqa 6*32(%rsp), %ymm1 - vmovdqa 7*32(%rsp), %ymm2 - vmovdqa 8*32(%rsp), %ymm6 - vmovdqa %ymm1, 22*32(%rsi) - vmovdqa %ymm2, 23*32(%rsi) - vmovdqa %ymm6, 24*32(%rsi) - vmovdqa 14*32(%rsp), %ymm1 - vmovdqa 15*32(%rsp), %ymm2 - vmovdqa %ymm1, 30*32(%rsi) - vmovdqa %ymm2, 31*32(%rsi) - - vpaddd 0(%rdx), %ymm7, %ymm7 - vpaddd 32(%rdx), %ymm5, %ymm5 - vpaddd 64(%rdx), %ymm4, %ymm4 - vpaddd 96(%rdx), %ymm3, %ymm3 - vpaddd 128(%rdx), %ymm0, %ymm0 - vpaddd 160(%rdx), %ymm8, %ymm8 - vpaddd 192(%rdx), %ymm9, %ymm9 - vpaddd 224(%rdx), %ymm10, %ymm10 - - vmovdqa %ymm7, 0(%rsp) - vmovdqa %ymm5, 32(%rsp) - vmovdqa %ymm4, 64(%rsp) - vmovdqa %ymm3, 96(%rsp) - vmovdqa %ymm0, 128(%rsp) - vmovdqa %ymm8, 160(%rsp) - vmovdqa %ymm9, 192(%rsp) - vmovdqa %ymm10, 224(%rsp) - - vpxor %ymm0, %ymm0, %ymm0 - movq $0x8000000000000100, %rax - vmovd %rax, %xmm1 - vinserti128 $1, %xmm1, %ymm1, %ymm1 - vpshufd $0x55, %ymm1, %ymm2 - vpshufd $0x00, %ymm1, %ymm1 - vmovdqa %ymm2, 8*32(%rsp) - vmovdqa %ymm0, 9*32(%rsp) - vmovdqa %ymm0, 10*32(%rsp) - vmovdqa %ymm0, 11*32(%rsp) - vmovdqa %ymm0, 12*32(%rsp) - vmovdqa %ymm0, 13*32(%rsp) - vmovdqa %ymm0, 14*32(%rsp) - vmovdqa %ymm1, 15*32(%rsp) - - leaq 16*32(%rsp), %rax - cmpq %rax, %rax - - vmovdqa -15*32(%rax), %ymm0 - vmovdqa -14*32(%rax), %ymm4 - vpslld $14, %ymm0, %ymm2 - vpslld $14, %ymm4, %ymm6 - vpsrld $3, %ymm0, %ymm8 - vpsrld $3, %ymm4, %ymm4 - vpsrld $7, %ymm0, %ymm1 - vpsrld $4, %ymm4, %ymm5 - vpxor %ymm1, %ymm8, %ymm8 - vpxor %ymm5, %ymm4, %ymm4 - vpsrld $11, %ymm1, %ymm1 - vpsrld $11, %ymm5, %ymm5 - vpxor %ymm2, %ymm8, %ymm8 - vpxor %ymm6, %ymm4, %ymm4 - vpslld $11, %ymm2, %ymm2 - vpslld $11, %ymm6, %ymm6 - vpxor %ymm1, %ymm8, %ymm8 - vpxor %ymm5, %ymm4, %ymm4 - vpxor %ymm2, %ymm8, %ymm8 - vpxor %ymm6, %ymm4, %ymm4 - vpaddd %ymm0, %ymm4, %ymm4 - vpaddd -16*32(%rax), %ymm8, %ymm3 - vpaddd sha256d_8preext2_17(%rip), %ymm4, %ymm7 - vmovdqa %ymm3, 0*32(%rax) - vmovdqa %ymm7, 1*32(%rax) - - sha256_avx2_extend_doubleround 2 - sha256_avx2_extend_doubleround 4 - - vmovdqa -9*32(%rax), %ymm0 - vpslld $14, %ymm0, %ymm2 - vpsrld $3, %ymm0, %ymm8 - vpsrld $7, %ymm0, %ymm1 - vpxor %ymm1, %ymm8, %ymm8 - vpxor %ymm2, %ymm8, %ymm8 - vpsrld $11, %ymm1, %ymm1 - vpslld $11, %ymm2, %ymm2 - vpxor %ymm1, %ymm8, %ymm8 - vpxor %ymm2, %ymm8, %ymm8 - vpaddd sha256d_8preext2_23(%rip), %ymm0, %ymm4 - vpaddd -10*32(%rax), %ymm8, %ymm0 - vpslld $13, %ymm3, %ymm2 - vpslld $13, %ymm7, %ymm6 - vpsrld $10, %ymm3, %ymm3 - vpsrld $10, %ymm7, %ymm7 - vpaddd -1*32(%rax), %ymm0, %ymm0 - vpaddd 0*32(%rax), %ymm4, %ymm4 - vpsrld $7, %ymm3, %ymm1 - vpsrld $7, %ymm7, %ymm5 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpsrld $2, %ymm1, %ymm1 - vpsrld $2, %ymm5, %ymm5 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpslld $2, %ymm2, %ymm2 - vpslld $2, %ymm6, %ymm6 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpaddd %ymm0, %ymm3, %ymm3 - vpaddd %ymm4, %ymm7, %ymm7 - vmovdqa %ymm3, 6*32(%rax) - vmovdqa %ymm7, 7*32(%rax) - - vpslld $13, %ymm3, %ymm2 - vpslld $13, %ymm7, %ymm6 - vpsrld $10, %ymm3, %ymm3 - vpsrld $10, %ymm7, %ymm7 - vpsrld $7, %ymm3, %ymm1 - vpsrld $7, %ymm7, %ymm5 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpsrld $2, %ymm1, %ymm1 - vpsrld $2, %ymm5, %ymm5 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpslld $2, %ymm2, %ymm2 - vpslld $2, %ymm6, %ymm6 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpaddd sha256d_8preext2_24(%rip), %ymm3, %ymm3 - vpaddd 1*32(%rax), %ymm3, %ymm3 - vpaddd 2*32(%rax), %ymm7, %ymm7 - vmovdqa %ymm3, 8*32(%rax) - vmovdqa %ymm7, 9*32(%rax) - - vpslld $13, %ymm3, %ymm2 - vpslld $13, %ymm7, %ymm6 - vpsrld $10, %ymm3, %ymm3 - vpsrld $10, %ymm7, %ymm7 - vpsrld $7, %ymm3, %ymm1 - vpsrld $7, %ymm7, %ymm5 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpsrld $2, %ymm1, %ymm1 - vpsrld $2, %ymm5, %ymm5 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpslld $2, %ymm2, %ymm2 - vpslld $2, %ymm6, %ymm6 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpaddd 3*32(%rax), %ymm3, %ymm3 - vpaddd 4*32(%rax), %ymm7, %ymm7 - vmovdqa %ymm3, 10*32(%rax) - vmovdqa %ymm7, 11*32(%rax) - - vpslld $13, %ymm3, %ymm2 - vpslld $13, %ymm7, %ymm6 - vpsrld $10, %ymm3, %ymm3 - vpsrld $10, %ymm7, %ymm7 - vpsrld $7, %ymm3, %ymm1 - vpsrld $7, %ymm7, %ymm5 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpsrld $2, %ymm1, %ymm1 - vpsrld $2, %ymm5, %ymm5 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpslld $2, %ymm2, %ymm2 - vpslld $2, %ymm6, %ymm6 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpaddd 5*32(%rax), %ymm3, %ymm3 - vpaddd 6*32(%rax), %ymm7, %ymm7 - vmovdqa %ymm3, 12*32(%rax) - vmovdqa %ymm7, 13*32(%rax) - - vmovdqa sha256d_8preext2_30(%rip), %ymm0 - vmovdqa 0*32(%rax), %ymm4 - vpslld $14, %ymm4, %ymm6 - vpsrld $3, %ymm4, %ymm4 - vpsrld $4, %ymm4, %ymm5 - vpxor %ymm5, %ymm4, %ymm4 - vpxor %ymm6, %ymm4, %ymm4 - vpsrld $11, %ymm5, %ymm5 - vpslld $11, %ymm6, %ymm6 - vpxor %ymm5, %ymm4, %ymm4 - vpxor %ymm6, %ymm4, %ymm4 - vpaddd -1*32(%rax), %ymm4, %ymm4 - vpslld $13, %ymm3, %ymm2 - vpslld $13, %ymm7, %ymm6 - vpsrld $10, %ymm3, %ymm3 - vpsrld $10, %ymm7, %ymm7 - vpaddd 7*32(%rax), %ymm0, %ymm0 - vpaddd 8*32(%rax), %ymm4, %ymm4 - vpsrld $7, %ymm3, %ymm1 - vpsrld $7, %ymm7, %ymm5 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpsrld $2, %ymm1, %ymm1 - vpsrld $2, %ymm5, %ymm5 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpslld $2, %ymm2, %ymm2 - vpslld $2, %ymm6, %ymm6 - vpxor %ymm1, %ymm3, %ymm3 - vpxor %ymm5, %ymm7, %ymm7 - vpxor %ymm2, %ymm3, %ymm3 - vpxor %ymm6, %ymm7, %ymm7 - vpaddd %ymm0, %ymm3, %ymm3 - vpaddd %ymm4, %ymm7, %ymm7 - vmovdqa %ymm3, 14*32(%rax) - vmovdqa %ymm7, 15*32(%rax) - - jmp sha256d_ms_8way_avx2_extend_loop2 - -sha256d_ms_8way_avx2_extend_coda2: - sha256_avx2_extend_round 44 - - vmovdqa sha256_8h+0(%rip), %ymm7 - vmovdqa sha256_8h+32(%rip), %ymm5 - vmovdqa sha256_8h+64(%rip), %ymm4 - vmovdqa sha256_8h+96(%rip), %ymm3 - vmovdqa sha256_8h+128(%rip), %ymm0 - vmovdqa sha256_8h+160(%rip), %ymm8 - vmovdqa sha256_8h+192(%rip), %ymm9 - vmovdqa sha256_8h+224(%rip), %ymm10 - - movq %rsp, %rax - leaq sha256_8k(%rip), %rcx - jmp sha256d_ms_8way_avx2_main_loop2 - .macro sha256_avx2_main_round_red i, r0, r1, r2, r3, r4 vpaddd 32*\i(%rax), \r0, %ymm6 vpaddd 32*\i(%rcx), %ymm6, %ymm6 @@ -4125,30 +2016,6 @@ sha256d_ms_8way_avx2_extend_coda2: vpaddd %ymm6, \r4, \r0 .endm -sha256d_ms_8way_avx2_finish: - sha256_avx2_main_round_red 57, %ymm9, %ymm8, %ymm0, %ymm10, %ymm4 - sha256_avx2_main_round_red 58, %ymm8, %ymm0, %ymm10, %ymm9, %ymm5 - sha256_avx2_main_round_red 59, %ymm0, %ymm10, %ymm9, %ymm8, %ymm7 - sha256_avx2_main_round_red 60, %ymm10, %ymm9, %ymm8, %ymm0, %ymm3 - - vpaddd sha256_8h+224(%rip), %ymm10, %ymm10 - vmovdqa %ymm10, 224(%rdi) - - movq %rbp, %rsp - popq %rbp -#if defined(_WIN64) || defined(__CYGWIN__) - popq %rsi - vmovdqa 0(%rsp), %xmm6 - vmovdqa 16(%rsp), %xmm7 - vmovdqa 32(%rsp), %xmm8 - vmovdqa 48(%rsp), %xmm9 - vmovdqa 64(%rsp), %xmm10 - addq $80, %rsp - popq %rdi -#endif - ret - - .text .p2align 6 .globl sha256_use_8way