CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64

BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507

Adding the auto-generated assembly files for X64 architectures.

Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
Cc: Mike Kinney <michael.d.kinney@intel.com>
Cc: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Christopher Zurcher <christopher.zurcher@microsoft.com>
Reviewed-by: Jiewen Yao <Jiewen.yao@intel.com>
This commit is contained in:
Christopher Zurcher 2021-07-21 06:06:46 +08:00 committed by mergify[bot]
parent 878a92a887
commit 147f34b56c
26 changed files with 49209 additions and 0 deletions

View File

@ -0,0 +1,732 @@
; WARNING: do not edit!
; Generated from openssl/crypto/aes/asm/aesni-mb-x86_64.pl
;
; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
;
; Licensed under the OpenSSL license (the "License"). You may not use
; this file except in compliance with the License. You can obtain a copy
; in the file LICENSE in the source distribution or at
; https://www.openssl.org/source/license.html
default rel
%define XMMWORD
%define YMMWORD
%define ZMMWORD
section .text code align=64
EXTERN OPENSSL_ia32cap_P
global aesni_multi_cbc_encrypt
ALIGN 32
aesni_multi_cbc_encrypt:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
mov rax,rsp
$L$SEH_begin_aesni_multi_cbc_encrypt:
mov rdi,rcx
mov rsi,rdx
mov rdx,r8
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
movaps XMMWORD[32+rsp],xmm8
movaps XMMWORD[48+rsp],xmm9
movaps XMMWORD[64+rsp],xmm10
movaps XMMWORD[80+rsp],xmm11
movaps XMMWORD[96+rsp],xmm12
movaps XMMWORD[(-104)+rax],xmm13
movaps XMMWORD[(-88)+rax],xmm14
movaps XMMWORD[(-72)+rax],xmm15
sub rsp,48
and rsp,-64
mov QWORD[16+rsp],rax
$L$enc4x_body:
movdqu xmm12,XMMWORD[rsi]
lea rsi,[120+rsi]
lea rdi,[80+rdi]
$L$enc4x_loop_grande:
mov DWORD[24+rsp],edx
xor edx,edx
mov ecx,DWORD[((-64))+rdi]
mov r8,QWORD[((-80))+rdi]
cmp ecx,edx
mov r12,QWORD[((-72))+rdi]
cmovg edx,ecx
test ecx,ecx
movdqu xmm2,XMMWORD[((-56))+rdi]
mov DWORD[32+rsp],ecx
cmovle r8,rsp
mov ecx,DWORD[((-24))+rdi]
mov r9,QWORD[((-40))+rdi]
cmp ecx,edx
mov r13,QWORD[((-32))+rdi]
cmovg edx,ecx
test ecx,ecx
movdqu xmm3,XMMWORD[((-16))+rdi]
mov DWORD[36+rsp],ecx
cmovle r9,rsp
mov ecx,DWORD[16+rdi]
mov r10,QWORD[rdi]
cmp ecx,edx
mov r14,QWORD[8+rdi]
cmovg edx,ecx
test ecx,ecx
movdqu xmm4,XMMWORD[24+rdi]
mov DWORD[40+rsp],ecx
cmovle r10,rsp
mov ecx,DWORD[56+rdi]
mov r11,QWORD[40+rdi]
cmp ecx,edx
mov r15,QWORD[48+rdi]
cmovg edx,ecx
test ecx,ecx
movdqu xmm5,XMMWORD[64+rdi]
mov DWORD[44+rsp],ecx
cmovle r11,rsp
test edx,edx
jz NEAR $L$enc4x_done
movups xmm1,XMMWORD[((16-120))+rsi]
pxor xmm2,xmm12
movups xmm0,XMMWORD[((32-120))+rsi]
pxor xmm3,xmm12
mov eax,DWORD[((240-120))+rsi]
pxor xmm4,xmm12
movdqu xmm6,XMMWORD[r8]
pxor xmm5,xmm12
movdqu xmm7,XMMWORD[r9]
pxor xmm2,xmm6
movdqu xmm8,XMMWORD[r10]
pxor xmm3,xmm7
movdqu xmm9,XMMWORD[r11]
pxor xmm4,xmm8
pxor xmm5,xmm9
movdqa xmm10,XMMWORD[32+rsp]
xor rbx,rbx
jmp NEAR $L$oop_enc4x
ALIGN 32
$L$oop_enc4x:
add rbx,16
lea rbp,[16+rsp]
mov ecx,1
sub rbp,rbx
DB 102,15,56,220,209
prefetcht0 [31+rbx*1+r8]
prefetcht0 [31+rbx*1+r9]
DB 102,15,56,220,217
prefetcht0 [31+rbx*1+r10]
prefetcht0 [31+rbx*1+r10]
DB 102,15,56,220,225
DB 102,15,56,220,233
movups xmm1,XMMWORD[((48-120))+rsi]
cmp ecx,DWORD[32+rsp]
DB 102,15,56,220,208
DB 102,15,56,220,216
DB 102,15,56,220,224
cmovge r8,rbp
cmovg r12,rbp
DB 102,15,56,220,232
movups xmm0,XMMWORD[((-56))+rsi]
cmp ecx,DWORD[36+rsp]
DB 102,15,56,220,209
DB 102,15,56,220,217
DB 102,15,56,220,225
cmovge r9,rbp
cmovg r13,rbp
DB 102,15,56,220,233
movups xmm1,XMMWORD[((-40))+rsi]
cmp ecx,DWORD[40+rsp]
DB 102,15,56,220,208
DB 102,15,56,220,216
DB 102,15,56,220,224
cmovge r10,rbp
cmovg r14,rbp
DB 102,15,56,220,232
movups xmm0,XMMWORD[((-24))+rsi]
cmp ecx,DWORD[44+rsp]
DB 102,15,56,220,209
DB 102,15,56,220,217
DB 102,15,56,220,225
cmovge r11,rbp
cmovg r15,rbp
DB 102,15,56,220,233
movups xmm1,XMMWORD[((-8))+rsi]
movdqa xmm11,xmm10
DB 102,15,56,220,208
prefetcht0 [15+rbx*1+r12]
prefetcht0 [15+rbx*1+r13]
DB 102,15,56,220,216
prefetcht0 [15+rbx*1+r14]
prefetcht0 [15+rbx*1+r15]
DB 102,15,56,220,224
DB 102,15,56,220,232
movups xmm0,XMMWORD[((128-120))+rsi]
pxor xmm12,xmm12
DB 102,15,56,220,209
pcmpgtd xmm11,xmm12
movdqu xmm12,XMMWORD[((-120))+rsi]
DB 102,15,56,220,217
paddd xmm10,xmm11
movdqa XMMWORD[32+rsp],xmm10
DB 102,15,56,220,225
DB 102,15,56,220,233
movups xmm1,XMMWORD[((144-120))+rsi]
cmp eax,11
DB 102,15,56,220,208
DB 102,15,56,220,216
DB 102,15,56,220,224
DB 102,15,56,220,232
movups xmm0,XMMWORD[((160-120))+rsi]
jb NEAR $L$enc4x_tail
DB 102,15,56,220,209
DB 102,15,56,220,217
DB 102,15,56,220,225
DB 102,15,56,220,233
movups xmm1,XMMWORD[((176-120))+rsi]
DB 102,15,56,220,208
DB 102,15,56,220,216
DB 102,15,56,220,224
DB 102,15,56,220,232
movups xmm0,XMMWORD[((192-120))+rsi]
je NEAR $L$enc4x_tail
DB 102,15,56,220,209
DB 102,15,56,220,217
DB 102,15,56,220,225
DB 102,15,56,220,233
movups xmm1,XMMWORD[((208-120))+rsi]
DB 102,15,56,220,208
DB 102,15,56,220,216
DB 102,15,56,220,224
DB 102,15,56,220,232
movups xmm0,XMMWORD[((224-120))+rsi]
jmp NEAR $L$enc4x_tail
ALIGN 32
$L$enc4x_tail:
DB 102,15,56,220,209
DB 102,15,56,220,217
DB 102,15,56,220,225
DB 102,15,56,220,233
movdqu xmm6,XMMWORD[rbx*1+r8]
movdqu xmm1,XMMWORD[((16-120))+rsi]
DB 102,15,56,221,208
movdqu xmm7,XMMWORD[rbx*1+r9]
pxor xmm6,xmm12
DB 102,15,56,221,216
movdqu xmm8,XMMWORD[rbx*1+r10]
pxor xmm7,xmm12
DB 102,15,56,221,224
movdqu xmm9,XMMWORD[rbx*1+r11]
pxor xmm8,xmm12
DB 102,15,56,221,232
movdqu xmm0,XMMWORD[((32-120))+rsi]
pxor xmm9,xmm12
movups XMMWORD[(-16)+rbx*1+r12],xmm2
pxor xmm2,xmm6
movups XMMWORD[(-16)+rbx*1+r13],xmm3
pxor xmm3,xmm7
movups XMMWORD[(-16)+rbx*1+r14],xmm4
pxor xmm4,xmm8
movups XMMWORD[(-16)+rbx*1+r15],xmm5
pxor xmm5,xmm9
dec edx
jnz NEAR $L$oop_enc4x
mov rax,QWORD[16+rsp]
mov edx,DWORD[24+rsp]
lea rdi,[160+rdi]
dec edx
jnz NEAR $L$enc4x_loop_grande
$L$enc4x_done:
movaps xmm6,XMMWORD[((-216))+rax]
movaps xmm7,XMMWORD[((-200))+rax]
movaps xmm8,XMMWORD[((-184))+rax]
movaps xmm9,XMMWORD[((-168))+rax]
movaps xmm10,XMMWORD[((-152))+rax]
movaps xmm11,XMMWORD[((-136))+rax]
movaps xmm12,XMMWORD[((-120))+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$enc4x_epilogue:
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
$L$SEH_end_aesni_multi_cbc_encrypt:
global aesni_multi_cbc_decrypt
ALIGN 32
aesni_multi_cbc_decrypt:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
mov rax,rsp
$L$SEH_begin_aesni_multi_cbc_decrypt:
mov rdi,rcx
mov rsi,rdx
mov rdx,r8
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
movaps XMMWORD[32+rsp],xmm8
movaps XMMWORD[48+rsp],xmm9
movaps XMMWORD[64+rsp],xmm10
movaps XMMWORD[80+rsp],xmm11
movaps XMMWORD[96+rsp],xmm12
movaps XMMWORD[(-104)+rax],xmm13
movaps XMMWORD[(-88)+rax],xmm14
movaps XMMWORD[(-72)+rax],xmm15
sub rsp,48
and rsp,-64
mov QWORD[16+rsp],rax
$L$dec4x_body:
movdqu xmm12,XMMWORD[rsi]
lea rsi,[120+rsi]
lea rdi,[80+rdi]
$L$dec4x_loop_grande:
mov DWORD[24+rsp],edx
xor edx,edx
mov ecx,DWORD[((-64))+rdi]
mov r8,QWORD[((-80))+rdi]
cmp ecx,edx
mov r12,QWORD[((-72))+rdi]
cmovg edx,ecx
test ecx,ecx
movdqu xmm6,XMMWORD[((-56))+rdi]
mov DWORD[32+rsp],ecx
cmovle r8,rsp
mov ecx,DWORD[((-24))+rdi]
mov r9,QWORD[((-40))+rdi]
cmp ecx,edx
mov r13,QWORD[((-32))+rdi]
cmovg edx,ecx
test ecx,ecx
movdqu xmm7,XMMWORD[((-16))+rdi]
mov DWORD[36+rsp],ecx
cmovle r9,rsp
mov ecx,DWORD[16+rdi]
mov r10,QWORD[rdi]
cmp ecx,edx
mov r14,QWORD[8+rdi]
cmovg edx,ecx
test ecx,ecx
movdqu xmm8,XMMWORD[24+rdi]
mov DWORD[40+rsp],ecx
cmovle r10,rsp
mov ecx,DWORD[56+rdi]
mov r11,QWORD[40+rdi]
cmp ecx,edx
mov r15,QWORD[48+rdi]
cmovg edx,ecx
test ecx,ecx
movdqu xmm9,XMMWORD[64+rdi]
mov DWORD[44+rsp],ecx
cmovle r11,rsp
test edx,edx
jz NEAR $L$dec4x_done
movups xmm1,XMMWORD[((16-120))+rsi]
movups xmm0,XMMWORD[((32-120))+rsi]
mov eax,DWORD[((240-120))+rsi]
movdqu xmm2,XMMWORD[r8]
movdqu xmm3,XMMWORD[r9]
pxor xmm2,xmm12
movdqu xmm4,XMMWORD[r10]
pxor xmm3,xmm12
movdqu xmm5,XMMWORD[r11]
pxor xmm4,xmm12
pxor xmm5,xmm12
movdqa xmm10,XMMWORD[32+rsp]
xor rbx,rbx
jmp NEAR $L$oop_dec4x
ALIGN 32
$L$oop_dec4x:
add rbx,16
lea rbp,[16+rsp]
mov ecx,1
sub rbp,rbx
DB 102,15,56,222,209
prefetcht0 [31+rbx*1+r8]
prefetcht0 [31+rbx*1+r9]
DB 102,15,56,222,217
prefetcht0 [31+rbx*1+r10]
prefetcht0 [31+rbx*1+r11]
DB 102,15,56,222,225
DB 102,15,56,222,233
movups xmm1,XMMWORD[((48-120))+rsi]
cmp ecx,DWORD[32+rsp]
DB 102,15,56,222,208
DB 102,15,56,222,216
DB 102,15,56,222,224
cmovge r8,rbp
cmovg r12,rbp
DB 102,15,56,222,232
movups xmm0,XMMWORD[((-56))+rsi]
cmp ecx,DWORD[36+rsp]
DB 102,15,56,222,209
DB 102,15,56,222,217
DB 102,15,56,222,225
cmovge r9,rbp
cmovg r13,rbp
DB 102,15,56,222,233
movups xmm1,XMMWORD[((-40))+rsi]
cmp ecx,DWORD[40+rsp]
DB 102,15,56,222,208
DB 102,15,56,222,216
DB 102,15,56,222,224
cmovge r10,rbp
cmovg r14,rbp
DB 102,15,56,222,232
movups xmm0,XMMWORD[((-24))+rsi]
cmp ecx,DWORD[44+rsp]
DB 102,15,56,222,209
DB 102,15,56,222,217
DB 102,15,56,222,225
cmovge r11,rbp
cmovg r15,rbp
DB 102,15,56,222,233
movups xmm1,XMMWORD[((-8))+rsi]
movdqa xmm11,xmm10
DB 102,15,56,222,208
prefetcht0 [15+rbx*1+r12]
prefetcht0 [15+rbx*1+r13]
DB 102,15,56,222,216
prefetcht0 [15+rbx*1+r14]
prefetcht0 [15+rbx*1+r15]
DB 102,15,56,222,224
DB 102,15,56,222,232
movups xmm0,XMMWORD[((128-120))+rsi]
pxor xmm12,xmm12
DB 102,15,56,222,209
pcmpgtd xmm11,xmm12
movdqu xmm12,XMMWORD[((-120))+rsi]
DB 102,15,56,222,217
paddd xmm10,xmm11
movdqa XMMWORD[32+rsp],xmm10
DB 102,15,56,222,225
DB 102,15,56,222,233
movups xmm1,XMMWORD[((144-120))+rsi]
cmp eax,11
DB 102,15,56,222,208
DB 102,15,56,222,216
DB 102,15,56,222,224
DB 102,15,56,222,232
movups xmm0,XMMWORD[((160-120))+rsi]
jb NEAR $L$dec4x_tail
DB 102,15,56,222,209
DB 102,15,56,222,217
DB 102,15,56,222,225
DB 102,15,56,222,233
movups xmm1,XMMWORD[((176-120))+rsi]
DB 102,15,56,222,208
DB 102,15,56,222,216
DB 102,15,56,222,224
DB 102,15,56,222,232
movups xmm0,XMMWORD[((192-120))+rsi]
je NEAR $L$dec4x_tail
DB 102,15,56,222,209
DB 102,15,56,222,217
DB 102,15,56,222,225
DB 102,15,56,222,233
movups xmm1,XMMWORD[((208-120))+rsi]
DB 102,15,56,222,208
DB 102,15,56,222,216
DB 102,15,56,222,224
DB 102,15,56,222,232
movups xmm0,XMMWORD[((224-120))+rsi]
jmp NEAR $L$dec4x_tail
ALIGN 32
$L$dec4x_tail:
DB 102,15,56,222,209
DB 102,15,56,222,217
DB 102,15,56,222,225
pxor xmm6,xmm0
pxor xmm7,xmm0
DB 102,15,56,222,233
movdqu xmm1,XMMWORD[((16-120))+rsi]
pxor xmm8,xmm0
pxor xmm9,xmm0
movdqu xmm0,XMMWORD[((32-120))+rsi]
DB 102,15,56,223,214
DB 102,15,56,223,223
movdqu xmm6,XMMWORD[((-16))+rbx*1+r8]
movdqu xmm7,XMMWORD[((-16))+rbx*1+r9]
DB 102,65,15,56,223,224
DB 102,65,15,56,223,233
movdqu xmm8,XMMWORD[((-16))+rbx*1+r10]
movdqu xmm9,XMMWORD[((-16))+rbx*1+r11]
movups XMMWORD[(-16)+rbx*1+r12],xmm2
movdqu xmm2,XMMWORD[rbx*1+r8]
movups XMMWORD[(-16)+rbx*1+r13],xmm3
movdqu xmm3,XMMWORD[rbx*1+r9]
pxor xmm2,xmm12
movups XMMWORD[(-16)+rbx*1+r14],xmm4
movdqu xmm4,XMMWORD[rbx*1+r10]
pxor xmm3,xmm12
movups XMMWORD[(-16)+rbx*1+r15],xmm5
movdqu xmm5,XMMWORD[rbx*1+r11]
pxor xmm4,xmm12
pxor xmm5,xmm12
dec edx
jnz NEAR $L$oop_dec4x
mov rax,QWORD[16+rsp]
mov edx,DWORD[24+rsp]
lea rdi,[160+rdi]
dec edx
jnz NEAR $L$dec4x_loop_grande
$L$dec4x_done:
movaps xmm6,XMMWORD[((-216))+rax]
movaps xmm7,XMMWORD[((-200))+rax]
movaps xmm8,XMMWORD[((-184))+rax]
movaps xmm9,XMMWORD[((-168))+rax]
movaps xmm10,XMMWORD[((-152))+rax]
movaps xmm11,XMMWORD[((-136))+rax]
movaps xmm12,XMMWORD[((-120))+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$dec4x_epilogue:
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
$L$SEH_end_aesni_multi_cbc_decrypt:
EXTERN __imp_RtlVirtualUnwind
ALIGN 16
se_handler:
push rsi
push rdi
push rbx
push rbp
push r12
push r13
push r14
push r15
pushfq
sub rsp,64
mov rax,QWORD[120+r8]
mov rbx,QWORD[248+r8]
mov rsi,QWORD[8+r9]
mov r11,QWORD[56+r9]
mov r10d,DWORD[r11]
lea r10,[r10*1+rsi]
cmp rbx,r10
jb NEAR $L$in_prologue
mov rax,QWORD[152+r8]
mov r10d,DWORD[4+r11]
lea r10,[r10*1+rsi]
cmp rbx,r10
jae NEAR $L$in_prologue
mov rax,QWORD[16+rax]
mov rbx,QWORD[((-8))+rax]
mov rbp,QWORD[((-16))+rax]
mov r12,QWORD[((-24))+rax]
mov r13,QWORD[((-32))+rax]
mov r14,QWORD[((-40))+rax]
mov r15,QWORD[((-48))+rax]
mov QWORD[144+r8],rbx
mov QWORD[160+r8],rbp
mov QWORD[216+r8],r12
mov QWORD[224+r8],r13
mov QWORD[232+r8],r14
mov QWORD[240+r8],r15
lea rsi,[((-56-160))+rax]
lea rdi,[512+r8]
mov ecx,20
DD 0xa548f3fc
$L$in_prologue:
mov rdi,QWORD[8+rax]
mov rsi,QWORD[16+rax]
mov QWORD[152+r8],rax
mov QWORD[168+r8],rsi
mov QWORD[176+r8],rdi
mov rdi,QWORD[40+r9]
mov rsi,r8
mov ecx,154
DD 0xa548f3fc
mov rsi,r9
xor rcx,rcx
mov rdx,QWORD[8+rsi]
mov r8,QWORD[rsi]
mov r9,QWORD[16+rsi]
mov r10,QWORD[40+rsi]
lea r11,[56+rsi]
lea r12,[24+rsi]
mov QWORD[32+rsp],r10
mov QWORD[40+rsp],r11
mov QWORD[48+rsp],r12
mov QWORD[56+rsp],rcx
call QWORD[__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
section .pdata rdata align=4
ALIGN 4
DD $L$SEH_begin_aesni_multi_cbc_encrypt wrt ..imagebase
DD $L$SEH_end_aesni_multi_cbc_encrypt wrt ..imagebase
DD $L$SEH_info_aesni_multi_cbc_encrypt wrt ..imagebase
DD $L$SEH_begin_aesni_multi_cbc_decrypt wrt ..imagebase
DD $L$SEH_end_aesni_multi_cbc_decrypt wrt ..imagebase
DD $L$SEH_info_aesni_multi_cbc_decrypt wrt ..imagebase
section .xdata rdata align=8
ALIGN 8
$L$SEH_info_aesni_multi_cbc_encrypt:
DB 9,0,0,0
DD se_handler wrt ..imagebase
DD $L$enc4x_body wrt ..imagebase,$L$enc4x_epilogue wrt ..imagebase
$L$SEH_info_aesni_multi_cbc_decrypt:
DB 9,0,0,0
DD se_handler wrt ..imagebase
DD $L$dec4x_body wrt ..imagebase,$L$dec4x_epilogue wrt ..imagebase

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,78 @@
; WARNING: do not edit!
; Generated from openssl/crypto/aes/asm/aesni-sha256-x86_64.pl
;
; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
;
; Licensed under the OpenSSL license (the "License"). You may not use
; this file except in compliance with the License. You can obtain a copy
; in the file LICENSE in the source distribution or at
; https://www.openssl.org/source/license.html
default rel
%define XMMWORD
%define YMMWORD
%define ZMMWORD
section .text code align=64
EXTERN OPENSSL_ia32cap_P
global aesni_cbc_sha256_enc
ALIGN 16
aesni_cbc_sha256_enc:
xor eax,eax
cmp rcx,0
je NEAR $L$probe
ud2
$L$probe:
DB 0F3h,0C3h ;repret
ALIGN 64
K256:
DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
DD 0,0,0,0,0,0,0,0,-1,-1,-1,-1
DD 0,0,0,0,0,0,0,0
DB 65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54
DB 32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95
DB 54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98
DB 121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108
DB 46,111,114,103,62,0
ALIGN 64

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,34 @@
; WARNING: do not edit!
; Generated from openssl/crypto/modes/asm/aesni-gcm-x86_64.pl
;
; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
;
; Licensed under the OpenSSL license (the "License"). You may not use
; this file except in compliance with the License. You can obtain a copy
; in the file LICENSE in the source distribution or at
; https://www.openssl.org/source/license.html
default rel
%define XMMWORD
%define YMMWORD
%define ZMMWORD
section .text code align=64
global aesni_gcm_encrypt
aesni_gcm_encrypt:
xor eax,eax
DB 0F3h,0C3h ;repret
global aesni_gcm_decrypt
aesni_gcm_decrypt:
xor eax,eax
DB 0F3h,0C3h ;repret

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,491 @@
; WARNING: do not edit!
; Generated from openssl/crypto/x86_64cpuid.pl
;
; Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.
;
; Licensed under the OpenSSL license (the "License"). You may not use
; this file except in compliance with the License. You can obtain a copy
; in the file LICENSE in the source distribution or at
; https://www.openssl.org/source/license.html
default rel
%define XMMWORD
%define YMMWORD
%define ZMMWORD
EXTERN OPENSSL_cpuid_setup
section .CRT$XCU rdata align=8
DQ OPENSSL_cpuid_setup
common OPENSSL_ia32cap_P 16
section .text code align=64
global OPENSSL_atomic_add
ALIGN 16
OPENSSL_atomic_add:
mov eax,DWORD[rcx]
$L$spin: lea r8,[rax*1+rdx]
DB 0xf0
cmpxchg DWORD[rcx],r8d
jne NEAR $L$spin
mov eax,r8d
DB 0x48,0x98
DB 0F3h,0C3h ;repret
global OPENSSL_rdtsc
ALIGN 16
OPENSSL_rdtsc:
rdtsc
shl rdx,32
or rax,rdx
DB 0F3h,0C3h ;repret
global OPENSSL_ia32_cpuid
ALIGN 16
OPENSSL_ia32_cpuid:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
mov rax,rsp
$L$SEH_begin_OPENSSL_ia32_cpuid:
mov rdi,rcx
mov r8,rbx
xor eax,eax
mov QWORD[8+rdi],rax
cpuid
mov r11d,eax
xor eax,eax
cmp ebx,0x756e6547
setne al
mov r9d,eax
cmp edx,0x49656e69
setne al
or r9d,eax
cmp ecx,0x6c65746e
setne al
or r9d,eax
jz NEAR $L$intel
cmp ebx,0x68747541
setne al
mov r10d,eax
cmp edx,0x69746E65
setne al
or r10d,eax
cmp ecx,0x444D4163
setne al
or r10d,eax
jnz NEAR $L$intel
mov eax,0x80000000
cpuid
cmp eax,0x80000001
jb NEAR $L$intel
mov r10d,eax
mov eax,0x80000001
cpuid
or r9d,ecx
and r9d,0x00000801
cmp r10d,0x80000008
jb NEAR $L$intel
mov eax,0x80000008
cpuid
movzx r10,cl
inc r10
mov eax,1
cpuid
bt edx,28
jnc NEAR $L$generic
shr ebx,16
cmp bl,r10b
ja NEAR $L$generic
and edx,0xefffffff
jmp NEAR $L$generic
$L$intel:
cmp r11d,4
mov r10d,-1
jb NEAR $L$nocacheinfo
mov eax,4
mov ecx,0
cpuid
mov r10d,eax
shr r10d,14
and r10d,0xfff
$L$nocacheinfo:
mov eax,1
cpuid
movd xmm0,eax
and edx,0xbfefffff
cmp r9d,0
jne NEAR $L$notintel
or edx,0x40000000
and ah,15
cmp ah,15
jne NEAR $L$notP4
or edx,0x00100000
$L$notP4:
cmp ah,6
jne NEAR $L$notintel
and eax,0x0fff0ff0
cmp eax,0x00050670
je NEAR $L$knights
cmp eax,0x00080650
jne NEAR $L$notintel
$L$knights:
and ecx,0xfbffffff
$L$notintel:
bt edx,28
jnc NEAR $L$generic
and edx,0xefffffff
cmp r10d,0
je NEAR $L$generic
or edx,0x10000000
shr ebx,16
cmp bl,1
ja NEAR $L$generic
and edx,0xefffffff
$L$generic:
and r9d,0x00000800
and ecx,0xfffff7ff
or r9d,ecx
mov r10d,edx
cmp r11d,7
jb NEAR $L$no_extended_info
mov eax,7
xor ecx,ecx
cpuid
bt r9d,26
jc NEAR $L$notknights
and ebx,0xfff7ffff
$L$notknights:
movd eax,xmm0
and eax,0x0fff0ff0
cmp eax,0x00050650
jne NEAR $L$notskylakex
and ebx,0xfffeffff
$L$notskylakex:
mov DWORD[8+rdi],ebx
mov DWORD[12+rdi],ecx
$L$no_extended_info:
bt r9d,27
jnc NEAR $L$clear_avx
xor ecx,ecx
DB 0x0f,0x01,0xd0
and eax,0xe6
cmp eax,0xe6
je NEAR $L$done
and DWORD[8+rdi],0x3fdeffff
and eax,6
cmp eax,6
je NEAR $L$done
$L$clear_avx:
mov eax,0xefffe7ff
and r9d,eax
mov eax,0x3fdeffdf
and DWORD[8+rdi],eax
$L$done:
shl r9,32
mov eax,r10d
mov rbx,r8
or rax,r9
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
$L$SEH_end_OPENSSL_ia32_cpuid:
global OPENSSL_cleanse
ALIGN 16
OPENSSL_cleanse:
xor rax,rax
cmp rdx,15
jae NEAR $L$ot
cmp rdx,0
je NEAR $L$ret
$L$ittle:
mov BYTE[rcx],al
sub rdx,1
lea rcx,[1+rcx]
jnz NEAR $L$ittle
$L$ret:
DB 0F3h,0C3h ;repret
ALIGN 16
$L$ot:
test rcx,7
jz NEAR $L$aligned
mov BYTE[rcx],al
lea rdx,[((-1))+rdx]
lea rcx,[1+rcx]
jmp NEAR $L$ot
$L$aligned:
mov QWORD[rcx],rax
lea rdx,[((-8))+rdx]
test rdx,-8
lea rcx,[8+rcx]
jnz NEAR $L$aligned
cmp rdx,0
jne NEAR $L$ittle
DB 0F3h,0C3h ;repret
global CRYPTO_memcmp
ALIGN 16
CRYPTO_memcmp:
xor rax,rax
xor r10,r10
cmp r8,0
je NEAR $L$no_data
cmp r8,16
jne NEAR $L$oop_cmp
mov r10,QWORD[rcx]
mov r11,QWORD[8+rcx]
mov r8,1
xor r10,QWORD[rdx]
xor r11,QWORD[8+rdx]
or r10,r11
cmovnz rax,r8
DB 0F3h,0C3h ;repret
ALIGN 16
$L$oop_cmp:
mov r10b,BYTE[rcx]
lea rcx,[1+rcx]
xor r10b,BYTE[rdx]
lea rdx,[1+rdx]
or al,r10b
dec r8
jnz NEAR $L$oop_cmp
neg rax
shr rax,63
$L$no_data:
DB 0F3h,0C3h ;repret
global OPENSSL_wipe_cpu
ALIGN 16
OPENSSL_wipe_cpu:
pxor xmm0,xmm0
pxor xmm1,xmm1
pxor xmm2,xmm2
pxor xmm3,xmm3
pxor xmm4,xmm4
pxor xmm5,xmm5
xor rcx,rcx
xor rdx,rdx
xor r8,r8
xor r9,r9
xor r10,r10
xor r11,r11
lea rax,[8+rsp]
DB 0F3h,0C3h ;repret
global OPENSSL_instrument_bus
ALIGN 16
OPENSSL_instrument_bus:
mov r10,rcx
mov rcx,rdx
mov r11,rdx
rdtsc
mov r8d,eax
mov r9d,0
clflush [r10]
DB 0xf0
add DWORD[r10],r9d
jmp NEAR $L$oop
ALIGN 16
$L$oop: rdtsc
mov edx,eax
sub eax,r8d
mov r8d,edx
mov r9d,eax
clflush [r10]
DB 0xf0
add DWORD[r10],eax
lea r10,[4+r10]
sub rcx,1
jnz NEAR $L$oop
mov rax,r11
DB 0F3h,0C3h ;repret
global OPENSSL_instrument_bus2
ALIGN 16
OPENSSL_instrument_bus2:
mov r10,rcx
mov rcx,rdx
mov r11,r8
mov QWORD[8+rsp],rcx
rdtsc
mov r8d,eax
mov r9d,0
clflush [r10]
DB 0xf0
add DWORD[r10],r9d
rdtsc
mov edx,eax
sub eax,r8d
mov r8d,edx
mov r9d,eax
$L$oop2:
clflush [r10]
DB 0xf0
add DWORD[r10],eax
sub r11,1
jz NEAR $L$done2
rdtsc
mov edx,eax
sub eax,r8d
mov r8d,edx
cmp eax,r9d
mov r9d,eax
mov edx,0
setne dl
sub rcx,rdx
lea r10,[rdx*4+r10]
jnz NEAR $L$oop2
$L$done2:
mov rax,QWORD[8+rsp]
sub rax,rcx
DB 0F3h,0C3h ;repret
global OPENSSL_ia32_rdrand_bytes
ALIGN 16
OPENSSL_ia32_rdrand_bytes:
xor rax,rax
cmp rdx,0
je NEAR $L$done_rdrand_bytes
mov r11,8
$L$oop_rdrand_bytes:
DB 73,15,199,242
jc NEAR $L$break_rdrand_bytes
dec r11
jnz NEAR $L$oop_rdrand_bytes
jmp NEAR $L$done_rdrand_bytes
ALIGN 16
$L$break_rdrand_bytes:
cmp rdx,8
jb NEAR $L$tail_rdrand_bytes
mov QWORD[rcx],r10
lea rcx,[8+rcx]
add rax,8
sub rdx,8
jz NEAR $L$done_rdrand_bytes
mov r11,8
jmp NEAR $L$oop_rdrand_bytes
ALIGN 16
$L$tail_rdrand_bytes:
mov BYTE[rcx],r10b
lea rcx,[1+rcx]
inc rax
shr r10,8
dec rdx
jnz NEAR $L$tail_rdrand_bytes
$L$done_rdrand_bytes:
xor r10,r10
DB 0F3h,0C3h ;repret
global OPENSSL_ia32_rdseed_bytes
ALIGN 16
OPENSSL_ia32_rdseed_bytes:
xor rax,rax
cmp rdx,0
je NEAR $L$done_rdseed_bytes
mov r11,8
$L$oop_rdseed_bytes:
DB 73,15,199,250
jc NEAR $L$break_rdseed_bytes
dec r11
jnz NEAR $L$oop_rdseed_bytes
jmp NEAR $L$done_rdseed_bytes
ALIGN 16
$L$break_rdseed_bytes:
cmp rdx,8
jb NEAR $L$tail_rdseed_bytes
mov QWORD[rcx],r10
lea rcx,[8+rcx]
add rax,8
sub rdx,8
jz NEAR $L$done_rdseed_bytes
mov r11,8
jmp NEAR $L$oop_rdseed_bytes
ALIGN 16
$L$tail_rdseed_bytes:
mov BYTE[rcx],r10b
lea rcx,[1+rcx]
inc rax
shr r10,8
dec rdx
jnz NEAR $L$tail_rdseed_bytes
$L$done_rdseed_bytes:
xor r10,r10
DB 0F3h,0C3h ;repret

View File

@ -0,0 +1,552 @@
# WARNING: do not edit!
# Generated from openssl/crypto/aes/asm/aesni-mb-x86_64.pl
#
# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the OpenSSL license (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html
.text
.globl aesni_multi_cbc_encrypt
.type aesni_multi_cbc_encrypt,@function
.align 32
aesni_multi_cbc_encrypt:
.cfi_startproc
movq %rsp,%rax
.cfi_def_cfa_register %rax
pushq %rbx
.cfi_offset %rbx,-16
pushq %rbp
.cfi_offset %rbp,-24
pushq %r12
.cfi_offset %r12,-32
pushq %r13
.cfi_offset %r13,-40
pushq %r14
.cfi_offset %r14,-48
pushq %r15
.cfi_offset %r15,-56
subq $48,%rsp
andq $-64,%rsp
movq %rax,16(%rsp)
.cfi_escape 0x0f,0x05,0x77,0x10,0x06,0x23,0x08
.Lenc4x_body:
movdqu (%rsi),%xmm12
leaq 120(%rsi),%rsi
leaq 80(%rdi),%rdi
.Lenc4x_loop_grande:
movl %edx,24(%rsp)
xorl %edx,%edx
movl -64(%rdi),%ecx
movq -80(%rdi),%r8
cmpl %edx,%ecx
movq -72(%rdi),%r12
cmovgl %ecx,%edx
testl %ecx,%ecx
movdqu -56(%rdi),%xmm2
movl %ecx,32(%rsp)
cmovleq %rsp,%r8
movl -24(%rdi),%ecx
movq -40(%rdi),%r9
cmpl %edx,%ecx
movq -32(%rdi),%r13
cmovgl %ecx,%edx
testl %ecx,%ecx
movdqu -16(%rdi),%xmm3
movl %ecx,36(%rsp)
cmovleq %rsp,%r9
movl 16(%rdi),%ecx
movq 0(%rdi),%r10
cmpl %edx,%ecx
movq 8(%rdi),%r14
cmovgl %ecx,%edx
testl %ecx,%ecx
movdqu 24(%rdi),%xmm4
movl %ecx,40(%rsp)
cmovleq %rsp,%r10
movl 56(%rdi),%ecx
movq 40(%rdi),%r11
cmpl %edx,%ecx
movq 48(%rdi),%r15
cmovgl %ecx,%edx
testl %ecx,%ecx
movdqu 64(%rdi),%xmm5
movl %ecx,44(%rsp)
cmovleq %rsp,%r11
testl %edx,%edx
jz .Lenc4x_done
movups 16-120(%rsi),%xmm1
pxor %xmm12,%xmm2
movups 32-120(%rsi),%xmm0
pxor %xmm12,%xmm3
movl 240-120(%rsi),%eax
pxor %xmm12,%xmm4
movdqu (%r8),%xmm6
pxor %xmm12,%xmm5
movdqu (%r9),%xmm7
pxor %xmm6,%xmm2
movdqu (%r10),%xmm8
pxor %xmm7,%xmm3
movdqu (%r11),%xmm9
pxor %xmm8,%xmm4
pxor %xmm9,%xmm5
movdqa 32(%rsp),%xmm10
xorq %rbx,%rbx
jmp .Loop_enc4x
.align 32
.Loop_enc4x:
addq $16,%rbx
leaq 16(%rsp),%rbp
movl $1,%ecx
subq %rbx,%rbp
.byte 102,15,56,220,209
prefetcht0 31(%r8,%rbx,1)
prefetcht0 31(%r9,%rbx,1)
.byte 102,15,56,220,217
prefetcht0 31(%r10,%rbx,1)
prefetcht0 31(%r10,%rbx,1)
.byte 102,15,56,220,225
.byte 102,15,56,220,233
movups 48-120(%rsi),%xmm1
cmpl 32(%rsp),%ecx
.byte 102,15,56,220,208
.byte 102,15,56,220,216
.byte 102,15,56,220,224
cmovgeq %rbp,%r8
cmovgq %rbp,%r12
.byte 102,15,56,220,232
movups -56(%rsi),%xmm0
cmpl 36(%rsp),%ecx
.byte 102,15,56,220,209
.byte 102,15,56,220,217
.byte 102,15,56,220,225
cmovgeq %rbp,%r9
cmovgq %rbp,%r13
.byte 102,15,56,220,233
movups -40(%rsi),%xmm1
cmpl 40(%rsp),%ecx
.byte 102,15,56,220,208
.byte 102,15,56,220,216
.byte 102,15,56,220,224
cmovgeq %rbp,%r10
cmovgq %rbp,%r14
.byte 102,15,56,220,232
movups -24(%rsi),%xmm0
cmpl 44(%rsp),%ecx
.byte 102,15,56,220,209
.byte 102,15,56,220,217
.byte 102,15,56,220,225
cmovgeq %rbp,%r11
cmovgq %rbp,%r15
.byte 102,15,56,220,233
movups -8(%rsi),%xmm1
movdqa %xmm10,%xmm11
.byte 102,15,56,220,208
prefetcht0 15(%r12,%rbx,1)
prefetcht0 15(%r13,%rbx,1)
.byte 102,15,56,220,216
prefetcht0 15(%r14,%rbx,1)
prefetcht0 15(%r15,%rbx,1)
.byte 102,15,56,220,224
.byte 102,15,56,220,232
movups 128-120(%rsi),%xmm0
pxor %xmm12,%xmm12
.byte 102,15,56,220,209
pcmpgtd %xmm12,%xmm11
movdqu -120(%rsi),%xmm12
.byte 102,15,56,220,217
paddd %xmm11,%xmm10
movdqa %xmm10,32(%rsp)
.byte 102,15,56,220,225
.byte 102,15,56,220,233
movups 144-120(%rsi),%xmm1
cmpl $11,%eax
.byte 102,15,56,220,208
.byte 102,15,56,220,216
.byte 102,15,56,220,224
.byte 102,15,56,220,232
movups 160-120(%rsi),%xmm0
jb .Lenc4x_tail
.byte 102,15,56,220,209
.byte 102,15,56,220,217
.byte 102,15,56,220,225
.byte 102,15,56,220,233
movups 176-120(%rsi),%xmm1
.byte 102,15,56,220,208
.byte 102,15,56,220,216
.byte 102,15,56,220,224
.byte 102,15,56,220,232
movups 192-120(%rsi),%xmm0
je .Lenc4x_tail
.byte 102,15,56,220,209
.byte 102,15,56,220,217
.byte 102,15,56,220,225
.byte 102,15,56,220,233
movups 208-120(%rsi),%xmm1
.byte 102,15,56,220,208
.byte 102,15,56,220,216
.byte 102,15,56,220,224
.byte 102,15,56,220,232
movups 224-120(%rsi),%xmm0
jmp .Lenc4x_tail
.align 32
.Lenc4x_tail:
.byte 102,15,56,220,209
.byte 102,15,56,220,217
.byte 102,15,56,220,225
.byte 102,15,56,220,233
movdqu (%r8,%rbx,1),%xmm6
movdqu 16-120(%rsi),%xmm1
.byte 102,15,56,221,208
movdqu (%r9,%rbx,1),%xmm7
pxor %xmm12,%xmm6
.byte 102,15,56,221,216
movdqu (%r10,%rbx,1),%xmm8
pxor %xmm12,%xmm7
.byte 102,15,56,221,224
movdqu (%r11,%rbx,1),%xmm9
pxor %xmm12,%xmm8
.byte 102,15,56,221,232
movdqu 32-120(%rsi),%xmm0
pxor %xmm12,%xmm9
movups %xmm2,-16(%r12,%rbx,1)
pxor %xmm6,%xmm2
movups %xmm3,-16(%r13,%rbx,1)
pxor %xmm7,%xmm3
movups %xmm4,-16(%r14,%rbx,1)
pxor %xmm8,%xmm4
movups %xmm5,-16(%r15,%rbx,1)
pxor %xmm9,%xmm5
decl %edx
jnz .Loop_enc4x
movq 16(%rsp),%rax
.cfi_def_cfa %rax,8
movl 24(%rsp),%edx
leaq 160(%rdi),%rdi
decl %edx
jnz .Lenc4x_loop_grande
.Lenc4x_done:
movq -48(%rax),%r15
.cfi_restore %r15
movq -40(%rax),%r14
.cfi_restore %r14
movq -32(%rax),%r13
.cfi_restore %r13
movq -24(%rax),%r12
.cfi_restore %r12
movq -16(%rax),%rbp
.cfi_restore %rbp
movq -8(%rax),%rbx
.cfi_restore %rbx
leaq (%rax),%rsp
.cfi_def_cfa_register %rsp
.Lenc4x_epilogue:
.byte 0xf3,0xc3
.cfi_endproc
.size aesni_multi_cbc_encrypt,.-aesni_multi_cbc_encrypt
.globl aesni_multi_cbc_decrypt
.type aesni_multi_cbc_decrypt,@function
.align 32
aesni_multi_cbc_decrypt:
.cfi_startproc
movq %rsp,%rax
.cfi_def_cfa_register %rax
pushq %rbx
.cfi_offset %rbx,-16
pushq %rbp
.cfi_offset %rbp,-24
pushq %r12
.cfi_offset %r12,-32
pushq %r13
.cfi_offset %r13,-40
pushq %r14
.cfi_offset %r14,-48
pushq %r15
.cfi_offset %r15,-56
subq $48,%rsp
andq $-64,%rsp
movq %rax,16(%rsp)
.cfi_escape 0x0f,0x05,0x77,0x10,0x06,0x23,0x08
.Ldec4x_body:
movdqu (%rsi),%xmm12
leaq 120(%rsi),%rsi
leaq 80(%rdi),%rdi
.Ldec4x_loop_grande:
movl %edx,24(%rsp)
xorl %edx,%edx
movl -64(%rdi),%ecx
movq -80(%rdi),%r8
cmpl %edx,%ecx
movq -72(%rdi),%r12
cmovgl %ecx,%edx
testl %ecx,%ecx
movdqu -56(%rdi),%xmm6
movl %ecx,32(%rsp)
cmovleq %rsp,%r8
movl -24(%rdi),%ecx
movq -40(%rdi),%r9
cmpl %edx,%ecx
movq -32(%rdi),%r13
cmovgl %ecx,%edx
testl %ecx,%ecx
movdqu -16(%rdi),%xmm7
movl %ecx,36(%rsp)
cmovleq %rsp,%r9
movl 16(%rdi),%ecx
movq 0(%rdi),%r10
cmpl %edx,%ecx
movq 8(%rdi),%r14
cmovgl %ecx,%edx
testl %ecx,%ecx
movdqu 24(%rdi),%xmm8
movl %ecx,40(%rsp)
cmovleq %rsp,%r10
movl 56(%rdi),%ecx
movq 40(%rdi),%r11
cmpl %edx,%ecx
movq 48(%rdi),%r15
cmovgl %ecx,%edx
testl %ecx,%ecx
movdqu 64(%rdi),%xmm9
movl %ecx,44(%rsp)
cmovleq %rsp,%r11
testl %edx,%edx
jz .Ldec4x_done
movups 16-120(%rsi),%xmm1
movups 32-120(%rsi),%xmm0
movl 240-120(%rsi),%eax
movdqu (%r8),%xmm2
movdqu (%r9),%xmm3
pxor %xmm12,%xmm2
movdqu (%r10),%xmm4
pxor %xmm12,%xmm3
movdqu (%r11),%xmm5
pxor %xmm12,%xmm4
pxor %xmm12,%xmm5
movdqa 32(%rsp),%xmm10
xorq %rbx,%rbx
jmp .Loop_dec4x
.align 32
.Loop_dec4x:
addq $16,%rbx
leaq 16(%rsp),%rbp
movl $1,%ecx
subq %rbx,%rbp
.byte 102,15,56,222,209
prefetcht0 31(%r8,%rbx,1)
prefetcht0 31(%r9,%rbx,1)
.byte 102,15,56,222,217
prefetcht0 31(%r10,%rbx,1)
prefetcht0 31(%r11,%rbx,1)
.byte 102,15,56,222,225
.byte 102,15,56,222,233
movups 48-120(%rsi),%xmm1
cmpl 32(%rsp),%ecx
.byte 102,15,56,222,208
.byte 102,15,56,222,216
.byte 102,15,56,222,224
cmovgeq %rbp,%r8
cmovgq %rbp,%r12
.byte 102,15,56,222,232
movups -56(%rsi),%xmm0
cmpl 36(%rsp),%ecx
.byte 102,15,56,222,209
.byte 102,15,56,222,217
.byte 102,15,56,222,225
cmovgeq %rbp,%r9
cmovgq %rbp,%r13
.byte 102,15,56,222,233
movups -40(%rsi),%xmm1
cmpl 40(%rsp),%ecx
.byte 102,15,56,222,208
.byte 102,15,56,222,216
.byte 102,15,56,222,224
cmovgeq %rbp,%r10
cmovgq %rbp,%r14
.byte 102,15,56,222,232
movups -24(%rsi),%xmm0
cmpl 44(%rsp),%ecx
.byte 102,15,56,222,209
.byte 102,15,56,222,217
.byte 102,15,56,222,225
cmovgeq %rbp,%r11
cmovgq %rbp,%r15
.byte 102,15,56,222,233
movups -8(%rsi),%xmm1
movdqa %xmm10,%xmm11
.byte 102,15,56,222,208
prefetcht0 15(%r12,%rbx,1)
prefetcht0 15(%r13,%rbx,1)
.byte 102,15,56,222,216
prefetcht0 15(%r14,%rbx,1)
prefetcht0 15(%r15,%rbx,1)
.byte 102,15,56,222,224
.byte 102,15,56,222,232
movups 128-120(%rsi),%xmm0
pxor %xmm12,%xmm12
.byte 102,15,56,222,209
pcmpgtd %xmm12,%xmm11
movdqu -120(%rsi),%xmm12
.byte 102,15,56,222,217
paddd %xmm11,%xmm10
movdqa %xmm10,32(%rsp)
.byte 102,15,56,222,225
.byte 102,15,56,222,233
movups 144-120(%rsi),%xmm1
cmpl $11,%eax
.byte 102,15,56,222,208
.byte 102,15,56,222,216
.byte 102,15,56,222,224
.byte 102,15,56,222,232
movups 160-120(%rsi),%xmm0
jb .Ldec4x_tail
.byte 102,15,56,222,209
.byte 102,15,56,222,217
.byte 102,15,56,222,225
.byte 102,15,56,222,233
movups 176-120(%rsi),%xmm1
.byte 102,15,56,222,208
.byte 102,15,56,222,216
.byte 102,15,56,222,224
.byte 102,15,56,222,232
movups 192-120(%rsi),%xmm0
je .Ldec4x_tail
.byte 102,15,56,222,209
.byte 102,15,56,222,217
.byte 102,15,56,222,225
.byte 102,15,56,222,233
movups 208-120(%rsi),%xmm1
.byte 102,15,56,222,208
.byte 102,15,56,222,216
.byte 102,15,56,222,224
.byte 102,15,56,222,232
movups 224-120(%rsi),%xmm0
jmp .Ldec4x_tail
.align 32
.Ldec4x_tail:
.byte 102,15,56,222,209
.byte 102,15,56,222,217
.byte 102,15,56,222,225
pxor %xmm0,%xmm6
pxor %xmm0,%xmm7
.byte 102,15,56,222,233
movdqu 16-120(%rsi),%xmm1
pxor %xmm0,%xmm8
pxor %xmm0,%xmm9
movdqu 32-120(%rsi),%xmm0
.byte 102,15,56,223,214
.byte 102,15,56,223,223
movdqu -16(%r8,%rbx,1),%xmm6
movdqu -16(%r9,%rbx,1),%xmm7
.byte 102,65,15,56,223,224
.byte 102,65,15,56,223,233
movdqu -16(%r10,%rbx,1),%xmm8
movdqu -16(%r11,%rbx,1),%xmm9
movups %xmm2,-16(%r12,%rbx,1)
movdqu (%r8,%rbx,1),%xmm2
movups %xmm3,-16(%r13,%rbx,1)
movdqu (%r9,%rbx,1),%xmm3
pxor %xmm12,%xmm2
movups %xmm4,-16(%r14,%rbx,1)
movdqu (%r10,%rbx,1),%xmm4
pxor %xmm12,%xmm3
movups %xmm5,-16(%r15,%rbx,1)
movdqu (%r11,%rbx,1),%xmm5
pxor %xmm12,%xmm4
pxor %xmm12,%xmm5
decl %edx
jnz .Loop_dec4x
movq 16(%rsp),%rax
.cfi_def_cfa %rax,8
movl 24(%rsp),%edx
leaq 160(%rdi),%rdi
decl %edx
jnz .Ldec4x_loop_grande
.Ldec4x_done:
movq -48(%rax),%r15
.cfi_restore %r15
movq -40(%rax),%r14
.cfi_restore %r14
movq -32(%rax),%r13
.cfi_restore %r13
movq -24(%rax),%r12
.cfi_restore %r12
movq -16(%rax),%rbp
.cfi_restore %rbp
movq -8(%rax),%rbx
.cfi_restore %rbx
leaq (%rax),%rsp
.cfi_def_cfa_register %rsp
.Ldec4x_epilogue:
.byte 0xf3,0xc3
.cfi_endproc
.size aesni_multi_cbc_decrypt,.-aesni_multi_cbc_decrypt

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,69 @@
# WARNING: do not edit!
# Generated from openssl/crypto/aes/asm/aesni-sha256-x86_64.pl
#
# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the OpenSSL license (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html
.text
.globl aesni_cbc_sha256_enc
.type aesni_cbc_sha256_enc,@function
.align 16
aesni_cbc_sha256_enc:
.cfi_startproc
xorl %eax,%eax
cmpq $0,%rdi
je .Lprobe
ud2
.Lprobe:
.byte 0xf3,0xc3
.cfi_endproc
.size aesni_cbc_sha256_enc,.-aesni_cbc_sha256_enc
.align 64
.type K256,@object
K256:
.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
.long 0,0,0,0, 0,0,0,0, -1,-1,-1,-1
.long 0,0,0,0, 0,0,0,0
.byte 65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54,32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
.align 64

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,863 @@
# WARNING: do not edit!
# Generated from openssl/crypto/aes/asm/vpaes-x86_64.pl
#
# Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the OpenSSL license (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html
.text
.type _vpaes_encrypt_core,@function
.align 16
_vpaes_encrypt_core:
.cfi_startproc
movq %rdx,%r9
movq $16,%r11
movl 240(%rdx),%eax
movdqa %xmm9,%xmm1
movdqa .Lk_ipt(%rip),%xmm2
pandn %xmm0,%xmm1
movdqu (%r9),%xmm5
psrld $4,%xmm1
pand %xmm9,%xmm0
.byte 102,15,56,0,208
movdqa .Lk_ipt+16(%rip),%xmm0
.byte 102,15,56,0,193
pxor %xmm5,%xmm2
addq $16,%r9
pxor %xmm2,%xmm0
leaq .Lk_mc_backward(%rip),%r10
jmp .Lenc_entry
.align 16
.Lenc_loop:
movdqa %xmm13,%xmm4
movdqa %xmm12,%xmm0
.byte 102,15,56,0,226
.byte 102,15,56,0,195
pxor %xmm5,%xmm4
movdqa %xmm15,%xmm5
pxor %xmm4,%xmm0
movdqa -64(%r11,%r10,1),%xmm1
.byte 102,15,56,0,234
movdqa (%r11,%r10,1),%xmm4
movdqa %xmm14,%xmm2
.byte 102,15,56,0,211
movdqa %xmm0,%xmm3
pxor %xmm5,%xmm2
.byte 102,15,56,0,193
addq $16,%r9
pxor %xmm2,%xmm0
.byte 102,15,56,0,220
addq $16,%r11
pxor %xmm0,%xmm3
.byte 102,15,56,0,193
andq $0x30,%r11
subq $1,%rax
pxor %xmm3,%xmm0
.Lenc_entry:
movdqa %xmm9,%xmm1
movdqa %xmm11,%xmm5
pandn %xmm0,%xmm1
psrld $4,%xmm1
pand %xmm9,%xmm0
.byte 102,15,56,0,232
movdqa %xmm10,%xmm3
pxor %xmm1,%xmm0
.byte 102,15,56,0,217
movdqa %xmm10,%xmm4
pxor %xmm5,%xmm3
.byte 102,15,56,0,224
movdqa %xmm10,%xmm2
pxor %xmm5,%xmm4
.byte 102,15,56,0,211
movdqa %xmm10,%xmm3
pxor %xmm0,%xmm2
.byte 102,15,56,0,220
movdqu (%r9),%xmm5
pxor %xmm1,%xmm3
jnz .Lenc_loop
movdqa -96(%r10),%xmm4
movdqa -80(%r10),%xmm0
.byte 102,15,56,0,226
pxor %xmm5,%xmm4
.byte 102,15,56,0,195
movdqa 64(%r11,%r10,1),%xmm1
pxor %xmm4,%xmm0
.byte 102,15,56,0,193
.byte 0xf3,0xc3
.cfi_endproc
.size _vpaes_encrypt_core,.-_vpaes_encrypt_core
.type _vpaes_decrypt_core,@function
.align 16
_vpaes_decrypt_core:
.cfi_startproc
movq %rdx,%r9
movl 240(%rdx),%eax
movdqa %xmm9,%xmm1
movdqa .Lk_dipt(%rip),%xmm2
pandn %xmm0,%xmm1
movq %rax,%r11
psrld $4,%xmm1
movdqu (%r9),%xmm5
shlq $4,%r11
pand %xmm9,%xmm0
.byte 102,15,56,0,208
movdqa .Lk_dipt+16(%rip),%xmm0
xorq $0x30,%r11
leaq .Lk_dsbd(%rip),%r10
.byte 102,15,56,0,193
andq $0x30,%r11
pxor %xmm5,%xmm2
movdqa .Lk_mc_forward+48(%rip),%xmm5
pxor %xmm2,%xmm0
addq $16,%r9
addq %r10,%r11
jmp .Ldec_entry
.align 16
.Ldec_loop:
movdqa -32(%r10),%xmm4
movdqa -16(%r10),%xmm1
.byte 102,15,56,0,226
.byte 102,15,56,0,203
pxor %xmm4,%xmm0
movdqa 0(%r10),%xmm4
pxor %xmm1,%xmm0
movdqa 16(%r10),%xmm1
.byte 102,15,56,0,226
.byte 102,15,56,0,197
.byte 102,15,56,0,203
pxor %xmm4,%xmm0
movdqa 32(%r10),%xmm4
pxor %xmm1,%xmm0
movdqa 48(%r10),%xmm1
.byte 102,15,56,0,226
.byte 102,15,56,0,197
.byte 102,15,56,0,203
pxor %xmm4,%xmm0
movdqa 64(%r10),%xmm4
pxor %xmm1,%xmm0
movdqa 80(%r10),%xmm1
.byte 102,15,56,0,226
.byte 102,15,56,0,197
.byte 102,15,56,0,203
pxor %xmm4,%xmm0
addq $16,%r9
.byte 102,15,58,15,237,12
pxor %xmm1,%xmm0
subq $1,%rax
.Ldec_entry:
movdqa %xmm9,%xmm1
pandn %xmm0,%xmm1
movdqa %xmm11,%xmm2
psrld $4,%xmm1
pand %xmm9,%xmm0
.byte 102,15,56,0,208
movdqa %xmm10,%xmm3
pxor %xmm1,%xmm0
.byte 102,15,56,0,217
movdqa %xmm10,%xmm4
pxor %xmm2,%xmm3
.byte 102,15,56,0,224
pxor %xmm2,%xmm4
movdqa %xmm10,%xmm2
.byte 102,15,56,0,211
movdqa %xmm10,%xmm3
pxor %xmm0,%xmm2
.byte 102,15,56,0,220
movdqu (%r9),%xmm0
pxor %xmm1,%xmm3
jnz .Ldec_loop
movdqa 96(%r10),%xmm4
.byte 102,15,56,0,226
pxor %xmm0,%xmm4
movdqa 112(%r10),%xmm0
movdqa -352(%r11),%xmm2
.byte 102,15,56,0,195
pxor %xmm4,%xmm0
.byte 102,15,56,0,194
.byte 0xf3,0xc3
.cfi_endproc
.size _vpaes_decrypt_core,.-_vpaes_decrypt_core
.type _vpaes_schedule_core,@function
.align 16
_vpaes_schedule_core:
.cfi_startproc
call _vpaes_preheat
movdqa .Lk_rcon(%rip),%xmm8
movdqu (%rdi),%xmm0
movdqa %xmm0,%xmm3
leaq .Lk_ipt(%rip),%r11
call _vpaes_schedule_transform
movdqa %xmm0,%xmm7
leaq .Lk_sr(%rip),%r10
testq %rcx,%rcx
jnz .Lschedule_am_decrypting
movdqu %xmm0,(%rdx)
jmp .Lschedule_go
.Lschedule_am_decrypting:
movdqa (%r8,%r10,1),%xmm1
.byte 102,15,56,0,217
movdqu %xmm3,(%rdx)
xorq $0x30,%r8
.Lschedule_go:
cmpl $192,%esi
ja .Lschedule_256
je .Lschedule_192
.Lschedule_128:
movl $10,%esi
.Loop_schedule_128:
call _vpaes_schedule_round
decq %rsi
jz .Lschedule_mangle_last
call _vpaes_schedule_mangle
jmp .Loop_schedule_128
.align 16
.Lschedule_192:
movdqu 8(%rdi),%xmm0
call _vpaes_schedule_transform
movdqa %xmm0,%xmm6
pxor %xmm4,%xmm4
movhlps %xmm4,%xmm6
movl $4,%esi
.Loop_schedule_192:
call _vpaes_schedule_round
.byte 102,15,58,15,198,8
call _vpaes_schedule_mangle
call _vpaes_schedule_192_smear
call _vpaes_schedule_mangle
call _vpaes_schedule_round
decq %rsi
jz .Lschedule_mangle_last
call _vpaes_schedule_mangle
call _vpaes_schedule_192_smear
jmp .Loop_schedule_192
.align 16
.Lschedule_256:
movdqu 16(%rdi),%xmm0
call _vpaes_schedule_transform
movl $7,%esi
.Loop_schedule_256:
call _vpaes_schedule_mangle
movdqa %xmm0,%xmm6
call _vpaes_schedule_round
decq %rsi
jz .Lschedule_mangle_last
call _vpaes_schedule_mangle
pshufd $0xFF,%xmm0,%xmm0
movdqa %xmm7,%xmm5
movdqa %xmm6,%xmm7
call _vpaes_schedule_low_round
movdqa %xmm5,%xmm7
jmp .Loop_schedule_256
.align 16
.Lschedule_mangle_last:
leaq .Lk_deskew(%rip),%r11
testq %rcx,%rcx
jnz .Lschedule_mangle_last_dec
movdqa (%r8,%r10,1),%xmm1
.byte 102,15,56,0,193
leaq .Lk_opt(%rip),%r11
addq $32,%rdx
.Lschedule_mangle_last_dec:
addq $-16,%rdx
pxor .Lk_s63(%rip),%xmm0
call _vpaes_schedule_transform
movdqu %xmm0,(%rdx)
pxor %xmm0,%xmm0
pxor %xmm1,%xmm1
pxor %xmm2,%xmm2
pxor %xmm3,%xmm3
pxor %xmm4,%xmm4
pxor %xmm5,%xmm5
pxor %xmm6,%xmm6
pxor %xmm7,%xmm7
.byte 0xf3,0xc3
.cfi_endproc
.size _vpaes_schedule_core,.-_vpaes_schedule_core
.type _vpaes_schedule_192_smear,@function
.align 16
_vpaes_schedule_192_smear:
.cfi_startproc
pshufd $0x80,%xmm6,%xmm1
pshufd $0xFE,%xmm7,%xmm0
pxor %xmm1,%xmm6
pxor %xmm1,%xmm1
pxor %xmm0,%xmm6
movdqa %xmm6,%xmm0
movhlps %xmm1,%xmm6
.byte 0xf3,0xc3
.cfi_endproc
.size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear
.type _vpaes_schedule_round,@function
.align 16
_vpaes_schedule_round:
.cfi_startproc
pxor %xmm1,%xmm1
.byte 102,65,15,58,15,200,15
.byte 102,69,15,58,15,192,15
pxor %xmm1,%xmm7
pshufd $0xFF,%xmm0,%xmm0
.byte 102,15,58,15,192,1
_vpaes_schedule_low_round:
movdqa %xmm7,%xmm1
pslldq $4,%xmm7
pxor %xmm1,%xmm7
movdqa %xmm7,%xmm1
pslldq $8,%xmm7
pxor %xmm1,%xmm7
pxor .Lk_s63(%rip),%xmm7
movdqa %xmm9,%xmm1
pandn %xmm0,%xmm1
psrld $4,%xmm1
pand %xmm9,%xmm0
movdqa %xmm11,%xmm2
.byte 102,15,56,0,208
pxor %xmm1,%xmm0
movdqa %xmm10,%xmm3
.byte 102,15,56,0,217
pxor %xmm2,%xmm3
movdqa %xmm10,%xmm4
.byte 102,15,56,0,224
pxor %xmm2,%xmm4
movdqa %xmm10,%xmm2
.byte 102,15,56,0,211
pxor %xmm0,%xmm2
movdqa %xmm10,%xmm3
.byte 102,15,56,0,220
pxor %xmm1,%xmm3
movdqa %xmm13,%xmm4
.byte 102,15,56,0,226
movdqa %xmm12,%xmm0
.byte 102,15,56,0,195
pxor %xmm4,%xmm0
pxor %xmm7,%xmm0
movdqa %xmm0,%xmm7
.byte 0xf3,0xc3
.cfi_endproc
.size _vpaes_schedule_round,.-_vpaes_schedule_round
.type _vpaes_schedule_transform,@function
.align 16
_vpaes_schedule_transform:
.cfi_startproc
movdqa %xmm9,%xmm1
pandn %xmm0,%xmm1
psrld $4,%xmm1
pand %xmm9,%xmm0
movdqa (%r11),%xmm2
.byte 102,15,56,0,208
movdqa 16(%r11),%xmm0
.byte 102,15,56,0,193
pxor %xmm2,%xmm0
.byte 0xf3,0xc3
.cfi_endproc
.size _vpaes_schedule_transform,.-_vpaes_schedule_transform
.type _vpaes_schedule_mangle,@function
.align 16
_vpaes_schedule_mangle:
.cfi_startproc
movdqa %xmm0,%xmm4
movdqa .Lk_mc_forward(%rip),%xmm5
testq %rcx,%rcx
jnz .Lschedule_mangle_dec
addq $16,%rdx
pxor .Lk_s63(%rip),%xmm4
.byte 102,15,56,0,229
movdqa %xmm4,%xmm3
.byte 102,15,56,0,229
pxor %xmm4,%xmm3
.byte 102,15,56,0,229
pxor %xmm4,%xmm3
jmp .Lschedule_mangle_both
.align 16
.Lschedule_mangle_dec:
leaq .Lk_dksd(%rip),%r11
movdqa %xmm9,%xmm1
pandn %xmm4,%xmm1
psrld $4,%xmm1
pand %xmm9,%xmm4
movdqa 0(%r11),%xmm2
.byte 102,15,56,0,212
movdqa 16(%r11),%xmm3
.byte 102,15,56,0,217
pxor %xmm2,%xmm3
.byte 102,15,56,0,221
movdqa 32(%r11),%xmm2
.byte 102,15,56,0,212
pxor %xmm3,%xmm2
movdqa 48(%r11),%xmm3
.byte 102,15,56,0,217
pxor %xmm2,%xmm3
.byte 102,15,56,0,221
movdqa 64(%r11),%xmm2
.byte 102,15,56,0,212
pxor %xmm3,%xmm2
movdqa 80(%r11),%xmm3
.byte 102,15,56,0,217
pxor %xmm2,%xmm3
.byte 102,15,56,0,221
movdqa 96(%r11),%xmm2
.byte 102,15,56,0,212
pxor %xmm3,%xmm2
movdqa 112(%r11),%xmm3
.byte 102,15,56,0,217
pxor %xmm2,%xmm3
addq $-16,%rdx
.Lschedule_mangle_both:
movdqa (%r8,%r10,1),%xmm1
.byte 102,15,56,0,217
addq $-16,%r8
andq $0x30,%r8
movdqu %xmm3,(%rdx)
.byte 0xf3,0xc3
.cfi_endproc
.size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle
.globl vpaes_set_encrypt_key
.type vpaes_set_encrypt_key,@function
.align 16
vpaes_set_encrypt_key:
.cfi_startproc
movl %esi,%eax
shrl $5,%eax
addl $5,%eax
movl %eax,240(%rdx)
movl $0,%ecx
movl $0x30,%r8d
call _vpaes_schedule_core
xorl %eax,%eax
.byte 0xf3,0xc3
.cfi_endproc
.size vpaes_set_encrypt_key,.-vpaes_set_encrypt_key
.globl vpaes_set_decrypt_key
.type vpaes_set_decrypt_key,@function
.align 16
vpaes_set_decrypt_key:
.cfi_startproc
movl %esi,%eax
shrl $5,%eax
addl $5,%eax
movl %eax,240(%rdx)
shll $4,%eax
leaq 16(%rdx,%rax,1),%rdx
movl $1,%ecx
movl %esi,%r8d
shrl $1,%r8d
andl $32,%r8d
xorl $32,%r8d
call _vpaes_schedule_core
xorl %eax,%eax
.byte 0xf3,0xc3
.cfi_endproc
.size vpaes_set_decrypt_key,.-vpaes_set_decrypt_key
.globl vpaes_encrypt
.type vpaes_encrypt,@function
.align 16
vpaes_encrypt:
.cfi_startproc
movdqu (%rdi),%xmm0
call _vpaes_preheat
call _vpaes_encrypt_core
movdqu %xmm0,(%rsi)
.byte 0xf3,0xc3
.cfi_endproc
.size vpaes_encrypt,.-vpaes_encrypt
.globl vpaes_decrypt
.type vpaes_decrypt,@function
.align 16
vpaes_decrypt:
.cfi_startproc
movdqu (%rdi),%xmm0
call _vpaes_preheat
call _vpaes_decrypt_core
movdqu %xmm0,(%rsi)
.byte 0xf3,0xc3
.cfi_endproc
.size vpaes_decrypt,.-vpaes_decrypt
.globl vpaes_cbc_encrypt
.type vpaes_cbc_encrypt,@function
.align 16
vpaes_cbc_encrypt:
.cfi_startproc
xchgq %rcx,%rdx
subq $16,%rcx
jc .Lcbc_abort
movdqu (%r8),%xmm6
subq %rdi,%rsi
call _vpaes_preheat
cmpl $0,%r9d
je .Lcbc_dec_loop
jmp .Lcbc_enc_loop
.align 16
.Lcbc_enc_loop:
movdqu (%rdi),%xmm0
pxor %xmm6,%xmm0
call _vpaes_encrypt_core
movdqa %xmm0,%xmm6
movdqu %xmm0,(%rsi,%rdi,1)
leaq 16(%rdi),%rdi
subq $16,%rcx
jnc .Lcbc_enc_loop
jmp .Lcbc_done
.align 16
.Lcbc_dec_loop:
movdqu (%rdi),%xmm0
movdqa %xmm0,%xmm7
call _vpaes_decrypt_core
pxor %xmm6,%xmm0
movdqa %xmm7,%xmm6
movdqu %xmm0,(%rsi,%rdi,1)
leaq 16(%rdi),%rdi
subq $16,%rcx
jnc .Lcbc_dec_loop
.Lcbc_done:
movdqu %xmm6,(%r8)
.Lcbc_abort:
.byte 0xf3,0xc3
.cfi_endproc
.size vpaes_cbc_encrypt,.-vpaes_cbc_encrypt
.type _vpaes_preheat,@function
.align 16
_vpaes_preheat:
.cfi_startproc
leaq .Lk_s0F(%rip),%r10
movdqa -32(%r10),%xmm10
movdqa -16(%r10),%xmm11
movdqa 0(%r10),%xmm9
movdqa 48(%r10),%xmm13
movdqa 64(%r10),%xmm12
movdqa 80(%r10),%xmm15
movdqa 96(%r10),%xmm14
.byte 0xf3,0xc3
.cfi_endproc
.size _vpaes_preheat,.-_vpaes_preheat
.type _vpaes_consts,@object
.align 64
_vpaes_consts:
.Lk_inv:
.quad 0x0E05060F0D080180, 0x040703090A0B0C02
.quad 0x01040A060F0B0780, 0x030D0E0C02050809
.Lk_s0F:
.quad 0x0F0F0F0F0F0F0F0F, 0x0F0F0F0F0F0F0F0F
.Lk_ipt:
.quad 0xC2B2E8985A2A7000, 0xCABAE09052227808
.quad 0x4C01307D317C4D00, 0xCD80B1FCB0FDCC81
.Lk_sb1:
.quad 0xB19BE18FCB503E00, 0xA5DF7A6E142AF544
.quad 0x3618D415FAE22300, 0x3BF7CCC10D2ED9EF
.Lk_sb2:
.quad 0xE27A93C60B712400, 0x5EB7E955BC982FCD
.quad 0x69EB88400AE12900, 0xC2A163C8AB82234A
.Lk_sbo:
.quad 0xD0D26D176FBDC700, 0x15AABF7AC502A878
.quad 0xCFE474A55FBB6A00, 0x8E1E90D1412B35FA
.Lk_mc_forward:
.quad 0x0407060500030201, 0x0C0F0E0D080B0A09
.quad 0x080B0A0904070605, 0x000302010C0F0E0D
.quad 0x0C0F0E0D080B0A09, 0x0407060500030201
.quad 0x000302010C0F0E0D, 0x080B0A0904070605
.Lk_mc_backward:
.quad 0x0605040702010003, 0x0E0D0C0F0A09080B
.quad 0x020100030E0D0C0F, 0x0A09080B06050407
.quad 0x0E0D0C0F0A09080B, 0x0605040702010003
.quad 0x0A09080B06050407, 0x020100030E0D0C0F
.Lk_sr:
.quad 0x0706050403020100, 0x0F0E0D0C0B0A0908
.quad 0x030E09040F0A0500, 0x0B06010C07020D08
.quad 0x0F060D040B020900, 0x070E050C030A0108
.quad 0x0B0E0104070A0D00, 0x0306090C0F020508
.Lk_rcon:
.quad 0x1F8391B9AF9DEEB6, 0x702A98084D7C7D81
.Lk_s63:
.quad 0x5B5B5B5B5B5B5B5B, 0x5B5B5B5B5B5B5B5B
.Lk_opt:
.quad 0xFF9F4929D6B66000, 0xF7974121DEBE6808
.quad 0x01EDBD5150BCEC00, 0xE10D5DB1B05C0CE0
.Lk_deskew:
.quad 0x07E4A34047A4E300, 0x1DFEB95A5DBEF91A
.quad 0x5F36B5DC83EA6900, 0x2841C2ABF49D1E77
.Lk_dksd:
.quad 0xFEB91A5DA3E44700, 0x0740E3A45A1DBEF9
.quad 0x41C277F4B5368300, 0x5FDC69EAAB289D1E
.Lk_dksb:
.quad 0x9A4FCA1F8550D500, 0x03D653861CC94C99
.quad 0x115BEDA7B6FC4A00, 0xD993256F7E3482C8
.Lk_dkse:
.quad 0xD5031CCA1FC9D600, 0x53859A4C994F5086
.quad 0xA23196054FDC7BE8, 0xCD5EF96A20B31487
.Lk_dks9:
.quad 0xB6116FC87ED9A700, 0x4AED933482255BFC
.quad 0x4576516227143300, 0x8BB89FACE9DAFDCE
.Lk_dipt:
.quad 0x0F505B040B545F00, 0x154A411E114E451A
.quad 0x86E383E660056500, 0x12771772F491F194
.Lk_dsb9:
.quad 0x851C03539A86D600, 0xCAD51F504F994CC9
.quad 0xC03B1789ECD74900, 0x725E2C9EB2FBA565
.Lk_dsbd:
.quad 0x7D57CCDFE6B1A200, 0xF56E9B13882A4439
.quad 0x3CE2FAF724C6CB00, 0x2931180D15DEEFD3
.Lk_dsbb:
.quad 0xD022649296B44200, 0x602646F6B0F2D404
.quad 0xC19498A6CD596700, 0xF3FF0C3E3255AA6B
.Lk_dsbe:
.quad 0x46F2929626D4D000, 0x2242600464B4F6B0
.quad 0x0C55A6CDFFAAC100, 0x9467F36B98593E32
.Lk_dsbo:
.quad 0x1387EA537EF94000, 0xC7AA6DB9D4943E2D
.quad 0x12D7560F93441D00, 0xCA4B8159D8C58E9C
.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0
.align 64
.size _vpaes_consts,.-_vpaes_consts

View File

@ -0,0 +1,29 @@
# WARNING: do not edit!
# Generated from openssl/crypto/modes/asm/aesni-gcm-x86_64.pl
#
# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the OpenSSL license (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html
.text
.globl aesni_gcm_encrypt
.type aesni_gcm_encrypt,@function
aesni_gcm_encrypt:
.cfi_startproc
xorl %eax,%eax
.byte 0xf3,0xc3
.cfi_endproc
.size aesni_gcm_encrypt,.-aesni_gcm_encrypt
.globl aesni_gcm_decrypt
.type aesni_gcm_decrypt,@function
aesni_gcm_decrypt:
.cfi_startproc
xorl %eax,%eax
.byte 0xf3,0xc3
.cfi_endproc
.size aesni_gcm_decrypt,.-aesni_gcm_decrypt

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,491 @@
# WARNING: do not edit!
# Generated from openssl/crypto/x86_64cpuid.pl
#
# Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the OpenSSL license (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html
.hidden OPENSSL_cpuid_setup
.section .init
call OPENSSL_cpuid_setup
.hidden OPENSSL_ia32cap_P
.comm OPENSSL_ia32cap_P,16,4
.text
.globl OPENSSL_atomic_add
.type OPENSSL_atomic_add,@function
.align 16
OPENSSL_atomic_add:
.cfi_startproc
movl (%rdi),%eax
.Lspin: leaq (%rsi,%rax,1),%r8
.byte 0xf0
cmpxchgl %r8d,(%rdi)
jne .Lspin
movl %r8d,%eax
.byte 0x48,0x98
.byte 0xf3,0xc3
.cfi_endproc
.size OPENSSL_atomic_add,.-OPENSSL_atomic_add
.globl OPENSSL_rdtsc
.type OPENSSL_rdtsc,@function
.align 16
OPENSSL_rdtsc:
.cfi_startproc
rdtsc
shlq $32,%rdx
orq %rdx,%rax
.byte 0xf3,0xc3
.cfi_endproc
.size OPENSSL_rdtsc,.-OPENSSL_rdtsc
.globl OPENSSL_ia32_cpuid
.type OPENSSL_ia32_cpuid,@function
.align 16
OPENSSL_ia32_cpuid:
.cfi_startproc
movq %rbx,%r8
.cfi_register %rbx,%r8
xorl %eax,%eax
movq %rax,8(%rdi)
cpuid
movl %eax,%r11d
xorl %eax,%eax
cmpl $0x756e6547,%ebx
setne %al
movl %eax,%r9d
cmpl $0x49656e69,%edx
setne %al
orl %eax,%r9d
cmpl $0x6c65746e,%ecx
setne %al
orl %eax,%r9d
jz .Lintel
cmpl $0x68747541,%ebx
setne %al
movl %eax,%r10d
cmpl $0x69746E65,%edx
setne %al
orl %eax,%r10d
cmpl $0x444D4163,%ecx
setne %al
orl %eax,%r10d
jnz .Lintel
movl $0x80000000,%eax
cpuid
cmpl $0x80000001,%eax
jb .Lintel
movl %eax,%r10d
movl $0x80000001,%eax
cpuid
orl %ecx,%r9d
andl $0x00000801,%r9d
cmpl $0x80000008,%r10d
jb .Lintel
movl $0x80000008,%eax
cpuid
movzbq %cl,%r10
incq %r10
movl $1,%eax
cpuid
btl $28,%edx
jnc .Lgeneric
shrl $16,%ebx
cmpb %r10b,%bl
ja .Lgeneric
andl $0xefffffff,%edx
jmp .Lgeneric
.Lintel:
cmpl $4,%r11d
movl $-1,%r10d
jb .Lnocacheinfo
movl $4,%eax
movl $0,%ecx
cpuid
movl %eax,%r10d
shrl $14,%r10d
andl $0xfff,%r10d
.Lnocacheinfo:
movl $1,%eax
cpuid
movd %eax,%xmm0
andl $0xbfefffff,%edx
cmpl $0,%r9d
jne .Lnotintel
orl $0x40000000,%edx
andb $15,%ah
cmpb $15,%ah
jne .LnotP4
orl $0x00100000,%edx
.LnotP4:
cmpb $6,%ah
jne .Lnotintel
andl $0x0fff0ff0,%eax
cmpl $0x00050670,%eax
je .Lknights
cmpl $0x00080650,%eax
jne .Lnotintel
.Lknights:
andl $0xfbffffff,%ecx
.Lnotintel:
btl $28,%edx
jnc .Lgeneric
andl $0xefffffff,%edx
cmpl $0,%r10d
je .Lgeneric
orl $0x10000000,%edx
shrl $16,%ebx
cmpb $1,%bl
ja .Lgeneric
andl $0xefffffff,%edx
.Lgeneric:
andl $0x00000800,%r9d
andl $0xfffff7ff,%ecx
orl %ecx,%r9d
movl %edx,%r10d
cmpl $7,%r11d
jb .Lno_extended_info
movl $7,%eax
xorl %ecx,%ecx
cpuid
btl $26,%r9d
jc .Lnotknights
andl $0xfff7ffff,%ebx
.Lnotknights:
movd %xmm0,%eax
andl $0x0fff0ff0,%eax
cmpl $0x00050650,%eax
jne .Lnotskylakex
andl $0xfffeffff,%ebx
.Lnotskylakex:
movl %ebx,8(%rdi)
movl %ecx,12(%rdi)
.Lno_extended_info:
btl $27,%r9d
jnc .Lclear_avx
xorl %ecx,%ecx
.byte 0x0f,0x01,0xd0
andl $0xe6,%eax
cmpl $0xe6,%eax
je .Ldone
andl $0x3fdeffff,8(%rdi)
andl $6,%eax
cmpl $6,%eax
je .Ldone
.Lclear_avx:
movl $0xefffe7ff,%eax
andl %eax,%r9d
movl $0x3fdeffdf,%eax
andl %eax,8(%rdi)
.Ldone:
shlq $32,%r9
movl %r10d,%eax
movq %r8,%rbx
.cfi_restore %rbx
orq %r9,%rax
.byte 0xf3,0xc3
.cfi_endproc
.size OPENSSL_ia32_cpuid,.-OPENSSL_ia32_cpuid
.globl OPENSSL_cleanse
.type OPENSSL_cleanse,@function
.align 16
OPENSSL_cleanse:
.cfi_startproc
xorq %rax,%rax
cmpq $15,%rsi
jae .Lot
cmpq $0,%rsi
je .Lret
.Little:
movb %al,(%rdi)
subq $1,%rsi
leaq 1(%rdi),%rdi
jnz .Little
.Lret:
.byte 0xf3,0xc3
.align 16
.Lot:
testq $7,%rdi
jz .Laligned
movb %al,(%rdi)
leaq -1(%rsi),%rsi
leaq 1(%rdi),%rdi
jmp .Lot
.Laligned:
movq %rax,(%rdi)
leaq -8(%rsi),%rsi
testq $-8,%rsi
leaq 8(%rdi),%rdi
jnz .Laligned
cmpq $0,%rsi
jne .Little
.byte 0xf3,0xc3
.cfi_endproc
.size OPENSSL_cleanse,.-OPENSSL_cleanse
.globl CRYPTO_memcmp
.type CRYPTO_memcmp,@function
.align 16
CRYPTO_memcmp:
.cfi_startproc
xorq %rax,%rax
xorq %r10,%r10
cmpq $0,%rdx
je .Lno_data
cmpq $16,%rdx
jne .Loop_cmp
movq (%rdi),%r10
movq 8(%rdi),%r11
movq $1,%rdx
xorq (%rsi),%r10
xorq 8(%rsi),%r11
orq %r11,%r10
cmovnzq %rdx,%rax
.byte 0xf3,0xc3
.align 16
.Loop_cmp:
movb (%rdi),%r10b
leaq 1(%rdi),%rdi
xorb (%rsi),%r10b
leaq 1(%rsi),%rsi
orb %r10b,%al
decq %rdx
jnz .Loop_cmp
negq %rax
shrq $63,%rax
.Lno_data:
.byte 0xf3,0xc3
.cfi_endproc
.size CRYPTO_memcmp,.-CRYPTO_memcmp
.globl OPENSSL_wipe_cpu
.type OPENSSL_wipe_cpu,@function
.align 16
OPENSSL_wipe_cpu:
.cfi_startproc
pxor %xmm0,%xmm0
pxor %xmm1,%xmm1
pxor %xmm2,%xmm2
pxor %xmm3,%xmm3
pxor %xmm4,%xmm4
pxor %xmm5,%xmm5
pxor %xmm6,%xmm6
pxor %xmm7,%xmm7
pxor %xmm8,%xmm8
pxor %xmm9,%xmm9
pxor %xmm10,%xmm10
pxor %xmm11,%xmm11
pxor %xmm12,%xmm12
pxor %xmm13,%xmm13
pxor %xmm14,%xmm14
pxor %xmm15,%xmm15
xorq %rcx,%rcx
xorq %rdx,%rdx
xorq %rsi,%rsi
xorq %rdi,%rdi
xorq %r8,%r8
xorq %r9,%r9
xorq %r10,%r10
xorq %r11,%r11
leaq 8(%rsp),%rax
.byte 0xf3,0xc3
.cfi_endproc
.size OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu
.globl OPENSSL_instrument_bus
.type OPENSSL_instrument_bus,@function
.align 16
OPENSSL_instrument_bus:
.cfi_startproc
movq %rdi,%r10
movq %rsi,%rcx
movq %rsi,%r11
rdtsc
movl %eax,%r8d
movl $0,%r9d
clflush (%r10)
.byte 0xf0
addl %r9d,(%r10)
jmp .Loop
.align 16
.Loop: rdtsc
movl %eax,%edx
subl %r8d,%eax
movl %edx,%r8d
movl %eax,%r9d
clflush (%r10)
.byte 0xf0
addl %eax,(%r10)
leaq 4(%r10),%r10
subq $1,%rcx
jnz .Loop
movq %r11,%rax
.byte 0xf3,0xc3
.cfi_endproc
.size OPENSSL_instrument_bus,.-OPENSSL_instrument_bus
.globl OPENSSL_instrument_bus2
.type OPENSSL_instrument_bus2,@function
.align 16
OPENSSL_instrument_bus2:
.cfi_startproc
movq %rdi,%r10
movq %rsi,%rcx
movq %rdx,%r11
movq %rcx,8(%rsp)
rdtsc
movl %eax,%r8d
movl $0,%r9d
clflush (%r10)
.byte 0xf0
addl %r9d,(%r10)
rdtsc
movl %eax,%edx
subl %r8d,%eax
movl %edx,%r8d
movl %eax,%r9d
.Loop2:
clflush (%r10)
.byte 0xf0
addl %eax,(%r10)
subq $1,%r11
jz .Ldone2
rdtsc
movl %eax,%edx
subl %r8d,%eax
movl %edx,%r8d
cmpl %r9d,%eax
movl %eax,%r9d
movl $0,%edx
setne %dl
subq %rdx,%rcx
leaq (%r10,%rdx,4),%r10
jnz .Loop2
.Ldone2:
movq 8(%rsp),%rax
subq %rcx,%rax
.byte 0xf3,0xc3
.cfi_endproc
.size OPENSSL_instrument_bus2,.-OPENSSL_instrument_bus2
.globl OPENSSL_ia32_rdrand_bytes
.type OPENSSL_ia32_rdrand_bytes,@function
.align 16
OPENSSL_ia32_rdrand_bytes:
.cfi_startproc
xorq %rax,%rax
cmpq $0,%rsi
je .Ldone_rdrand_bytes
movq $8,%r11
.Loop_rdrand_bytes:
.byte 73,15,199,242
jc .Lbreak_rdrand_bytes
decq %r11
jnz .Loop_rdrand_bytes
jmp .Ldone_rdrand_bytes
.align 16
.Lbreak_rdrand_bytes:
cmpq $8,%rsi
jb .Ltail_rdrand_bytes
movq %r10,(%rdi)
leaq 8(%rdi),%rdi
addq $8,%rax
subq $8,%rsi
jz .Ldone_rdrand_bytes
movq $8,%r11
jmp .Loop_rdrand_bytes
.align 16
.Ltail_rdrand_bytes:
movb %r10b,(%rdi)
leaq 1(%rdi),%rdi
incq %rax
shrq $8,%r10
decq %rsi
jnz .Ltail_rdrand_bytes
.Ldone_rdrand_bytes:
xorq %r10,%r10
.byte 0xf3,0xc3
.cfi_endproc
.size OPENSSL_ia32_rdrand_bytes,.-OPENSSL_ia32_rdrand_bytes
.globl OPENSSL_ia32_rdseed_bytes
.type OPENSSL_ia32_rdseed_bytes,@function
.align 16
OPENSSL_ia32_rdseed_bytes:
.cfi_startproc
xorq %rax,%rax
cmpq $0,%rsi
je .Ldone_rdseed_bytes
movq $8,%r11
.Loop_rdseed_bytes:
.byte 73,15,199,250
jc .Lbreak_rdseed_bytes
decq %r11
jnz .Loop_rdseed_bytes
jmp .Ldone_rdseed_bytes
.align 16
.Lbreak_rdseed_bytes:
cmpq $8,%rsi
jb .Ltail_rdseed_bytes
movq %r10,(%rdi)
leaq 8(%rdi),%rdi
addq $8,%rax
subq $8,%rsi
jz .Ldone_rdseed_bytes
movq $8,%r11
jmp .Loop_rdseed_bytes
.align 16
.Ltail_rdseed_bytes:
movb %r10b,(%rdi)
leaq 1(%rdi),%rdi
incq %rax
shrq $8,%r10
decq %rsi
jnz .Ltail_rdseed_bytes
.Ldone_rdseed_bytes:
xorq %r10,%r10
.byte 0xf3,0xc3
.cfi_endproc
.size OPENSSL_ia32_rdseed_bytes,.-OPENSSL_ia32_rdseed_bytes