summaryrefslogtreecommitdiff
path: root/deps/openssl/asm_obsolete/x64-win32-masm/bn/x86_64-mont5.asm
diff options
context:
space:
mode:
Diffstat (limited to 'deps/openssl/asm_obsolete/x64-win32-masm/bn/x86_64-mont5.asm')
-rw-r--r--deps/openssl/asm_obsolete/x64-win32-masm/bn/x86_64-mont5.asm153
1 files changed, 97 insertions, 56 deletions
diff --git a/deps/openssl/asm_obsolete/x64-win32-masm/bn/x86_64-mont5.asm b/deps/openssl/asm_obsolete/x64-win32-masm/bn/x86_64-mont5.asm
index fb3c27a0ff..89f45a4915 100644
--- a/deps/openssl/asm_obsolete/x64-win32-masm/bn/x86_64-mont5.asm
+++ b/deps/openssl/asm_obsolete/x64-win32-masm/bn/x86_64-mont5.asm
@@ -19,16 +19,15 @@ $L$SEH_begin_bn_mul_mont_gather5::
mov r9,QWORD PTR[48+rsp]
+ mov r9d,r9d
+ mov rax,rsp
test r9d,7
jnz $L$mul_enter
jmp $L$mul4x_enter
ALIGN 16
$L$mul_enter::
- mov r9d,r9d
- mov rax,rsp
movd xmm5,DWORD PTR[56+rsp]
- lea r10,QWORD PTR[$L$inc]
push rbx
push rbp
push r12
@@ -36,26 +35,36 @@ $L$mul_enter::
push r14
push r15
- lea r11,QWORD PTR[2+r9]
- neg r11
- lea rsp,QWORD PTR[((-264))+r11*8+rsp]
- and rsp,-1024
+ neg r9
+ mov r11,rsp
+ lea r10,QWORD PTR[((-280))+r9*8+rsp]
+ neg r9
+ and r10,-1024
+
- mov QWORD PTR[8+r9*8+rsp],rax
-$L$mul_body::
+ sub r11,r10
+ and r11,-4096
+ lea rsp,QWORD PTR[r11*1+r10]
+ mov r11,QWORD PTR[rsp]
+ cmp rsp,r10
+ ja $L$mul_page_walk
+ jmp $L$mul_page_walk_done
- sub rax,rsp
- and rax,-4096
$L$mul_page_walk::
- mov r11,QWORD PTR[rax*1+rsp]
- sub rax,4096
-DB 02eh
- jnc $L$mul_page_walk
+ lea rsp,QWORD PTR[((-4096))+rsp]
+ mov r11,QWORD PTR[rsp]
+ cmp rsp,r10
+ ja $L$mul_page_walk
+$L$mul_page_walk_done::
+
+ lea r10,QWORD PTR[$L$inc]
+ mov QWORD PTR[8+r9*8+rsp],rax
+$L$mul_body::
lea r12,QWORD PTR[128+rdx]
movdqa xmm0,XMMWORD PTR[r10]
@@ -441,15 +450,16 @@ $L$SEH_begin_bn_mul4x_mont_gather5::
mov r9,QWORD PTR[48+rsp]
-$L$mul4x_enter::
DB 067h
mov rax,rsp
+$L$mul4x_enter::
push rbx
push rbp
push r12
push r13
push r14
push r15
+$L$mul4x_prologue::
DB 067h
shl r9d,3
@@ -466,32 +476,40 @@ DB 067h
lea r11,QWORD PTR[((-320))+r9*2+rsp]
+ mov rbp,rsp
sub r11,rdi
and r11,4095
cmp r10,r11
jb $L$mul4xsp_alt
- sub rsp,r11
- lea rsp,QWORD PTR[((-320))+r9*2+rsp]
+ sub rbp,r11
+ lea rbp,QWORD PTR[((-320))+r9*2+rbp]
jmp $L$mul4xsp_done
ALIGN 32
$L$mul4xsp_alt::
lea r10,QWORD PTR[((4096-320))+r9*2]
- lea rsp,QWORD PTR[((-320))+r9*2+rsp]
+ lea rbp,QWORD PTR[((-320))+r9*2+rbp]
sub r11,r10
mov r10,0
cmovc r11,r10
- sub rsp,r11
+ sub rbp,r11
$L$mul4xsp_done::
- and rsp,-64
- mov r11,rax
- sub r11,rsp
+ and rbp,-64
+ mov r11,rsp
+ sub r11,rbp
and r11,-4096
+ lea rsp,QWORD PTR[rbp*1+r11]
+ mov r10,QWORD PTR[rsp]
+ cmp rsp,rbp
+ ja $L$mul4x_page_walk
+ jmp $L$mul4x_page_walk_done
+
$L$mul4x_page_walk::
- mov r10,QWORD PTR[r11*1+rsp]
- sub r11,4096
-DB 02eh
- jnc $L$mul4x_page_walk
+ lea rsp,QWORD PTR[((-4096))+rsp]
+ mov r10,QWORD PTR[rsp]
+ cmp rsp,rbp
+ ja $L$mul4x_page_walk
+$L$mul4x_page_walk_done::
neg r9
@@ -1065,6 +1083,7 @@ $L$SEH_begin_bn_power5::
push r13
push r14
push r15
+$L$power5_prologue::
shl r9d,3
lea r10d,DWORD PTR[r9*2+r9]
@@ -1079,32 +1098,40 @@ $L$SEH_begin_bn_power5::
lea r11,QWORD PTR[((-320))+r9*2+rsp]
+ mov rbp,rsp
sub r11,rdi
and r11,4095
cmp r10,r11
jb $L$pwr_sp_alt
- sub rsp,r11
- lea rsp,QWORD PTR[((-320))+r9*2+rsp]
+ sub rbp,r11
+ lea rbp,QWORD PTR[((-320))+r9*2+rbp]
jmp $L$pwr_sp_done
ALIGN 32
$L$pwr_sp_alt::
lea r10,QWORD PTR[((4096-320))+r9*2]
- lea rsp,QWORD PTR[((-320))+r9*2+rsp]
+ lea rbp,QWORD PTR[((-320))+r9*2+rbp]
sub r11,r10
mov r10,0
cmovc r11,r10
- sub rsp,r11
+ sub rbp,r11
$L$pwr_sp_done::
- and rsp,-64
- mov r11,rax
- sub r11,rsp
+ and rbp,-64
+ mov r11,rsp
+ sub r11,rbp
and r11,-4096
+ lea rsp,QWORD PTR[rbp*1+r11]
+ mov r10,QWORD PTR[rsp]
+ cmp rsp,rbp
+ ja $L$pwr_page_walk
+ jmp $L$pwr_page_walk_done
+
$L$pwr_page_walk::
- mov r10,QWORD PTR[r11*1+rsp]
- sub r11,4096
-DB 02eh
- jnc $L$pwr_page_walk
+ lea rsp,QWORD PTR[((-4096))+rsp]
+ mov r10,QWORD PTR[rsp]
+ cmp rsp,rbp
+ ja $L$pwr_page_walk
+$L$pwr_page_walk_done::
mov r10,r9
neg r9
@@ -2030,6 +2057,7 @@ DB 067h
push r13
push r14
push r15
+$L$from_prologue::
shl r9d,3
lea r10,QWORD PTR[r9*2+r9]
@@ -2044,32 +2072,40 @@ DB 067h
lea r11,QWORD PTR[((-320))+r9*2+rsp]
+ mov rbp,rsp
sub r11,rdi
and r11,4095
cmp r10,r11
jb $L$from_sp_alt
- sub rsp,r11
- lea rsp,QWORD PTR[((-320))+r9*2+rsp]
+ sub rbp,r11
+ lea rbp,QWORD PTR[((-320))+r9*2+rbp]
jmp $L$from_sp_done
ALIGN 32
$L$from_sp_alt::
lea r10,QWORD PTR[((4096-320))+r9*2]
- lea rsp,QWORD PTR[((-320))+r9*2+rsp]
+ lea rbp,QWORD PTR[((-320))+r9*2+rbp]
sub r11,r10
mov r10,0
cmovc r11,r10
- sub rsp,r11
+ sub rbp,r11
$L$from_sp_done::
- and rsp,-64
- mov r11,rax
- sub r11,rsp
+ and rbp,-64
+ mov r11,rsp
+ sub r11,rbp
and r11,-4096
+ lea rsp,QWORD PTR[rbp*1+r11]
+ mov r10,QWORD PTR[rsp]
+ cmp rsp,rbp
+ ja $L$from_page_walk
+ jmp $L$from_page_walk_done
+
$L$from_page_walk::
- mov r10,QWORD PTR[r11*1+rsp]
- sub r11,4096
-DB 02eh
- jnc $L$from_page_walk
+ lea rsp,QWORD PTR[((-4096))+rsp]
+ mov r10,QWORD PTR[rsp]
+ cmp rsp,rbp
+ ja $L$from_page_walk
+$L$from_page_walk_done::
mov r10,r9
neg r9
@@ -2383,9 +2419,14 @@ mul_handler PROC PRIVATE
cmp rbx,r10
jb $L$common_seh_tail
+ mov r10d,DWORD PTR[4+r11]
+ lea r10,QWORD PTR[r10*1+rsi]
+ cmp rbx,r10
+ jb $L$common_pop_regs
+
mov rax,QWORD PTR[152+r8]
- mov r10d,DWORD PTR[4+r11]
+ mov r10d,DWORD PTR[8+r11]
lea r10,QWORD PTR[r10*1+rsi]
cmp rbx,r10
jae $L$common_seh_tail
@@ -2397,11 +2438,11 @@ mul_handler PROC PRIVATE
mov r10,QWORD PTR[192+r8]
mov rax,QWORD PTR[8+r10*8+rax]
- jmp $L$body_proceed
+ jmp $L$common_pop_regs
$L$body_40::
mov rax,QWORD PTR[40+rax]
-$L$body_proceed::
+$L$common_pop_regs::
mov rbx,QWORD PTR[((-8))+rax]
mov rbp,QWORD PTR[((-16))+rax]
mov r12,QWORD PTR[((-24))+rax]
@@ -2483,22 +2524,22 @@ ALIGN 8
$L$SEH_info_bn_mul_mont_gather5::
DB 9,0,0,0
DD imagerel mul_handler
- DD imagerel $L$mul_body,imagerel $L$mul_epilogue
+ DD imagerel $L$mul_body,imagerel $L$mul_body,imagerel $L$mul_epilogue
ALIGN 8
$L$SEH_info_bn_mul4x_mont_gather5::
DB 9,0,0,0
DD imagerel mul_handler
- DD imagerel $L$mul4x_body,imagerel $L$mul4x_epilogue
+ DD imagerel $L$mul4x_prologue,imagerel $L$mul4x_body,imagerel $L$mul4x_epilogue
ALIGN 8
$L$SEH_info_bn_power5::
DB 9,0,0,0
DD imagerel mul_handler
- DD imagerel $L$power5_body,imagerel $L$power5_epilogue
+ DD imagerel $L$power5_prologue,imagerel $L$power5_body,imagerel $L$power5_epilogue
ALIGN 8
$L$SEH_info_bn_from_mont8x::
DB 9,0,0,0
DD imagerel mul_handler
- DD imagerel $L$from_body,imagerel $L$from_epilogue
+ DD imagerel $L$from_prologue,imagerel $L$from_body,imagerel $L$from_epilogue
ALIGN 8
$L$SEH_info_bn_gather5::
DB 001h,00bh,003h,00ah