freebsd-dev/sys/crypto/openssl/powerpc64le/poly1305-ppc.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

164 lines
2.2 KiB
ArmAsm

/* $FreeBSD$ */
/* Do not modify. This file is auto-generated from poly1305-ppc.pl. */
.machine "any"
.abiversion 2
.text
.globl poly1305_init_int
.type poly1305_init_int,@function
.align 4
poly1305_init_int:
.localentry poly1305_init_int,0
xor 0,0,0
std 0,0(3)
std 0,8(3)
std 0,16(3)
cmpld 4,0
beq- .Lno_key
ld 10,0(4)
ld 11,8(4)
lis 8,0xfff
ori 8,8,0xfffc
insrdi 8,8,32,0
ori 7,8,3
and 10,10,7
and 11,11,8
std 10,32(3)
std 11,40(3)
.Lno_key:
xor 3,3,3
blr
.long 0
.byte 0,12,0x14,0,0,0,2,0
.size poly1305_init_int,.-poly1305_init_int
.globl poly1305_blocks
.type poly1305_blocks,@function
.align 4
poly1305_blocks:
.localentry poly1305_blocks,0
srdi. 5,5,4
beq- .Labort
stdu 1,-192(1)
mflr 0
std 27,152(1)
std 28,160(1)
std 29,168(1)
std 30,176(1)
std 31,184(1)
std 0,208(1)
ld 27,32(3)
ld 28,40(3)
ld 7,0(3)
ld 8,8(3)
ld 9,16(3)
srdi 29,28,2
mtctr 5
add 29,29,28
li 0,3
b .Loop
.align 4
.Loop:
ld 30,0(4)
ld 31,8(4)
addi 4,4,16
addc 7,7,30
adde 8,8,31
mulld 10,7,27
mulhdu 11,7,27
adde 9,9,6
mulld 30,8,29
mulhdu 31,8,29
addc 10,10,30
adde 11,11,31
mulld 30,7,28
mulhdu 12,7,28
addc 11,11,30
addze 12,12
mulld 30,8,27
mulhdu 31,8,27
addc 11,11,30
adde 12,12,31
mulld 30,9,29
mulld 31,9,27
addc 11,11,30
adde 12,12,31
andc 30,12,0
and 9,12,0
srdi 31,30,2
add 30,30,31
addc 7,10,30
addze 8,11
addze 9,9
bdnz .Loop
std 7,0(3)
std 8,8(3)
std 9,16(3)
ld 27,152(1)
ld 28,160(1)
ld 29,168(1)
ld 30,176(1)
ld 31,184(1)
addi 1,1,192
.Labort:
blr
.long 0
.byte 0,12,4,1,0x80,5,4,0
.size poly1305_blocks,.-poly1305_blocks
.globl poly1305_emit
.type poly1305_emit,@function
.align 4
poly1305_emit:
.localentry poly1305_emit,0
ld 7,0(3)
ld 8,8(3)
ld 9,16(3)
ld 6,0(5)
ld 5,8(5)
addic 10,7,5
addze 11,8
addze 12,9
srdi 0,12,2
neg 0,0
andc 7,7,0
and 10,10,0
andc 8,8,0
and 11,11,0
or 7,7,10
or 8,8,11
addc 7,7,6
adde 8,8,5
std 7,0(4)
std 8,8(4)
blr
.long 0
.byte 0,12,0x14,0,0,0,3,0
.size poly1305_emit,.-poly1305_emit
.byte 80,111,108,121,49,51,48,53,32,102,111,114,32,80,80,67,44,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 2