freebsd-dev/sys/crypto/openssl/powerpc64le/ppccpuid.S
Piotr Kubaj 3a60869237 Add assembly optimized code for OpenSSL on powerpc, powerpc64 and powerpc64le
Summary:
1. 34ab13b7d8
needs to be merged for ELFv2 support on big-endian.
2. crypto/openssl/crypto/ppccap.c needs to be patched.
Same reason as in https://github.com/openssl/openssl/pull/17082.

Approved by:	jkim, jhibbits
MFC after:	1 month
Differential Revision: https://reviews.freebsd.org/D33076
2021-11-23 23:26:53 +01:00

389 lines
5.7 KiB
ArmAsm

/* $FreeBSD$ */
/* Do not modify. This file is auto-generated from ppccpuid.pl. */
.machine "any"
.abiversion 2
.text
.globl OPENSSL_fpu_probe
.type OPENSSL_fpu_probe,@function
.align 4
OPENSSL_fpu_probe:
.localentry OPENSSL_fpu_probe,0
fmr 0,0
blr
.long 0
.byte 0,12,0x14,0,0,0,0,0
.size OPENSSL_fpu_probe,.-OPENSSL_fpu_probe
.globl OPENSSL_ppc64_probe
.type OPENSSL_ppc64_probe,@function
.align 4
OPENSSL_ppc64_probe:
.localentry OPENSSL_ppc64_probe,0
fcfid 1,1
rldicl 0,0,32,32
blr
.long 0
.byte 0,12,0x14,0,0,0,0,0
.size OPENSSL_ppc64_probe,.-OPENSSL_ppc64_probe
.globl OPENSSL_altivec_probe
.type OPENSSL_altivec_probe,@function
.align 4
OPENSSL_altivec_probe:
.localentry OPENSSL_altivec_probe,0
.long 0x10000484
blr
.long 0
.byte 0,12,0x14,0,0,0,0,0
.size OPENSSL_altivec_probe,.-OPENSSL_altivec_probe
.globl OPENSSL_crypto207_probe
.type OPENSSL_crypto207_probe,@function
.align 4
OPENSSL_crypto207_probe:
.localentry OPENSSL_crypto207_probe,0
.long 0x7C000E99
.long 0x10000508
blr
.long 0
.byte 0,12,0x14,0,0,0,0,0
.size OPENSSL_crypto207_probe,.-OPENSSL_crypto207_probe
.globl OPENSSL_madd300_probe
.type OPENSSL_madd300_probe,@function
.align 4
OPENSSL_madd300_probe:
.localentry OPENSSL_madd300_probe,0
xor 0,0,0
.long 0x10600033
.long 0x10600031
blr
.long 0
.byte 0,12,0x14,0,0,0,0,0
.globl OPENSSL_wipe_cpu
.type OPENSSL_wipe_cpu,@function
.align 4
OPENSSL_wipe_cpu:
.localentry OPENSSL_wipe_cpu,0
xor 0,0,0
fmr 0,31
fmr 1,31
fmr 2,31
mr 3,1
fmr 3,31
xor 4,4,4
fmr 4,31
xor 5,5,5
fmr 5,31
xor 6,6,6
fmr 6,31
xor 7,7,7
fmr 7,31
xor 8,8,8
fmr 8,31
xor 9,9,9
fmr 9,31
xor 10,10,10
fmr 10,31
xor 11,11,11
fmr 11,31
xor 12,12,12
fmr 12,31
fmr 13,31
blr
.long 0
.byte 0,12,0x14,0,0,0,0,0
.size OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu
.globl OPENSSL_atomic_add
.type OPENSSL_atomic_add,@function
.align 4
OPENSSL_atomic_add:
.localentry OPENSSL_atomic_add,0
.Ladd: lwarx 5,0,3
add 0,4,5
stwcx. 0,0,3
bne- .Ladd
extsw 3,0
blr
.long 0
.byte 0,12,0x14,0,0,0,2,0
.long 0
.size OPENSSL_atomic_add,.-OPENSSL_atomic_add
.globl OPENSSL_rdtsc_mftb
.type OPENSSL_rdtsc_mftb,@function
.align 4
OPENSSL_rdtsc_mftb:
.localentry OPENSSL_rdtsc_mftb,0
mftb 3
blr
.long 0
.byte 0,12,0x14,0,0,0,0,0
.size OPENSSL_rdtsc_mftb,.-OPENSSL_rdtsc_mftb
.globl OPENSSL_rdtsc_mfspr268
.type OPENSSL_rdtsc_mfspr268,@function
.align 4
OPENSSL_rdtsc_mfspr268:
.localentry OPENSSL_rdtsc_mfspr268,0
mfspr 3,268
blr
.long 0
.byte 0,12,0x14,0,0,0,0,0
.size OPENSSL_rdtsc_mfspr268,.-OPENSSL_rdtsc_mfspr268
.globl OPENSSL_cleanse
.type OPENSSL_cleanse,@function
.align 4
OPENSSL_cleanse:
.localentry OPENSSL_cleanse,0
cmpldi 4,7
li 0,0
bge .Lot
cmpldi 4,0
.long 0x4DC20020
.Little: mtctr 4
stb 0,0(3)
addi 3,3,1
bdnz $-8
blr
.Lot: andi. 5,3,3
beq .Laligned
stb 0,0(3)
subi 4,4,1
addi 3,3,1
b .Lot
.Laligned:
srdi 5,4,2
mtctr 5
stw 0,0(3)
addi 3,3,4
bdnz $-8
andi. 4,4,3
bne .Little
blr
.long 0
.byte 0,12,0x14,0,0,0,2,0
.long 0
.size OPENSSL_cleanse,.-OPENSSL_cleanse
.globl CRYPTO_memcmp
.type CRYPTO_memcmp,@function
.align 4
CRYPTO_memcmp:
.localentry CRYPTO_memcmp,0
cmpldi 5,0
li 0,0
beq .Lno_data
mtctr 5
.Loop_cmp:
lbz 6,0(3)
addi 3,3,1
lbz 7,0(4)
addi 4,4,1
xor 6,6,7
or 0,0,6
bdnz .Loop_cmp
.Lno_data:
li 3,0
sub 3,3,0
extrwi 3,3,1,0
blr
.long 0
.byte 0,12,0x14,0,0,0,3,0
.long 0
.size CRYPTO_memcmp,.-CRYPTO_memcmp
.globl OPENSSL_instrument_bus_mftb
.type OPENSSL_instrument_bus_mftb,@function
.align 4
OPENSSL_instrument_bus_mftb:
.localentry OPENSSL_instrument_bus_mftb,0
mtctr 4
mftb 7
li 8,0
dcbf 0,3
lwarx 6,0,3
add 6,6,8
stwcx. 6,0,3
stwx 6,0,3
.Loop: mftb 6
sub 8,6,7
mr 7,6
dcbf 0,3
lwarx 6,0,3
add 6,6,8
stwcx. 6,0,3
stwx 6,0,3
addi 3,3,4
bdnz .Loop
mr 3,4
blr
.long 0
.byte 0,12,0x14,0,0,0,2,0
.long 0
.size OPENSSL_instrument_bus_mftb,.-OPENSSL_instrument_bus_mftb
.globl OPENSSL_instrument_bus2_mftb
.type OPENSSL_instrument_bus2_mftb,@function
.align 4
OPENSSL_instrument_bus2_mftb:
.localentry OPENSSL_instrument_bus2_mftb,0
mr 0,4
slwi 4,4,2
mftb 7
li 8,0
dcbf 0,3
lwarx 6,0,3
add 6,6,8
stwcx. 6,0,3
stwx 6,0,3
mftb 6
sub 8,6,7
mr 7,6
mr 9,8
.Loop2:
dcbf 0,3
lwarx 6,0,3
add 6,6,8
stwcx. 6,0,3
stwx 6,0,3
addic. 5,5,-1
beq .Ldone2
mftb 6
sub 8,6,7
mr 7,6
cmplw 7,8,9
mr 9,8
mfcr 6
not 6,6
rlwinm 6,6,1,29,29
sub. 4,4,6
add 3,3,6
bne .Loop2
.Ldone2:
srwi 4,4,2
sub 3,0,4
blr
.long 0
.byte 0,12,0x14,0,0,0,3,0
.long 0
.size OPENSSL_instrument_bus2_mftb,.-OPENSSL_instrument_bus2_mftb
.globl OPENSSL_instrument_bus_mfspr268
.type OPENSSL_instrument_bus_mfspr268,@function
.align 4
OPENSSL_instrument_bus_mfspr268:
.localentry OPENSSL_instrument_bus_mfspr268,0
mtctr 4
mfspr 7,268
li 8,0
dcbf 0,3
lwarx 6,0,3
add 6,6,8
stwcx. 6,0,3
stwx 6,0,3
.Loop3: mfspr 6,268
sub 8,6,7
mr 7,6
dcbf 0,3
lwarx 6,0,3
add 6,6,8
stwcx. 6,0,3
stwx 6,0,3
addi 3,3,4
bdnz .Loop3
mr 3,4
blr
.long 0
.byte 0,12,0x14,0,0,0,2,0
.long 0
.size OPENSSL_instrument_bus_mfspr268,.-OPENSSL_instrument_bus_mfspr268
.globl OPENSSL_instrument_bus2_mfspr268
.type OPENSSL_instrument_bus2_mfspr268,@function
.align 4
OPENSSL_instrument_bus2_mfspr268:
.localentry OPENSSL_instrument_bus2_mfspr268,0
mr 0,4
slwi 4,4,2
mfspr 7,268
li 8,0
dcbf 0,3
lwarx 6,0,3
add 6,6,8
stwcx. 6,0,3
stwx 6,0,3
mfspr 6,268
sub 8,6,7
mr 7,6
mr 9,8
.Loop4:
dcbf 0,3
lwarx 6,0,3
add 6,6,8
stwcx. 6,0,3
stwx 6,0,3
addic. 5,5,-1
beq .Ldone4
mfspr 6,268
sub 8,6,7
mr 7,6
cmplw 7,8,9
mr 9,8
mfcr 6
not 6,6
rlwinm 6,6,1,29,29
sub. 4,4,6
add 3,3,6
bne .Loop4
.Ldone4:
srwi 4,4,2
sub 3,0,4
blr
.long 0
.byte 0,12,0x14,0,0,0,3,0
.long 0
.size OPENSSL_instrument_bus2_mfspr268,.-OPENSSL_instrument_bus2_mfspr268