diff options
Diffstat (limited to 'deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha256-mb-x86_64.asm')
-rw-r--r-- | deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha256-mb-x86_64.asm | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha256-mb-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha256-mb-x86_64.asm index 9efc2ad7f0..f0754004b2 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha256-mb-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha256-mb-x86_64.asm @@ -20,14 +20,18 @@ $L$SEH_begin_sha256_multi_block: mov rdx,r8 + mov rcx,QWORD[((OPENSSL_ia32cap_P+4))] bt rcx,61 jc NEAR _shaext_shortcut test ecx,268435456 jnz NEAR _avx_shortcut mov rax,rsp + push rbx + push rbp + lea rsp,[((-168))+rsp] movaps XMMWORD[rsp],xmm6 movaps XMMWORD[16+rsp],xmm7 @@ -42,6 +46,7 @@ $L$SEH_begin_sha256_multi_block: sub rsp,288 and rsp,-256 mov QWORD[272+rsp],rax + $L$body: lea rbp,[((K256+128))] lea rbx,[256+rsp] @@ -2640,6 +2645,7 @@ $L$oop_16_xx: $L$done: mov rax,QWORD[272+rsp] + movaps xmm6,XMMWORD[((-184))+rax] movaps xmm7,XMMWORD[((-168))+rax] movaps xmm8,XMMWORD[((-152))+rax] @@ -2651,12 +2657,16 @@ $L$done: movaps xmm14,XMMWORD[((-56))+rax] movaps xmm15,XMMWORD[((-40))+rax] mov rbp,QWORD[((-16))+rax] + mov rbx,QWORD[((-8))+rax] + lea rsp,[rax] + $L$epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret + $L$SEH_end_sha256_multi_block: ALIGN 32 @@ -2670,10 +2680,14 @@ $L$SEH_begin_sha256_multi_block_shaext: mov rdx,r8 + _shaext_shortcut: mov rax,rsp + push rbx + push rbp + lea rsp,[((-168))+rsp] movaps XMMWORD[rsp],xmm6 movaps XMMWORD[16+rsp],xmm7 @@ -3169,12 +3183,16 @@ $L$done_shaext: movaps xmm14,XMMWORD[((-56))+rax] movaps xmm15,XMMWORD[((-40))+rax] mov rbp,QWORD[((-16))+rax] + mov rbx,QWORD[((-8))+rax] + lea rsp,[rax] + $L$epilogue_shaext: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret + $L$SEH_end_sha256_multi_block_shaext: ALIGN 32 @@ -3188,6 +3206,7 @@ $L$SEH_begin_sha256_multi_block_avx: mov rdx,r8 + _avx_shortcut: shr rcx,32 cmp edx,2 @@ -3198,8 +3217,11 @@ _avx_shortcut: ALIGN 32 $L$avx: mov rax,rsp + push rbx + push rbp + lea rsp,[((-168))+rsp] movaps XMMWORD[rsp],xmm6 movaps XMMWORD[16+rsp],xmm7 @@ -3214,6 +3236,7 @@ $L$avx: sub rsp,288 and rsp,-256 mov QWORD[272+rsp],rax + $L$body_avx: lea rbp,[((K256+128))] lea rbx,[256+rsp] @@ -5442,6 +5465,7 @@ $L$oop_16_xx_avx: $L$done_avx: mov rax,QWORD[272+rsp] + vzeroupper movaps xmm6,XMMWORD[((-184))+rax] movaps xmm7,XMMWORD[((-168))+rax] @@ -5454,12 +5478,16 @@ $L$done_avx: movaps xmm14,XMMWORD[((-56))+rax] movaps xmm15,XMMWORD[((-40))+rax] mov rbp,QWORD[((-16))+rax] + mov rbx,QWORD[((-8))+rax] + lea rsp,[rax] + $L$epilogue_avx: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret + $L$SEH_end_sha256_multi_block_avx: ALIGN 32 @@ -5473,14 +5501,22 @@ $L$SEH_begin_sha256_multi_block_avx2: mov rdx,r8 + _avx2_shortcut: mov rax,rsp + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + lea rsp,[((-168))+rsp] movaps XMMWORD[rsp],xmm6 movaps XMMWORD[16+rsp],xmm7 @@ -5495,6 +5531,7 @@ _avx2_shortcut: sub rsp,576 and rsp,-256 mov QWORD[544+rsp],rax + $L$body_avx2: lea rbp,[((K256+128))] lea rdi,[128+rdi] @@ -7859,6 +7896,7 @@ $L$oop_16_xx_avx2: $L$done_avx2: mov rax,QWORD[544+rsp] + vzeroupper movaps xmm6,XMMWORD[((-216))+rax] movaps xmm7,XMMWORD[((-200))+rax] @@ -7871,16 +7909,24 @@ $L$done_avx2: movaps xmm14,XMMWORD[((-88))+rax] movaps xmm15,XMMWORD[((-72))+rax] mov r15,QWORD[((-48))+rax] + mov r14,QWORD[((-40))+rax] + mov r13,QWORD[((-32))+rax] + mov r12,QWORD[((-24))+rax] + mov rbp,QWORD[((-16))+rax] + mov rbx,QWORD[((-8))+rax] + lea rsp,[rax] + $L$epilogue_avx2: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret + $L$SEH_end_sha256_multi_block_avx2: ALIGN 256 K256: |