early-access version 1255
This commit is contained in:
469
externals/libressl/crypto/bn/gf2m-masm-x86_64.S
vendored
Executable file
469
externals/libressl/crypto/bn/gf2m-masm-x86_64.S
vendored
Executable file
@@ -0,0 +1,469 @@
|
||||
; 1 "crypto/bn/gf2m-masm-x86_64.S.tmp"
|
||||
; 1 "<built-in>" 1
|
||||
; 1 "<built-in>" 3
|
||||
; 340 "<built-in>" 3
|
||||
; 1 "<command line>" 1
|
||||
; 1 "<built-in>" 2
|
||||
; 1 "crypto/bn/gf2m-masm-x86_64.S.tmp" 2
|
||||
OPTION DOTNAME
|
||||
|
||||
; 1 "./crypto/x86_arch.h" 1
|
||||
|
||||
|
||||
; 16 "./crypto/x86_arch.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; 40 "./crypto/x86_arch.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; 3 "crypto/bn/gf2m-masm-x86_64.S.tmp" 2
|
||||
.text$ SEGMENT ALIGN(64) 'CODE'
|
||||
|
||||
|
||||
ALIGN 16
|
||||
_mul_1x1 PROC PRIVATE
|
||||
sub rsp,128+8
|
||||
mov r9,-1
|
||||
lea rsi,QWORD PTR[rax*1+rax]
|
||||
shr r9,3
|
||||
lea rdi,QWORD PTR[rax*4]
|
||||
and r9,rax
|
||||
lea r12,QWORD PTR[rax*8]
|
||||
sar rax,63
|
||||
lea r10,QWORD PTR[r9*1+r9]
|
||||
sar rsi,63
|
||||
lea r11,QWORD PTR[r9*4]
|
||||
and rax,rbp
|
||||
sar rdi,63
|
||||
mov rdx,rax
|
||||
shl rax,63
|
||||
and rsi,rbp
|
||||
shr rdx,1
|
||||
mov rcx,rsi
|
||||
shl rsi,62
|
||||
and rdi,rbp
|
||||
shr rcx,2
|
||||
xor rax,rsi
|
||||
mov rbx,rdi
|
||||
shl rdi,61
|
||||
xor rdx,rcx
|
||||
shr rbx,3
|
||||
xor rax,rdi
|
||||
xor rdx,rbx
|
||||
|
||||
mov r13,r9
|
||||
mov QWORD PTR[rsp],0
|
||||
xor r13,r10
|
||||
mov QWORD PTR[8+rsp],r9
|
||||
mov r14,r11
|
||||
mov QWORD PTR[16+rsp],r10
|
||||
xor r14,r12
|
||||
mov QWORD PTR[24+rsp],r13
|
||||
|
||||
xor r9,r11
|
||||
mov QWORD PTR[32+rsp],r11
|
||||
xor r10,r11
|
||||
mov QWORD PTR[40+rsp],r9
|
||||
xor r13,r11
|
||||
mov QWORD PTR[48+rsp],r10
|
||||
xor r9,r14
|
||||
mov QWORD PTR[56+rsp],r13
|
||||
xor r10,r14
|
||||
|
||||
mov QWORD PTR[64+rsp],r12
|
||||
xor r13,r14
|
||||
mov QWORD PTR[72+rsp],r9
|
||||
xor r9,r11
|
||||
mov QWORD PTR[80+rsp],r10
|
||||
xor r10,r11
|
||||
mov QWORD PTR[88+rsp],r13
|
||||
|
||||
xor r13,r11
|
||||
mov QWORD PTR[96+rsp],r14
|
||||
mov rsi,r8
|
||||
mov QWORD PTR[104+rsp],r9
|
||||
and rsi,rbp
|
||||
mov QWORD PTR[112+rsp],r10
|
||||
shr rbp,4
|
||||
mov QWORD PTR[120+rsp],r13
|
||||
mov rdi,r8
|
||||
and rdi,rbp
|
||||
shr rbp,4
|
||||
|
||||
movq xmm0,QWORD PTR[rsi*8+rsp]
|
||||
mov rsi,r8
|
||||
and rsi,rbp
|
||||
shr rbp,4
|
||||
mov rcx,QWORD PTR[rdi*8+rsp]
|
||||
mov rdi,r8
|
||||
mov rbx,rcx
|
||||
shl rcx,4
|
||||
and rdi,rbp
|
||||
movq xmm1,QWORD PTR[rsi*8+rsp]
|
||||
shr rbx,60
|
||||
xor rax,rcx
|
||||
pslldq xmm1,1
|
||||
mov rsi,r8
|
||||
shr rbp,4
|
||||
xor rdx,rbx
|
||||
and rsi,rbp
|
||||
shr rbp,4
|
||||
pxor xmm0,xmm1
|
||||
mov rcx,QWORD PTR[rdi*8+rsp]
|
||||
mov rdi,r8
|
||||
mov rbx,rcx
|
||||
shl rcx,12
|
||||
and rdi,rbp
|
||||
movq xmm1,QWORD PTR[rsi*8+rsp]
|
||||
shr rbx,52
|
||||
xor rax,rcx
|
||||
pslldq xmm1,2
|
||||
mov rsi,r8
|
||||
shr rbp,4
|
||||
xor rdx,rbx
|
||||
and rsi,rbp
|
||||
shr rbp,4
|
||||
pxor xmm0,xmm1
|
||||
mov rcx,QWORD PTR[rdi*8+rsp]
|
||||
mov rdi,r8
|
||||
mov rbx,rcx
|
||||
shl rcx,20
|
||||
and rdi,rbp
|
||||
movq xmm1,QWORD PTR[rsi*8+rsp]
|
||||
shr rbx,44
|
||||
xor rax,rcx
|
||||
pslldq xmm1,3
|
||||
mov rsi,r8
|
||||
shr rbp,4
|
||||
xor rdx,rbx
|
||||
and rsi,rbp
|
||||
shr rbp,4
|
||||
pxor xmm0,xmm1
|
||||
mov rcx,QWORD PTR[rdi*8+rsp]
|
||||
mov rdi,r8
|
||||
mov rbx,rcx
|
||||
shl rcx,28
|
||||
and rdi,rbp
|
||||
movq xmm1,QWORD PTR[rsi*8+rsp]
|
||||
shr rbx,36
|
||||
xor rax,rcx
|
||||
pslldq xmm1,4
|
||||
mov rsi,r8
|
||||
shr rbp,4
|
||||
xor rdx,rbx
|
||||
and rsi,rbp
|
||||
shr rbp,4
|
||||
pxor xmm0,xmm1
|
||||
mov rcx,QWORD PTR[rdi*8+rsp]
|
||||
mov rdi,r8
|
||||
mov rbx,rcx
|
||||
shl rcx,36
|
||||
and rdi,rbp
|
||||
movq xmm1,QWORD PTR[rsi*8+rsp]
|
||||
shr rbx,28
|
||||
xor rax,rcx
|
||||
pslldq xmm1,5
|
||||
mov rsi,r8
|
||||
shr rbp,4
|
||||
xor rdx,rbx
|
||||
and rsi,rbp
|
||||
shr rbp,4
|
||||
pxor xmm0,xmm1
|
||||
mov rcx,QWORD PTR[rdi*8+rsp]
|
||||
mov rdi,r8
|
||||
mov rbx,rcx
|
||||
shl rcx,44
|
||||
and rdi,rbp
|
||||
movq xmm1,QWORD PTR[rsi*8+rsp]
|
||||
shr rbx,20
|
||||
xor rax,rcx
|
||||
pslldq xmm1,6
|
||||
mov rsi,r8
|
||||
shr rbp,4
|
||||
xor rdx,rbx
|
||||
and rsi,rbp
|
||||
shr rbp,4
|
||||
pxor xmm0,xmm1
|
||||
mov rcx,QWORD PTR[rdi*8+rsp]
|
||||
mov rdi,r8
|
||||
mov rbx,rcx
|
||||
shl rcx,52
|
||||
and rdi,rbp
|
||||
movq xmm1,QWORD PTR[rsi*8+rsp]
|
||||
shr rbx,12
|
||||
xor rax,rcx
|
||||
pslldq xmm1,7
|
||||
mov rsi,r8
|
||||
shr rbp,4
|
||||
xor rdx,rbx
|
||||
and rsi,rbp
|
||||
shr rbp,4
|
||||
pxor xmm0,xmm1
|
||||
mov rcx,QWORD PTR[rdi*8+rsp]
|
||||
mov rbx,rcx
|
||||
shl rcx,60
|
||||
movd rsi,xmm0
|
||||
shr rbx,4
|
||||
xor rax,rcx
|
||||
psrldq xmm0,8
|
||||
xor rdx,rbx
|
||||
movd rdi,xmm0
|
||||
xor rax,rsi
|
||||
xor rdx,rdi
|
||||
|
||||
add rsp,128+8
|
||||
DB 0F3h,0C3h ;repret
|
||||
$L$end_mul_1x1::
|
||||
_mul_1x1 ENDP
|
||||
EXTERN OPENSSL_ia32cap_P:NEAR
|
||||
|
||||
PUBLIC bn_GF2m_mul_2x2
|
||||
|
||||
ALIGN 16
|
||||
bn_GF2m_mul_2x2 PROC PUBLIC
|
||||
mov eax,DWORD PTR[((OPENSSL_ia32cap_P+4))]
|
||||
bt eax,1
|
||||
jnc $L$vanilla_mul_2x2
|
||||
|
||||
movd xmm0,rdx
|
||||
movd xmm1,r9
|
||||
movd xmm2,r8
|
||||
movq xmm3,QWORD PTR[40+rsp]
|
||||
movdqa xmm4,xmm0
|
||||
movdqa xmm5,xmm1
|
||||
DB 102,15,58,68,193,0
|
||||
pxor xmm4,xmm2
|
||||
pxor xmm5,xmm3
|
||||
DB 102,15,58,68,211,0
|
||||
DB 102,15,58,68,229,0
|
||||
xorps xmm4,xmm0
|
||||
xorps xmm4,xmm2
|
||||
movdqa xmm5,xmm4
|
||||
pslldq xmm4,8
|
||||
psrldq xmm5,8
|
||||
pxor xmm2,xmm4
|
||||
pxor xmm0,xmm5
|
||||
movdqu XMMWORD PTR[rcx],xmm2
|
||||
movdqu XMMWORD PTR[16+rcx],xmm0
|
||||
DB 0F3h,0C3h ;repret
|
||||
|
||||
ALIGN 16
|
||||
$L$vanilla_mul_2x2::
|
||||
lea rsp,QWORD PTR[((-136))+rsp]
|
||||
mov r10,QWORD PTR[176+rsp]
|
||||
mov QWORD PTR[120+rsp],rdi
|
||||
mov QWORD PTR[128+rsp],rsi
|
||||
mov QWORD PTR[80+rsp],r14
|
||||
mov QWORD PTR[88+rsp],r13
|
||||
mov QWORD PTR[96+rsp],r12
|
||||
mov QWORD PTR[104+rsp],rbp
|
||||
mov QWORD PTR[112+rsp],rbx
|
||||
$L$body_mul_2x2::
|
||||
mov QWORD PTR[32+rsp],rcx
|
||||
mov QWORD PTR[40+rsp],rdx
|
||||
mov QWORD PTR[48+rsp],r8
|
||||
mov QWORD PTR[56+rsp],r9
|
||||
mov QWORD PTR[64+rsp],r10
|
||||
|
||||
mov r8,0fh
|
||||
mov rax,rdx
|
||||
mov rbp,r9
|
||||
call _mul_1x1
|
||||
mov QWORD PTR[16+rsp],rax
|
||||
mov QWORD PTR[24+rsp],rdx
|
||||
|
||||
mov rax,QWORD PTR[48+rsp]
|
||||
mov rbp,QWORD PTR[64+rsp]
|
||||
call _mul_1x1
|
||||
mov QWORD PTR[rsp],rax
|
||||
mov QWORD PTR[8+rsp],rdx
|
||||
|
||||
mov rax,QWORD PTR[40+rsp]
|
||||
mov rbp,QWORD PTR[56+rsp]
|
||||
xor rax,QWORD PTR[48+rsp]
|
||||
xor rbp,QWORD PTR[64+rsp]
|
||||
call _mul_1x1
|
||||
mov rbx,QWORD PTR[rsp]
|
||||
mov rcx,QWORD PTR[8+rsp]
|
||||
mov rdi,QWORD PTR[16+rsp]
|
||||
mov rsi,QWORD PTR[24+rsp]
|
||||
mov rbp,QWORD PTR[32+rsp]
|
||||
|
||||
xor rax,rdx
|
||||
xor rdx,rcx
|
||||
xor rax,rbx
|
||||
mov QWORD PTR[rbp],rbx
|
||||
xor rdx,rdi
|
||||
mov QWORD PTR[24+rbp],rsi
|
||||
xor rax,rsi
|
||||
xor rdx,rsi
|
||||
xor rax,rdx
|
||||
mov QWORD PTR[16+rbp],rdx
|
||||
mov QWORD PTR[8+rbp],rax
|
||||
|
||||
mov r14,QWORD PTR[80+rsp]
|
||||
mov r13,QWORD PTR[88+rsp]
|
||||
mov r12,QWORD PTR[96+rsp]
|
||||
mov rbp,QWORD PTR[104+rsp]
|
||||
mov rbx,QWORD PTR[112+rsp]
|
||||
mov rdi,QWORD PTR[120+rsp]
|
||||
mov rsi,QWORD PTR[128+rsp]
|
||||
lea rsp,QWORD PTR[136+rsp]
|
||||
DB 0F3h,0C3h ;repret
|
||||
$L$end_mul_2x2::
|
||||
bn_GF2m_mul_2x2 ENDP
|
||||
DB 71,70,40,50,94,109,41,32,77,117,108,116,105,112,108,105
|
||||
DB 99,97,116,105,111,110,32,102,111,114,32,120,56,54,95,54
|
||||
DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121
|
||||
DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
|
||||
DB 111,114,103,62,0
|
||||
ALIGN 16
|
||||
EXTERN __imp_RtlVirtualUnwind:NEAR
|
||||
|
||||
|
||||
ALIGN 16
|
||||
se_handler PROC PRIVATE
|
||||
push rsi
|
||||
push rdi
|
||||
push rbx
|
||||
push rbp
|
||||
push r12
|
||||
push r13
|
||||
push r14
|
||||
push r15
|
||||
pushfq
|
||||
sub rsp,64
|
||||
|
||||
mov rax,QWORD PTR[152+r8]
|
||||
mov rbx,QWORD PTR[248+r8]
|
||||
|
||||
lea r10,QWORD PTR[$L$body_mul_2x2]
|
||||
cmp rbx,r10
|
||||
jb $L$in_prologue
|
||||
|
||||
mov r14,QWORD PTR[80+rax]
|
||||
mov r13,QWORD PTR[88+rax]
|
||||
mov r12,QWORD PTR[96+rax]
|
||||
mov rbp,QWORD PTR[104+rax]
|
||||
mov rbx,QWORD PTR[112+rax]
|
||||
mov rdi,QWORD PTR[120+rax]
|
||||
mov rsi,QWORD PTR[128+rax]
|
||||
|
||||
mov QWORD PTR[144+r8],rbx
|
||||
mov QWORD PTR[160+r8],rbp
|
||||
mov QWORD PTR[168+r8],rsi
|
||||
mov QWORD PTR[176+r8],rdi
|
||||
mov QWORD PTR[216+r8],r12
|
||||
mov QWORD PTR[224+r8],r13
|
||||
mov QWORD PTR[232+r8],r14
|
||||
|
||||
$L$in_prologue::
|
||||
lea rax,QWORD PTR[136+rax]
|
||||
mov QWORD PTR[152+r8],rax
|
||||
|
||||
mov rdi,QWORD PTR[40+r9]
|
||||
mov rsi,r8
|
||||
mov ecx,154
|
||||
DD 0a548f3fch
|
||||
|
||||
mov rsi,r9
|
||||
xor rcx,rcx
|
||||
mov rdx,QWORD PTR[8+rsi]
|
||||
mov r8,QWORD PTR[rsi]
|
||||
mov r9,QWORD PTR[16+rsi]
|
||||
mov r10,QWORD PTR[40+rsi]
|
||||
lea r11,QWORD PTR[56+rsi]
|
||||
lea r12,QWORD PTR[24+rsi]
|
||||
mov QWORD PTR[32+rsp],r10
|
||||
mov QWORD PTR[40+rsp],r11
|
||||
mov QWORD PTR[48+rsp],r12
|
||||
mov QWORD PTR[56+rsp],rcx
|
||||
call QWORD PTR[__imp_RtlVirtualUnwind]
|
||||
|
||||
mov eax,1
|
||||
add rsp,64
|
||||
popfq
|
||||
pop r15
|
||||
pop r14
|
||||
pop r13
|
||||
pop r12
|
||||
pop rbp
|
||||
pop rbx
|
||||
pop rdi
|
||||
pop rsi
|
||||
DB 0F3h,0C3h ;repret
|
||||
se_handler ENDP
|
||||
|
||||
.text$ ENDS
|
||||
.pdata SEGMENT READONLY ALIGN(4)
|
||||
ALIGN 4
|
||||
DD imagerel _mul_1x1
|
||||
DD imagerel $L$end_mul_1x1
|
||||
DD imagerel $L$SEH_info_1x1
|
||||
|
||||
DD imagerel $L$vanilla_mul_2x2
|
||||
DD imagerel $L$end_mul_2x2
|
||||
DD imagerel $L$SEH_info_2x2
|
||||
.pdata ENDS
|
||||
.xdata SEGMENT READONLY ALIGN(8)
|
||||
ALIGN 8
|
||||
$L$SEH_info_1x1::
|
||||
DB 001h,007h,002h,000h
|
||||
DB 007h,001h,011h,000h
|
||||
$L$SEH_info_2x2::
|
||||
DB 9,0,0,0
|
||||
DD imagerel se_handler
|
||||
|
||||
.xdata ENDS
|
||||
END
|
||||
|
Reference in New Issue
Block a user