Files
Kmake/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/bn/bn-ppc.s

1845 lines
17 KiB
ArmAsm
Raw Normal View History

2026-05-26 23:36:42 -07:00
.globl .bn_sqr_comba4
.globl .bn_sqr_comba8
.globl .bn_mul_comba4
.globl .bn_mul_comba8
.globl .bn_sub_words
.globl .bn_add_words
.globl .bn_div_words
.globl .bn_sqr_words
.globl .bn_mul_words
.globl .bn_mul_add_words
.machine "any"
.csect .text[PR],7
.align 4
.bn_sqr_comba4:
xor 0,0,0
ld 5,0(4)
mulld 9,5,5
mulhdu 10,5,5
std 9,0(3)
ld 6,8(4)
mulld 7,5,6
mulhdu 8,5,6
addc 7,7,7
adde 8,8,8
addze 9,0
addc 10,7,10
addze 11,8
addze 9,9
std 10,8(3)
mulld 7,6,6
mulhdu 8,6,6
addc 11,7,11
adde 9,8,9
addze 10,0
ld 6,16(4)
mulld 7,5,6
mulhdu 8,5,6
addc 7,7,7
adde 8,8,8
addze 10,10
addc 11,7,11
adde 9,8,9
addze 10,10
std 11,16(3)
ld 6,24(4)
mulld 7,5,6
mulhdu 8,5,6
addc 7,7,7
adde 8,8,8
addze 11,0
addc 9,7,9
adde 10,8,10
addze 11,11
ld 5,8(4)
ld 6,16(4)
mulld 7,5,6
mulhdu 8,5,6
addc 7,7,7
adde 8,8,8
addze 11,11
addc 9,7,9
adde 10,8,10
addze 11,11
std 9,24(3)
mulld 7,6,6
mulhdu 8,6,6
addc 10,7,10
adde 11,8,11
addze 9,0
ld 6,24(4)
mulld 7,5,6
mulhdu 8,5,6
addc 7,7,7
adde 8,8,8
addze 9,9
addc 10,7,10
adde 11,8,11
addze 9,9
std 10,32(3)
ld 5,16(4)
mulld 7,5,6
mulhdu 8,5,6
addc 7,7,7
adde 8,8,8
addze 10,0
addc 11,7,11
adde 9,8,9
addze 10,10
std 11,40(3)
mulld 7,6,6
mulhdu 8,6,6
addc 9,7,9
adde 10,8,10
std 9,48(3)
std 10,56(3)
blr
.long 0
.byte 0,12,0x14,0,0,0,2,0
.long 0
.align 4
.bn_sqr_comba8:
xor 0,0,0
ld 5,0(4)
mulld 9,5,5
mulhdu 10,5,5
std 9,0(3)
ld 6,8(4)
mulld 7,5,6
mulhdu 8,5,6
addc 10,7,10
adde 11,8,0
addze 9,0
addc 10,7,10
adde 11,8,11
addze 9,9
std 10,8(3)
mulld 7,6,6
mulhdu 8,6,6
addc 11,7,11
adde 9,8,9
addze 10,0
ld 6,16(4)
mulld 7,5,6
mulhdu 8,5,6
addc 11,7,11
adde 9,8,9
addze 10,10
addc 11,7,11
adde 9,8,9
addze 10,10
std 11,16(3)
ld 6,24(4)
mulld 7,5,6
mulhdu 8,5,6
addc 9,7,9
adde 10,8,10
addze 11,0
addc 9,7,9
adde 10,8,10
addze 11,11
ld 5,8(4)
ld 6,16(4)
mulld 7,5,6
mulhdu 8,5,6
addc 9,7,9
adde 10,8,10
addze 11,11
addc 9,7,9
adde 10,8,10
addze 11,11
std 9,24(3)
mulld 7,6,6
mulhdu 8,6,6
addc 10,7,10
adde 11,8,11
addze 9,0
ld 6,24(4)
mulld 7,5,6
mulhdu 8,5,6
addc 10,7,10
adde 11,8,11
addze 9,9
addc 10,7,10
adde 11,8,11
addze 9,9
ld 5,0(4)
ld 6,32(4)
mulld 7,5,6
mulhdu 8,5,6
addc 10,7,10
adde 11,8,11
addze 9,9
addc 10,7,10
adde 11,8,11
addze 9,9
std 10,32(3)
ld 6,40(4)
mulld 7,5,6
mulhdu 8,5,6
addc 11,7,11
adde 9,8,9
addze 10,0
addc 11,7,11
adde 9,8,9
addze 10,10
ld 5,8(4)
ld 6,32(4)
mulld 7,5,6
mulhdu 8,5,6
addc 11,7,11
adde 9,8,9
addze 10,10
addc 11,7,11
adde 9,8,9
addze 10,10
ld 5,16(4)
ld 6,24(4)
mulld 7,5,6
mulhdu 8,5,6
addc 11,7,11
adde 9,8,9
addze 10,10
addc 11,7,11
adde 9,8,9
addze 10,10
std 11,40(3)
mulld 7,6,6
mulhdu 8,6,6
addc 9,7,9
adde 10,8,10
addze 11,0
ld 6,32(4)
mulld 7,5,6
mulhdu 8,5,6
addc 9,7,9
adde 10,8,10
addze 11,11
addc 9,7,9
adde 10,8,10
addze 11,11
ld 5,8(4)
ld 6,40(4)
mulld 7,5,6
mulhdu 8,5,6
addc 9,7,9
adde 10,8,10
addze 11,11
addc 9,7,9
adde 10,8,10
addze 11,11
ld 5,0(4)
ld 6,48(4)
mulld 7,5,6
mulhdu 8,5,6
addc 9,7,9
adde 10,8,10
addze 11,11
addc 9,7,9
adde 10,8,10
addze 11,11
std 9,48(3)
ld 6,56(4)
mulld 7,5,6
mulhdu 8,5,6
addc 10,7,10
adde 11,8,11
addze 9,0
addc 10,7,10
adde 11,8,11
addze 9,9
ld 5,8(4)
ld 6,48(4)
mulld 7,5,6
mulhdu 8,5,6
addc 10,7,10
adde 11,8,11
addze 9,9
addc 10,7,10
adde 11,8,11
addze 9,9
ld 5,16(4)
ld 6,40(4)
mulld 7,5,6
mulhdu 8,5,6
addc 10,7,10
adde 11,8,11
addze 9,9
addc 10,7,10
adde 11,8,11
addze 9,9
ld 5,24(4)
ld 6,32(4)
mulld 7,5,6
mulhdu 8,5,6
addc 10,7,10
adde 11,8,11
addze 9,9
addc 10,7,10
adde 11,8,11
addze 9,9
std 10,56(3)
mulld 7,6,6
mulhdu 8,6,6
addc 11,7,11
adde 9,8,9
addze 10,0
ld 6,40(4)
mulld 7,5,6
mulhdu 8,5,6
addc 11,7,11
adde 9,8,9
addze 10,10
addc 11,7,11
adde 9,8,9
addze 10,10
ld 5,16(4)
ld 6,48(4)
mulld 7,5,6
mulhdu 8,5,6
addc 11,7,11
adde 9,8,9
addze 10,10
addc 11,7,11
adde 9,8,9
addze 10,10
ld 5,8(4)
ld 6,56(4)
mulld 7,5,6
mulhdu 8,5,6
addc 11,7,11
adde 9,8,9
addze 10,10
addc 11,7,11
adde 9,8,9
addze 10,10
std 11,64(3)
ld 5,16(4)
mulld 7,5,6
mulhdu 8,5,6
addc 9,7,9
adde 10,8,10
addze 11,0
addc 9,7,9
adde 10,8,10
addze 11,11
ld 5,24(4)
ld 6,48(4)
mulld 7,5,6
mulhdu 8,5,6
addc 9,7,9
adde 10,8,10
addze 11,11
addc 9,7,9
adde 10,8,10
addze 11,11
ld 5,32(4)
ld 6,40(4)
mulld 7,5,6
mulhdu 8,5,6
addc 9,7,9
adde 10,8,10
addze 11,11
addc 9,7,9
adde 10,8,10
addze 11,11
std 9,72(3)
mulld 7,6,6
mulhdu 8,6,6
addc 10,7,10
adde 11,8,11
addze 9,0
ld 6,48(4)
mulld 7,5,6
mulhdu 8,5,6
addc 10,7,10
adde 11,8,11
addze 9,9
addc 10,7,10
adde 11,8,11
addze 9,9
ld 5,24(4)
ld 6,56(4)
mulld 7,5,6
mulhdu 8,5,6
addc 10,7,10
adde 11,8,11
addze 9,9
addc 10,7,10
adde 11,8,11
addze 9,9
std 10,80(3)
ld 5,32(4)
mulld 7,5,6
mulhdu 8,5,6
addc 11,7,11
adde 9,8,9
addze 10,0
addc 11,7,11
adde 9,8,9
addze 10,10
ld 5,40(4)
ld 6,48(4)
mulld 7,5,6
mulhdu 8,5,6
addc 11,7,11
adde 9,8,9
addze 10,10
addc 11,7,11
adde 9,8,9
addze 10,10
std 11,88(3)
mulld 7,6,6
mulhdu 8,6,6
addc 9,7,9
adde 10,8,10
addze 11,0
ld 6,56(4)
mulld 7,5,6
mulhdu 8,5,6
addc 9,7,9
adde 10,8,10
addze 11,11
addc 9,7,9
adde 10,8,10
addze 11,11
std 9,96(3)
ld 5,48(4)
mulld 7,5,6
mulhdu 8,5,6
addc 10,7,10
adde 11,8,11
addze 9,0
addc 10,7,10
adde 11,8,11
addze 9,9
std 10,104(3)
mulld 7,6,6
mulhdu 8,6,6
addc 11,7,11
adde 9,8,9
std 11,112(3)
std 9, 120(3)
blr
.long 0
.byte 0,12,0x14,0,0,0,2,0
.long 0
.align 4
.bn_mul_comba4:
xor 0,0,0
ld 6,0(4)
ld 7,0(5)
mulld 10,6,7
mulhdu 11,6,7
std 10,0(3)
ld 7,8(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,8,11
adde 12,9,0
addze 10,0
ld 6, 8(4)
ld 7, 0(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,8,11
adde 12,9,12
addze 10,10
std 11,8(3)
ld 6,16(4)
mulld 8,6,7
mulhdu 9,6,7
addc 12,8,12
adde 10,9,10
addze 11,0
ld 6,8(4)
ld 7,8(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,8,12
adde 10,9,10
addze 11,11
ld 6,0(4)
ld 7,16(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,8,12
adde 10,9,10
addze 11,11
std 12,16(3)
ld 7,24(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,8,10
adde 11,9,11
addze 12,0
ld 6,8(4)
ld 7,16(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,8,10
adde 11,9,11
addze 12,12
ld 6,16(4)
ld 7,8(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,8,10
adde 11,9,11
addze 12,12
ld 6,24(4)
ld 7,0(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,8,10
adde 11,9,11
addze 12,12
std 10,24(3)
ld 7,8(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,8,11
adde 12,9,12
addze 10,0
ld 6,16(4)
ld 7,16(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,8,11
adde 12,9,12
addze 10,10
ld 6,8(4)
ld 7,24(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,8,11
adde 12,9,12
addze 10,10
std 11,32(3)
ld 6,16(4)
mulld 8,6,7
mulhdu 9,6,7
addc 12,8,12
adde 10,9,10
addze 11,0
ld 6,24(4)
ld 7,16(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,8,12
adde 10,9,10
addze 11,11
std 12,40(3)
ld 7,24(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,8,10
adde 11,9,11
std 10,48(3)
std 11,56(3)
blr
.long 0
.byte 0,12,0x14,0,0,0,3,0
.long 0
.align 4
.bn_mul_comba8:
xor 0,0,0
ld 6,0(4)
ld 7,0(5)
mulld 10,6,7
mulhdu 11,6,7
std 10,0(3)
ld 7,8(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
addze 12,9
addze 10,0
ld 6,8(4)
ld 7,0(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,10
std 11,8(3)
ld 6,16(4)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
addze 11,0
ld 6,8(4)
ld 7,8(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
addze 11,11
ld 6,0(4)
ld 7,16(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
addze 11,11
std 12,16(3)
ld 7,24(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,10,8
adde 11,11,9
addze 12,0
ld 6,8(4)
ld 7,16(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,10,8
adde 11,11,9
addze 12,12
ld 6,16(4)
ld 7,8(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,10,8
adde 11,11,9
addze 12,12
ld 6,24(4)
ld 7,0(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,10,8
adde 11,11,9
addze 12,12
std 10,24(3)
ld 6,32(4)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,0
ld 6,24(4)
ld 7,8(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,10
ld 6,16(4)
ld 7,16(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,10
ld 6,8(4)
ld 7,24(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,10
ld 6,0(4)
ld 7,32(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,10
std 11,32(3)
ld 7,40(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
addze 11,0
ld 6,8(4)
ld 7,32(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
addze 11,11
ld 6,16(4)
ld 7,24(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
addze 11,11
ld 6,24(4)
ld 7,16(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
addze 11,11
ld 6,32(4)
ld 7,8(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
addze 11,11
ld 6,40(4)
ld 7,0(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
addze 11,11
std 12,40(3)
ld 6,48(4)
mulld 8,6,7
mulhdu 9,6,7
addc 10,10,8
adde 11,11,9
addze 12,0
ld 6,40(4)
ld 7,8(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,10,8
adde 11,11,9
addze 12,12
ld 6,32(4)
ld 7,16(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,10,8
adde 11,11,9
addze 12,12
ld 6,24(4)
ld 7,24(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,10,8
adde 11,11,9
addze 12,12
ld 6,16(4)
ld 7,32(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,10,8
adde 11,11,9
addze 12,12
ld 6,8(4)
ld 7,40(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,10,8
adde 11,11,9
addze 12,12
ld 6,0(4)
ld 7,48(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,10,8
adde 11,11,9
addze 12,12
std 10,48(3)
ld 7,56(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,0
ld 6,8(4)
ld 7,48(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,10
ld 6,16(4)
ld 7,40(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,10
ld 6,24(4)
ld 7,32(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,10
ld 6,32(4)
ld 7,24(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,10
ld 6,40(4)
ld 7,16(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,10
ld 6,48(4)
ld 7,8(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,10
ld 6,56(4)
ld 7,0(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,10
std 11,56(3)
ld 7,8(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
addze 11,0
ld 6,48(4)
ld 7,16(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
addze 11,11
ld 6,40(4)
ld 7,24(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
addze 11,11
ld 6,32(4)
ld 7,32(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
addze 11,11
ld 6,24(4)
ld 7,40(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
addze 11,11
ld 6,16(4)
ld 7,48(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
addze 11,11
ld 6,8(4)
ld 7,56(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
addze 11,11
std 12,64(3)
ld 6,16(4)
mulld 8,6,7
mulhdu 9,6,7
addc 10,10,8
adde 11,11,9
addze 12,0
ld 6,24(4)
ld 7,48(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,10,8
adde 11,11,9
addze 12,12
ld 6,32(4)
ld 7,40(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,10,8
adde 11,11,9
addze 12,12
ld 6,40(4)
ld 7,32(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,10,8
adde 11,11,9
addze 12,12
ld 6,48(4)
ld 7,24(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,10,8
adde 11,11,9
addze 12,12
ld 6,56(4)
ld 7,16(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,10,8
adde 11,11,9
addze 12,12
std 10,72(3)
ld 7,24(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,0
ld 6,48(4)
ld 7,32(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,10
ld 6,40(4)
ld 7,40(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,10
ld 6,32(4)
ld 7,48(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,10
ld 6,24(4)
ld 7,56(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,10
std 11,80(3)
ld 6,32(4)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
addze 11,0
ld 6,40(4)
ld 7,48(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
addze 11,11
ld 6,48(4)
ld 7,40(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
addze 11,11
ld 6,56(4)
ld 7,32(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
addze 11,11
std 12,88(3)
ld 7,40(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,10,8
adde 11,11,9
addze 12,0
ld 6,48(4)
ld 7,48(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,10,8
adde 11,11,9
addze 12,12
ld 6,40(4)
ld 7,56(5)
mulld 8,6,7
mulhdu 9,6,7
addc 10,10,8
adde 11,11,9
addze 12,12
std 10,96(3)
ld 6,48(4)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,0
ld 6,56(4)
ld 7,48(5)
mulld 8,6,7
mulhdu 9,6,7
addc 11,11,8
adde 12,12,9
addze 10,10
std 11,104(3)
ld 7,56(5)
mulld 8,6,7
mulhdu 9,6,7
addc 12,12,8
adde 10,10,9
std 12,112(3)
std 10,120(3)
blr
.long 0
.byte 0,12,0x14,0,0,0,3,0
.long 0
.align 4
.bn_sub_words:
xor 0,0,0
subfc. 7,0,6
beq Lppcasm_sub_adios
addi 4,4,-8
addi 3,3,-8
addi 5,5,-8
mtctr 6
Lppcasm_sub_mainloop:
ldu 7,8(4)
ldu 8,8(5)
subfe 6,8,7
stdu 6,8(3)
bc 16,0,Lppcasm_sub_mainloop
Lppcasm_sub_adios:
subfze 3,0
andi. 3,3,1
blr
.long 0
.byte 0,12,0x14,0,0,0,4,0
.long 0
.align 4
.bn_add_words:
xor 0,0,0
addic. 6,6,0
beq Lppcasm_add_adios
addi 4,4,-8
addi 3,3,-8
addi 5,5,-8
mtctr 6
Lppcasm_add_mainloop:
ldu 7,8(4)
ldu 8,8(5)
adde 8,7,8
stdu 8,8(3)
bc 16,0,Lppcasm_add_mainloop
Lppcasm_add_adios:
addze 3,0
blr
.long 0
.byte 0,12,0x14,0,0,0,4,0
.long 0
.align 4
.bn_div_words:
cmpldi 0,5,0
bne Lppcasm_div1
li 3,-1
blr
Lppcasm_div1:
xor 0,0,0
li 8,64
cntlzd. 7,5
beq Lppcasm_div2
subf 8,7,8
srd. 9,3,8
td 16,9,0
Lppcasm_div2:
cmpld 0,3,5
blt Lppcasm_div3
subf 3,5,3
Lppcasm_div3:
cmpi 0,0,7,0
beq Lppcasm_div4
sld 3,3,7
srd 8,4,8
sld 5,5,7
or 3,3,8
sld 4,4,7
Lppcasm_div4:
srdi 9,5,32
li 6,2
mtctr 6
Lppcasm_divouterloop:
srdi 8,3,32
srdi 11,4,32
cmpld 0,8,9
bne Lppcasm_div5
li 8,-1
clrldi 8,8,32
b Lppcasm_div6
Lppcasm_div5:
divdu 8,3,9
Lppcasm_div6:
mulld 12,9,8
clrldi 10,5,32
mulld 6,8,10
Lppcasm_divinnerloop:
subf 10,12,3
srdi 7,10,32
addic. 7,7,0
sldi 7,10,32
or 7,7,11
cmpld 1,6,7
bne Lppcasm_divinnerexit
ble 1,Lppcasm_divinnerexit
addi 8,8,-1
subf 12,9,12
clrldi 10,5,32
subf 6,10,6
b Lppcasm_divinnerloop
Lppcasm_divinnerexit:
srdi 10,6,32
sldi 11,6,32
cmpld 1,4,11
add 12,12,10
bge 1,Lppcasm_div7
addi 12,12,1
Lppcasm_div7:
subf 11,11,4
cmpld 1,3,12
bge 1,Lppcasm_div8
addi 8,8,-1
add 3,5,3
Lppcasm_div8:
subf 12,12,3
sldi 4,11,32
insrdi 11,12,32,32
rotldi 3,11,32
bdz Lppcasm_div9
sldi 0,8,32
b Lppcasm_divouterloop
Lppcasm_div9:
or 3,8,0
blr
.long 0
.byte 0,12,0x14,0,0,0,3,0
.long 0
.align 4
.bn_sqr_words:
addic. 5,5,0
beq Lppcasm_sqr_adios
addi 4,4,-8
addi 3,3,-8
mtctr 5
Lppcasm_sqr_mainloop:
ldu 6,8(4)
mulld 7,6,6
mulhdu 8,6,6
stdu 7,8(3)
stdu 8,8(3)
bc 16,0,Lppcasm_sqr_mainloop
Lppcasm_sqr_adios:
blr
.long 0
.byte 0,12,0x14,0,0,0,3,0
.long 0
.align 4
.bn_mul_words:
xor 0,0,0
xor 12,12,12
rlwinm. 7,5,30,2,31
beq Lppcasm_mw_REM
mtctr 7
Lppcasm_mw_LOOP:
ld 8,0(4)
mulld 9,6,8
mulhdu 10,6,8
addc 9,9,12
std 9,0(3)
ld 8,8(4)
mulld 11,6,8
mulhdu 12,6,8
adde 11,11,10
std 11,8(3)
ld 8,16(4)
mulld 9,6,8
mulhdu 10,6,8
adde 9,9,12
std 9,16(3)
ld 8,24(4)
mulld 11,6,8
mulhdu 12,6,8
adde 11,11,10
addze 12,12
std 11,24(3)
addi 3,3,32
addi 4,4,32
bc 16,0,Lppcasm_mw_LOOP
Lppcasm_mw_REM:
andi. 5,5,0x3
beq Lppcasm_mw_OVER
ld 8,0(4)
mulld 9,6,8
mulhdu 10,6,8
addc 9,9,12
addze 10,10
std 9,0(3)
addi 12,10,0
addi 5,5,-1
cmpli 0,0,5,0
beq Lppcasm_mw_OVER
ld 8,8(4)
mulld 9,6,8
mulhdu 10,6,8
addc 9,9,12
addze 10,10
std 9,8(3)
addi 12,10,0
addi 5,5,-1
cmpli 0,0,5,0
beq Lppcasm_mw_OVER
ld 8,16(4)
mulld 9,6,8
mulhdu 10,6,8
addc 9,9,12
addze 10,10
std 9,16(3)
addi 12,10,0
Lppcasm_mw_OVER:
addi 3,12,0
blr
.long 0
.byte 0,12,0x14,0,0,0,4,0
.long 0
.align 4
.bn_mul_add_words:
xor 0,0,0
xor 12,12,12
rlwinm. 7,5,30,2,31
beq Lppcasm_maw_leftover
mtctr 7
Lppcasm_maw_mainloop:
ld 8,0(4)
ld 11,0(3)
mulld 9,6,8
mulhdu 10,6,8
addc 9,9,12
addze 10,10
addc 9,9,11
std 9,0(3)
ld 8,8(4)
ld 9,8(3)
mulld 11,6,8
mulhdu 12,6,8
adde 11,11,10
addze 12,12
addc 11,11,9
std 11,8(3)
ld 8,16(4)
mulld 9,6,8
ld 11,16(3)
mulhdu 10,6,8
adde 9,9,12
addze 10,10
addc 9,9,11
std 9,16(3)
ld 8,24(4)
mulld 11,6,8
ld 9,24(3)
mulhdu 12,6,8
adde 11,11,10
addze 12,12
addc 11,11,9
addze 12,12
std 11,24(3)
addi 3,3,32
addi 4,4,32
bc 16,0,Lppcasm_maw_mainloop
Lppcasm_maw_leftover:
andi. 5,5,0x3
beq Lppcasm_maw_adios
addi 3,3,-8
addi 4,4,-8
mtctr 5
ldu 8,8(4)
mulld 9,6,8
mulhdu 10,6,8
ldu 11,8(3)
addc 9,9,11
addze 10,10
addc 9,9,12
addze 12,10
std 9,0(3)
bdz Lppcasm_maw_adios
ldu 8,8(4)
mulld 9,6,8
mulhdu 10,6,8
ldu 11,8(3)
addc 9,9,11
addze 10,10
addc 9,9,12
addze 12,10
std 9,0(3)
bdz Lppcasm_maw_adios
ldu 8,8(4)
mulld 9,6,8
mulhdu 10,6,8
ldu 11,8(3)
addc 9,9,11
addze 10,10
addc 9,9,12
addze 12,10
std 9,0(3)
Lppcasm_maw_adios:
addi 3,12,0
blr
.long 0
.byte 0,12,0x14,0,0,0,4,0
.long 0
.align 4