CryptoPkg/OpensslLib: Commit the auto-generated assembly files for IA32
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3654 Adding the auto-generated assembly files for IA32 architectures. Cc: Yi Li <yi1.li@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Xiaoyu Lu <xiaoyu1.lu@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Signed-off-by: Christopher Zurcher <christopher.zurcher@microsoft.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
This commit is contained in:
committed by
mergify[bot]
parent
03f708090b
commit
4102950a21
433
CryptoPkg/Library/OpensslLib/IA32/crypto/x86cpuid.nasm
Normal file
433
CryptoPkg/Library/OpensslLib/IA32/crypto/x86cpuid.nasm
Normal file
@@ -0,0 +1,433 @@
|
||||
; WARNING: do not edit!
|
||||
; Generated from openssl/crypto/x86cpuid.pl
|
||||
;
|
||||
; Copyright 2004-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
|
||||
|
||||
%ifidn __OUTPUT_FORMAT__,obj
|
||||
section code use32 class=code align=64
|
||||
%elifidn __OUTPUT_FORMAT__,win32
|
||||
$@feat.00 equ 1
|
||||
section .text code align=64
|
||||
%else
|
||||
section .text code
|
||||
%endif
|
||||
global _OPENSSL_ia32_cpuid
|
||||
align 16
|
||||
_OPENSSL_ia32_cpuid:
|
||||
L$_OPENSSL_ia32_cpuid_begin:
|
||||
push ebp
|
||||
push ebx
|
||||
push esi
|
||||
push edi
|
||||
xor edx,edx
|
||||
pushfd
|
||||
pop eax
|
||||
mov ecx,eax
|
||||
xor eax,2097152
|
||||
push eax
|
||||
popfd
|
||||
pushfd
|
||||
pop eax
|
||||
xor ecx,eax
|
||||
xor eax,eax
|
||||
mov esi,DWORD [20+esp]
|
||||
mov DWORD [8+esi],eax
|
||||
bt ecx,21
|
||||
jnc NEAR L$000nocpuid
|
||||
cpuid
|
||||
mov edi,eax
|
||||
xor eax,eax
|
||||
cmp ebx,1970169159
|
||||
setne al
|
||||
mov ebp,eax
|
||||
cmp edx,1231384169
|
||||
setne al
|
||||
or ebp,eax
|
||||
cmp ecx,1818588270
|
||||
setne al
|
||||
or ebp,eax
|
||||
jz NEAR L$001intel
|
||||
cmp ebx,1752462657
|
||||
setne al
|
||||
mov esi,eax
|
||||
cmp edx,1769238117
|
||||
setne al
|
||||
or esi,eax
|
||||
cmp ecx,1145913699
|
||||
setne al
|
||||
or esi,eax
|
||||
jnz NEAR L$001intel
|
||||
mov eax,2147483648
|
||||
cpuid
|
||||
cmp eax,2147483649
|
||||
jb NEAR L$001intel
|
||||
mov esi,eax
|
||||
mov eax,2147483649
|
||||
cpuid
|
||||
or ebp,ecx
|
||||
and ebp,2049
|
||||
cmp esi,2147483656
|
||||
jb NEAR L$001intel
|
||||
mov eax,2147483656
|
||||
cpuid
|
||||
movzx esi,cl
|
||||
inc esi
|
||||
mov eax,1
|
||||
xor ecx,ecx
|
||||
cpuid
|
||||
bt edx,28
|
||||
jnc NEAR L$002generic
|
||||
shr ebx,16
|
||||
and ebx,255
|
||||
cmp ebx,esi
|
||||
ja NEAR L$002generic
|
||||
and edx,4026531839
|
||||
jmp NEAR L$002generic
|
||||
L$001intel:
|
||||
cmp edi,4
|
||||
mov esi,-1
|
||||
jb NEAR L$003nocacheinfo
|
||||
mov eax,4
|
||||
mov ecx,0
|
||||
cpuid
|
||||
mov esi,eax
|
||||
shr esi,14
|
||||
and esi,4095
|
||||
L$003nocacheinfo:
|
||||
mov eax,1
|
||||
xor ecx,ecx
|
||||
cpuid
|
||||
and edx,3220176895
|
||||
cmp ebp,0
|
||||
jne NEAR L$004notintel
|
||||
or edx,1073741824
|
||||
and ah,15
|
||||
cmp ah,15
|
||||
jne NEAR L$004notintel
|
||||
or edx,1048576
|
||||
L$004notintel:
|
||||
bt edx,28
|
||||
jnc NEAR L$002generic
|
||||
and edx,4026531839
|
||||
cmp esi,0
|
||||
je NEAR L$002generic
|
||||
or edx,268435456
|
||||
shr ebx,16
|
||||
cmp bl,1
|
||||
ja NEAR L$002generic
|
||||
and edx,4026531839
|
||||
L$002generic:
|
||||
and ebp,2048
|
||||
and ecx,4294965247
|
||||
mov esi,edx
|
||||
or ebp,ecx
|
||||
cmp edi,7
|
||||
mov edi,DWORD [20+esp]
|
||||
jb NEAR L$005no_extended_info
|
||||
mov eax,7
|
||||
xor ecx,ecx
|
||||
cpuid
|
||||
mov DWORD [8+edi],ebx
|
||||
L$005no_extended_info:
|
||||
bt ebp,27
|
||||
jnc NEAR L$006clear_avx
|
||||
xor ecx,ecx
|
||||
db 15,1,208
|
||||
and eax,6
|
||||
cmp eax,6
|
||||
je NEAR L$007done
|
||||
cmp eax,2
|
||||
je NEAR L$006clear_avx
|
||||
L$008clear_xmm:
|
||||
and ebp,4261412861
|
||||
and esi,4278190079
|
||||
L$006clear_avx:
|
||||
and ebp,4026525695
|
||||
and DWORD [8+edi],4294967263
|
||||
L$007done:
|
||||
mov eax,esi
|
||||
mov edx,ebp
|
||||
L$000nocpuid:
|
||||
pop edi
|
||||
pop esi
|
||||
pop ebx
|
||||
pop ebp
|
||||
ret
|
||||
;extern _OPENSSL_ia32cap_P
|
||||
global _OPENSSL_rdtsc
|
||||
align 16
|
||||
_OPENSSL_rdtsc:
|
||||
L$_OPENSSL_rdtsc_begin:
|
||||
xor eax,eax
|
||||
xor edx,edx
|
||||
lea ecx,[_OPENSSL_ia32cap_P]
|
||||
bt DWORD [ecx],4
|
||||
jnc NEAR L$009notsc
|
||||
rdtsc
|
||||
L$009notsc:
|
||||
ret
|
||||
global _OPENSSL_instrument_halt
|
||||
align 16
|
||||
_OPENSSL_instrument_halt:
|
||||
L$_OPENSSL_instrument_halt_begin:
|
||||
lea ecx,[_OPENSSL_ia32cap_P]
|
||||
bt DWORD [ecx],4
|
||||
jnc NEAR L$010nohalt
|
||||
dd 2421723150
|
||||
and eax,3
|
||||
jnz NEAR L$010nohalt
|
||||
pushfd
|
||||
pop eax
|
||||
bt eax,9
|
||||
jnc NEAR L$010nohalt
|
||||
rdtsc
|
||||
push edx
|
||||
push eax
|
||||
hlt
|
||||
rdtsc
|
||||
sub eax,DWORD [esp]
|
||||
sbb edx,DWORD [4+esp]
|
||||
add esp,8
|
||||
ret
|
||||
L$010nohalt:
|
||||
xor eax,eax
|
||||
xor edx,edx
|
||||
ret
|
||||
global _OPENSSL_far_spin
|
||||
align 16
|
||||
_OPENSSL_far_spin:
|
||||
L$_OPENSSL_far_spin_begin:
|
||||
pushfd
|
||||
pop eax
|
||||
bt eax,9
|
||||
jnc NEAR L$011nospin
|
||||
mov eax,DWORD [4+esp]
|
||||
mov ecx,DWORD [8+esp]
|
||||
dd 2430111262
|
||||
xor eax,eax
|
||||
mov edx,DWORD [ecx]
|
||||
jmp NEAR L$012spin
|
||||
align 16
|
||||
L$012spin:
|
||||
inc eax
|
||||
cmp edx,DWORD [ecx]
|
||||
je NEAR L$012spin
|
||||
dd 529567888
|
||||
ret
|
||||
L$011nospin:
|
||||
xor eax,eax
|
||||
xor edx,edx
|
||||
ret
|
||||
global _OPENSSL_wipe_cpu
|
||||
align 16
|
||||
_OPENSSL_wipe_cpu:
|
||||
L$_OPENSSL_wipe_cpu_begin:
|
||||
xor eax,eax
|
||||
xor edx,edx
|
||||
lea ecx,[_OPENSSL_ia32cap_P]
|
||||
mov ecx,DWORD [ecx]
|
||||
bt DWORD [ecx],1
|
||||
jnc NEAR L$013no_x87
|
||||
dd 4007259865,4007259865,4007259865,4007259865,2430851995
|
||||
L$013no_x87:
|
||||
lea eax,[4+esp]
|
||||
ret
|
||||
global _OPENSSL_atomic_add
|
||||
align 16
|
||||
_OPENSSL_atomic_add:
|
||||
L$_OPENSSL_atomic_add_begin:
|
||||
mov edx,DWORD [4+esp]
|
||||
mov ecx,DWORD [8+esp]
|
||||
push ebx
|
||||
nop
|
||||
mov eax,DWORD [edx]
|
||||
L$014spin:
|
||||
lea ebx,[ecx*1+eax]
|
||||
nop
|
||||
dd 447811568
|
||||
jne NEAR L$014spin
|
||||
mov eax,ebx
|
||||
pop ebx
|
||||
ret
|
||||
global _OPENSSL_cleanse
|
||||
align 16
|
||||
_OPENSSL_cleanse:
|
||||
L$_OPENSSL_cleanse_begin:
|
||||
mov edx,DWORD [4+esp]
|
||||
mov ecx,DWORD [8+esp]
|
||||
xor eax,eax
|
||||
cmp ecx,7
|
||||
jae NEAR L$015lot
|
||||
cmp ecx,0
|
||||
je NEAR L$016ret
|
||||
L$017little:
|
||||
mov BYTE [edx],al
|
||||
sub ecx,1
|
||||
lea edx,[1+edx]
|
||||
jnz NEAR L$017little
|
||||
L$016ret:
|
||||
ret
|
||||
align 16
|
||||
L$015lot:
|
||||
test edx,3
|
||||
jz NEAR L$018aligned
|
||||
mov BYTE [edx],al
|
||||
lea ecx,[ecx-1]
|
||||
lea edx,[1+edx]
|
||||
jmp NEAR L$015lot
|
||||
L$018aligned:
|
||||
mov DWORD [edx],eax
|
||||
lea ecx,[ecx-4]
|
||||
test ecx,-4
|
||||
lea edx,[4+edx]
|
||||
jnz NEAR L$018aligned
|
||||
cmp ecx,0
|
||||
jne NEAR L$017little
|
||||
ret
|
||||
global _CRYPTO_memcmp
|
||||
align 16
|
||||
_CRYPTO_memcmp:
|
||||
L$_CRYPTO_memcmp_begin:
|
||||
push esi
|
||||
push edi
|
||||
mov esi,DWORD [12+esp]
|
||||
mov edi,DWORD [16+esp]
|
||||
mov ecx,DWORD [20+esp]
|
||||
xor eax,eax
|
||||
xor edx,edx
|
||||
cmp ecx,0
|
||||
je NEAR L$019no_data
|
||||
L$020loop:
|
||||
mov dl,BYTE [esi]
|
||||
lea esi,[1+esi]
|
||||
xor dl,BYTE [edi]
|
||||
lea edi,[1+edi]
|
||||
or al,dl
|
||||
dec ecx
|
||||
jnz NEAR L$020loop
|
||||
neg eax
|
||||
shr eax,31
|
||||
L$019no_data:
|
||||
pop edi
|
||||
pop esi
|
||||
ret
|
||||
global _OPENSSL_instrument_bus
|
||||
align 16
|
||||
_OPENSSL_instrument_bus:
|
||||
L$_OPENSSL_instrument_bus_begin:
|
||||
push ebp
|
||||
push ebx
|
||||
push esi
|
||||
push edi
|
||||
mov eax,0
|
||||
pop edi
|
||||
pop esi
|
||||
pop ebx
|
||||
pop ebp
|
||||
ret
|
||||
global _OPENSSL_instrument_bus2
|
||||
align 16
|
||||
_OPENSSL_instrument_bus2:
|
||||
L$_OPENSSL_instrument_bus2_begin:
|
||||
push ebp
|
||||
push ebx
|
||||
push esi
|
||||
push edi
|
||||
mov eax,0
|
||||
pop edi
|
||||
pop esi
|
||||
pop ebx
|
||||
pop ebp
|
||||
ret
|
||||
global _OPENSSL_ia32_rdrand_bytes
|
||||
align 16
|
||||
_OPENSSL_ia32_rdrand_bytes:
|
||||
L$_OPENSSL_ia32_rdrand_bytes_begin:
|
||||
push edi
|
||||
push ebx
|
||||
xor eax,eax
|
||||
mov edi,DWORD [12+esp]
|
||||
mov ebx,DWORD [16+esp]
|
||||
cmp ebx,0
|
||||
je NEAR L$021done
|
||||
mov ecx,8
|
||||
L$022loop:
|
||||
db 15,199,242
|
||||
jc NEAR L$023break
|
||||
loop L$022loop
|
||||
jmp NEAR L$021done
|
||||
align 16
|
||||
L$023break:
|
||||
cmp ebx,4
|
||||
jb NEAR L$024tail
|
||||
mov DWORD [edi],edx
|
||||
lea edi,[4+edi]
|
||||
add eax,4
|
||||
sub ebx,4
|
||||
jz NEAR L$021done
|
||||
mov ecx,8
|
||||
jmp NEAR L$022loop
|
||||
align 16
|
||||
L$024tail:
|
||||
mov BYTE [edi],dl
|
||||
lea edi,[1+edi]
|
||||
inc eax
|
||||
shr edx,8
|
||||
dec ebx
|
||||
jnz NEAR L$024tail
|
||||
L$021done:
|
||||
xor edx,edx
|
||||
pop ebx
|
||||
pop edi
|
||||
ret
|
||||
global _OPENSSL_ia32_rdseed_bytes
|
||||
align 16
|
||||
_OPENSSL_ia32_rdseed_bytes:
|
||||
L$_OPENSSL_ia32_rdseed_bytes_begin:
|
||||
push edi
|
||||
push ebx
|
||||
xor eax,eax
|
||||
mov edi,DWORD [12+esp]
|
||||
mov ebx,DWORD [16+esp]
|
||||
cmp ebx,0
|
||||
je NEAR L$025done
|
||||
mov ecx,8
|
||||
L$026loop:
|
||||
db 15,199,250
|
||||
jc NEAR L$027break
|
||||
loop L$026loop
|
||||
jmp NEAR L$025done
|
||||
align 16
|
||||
L$027break:
|
||||
cmp ebx,4
|
||||
jb NEAR L$028tail
|
||||
mov DWORD [edi],edx
|
||||
lea edi,[4+edi]
|
||||
add eax,4
|
||||
sub ebx,4
|
||||
jz NEAR L$025done
|
||||
mov ecx,8
|
||||
jmp NEAR L$026loop
|
||||
align 16
|
||||
L$028tail:
|
||||
mov BYTE [edi],dl
|
||||
lea edi,[1+edi]
|
||||
inc eax
|
||||
shr edx,8
|
||||
dec ebx
|
||||
jnz NEAR L$028tail
|
||||
L$025done:
|
||||
xor edx,edx
|
||||
pop ebx
|
||||
pop edi
|
||||
ret
|
||||
segment .bss
|
||||
common _OPENSSL_ia32cap_P 16
|
||||
segment .CRT$XCU data align=4
|
||||
extern _OPENSSL_cpuid_setup
|
||||
dd _OPENSSL_cpuid_setup
|
Reference in New Issue
Block a user