Changeset View
Changeset View
Standalone View
Standalone View
sys/crypto/openssl/powerpc/ppc-mont.S
- This file was added.
/* $FreeBSD$ */ | |||||
/* Do not modify. This file is auto-generated from ppc-mont.pl. */ | |||||
.machine "any" | |||||
.text | |||||
.globl bn_mul_mont_int | |||||
.type bn_mul_mont_int,@function | |||||
.align 5 | |||||
bn_mul_mont_int: | |||||
mr 9,3 | |||||
li 3,0 | |||||
cmpwi 8,32 | |||||
bgelr | |||||
slwi 8,8,2 | |||||
li 12,-4096 | |||||
addi 3,8,256 | |||||
subf 3,3,1 | |||||
and 3,3,12 | |||||
subf 3,1,3 | |||||
mr 12,1 | |||||
srwi 8,8,2 | |||||
stwux 1,1,3 | |||||
stw 20,-48(12) | |||||
stw 21,-44(12) | |||||
stw 22,-40(12) | |||||
stw 23,-36(12) | |||||
stw 24,-32(12) | |||||
stw 25,-28(12) | |||||
stw 26,-24(12) | |||||
stw 27,-20(12) | |||||
stw 28,-16(12) | |||||
stw 29,-12(12) | |||||
stw 30,-8(12) | |||||
stw 31,-4(12) | |||||
lwz 7,0(7) | |||||
addi 8,8,-2 | |||||
lwz 23,0(5) | |||||
lwz 10,0(4) | |||||
addi 22,1,32 | |||||
mullw 25,10,23 | |||||
mulhwu 26,10,23 | |||||
lwz 10,4(4) | |||||
lwz 11,0(6) | |||||
mullw 24,25,7 | |||||
mullw 29,10,23 | |||||
mulhwu 30,10,23 | |||||
mullw 27,11,24 | |||||
mulhwu 28,11,24 | |||||
lwz 11,4(6) | |||||
addc 27,27,25 | |||||
addze 28,28 | |||||
mullw 31,11,24 | |||||
mulhwu 0,11,24 | |||||
mtctr 8 | |||||
li 21,8 | |||||
.align 4 | |||||
.L1st: | |||||
lwzx 10,4,21 | |||||
addc 25,29,26 | |||||
lwzx 11,6,21 | |||||
addze 26,30 | |||||
mullw 29,10,23 | |||||
addc 27,31,28 | |||||
mulhwu 30,10,23 | |||||
addze 28,0 | |||||
mullw 31,11,24 | |||||
addc 27,27,25 | |||||
mulhwu 0,11,24 | |||||
addze 28,28 | |||||
stw 27,0(22) | |||||
addi 21,21,4 | |||||
addi 22,22,4 | |||||
bdnz .L1st | |||||
addc 25,29,26 | |||||
addze 26,30 | |||||
addc 27,31,28 | |||||
addze 28,0 | |||||
addc 27,27,25 | |||||
addze 28,28 | |||||
stw 27,0(22) | |||||
li 3,0 | |||||
addc 28,28,26 | |||||
addze 3,3 | |||||
stw 28,4(22) | |||||
li 20,4 | |||||
.align 4 | |||||
.Louter: | |||||
lwzx 23,5,20 | |||||
lwz 10,0(4) | |||||
addi 22,1,32 | |||||
lwz 12,32(1) | |||||
mullw 25,10,23 | |||||
mulhwu 26,10,23 | |||||
lwz 10,4(4) | |||||
lwz 11,0(6) | |||||
addc 25,25,12 | |||||
mullw 29,10,23 | |||||
addze 26,26 | |||||
mullw 24,25,7 | |||||
mulhwu 30,10,23 | |||||
mullw 27,11,24 | |||||
mulhwu 28,11,24 | |||||
lwz 11,4(6) | |||||
addc 27,27,25 | |||||
mullw 31,11,24 | |||||
addze 28,28 | |||||
mulhwu 0,11,24 | |||||
mtctr 8 | |||||
li 21,8 | |||||
.align 4 | |||||
.Linner: | |||||
lwzx 10,4,21 | |||||
addc 25,29,26 | |||||
lwz 12,4(22) | |||||
addze 26,30 | |||||
lwzx 11,6,21 | |||||
addc 27,31,28 | |||||
mullw 29,10,23 | |||||
addze 28,0 | |||||
mulhwu 30,10,23 | |||||
addc 25,25,12 | |||||
mullw 31,11,24 | |||||
addze 26,26 | |||||
mulhwu 0,11,24 | |||||
addc 27,27,25 | |||||
addi 21,21,4 | |||||
addze 28,28 | |||||
stw 27,0(22) | |||||
addi 22,22,4 | |||||
bdnz .Linner | |||||
lwz 12,4(22) | |||||
addc 25,29,26 | |||||
addze 26,30 | |||||
addc 25,25,12 | |||||
addze 26,26 | |||||
addc 27,31,28 | |||||
addze 28,0 | |||||
addc 27,27,25 | |||||
addze 28,28 | |||||
stw 27,0(22) | |||||
addic 3,3,-1 | |||||
li 3,0 | |||||
adde 28,28,26 | |||||
addze 3,3 | |||||
stw 28,4(22) | |||||
slwi 12,8,2 | |||||
.long 0x7c146040 | |||||
addi 20,20,4 | |||||
ble .Louter | |||||
addi 8,8,2 | |||||
subfc 21,21,21 | |||||
addi 22,1,32 | |||||
mtctr 8 | |||||
.align 4 | |||||
.Lsub: lwzx 12,22,21 | |||||
lwzx 11,6,21 | |||||
subfe 10,11,12 | |||||
stwx 10,9,21 | |||||
addi 21,21,4 | |||||
bdnz .Lsub | |||||
li 21,0 | |||||
mtctr 8 | |||||
subfe 3,21,3 | |||||
.align 4 | |||||
.Lcopy: | |||||
lwzx 12,22,21 | |||||
lwzx 10,9,21 | |||||
and 12,12,3 | |||||
andc 10,10,3 | |||||
stwx 21,22,21 | |||||
or 10,10,12 | |||||
stwx 10,9,21 | |||||
addi 21,21,4 | |||||
bdnz .Lcopy | |||||
lwz 12,0(1) | |||||
li 3,1 | |||||
lwz 20,-48(12) | |||||
lwz 21,-44(12) | |||||
lwz 22,-40(12) | |||||
lwz 23,-36(12) | |||||
lwz 24,-32(12) | |||||
lwz 25,-28(12) | |||||
lwz 26,-24(12) | |||||
lwz 27,-20(12) | |||||
lwz 28,-16(12) | |||||
lwz 29,-12(12) | |||||
lwz 30,-8(12) | |||||
lwz 31,-4(12) | |||||
mr 1,12 | |||||
blr | |||||
.long 0 | |||||
.byte 0,12,4,0,0x80,12,6,0 | |||||
.long 0 | |||||
.size bn_mul_mont_int,.-bn_mul_mont_int | |||||
.globl bn_mul4x_mont_int | |||||
.type bn_mul4x_mont_int,@function | |||||
.align 5 | |||||
bn_mul4x_mont_int: | |||||
andi. 0,8,7 | |||||
bne .Lmul4x_do | |||||
.long 0x7c042840 | |||||
bne .Lmul4x_do | |||||
b .Lsqr8x_do | |||||
.Lmul4x_do: | |||||
slwi 8,8,2 | |||||
mr 9,1 | |||||
li 10,-32*4 | |||||
sub 10,10,8 | |||||
stwux 1,1,10 | |||||
stw 14,-4*18(9) | |||||
stw 15,-4*17(9) | |||||
stw 16,-4*16(9) | |||||
stw 17,-4*15(9) | |||||
stw 18,-4*14(9) | |||||
stw 19,-4*13(9) | |||||
stw 20,-4*12(9) | |||||
stw 21,-4*11(9) | |||||
stw 22,-4*10(9) | |||||
stw 23,-4*9(9) | |||||
stw 24,-4*8(9) | |||||
stw 25,-4*7(9) | |||||
stw 26,-4*6(9) | |||||
stw 27,-4*5(9) | |||||
stw 28,-4*4(9) | |||||
stw 29,-4*3(9) | |||||
stw 30,-4*2(9) | |||||
stw 31,-4*1(9) | |||||
subi 4,4,4 | |||||
subi 6,6,4 | |||||
subi 3,3,4 | |||||
lwz 7,0(7) | |||||
add 14,5,8 | |||||
add 30,4,8 | |||||
subi 14,14,4*4 | |||||
lwz 27,4*0(5) | |||||
li 22,0 | |||||
lwz 9,4*1(4) | |||||
li 23,0 | |||||
lwz 10,4*2(4) | |||||
li 24,0 | |||||
lwz 11,4*3(4) | |||||
li 25,0 | |||||
lwzu 12,4*4(4) | |||||
lwz 18,4*1(6) | |||||
lwz 19,4*2(6) | |||||
lwz 20,4*3(6) | |||||
lwzu 21,4*4(6) | |||||
stw 3,4*6(1) | |||||
stw 14,4*7(1) | |||||
li 3,0 | |||||
addic 29,1,4*7 | |||||
li 31,0 | |||||
li 0,0 | |||||
b .Loop_mul4x_1st_reduction | |||||
.align 5 | |||||
.Loop_mul4x_1st_reduction: | |||||
mullw 14,9,27 | |||||
addze 3,3 | |||||
mullw 15,10,27 | |||||
addi 31,31,4 | |||||
mullw 16,11,27 | |||||
andi. 31,31,4*4-1 | |||||
mullw 17,12,27 | |||||
addc 22,22,14 | |||||
mulhwu 14,9,27 | |||||
adde 23,23,15 | |||||
mulhwu 15,10,27 | |||||
adde 24,24,16 | |||||
mullw 28,22,7 | |||||
adde 25,25,17 | |||||
mulhwu 16,11,27 | |||||
addze 26,0 | |||||
mulhwu 17,12,27 | |||||
lwzx 27,5,31 | |||||
addc 23,23,14 | |||||
stwu 28,4(29) | |||||
adde 24,24,15 | |||||
mullw 15,19,28 | |||||
adde 25,25,16 | |||||
mullw 16,20,28 | |||||
adde 26,26,17 | |||||
mullw 17,21,28 | |||||
addic 22,22,-1 | |||||
mulhwu 14,18,28 | |||||
adde 22,23,15 | |||||
mulhwu 15,19,28 | |||||
adde 23,24,16 | |||||
mulhwu 16,20,28 | |||||
adde 24,25,17 | |||||
mulhwu 17,21,28 | |||||
adde 25,26,3 | |||||
addze 3,0 | |||||
addc 22,22,14 | |||||
adde 23,23,15 | |||||
adde 24,24,16 | |||||
adde 25,25,17 | |||||
bne .Loop_mul4x_1st_reduction | |||||
.long 0x7c1e2040 | |||||
beq .Lmul4x4_post_condition | |||||
lwz 9,4*1(4) | |||||
lwz 10,4*2(4) | |||||
lwz 11,4*3(4) | |||||
lwzu 12,4*4(4) | |||||
lwz 28,4*8(1) | |||||
lwz 18,4*1(6) | |||||
lwz 19,4*2(6) | |||||
lwz 20,4*3(6) | |||||
lwzu 21,4*4(6) | |||||
b .Loop_mul4x_1st_tail | |||||
.align 5 | |||||
.Loop_mul4x_1st_tail: | |||||
mullw 14,9,27 | |||||
addze 3,3 | |||||
mullw 15,10,27 | |||||
addi 31,31,4 | |||||
mullw 16,11,27 | |||||
andi. 31,31,4*4-1 | |||||
mullw 17,12,27 | |||||
addc 22,22,14 | |||||
mulhwu 14,9,27 | |||||
adde 23,23,15 | |||||
mulhwu 15,10,27 | |||||
adde 24,24,16 | |||||
mulhwu 16,11,27 | |||||
adde 25,25,17 | |||||
mulhwu 17,12,27 | |||||
addze 26,0 | |||||
lwzx 27,5,31 | |||||
addc 23,23,14 | |||||
mullw 14,18,28 | |||||
adde 24,24,15 | |||||
mullw 15,19,28 | |||||
adde 25,25,16 | |||||
mullw 16,20,28 | |||||
adde 26,26,17 | |||||
mullw 17,21,28 | |||||
addc 22,22,14 | |||||
mulhwu 14,18,28 | |||||
adde 23,23,15 | |||||
mulhwu 15,19,28 | |||||
adde 24,24,16 | |||||
mulhwu 16,20,28 | |||||
adde 25,25,17 | |||||
adde 26,26,3 | |||||
mulhwu 17,21,28 | |||||
addze 3,0 | |||||
addi 28,1,4*8 | |||||
lwzx 28,28,31 | |||||
stwu 22,4(29) | |||||
addc 22,23,14 | |||||
adde 23,24,15 | |||||
adde 24,25,16 | |||||
adde 25,26,17 | |||||
bne .Loop_mul4x_1st_tail | |||||
sub 15,30,8 | |||||
.long 0x7c1e2040 | |||||
beq .Lmul4x_proceed | |||||
lwz 9,4*1(4) | |||||
lwz 10,4*2(4) | |||||
lwz 11,4*3(4) | |||||
lwzu 12,4*4(4) | |||||
lwz 18,4*1(6) | |||||
lwz 19,4*2(6) | |||||
lwz 20,4*3(6) | |||||
lwzu 21,4*4(6) | |||||
b .Loop_mul4x_1st_tail | |||||
.align 5 | |||||
.Lmul4x_proceed: | |||||
lwzu 27,4*4(5) | |||||
addze 3,3 | |||||
lwz 9,4*1(15) | |||||
lwz 10,4*2(15) | |||||
lwz 11,4*3(15) | |||||
lwz 12,4*4(15) | |||||
addi 4,15,4*4 | |||||
sub 6,6,8 | |||||
stw 22,4*1(29) | |||||
stw 23,4*2(29) | |||||
stw 24,4*3(29) | |||||
stw 25,4*4(29) | |||||
stw 3,4*5(29) | |||||
lwz 22,4*12(1) | |||||
lwz 23,4*13(1) | |||||
lwz 24,4*14(1) | |||||
lwz 25,4*15(1) | |||||
lwz 18,4*1(6) | |||||
lwz 19,4*2(6) | |||||
lwz 20,4*3(6) | |||||
lwzu 21,4*4(6) | |||||
addic 29,1,4*7 | |||||
li 3,0 | |||||
b .Loop_mul4x_reduction | |||||
.align 5 | |||||
.Loop_mul4x_reduction: | |||||
mullw 14,9,27 | |||||
addze 3,3 | |||||
mullw 15,10,27 | |||||
addi 31,31,4 | |||||
mullw 16,11,27 | |||||
andi. 31,31,4*4-1 | |||||
mullw 17,12,27 | |||||
addc 22,22,14 | |||||
mulhwu 14,9,27 | |||||
adde 23,23,15 | |||||
mulhwu 15,10,27 | |||||
adde 24,24,16 | |||||
mullw 28,22,7 | |||||
adde 25,25,17 | |||||
mulhwu 16,11,27 | |||||
addze 26,0 | |||||
mulhwu 17,12,27 | |||||
lwzx 27,5,31 | |||||
addc 23,23,14 | |||||
stwu 28,4(29) | |||||
adde 24,24,15 | |||||
mullw 15,19,28 | |||||
adde 25,25,16 | |||||
mullw 16,20,28 | |||||
adde 26,26,17 | |||||
mullw 17,21,28 | |||||
addic 22,22,-1 | |||||
mulhwu 14,18,28 | |||||
adde 22,23,15 | |||||
mulhwu 15,19,28 | |||||
adde 23,24,16 | |||||
mulhwu 16,20,28 | |||||
adde 24,25,17 | |||||
mulhwu 17,21,28 | |||||
adde 25,26,3 | |||||
addze 3,0 | |||||
addc 22,22,14 | |||||
adde 23,23,15 | |||||
adde 24,24,16 | |||||
adde 25,25,17 | |||||
bne .Loop_mul4x_reduction | |||||
lwz 14,4*5(29) | |||||
addze 3,3 | |||||
lwz 15,4*6(29) | |||||
lwz 16,4*7(29) | |||||
lwz 17,4*8(29) | |||||
lwz 9,4*1(4) | |||||
lwz 10,4*2(4) | |||||
lwz 11,4*3(4) | |||||
lwzu 12,4*4(4) | |||||
addc 22,22,14 | |||||
adde 23,23,15 | |||||
adde 24,24,16 | |||||
adde 25,25,17 | |||||
lwz 28,4*8(1) | |||||
lwz 18,4*1(6) | |||||
lwz 19,4*2(6) | |||||
lwz 20,4*3(6) | |||||
lwzu 21,4*4(6) | |||||
b .Loop_mul4x_tail | |||||
.align 5 | |||||
.Loop_mul4x_tail: | |||||
mullw 14,9,27 | |||||
addze 3,3 | |||||
mullw 15,10,27 | |||||
addi 31,31,4 | |||||
mullw 16,11,27 | |||||
andi. 31,31,4*4-1 | |||||
mullw 17,12,27 | |||||
addc 22,22,14 | |||||
mulhwu 14,9,27 | |||||
adde 23,23,15 | |||||
mulhwu 15,10,27 | |||||
adde 24,24,16 | |||||
mulhwu 16,11,27 | |||||
adde 25,25,17 | |||||
mulhwu 17,12,27 | |||||
addze 26,0 | |||||
lwzx 27,5,31 | |||||
addc 23,23,14 | |||||
mullw 14,18,28 | |||||
adde 24,24,15 | |||||
mullw 15,19,28 | |||||
adde 25,25,16 | |||||
mullw 16,20,28 | |||||
adde 26,26,17 | |||||
mullw 17,21,28 | |||||
addc 22,22,14 | |||||
mulhwu 14,18,28 | |||||
adde 23,23,15 | |||||
mulhwu 15,19,28 | |||||
adde 24,24,16 | |||||
mulhwu 16,20,28 | |||||
adde 25,25,17 | |||||
mulhwu 17,21,28 | |||||
adde 26,26,3 | |||||
addi 28,1,4*8 | |||||
lwzx 28,28,31 | |||||
addze 3,0 | |||||
stwu 22,4(29) | |||||
addc 22,23,14 | |||||
adde 23,24,15 | |||||
adde 24,25,16 | |||||
adde 25,26,17 | |||||
bne .Loop_mul4x_tail | |||||
lwz 14,4*5(29) | |||||
sub 15,6,8 | |||||
addze 3,3 | |||||
.long 0x7c1e2040 | |||||
beq .Loop_mul4x_break | |||||
lwz 15,4*6(29) | |||||
lwz 16,4*7(29) | |||||
lwz 17,4*8(29) | |||||
lwz 9,4*1(4) | |||||
lwz 10,4*2(4) | |||||
lwz 11,4*3(4) | |||||
lwzu 12,4*4(4) | |||||
addc 22,22,14 | |||||
adde 23,23,15 | |||||
adde 24,24,16 | |||||
adde 25,25,17 | |||||
lwz 18,4*1(6) | |||||
lwz 19,4*2(6) | |||||
lwz 20,4*3(6) | |||||
lwzu 21,4*4(6) | |||||
b .Loop_mul4x_tail | |||||
.align 5 | |||||
.Loop_mul4x_break: | |||||
lwz 16,4*6(1) | |||||
lwz 17,4*7(1) | |||||
addc 9,22,14 | |||||
lwz 22,4*12(1) | |||||
addze 10,23 | |||||
lwz 23,4*13(1) | |||||
addze 11,24 | |||||
lwz 24,4*14(1) | |||||
addze 12,25 | |||||
lwz 25,4*15(1) | |||||
addze 3,3 | |||||
stw 9,4*1(29) | |||||
sub 4,30,8 | |||||
stw 10,4*2(29) | |||||
stw 11,4*3(29) | |||||
stw 12,4*4(29) | |||||
stw 3,4*5(29) | |||||
lwz 18,4*1(15) | |||||
lwz 19,4*2(15) | |||||
lwz 20,4*3(15) | |||||
lwz 21,4*4(15) | |||||
addi 6,15,4*4 | |||||
.long 0x7c058840 | |||||
beq .Lmul4x_post | |||||
lwzu 27,4*4(5) | |||||
lwz 9,4*1(4) | |||||
lwz 10,4*2(4) | |||||
lwz 11,4*3(4) | |||||
lwzu 12,4*4(4) | |||||
li 3,0 | |||||
addic 29,1,4*7 | |||||
b .Loop_mul4x_reduction | |||||
.align 5 | |||||
.Lmul4x_post: | |||||
srwi 31,8,4 | |||||
mr 5,16 | |||||
subi 31,31,1 | |||||
mr 30,16 | |||||
subfc 14,18,22 | |||||
addi 29,1,4*15 | |||||
subfe 15,19,23 | |||||
mtctr 31 | |||||
.Lmul4x_sub: | |||||
lwz 18,4*1(6) | |||||
lwz 22,4*1(29) | |||||
subfe 16,20,24 | |||||
lwz 19,4*2(6) | |||||
lwz 23,4*2(29) | |||||
subfe 17,21,25 | |||||
lwz 20,4*3(6) | |||||
lwz 24,4*3(29) | |||||
lwzu 21,4*4(6) | |||||
lwzu 25,4*4(29) | |||||
stw 14,4*1(5) | |||||
stw 15,4*2(5) | |||||
subfe 14,18,22 | |||||
stw 16,4*3(5) | |||||
stwu 17,4*4(5) | |||||
subfe 15,19,23 | |||||
bdnz .Lmul4x_sub | |||||
lwz 9,4*1(30) | |||||
stw 14,4*1(5) | |||||
lwz 14,4*12(1) | |||||
subfe 16,20,24 | |||||
lwz 10,4*2(30) | |||||
stw 15,4*2(5) | |||||
lwz 15,4*13(1) | |||||
subfe 17,21,25 | |||||
subfe 3,0,3 | |||||
addi 29,1,4*12 | |||||
lwz 11,4*3(30) | |||||
stw 16,4*3(5) | |||||
lwz 16,4*14(1) | |||||
lwz 12,4*4(30) | |||||
stw 17,4*4(5) | |||||
lwz 17,4*15(1) | |||||
mtctr 31 | |||||
.Lmul4x_cond_copy: | |||||
and 14,14,3 | |||||
andc 9,9,3 | |||||
stw 0,4*0(29) | |||||
and 15,15,3 | |||||
andc 10,10,3 | |||||
stw 0,4*1(29) | |||||
and 16,16,3 | |||||
andc 11,11,3 | |||||
stw 0,4*2(29) | |||||
and 17,17,3 | |||||
andc 12,12,3 | |||||
stw 0,4*3(29) | |||||
or 22,14,9 | |||||
lwz 9,4*5(30) | |||||
lwz 14,4*4(29) | |||||
or 23,15,10 | |||||
lwz 10,4*6(30) | |||||
lwz 15,4*5(29) | |||||
or 24,16,11 | |||||
lwz 11,4*7(30) | |||||
lwz 16,4*6(29) | |||||
or 25,17,12 | |||||
lwz 12,4*8(30) | |||||
lwz 17,4*7(29) | |||||
addi 29,29,4*4 | |||||
stw 22,4*1(30) | |||||
stw 23,4*2(30) | |||||
stw 24,4*3(30) | |||||
stwu 25,4*4(30) | |||||
bdnz .Lmul4x_cond_copy | |||||
lwz 5,0(1) | |||||
and 14,14,3 | |||||
andc 9,9,3 | |||||
stw 0,4*0(29) | |||||
and 15,15,3 | |||||
andc 10,10,3 | |||||
stw 0,4*1(29) | |||||
and 16,16,3 | |||||
andc 11,11,3 | |||||
stw 0,4*2(29) | |||||
and 17,17,3 | |||||
andc 12,12,3 | |||||
stw 0,4*3(29) | |||||
or 22,14,9 | |||||
or 23,15,10 | |||||
stw 0,4*4(29) | |||||
or 24,16,11 | |||||
or 25,17,12 | |||||
stw 22,4*1(30) | |||||
stw 23,4*2(30) | |||||
stw 24,4*3(30) | |||||
stw 25,4*4(30) | |||||
b .Lmul4x_done | |||||
.align 4 | |||||
.Lmul4x4_post_condition: | |||||
lwz 4,4*6(1) | |||||
lwz 5,0(1) | |||||
addze 3,3 | |||||
subfc 9,18,22 | |||||
subfe 10,19,23 | |||||
subfe 11,20,24 | |||||
subfe 12,21,25 | |||||
subfe 3,0,3 | |||||
and 18,18,3 | |||||
and 19,19,3 | |||||
addc 9,9,18 | |||||
and 20,20,3 | |||||
adde 10,10,19 | |||||
and 21,21,3 | |||||
adde 11,11,20 | |||||
adde 12,12,21 | |||||
stw 9,4*1(4) | |||||
stw 10,4*2(4) | |||||
stw 11,4*3(4) | |||||
stw 12,4*4(4) | |||||
.Lmul4x_done: | |||||
stw 0,4*8(1) | |||||
stw 0,4*9(1) | |||||
stw 0,4*10(1) | |||||
stw 0,4*11(1) | |||||
li 3,1 | |||||
lwz 14,-4*18(5) | |||||
lwz 15,-4*17(5) | |||||
lwz 16,-4*16(5) | |||||
lwz 17,-4*15(5) | |||||
lwz 18,-4*14(5) | |||||
lwz 19,-4*13(5) | |||||
lwz 20,-4*12(5) | |||||
lwz 21,-4*11(5) | |||||
lwz 22,-4*10(5) | |||||
lwz 23,-4*9(5) | |||||
lwz 24,-4*8(5) | |||||
lwz 25,-4*7(5) | |||||
lwz 26,-4*6(5) | |||||
lwz 27,-4*5(5) | |||||
lwz 28,-4*4(5) | |||||
lwz 29,-4*3(5) | |||||
lwz 30,-4*2(5) | |||||
lwz 31,-4*1(5) | |||||
mr 1,5 | |||||
blr | |||||
.long 0 | |||||
.byte 0,12,4,0x20,0x80,18,6,0 | |||||
.long 0 | |||||
.size bn_mul4x_mont_int,.-bn_mul4x_mont_int | |||||
.align 5 | |||||
__bn_sqr8x_mont: | |||||
.Lsqr8x_do: | |||||
mr 9,1 | |||||
slwi 10,8,3 | |||||
li 11,-32*4 | |||||
sub 10,11,10 | |||||
slwi 8,8,2 | |||||
stwux 1,1,10 | |||||
stw 14,-4*18(9) | |||||
stw 15,-4*17(9) | |||||
stw 16,-4*16(9) | |||||
stw 17,-4*15(9) | |||||
stw 18,-4*14(9) | |||||
stw 19,-4*13(9) | |||||
stw 20,-4*12(9) | |||||
stw 21,-4*11(9) | |||||
stw 22,-4*10(9) | |||||
stw 23,-4*9(9) | |||||
stw 24,-4*8(9) | |||||
stw 25,-4*7(9) | |||||
stw 26,-4*6(9) | |||||
stw 27,-4*5(9) | |||||
stw 28,-4*4(9) | |||||
stw 29,-4*3(9) | |||||
stw 30,-4*2(9) | |||||
stw 31,-4*1(9) | |||||
subi 4,4,4 | |||||
subi 18,6,4 | |||||
subi 3,3,4 | |||||
lwz 7,0(7) | |||||
li 0,0 | |||||
add 6,4,8 | |||||
lwz 9,4*1(4) | |||||
lwz 10,4*2(4) | |||||
li 23,0 | |||||
lwz 11,4*3(4) | |||||
li 24,0 | |||||
lwz 12,4*4(4) | |||||
li 25,0 | |||||
lwz 14,4*5(4) | |||||
li 26,0 | |||||
lwz 15,4*6(4) | |||||
li 27,0 | |||||
lwz 16,4*7(4) | |||||
li 28,0 | |||||
lwzu 17,4*8(4) | |||||
li 29,0 | |||||
addi 5,1,4*11 | |||||
subic. 30,8,4*8 | |||||
b .Lsqr8x_zero_start | |||||
.align 5 | |||||
.Lsqr8x_zero: | |||||
subic. 30,30,4*8 | |||||
stw 0,4*1(5) | |||||
stw 0,4*2(5) | |||||
stw 0,4*3(5) | |||||
stw 0,4*4(5) | |||||
stw 0,4*5(5) | |||||
stw 0,4*6(5) | |||||
stw 0,4*7(5) | |||||
stw 0,4*8(5) | |||||
.Lsqr8x_zero_start: | |||||
stw 0,4*9(5) | |||||
stw 0,4*10(5) | |||||
stw 0,4*11(5) | |||||
stw 0,4*12(5) | |||||
stw 0,4*13(5) | |||||
stw 0,4*14(5) | |||||
stw 0,4*15(5) | |||||
stwu 0,4*16(5) | |||||
bne .Lsqr8x_zero | |||||
stw 3,4*6(1) | |||||
stw 18,4*7(1) | |||||
stw 7,4*8(1) | |||||
stw 5,4*9(1) | |||||
stw 0,4*10(1) | |||||
addi 5,1,4*11 | |||||
.align 5 | |||||
.Lsqr8x_outer_loop: | |||||
mullw 18,10,9 | |||||
mullw 19,11,9 | |||||
mullw 20,12,9 | |||||
mullw 21,14,9 | |||||
addc 23,23,18 | |||||
mullw 18,15,9 | |||||
adde 24,24,19 | |||||
mullw 19,16,9 | |||||
adde 25,25,20 | |||||
mullw 20,17,9 | |||||
adde 26,26,21 | |||||
mulhwu 21,10,9 | |||||
adde 27,27,18 | |||||
mulhwu 18,11,9 | |||||
adde 28,28,19 | |||||
mulhwu 19,12,9 | |||||
adde 29,29,20 | |||||
mulhwu 20,14,9 | |||||
stw 22,4*1(5) | |||||
addze 22,0 | |||||
stw 23,4*2(5) | |||||
addc 24,24,21 | |||||
mulhwu 21,15,9 | |||||
adde 25,25,18 | |||||
mulhwu 18,16,9 | |||||
adde 26,26,19 | |||||
mulhwu 19,17,9 | |||||
adde 27,27,20 | |||||
mullw 20,11,10 | |||||
adde 28,28,21 | |||||
mullw 21,12,10 | |||||
adde 29,29,18 | |||||
mullw 18,14,10 | |||||
adde 22,22,19 | |||||
mullw 19,15,10 | |||||
addc 25,25,20 | |||||
mullw 20,16,10 | |||||
adde 26,26,21 | |||||
mullw 21,17,10 | |||||
adde 27,27,18 | |||||
mulhwu 18,11,10 | |||||
adde 28,28,19 | |||||
mulhwu 19,12,10 | |||||
adde 29,29,20 | |||||
mulhwu 20,14,10 | |||||
adde 22,22,21 | |||||
mulhwu 21,15,10 | |||||
stw 24,4*3(5) | |||||
addze 23,0 | |||||
stw 25,4*4(5) | |||||
addc 26,26,18 | |||||
mulhwu 18,16,10 | |||||
adde 27,27,19 | |||||
mulhwu 19,17,10 | |||||
adde 28,28,20 | |||||
mullw 20,12,11 | |||||
adde 29,29,21 | |||||
mullw 21,14,11 | |||||
adde 22,22,18 | |||||
mullw 18,15,11 | |||||
adde 23,23,19 | |||||
mullw 19,16,11 | |||||
addc 27,27,20 | |||||
mullw 20,17,11 | |||||
adde 28,28,21 | |||||
mulhwu 21,12,11 | |||||
adde 29,29,18 | |||||
mulhwu 18,14,11 | |||||
adde 22,22,19 | |||||
mulhwu 19,15,11 | |||||
adde 23,23,20 | |||||
mulhwu 20,16,11 | |||||
stw 26,4*5(5) | |||||
addze 24,0 | |||||
stw 27,4*6(5) | |||||
addc 28,28,21 | |||||
mulhwu 21,17,11 | |||||
adde 29,29,18 | |||||
mullw 18,14,12 | |||||
adde 22,22,19 | |||||
mullw 19,15,12 | |||||
adde 23,23,20 | |||||
mullw 20,16,12 | |||||
adde 24,24,21 | |||||
mullw 21,17,12 | |||||
addc 29,29,18 | |||||
mulhwu 18,14,12 | |||||
adde 22,22,19 | |||||
mulhwu 19,15,12 | |||||
adde 23,23,20 | |||||
mulhwu 20,16,12 | |||||
adde 24,24,21 | |||||
mulhwu 21,17,12 | |||||
stw 28,4*7(5) | |||||
addze 25,0 | |||||
stwu 29,4*8(5) | |||||
addc 22,22,18 | |||||
mullw 18,15,14 | |||||
adde 23,23,19 | |||||
mullw 19,16,14 | |||||
adde 24,24,20 | |||||
mullw 20,17,14 | |||||
adde 25,25,21 | |||||
mulhwu 21,15,14 | |||||
addc 23,23,18 | |||||
mulhwu 18,16,14 | |||||
adde 24,24,19 | |||||
mulhwu 19,17,14 | |||||
adde 25,25,20 | |||||
mullw 20,16,15 | |||||
addze 26,0 | |||||
addc 24,24,21 | |||||
mullw 21,17,15 | |||||
adde 25,25,18 | |||||
mulhwu 18,16,15 | |||||
adde 26,26,19 | |||||
mulhwu 19,17,15 | |||||
addc 25,25,20 | |||||
mullw 20,17,16 | |||||
adde 26,26,21 | |||||
mulhwu 21,17,16 | |||||
addze 27,0 | |||||
addc 26,26,18 | |||||
.long 0x7c062040 | |||||
adde 27,27,19 | |||||
addc 27,27,20 | |||||
sub 18,6,8 | |||||
addze 28,0 | |||||
add 28,28,21 | |||||
beq .Lsqr8x_outer_break | |||||
mr 7,9 | |||||
lwz 9,4*1(5) | |||||
lwz 10,4*2(5) | |||||
lwz 11,4*3(5) | |||||
lwz 12,4*4(5) | |||||
lwz 14,4*5(5) | |||||
lwz 15,4*6(5) | |||||
lwz 16,4*7(5) | |||||
lwz 17,4*8(5) | |||||
addc 22,22,9 | |||||
lwz 9,4*1(4) | |||||
adde 23,23,10 | |||||
lwz 10,4*2(4) | |||||
adde 24,24,11 | |||||
lwz 11,4*3(4) | |||||
adde 25,25,12 | |||||
lwz 12,4*4(4) | |||||
adde 26,26,14 | |||||
lwz 14,4*5(4) | |||||
adde 27,27,15 | |||||
lwz 15,4*6(4) | |||||
adde 28,28,16 | |||||
lwz 16,4*7(4) | |||||
subi 3,4,4*7 | |||||
addze 29,17 | |||||
lwzu 17,4*8(4) | |||||
li 30,0 | |||||
b .Lsqr8x_mul | |||||
.align 5 | |||||
.Lsqr8x_mul: | |||||
mullw 18,9,7 | |||||
addze 31,0 | |||||
mullw 19,10,7 | |||||
addi 30,30,4 | |||||
mullw 20,11,7 | |||||
andi. 30,30,4*8-1 | |||||
mullw 21,12,7 | |||||
addc 22,22,18 | |||||
mullw 18,14,7 | |||||
adde 23,23,19 | |||||
mullw 19,15,7 | |||||
adde 24,24,20 | |||||
mullw 20,16,7 | |||||
adde 25,25,21 | |||||
mullw 21,17,7 | |||||
adde 26,26,18 | |||||
mulhwu 18,9,7 | |||||
adde 27,27,19 | |||||
mulhwu 19,10,7 | |||||
adde 28,28,20 | |||||
mulhwu 20,11,7 | |||||
adde 29,29,21 | |||||
mulhwu 21,12,7 | |||||
addze 31,31 | |||||
stwu 22,4(5) | |||||
addc 22,23,18 | |||||
mulhwu 18,14,7 | |||||
adde 23,24,19 | |||||
mulhwu 19,15,7 | |||||
adde 24,25,20 | |||||
mulhwu 20,16,7 | |||||
adde 25,26,21 | |||||
mulhwu 21,17,7 | |||||
lwzx 7,3,30 | |||||
adde 26,27,18 | |||||
adde 27,28,19 | |||||
adde 28,29,20 | |||||
adde 29,31,21 | |||||
bne .Lsqr8x_mul | |||||
.long 0x7c043040 | |||||
beq .Lsqr8x_break | |||||
lwz 9,4*1(5) | |||||
lwz 10,4*2(5) | |||||
lwz 11,4*3(5) | |||||
lwz 12,4*4(5) | |||||
lwz 14,4*5(5) | |||||
lwz 15,4*6(5) | |||||
lwz 16,4*7(5) | |||||
lwz 17,4*8(5) | |||||
addc 22,22,9 | |||||
lwz 9,4*1(4) | |||||
adde 23,23,10 | |||||
lwz 10,4*2(4) | |||||
adde 24,24,11 | |||||
lwz 11,4*3(4) | |||||
adde 25,25,12 | |||||
lwz 12,4*4(4) | |||||
adde 26,26,14 | |||||
lwz 14,4*5(4) | |||||
adde 27,27,15 | |||||
lwz 15,4*6(4) | |||||
adde 28,28,16 | |||||
lwz 16,4*7(4) | |||||
adde 29,29,17 | |||||
lwzu 17,4*8(4) | |||||
b .Lsqr8x_mul | |||||
.align 5 | |||||
.Lsqr8x_break: | |||||
lwz 9,4*8(3) | |||||
addi 4,3,4*15 | |||||
lwz 10,4*9(3) | |||||
sub. 18,6,4 | |||||
lwz 11,4*10(3) | |||||
sub 19,5,18 | |||||
lwz 12,4*11(3) | |||||
lwz 14,4*12(3) | |||||
lwz 15,4*13(3) | |||||
lwz 16,4*14(3) | |||||
lwz 17,4*15(3) | |||||
beq .Lsqr8x_outer_loop | |||||
stw 22,4*1(5) | |||||
lwz 22,4*1(19) | |||||
stw 23,4*2(5) | |||||
lwz 23,4*2(19) | |||||
stw 24,4*3(5) | |||||
lwz 24,4*3(19) | |||||
stw 25,4*4(5) | |||||
lwz 25,4*4(19) | |||||
stw 26,4*5(5) | |||||
lwz 26,4*5(19) | |||||
stw 27,4*6(5) | |||||
lwz 27,4*6(19) | |||||
stw 28,4*7(5) | |||||
lwz 28,4*7(19) | |||||
stw 29,4*8(5) | |||||
lwz 29,4*8(19) | |||||
mr 5,19 | |||||
b .Lsqr8x_outer_loop | |||||
.align 5 | |||||
.Lsqr8x_outer_break: | |||||
lwz 10,4*1(18) | |||||
lwz 12,4*2(18) | |||||
lwz 15,4*3(18) | |||||
lwz 17,4*4(18) | |||||
addi 4,18,4*4 | |||||
lwz 19,4*13(1) | |||||
lwz 20,4*14(1) | |||||
lwz 21,4*15(1) | |||||
lwz 18,4*16(1) | |||||
stw 22,4*1(5) | |||||
srwi 30,8,4 | |||||
stw 23,4*2(5) | |||||
subi 30,30,1 | |||||
stw 24,4*3(5) | |||||
stw 25,4*4(5) | |||||
stw 26,4*5(5) | |||||
stw 27,4*6(5) | |||||
stw 28,4*7(5) | |||||
addi 5,1,4*11 | |||||
mullw 22,10,10 | |||||
mulhwu 10,10,10 | |||||
add 23,19,19 | |||||
srwi 19,19,32-1 | |||||
mullw 11,12,12 | |||||
mulhwu 12,12,12 | |||||
addc 23,23,10 | |||||
add 24,20,20 | |||||
srwi 20,20,32-1 | |||||
add 25,21,21 | |||||
srwi 21,21,32-1 | |||||
or 24,24,19 | |||||
mtctr 30 | |||||
.Lsqr4x_shift_n_add: | |||||
mullw 14,15,15 | |||||
mulhwu 15,15,15 | |||||
lwz 19,4*6(5) | |||||
lwz 10,4*1(4) | |||||
adde 24,24,11 | |||||
add 26,18,18 | |||||
srwi 18,18,32-1 | |||||
or 25,25,20 | |||||
lwz 20,4*7(5) | |||||
adde 25,25,12 | |||||
lwz 12,4*2(4) | |||||
add 27,19,19 | |||||
srwi 19,19,32-1 | |||||
or 26,26,21 | |||||
lwz 21,4*8(5) | |||||
mullw 16,17,17 | |||||
mulhwu 17,17,17 | |||||
adde 26,26,14 | |||||
add 28,20,20 | |||||
srwi 20,20,32-1 | |||||
or 27,27,18 | |||||
lwz 18,4*9(5) | |||||
adde 27,27,15 | |||||
lwz 15,4*3(4) | |||||
add 29,21,21 | |||||
srwi 21,21,32-1 | |||||
or 28,28,19 | |||||
lwz 19,4*10(5) | |||||
mullw 9,10,10 | |||||
mulhwu 10,10,10 | |||||
adde 28,28,16 | |||||
stw 22,4*1(5) | |||||
add 22,18,18 | |||||
srwi 18,18,32-1 | |||||
or 29,29,20 | |||||
lwz 20,4*11(5) | |||||
adde 29,29,17 | |||||
lwzu 17,4*4(4) | |||||
stw 23,4*2(5) | |||||
add 23,19,19 | |||||
srwi 19,19,32-1 | |||||
or 22,22,21 | |||||
lwz 21,4*12(5) | |||||
mullw 11,12,12 | |||||
mulhwu 12,12,12 | |||||
adde 22,22,9 | |||||
stw 24,4*3(5) | |||||
add 24,20,20 | |||||
srwi 20,20,32-1 | |||||
or 23,23,18 | |||||
lwz 18,4*13(5) | |||||
adde 23,23,10 | |||||
stw 25,4*4(5) | |||||
stw 26,4*5(5) | |||||
stw 27,4*6(5) | |||||
stw 28,4*7(5) | |||||
stwu 29,4*8(5) | |||||
add 25,21,21 | |||||
srwi 21,21,32-1 | |||||
or 24,24,19 | |||||
bdnz .Lsqr4x_shift_n_add | |||||
lwz 4,4*7(1) | |||||
lwz 7,4*8(1) | |||||
mullw 14,15,15 | |||||
mulhwu 15,15,15 | |||||
stw 22,4*1(5) | |||||
lwz 22,4*12(1) | |||||
lwz 19,4*6(5) | |||||
adde 24,24,11 | |||||
add 26,18,18 | |||||
srwi 18,18,32-1 | |||||
or 25,25,20 | |||||
lwz 20,4*7(5) | |||||
adde 25,25,12 | |||||
add 27,19,19 | |||||
srwi 19,19,32-1 | |||||
or 26,26,21 | |||||
mullw 16,17,17 | |||||
mulhwu 17,17,17 | |||||
adde 26,26,14 | |||||
add 28,20,20 | |||||
srwi 20,20,32-1 | |||||
or 27,27,18 | |||||
stw 23,4*2(5) | |||||
lwz 23,4*13(1) | |||||
adde 27,27,15 | |||||
or 28,28,19 | |||||
lwz 9,4*1(4) | |||||
lwz 10,4*2(4) | |||||
adde 28,28,16 | |||||
lwz 11,4*3(4) | |||||
lwz 12,4*4(4) | |||||
adde 29,17,20 | |||||
lwz 14,4*5(4) | |||||
lwz 15,4*6(4) | |||||
mullw 31,7,22 | |||||
li 30,8 | |||||
lwz 16,4*7(4) | |||||
add 6,4,8 | |||||
lwzu 17,4*8(4) | |||||
stw 24,4*3(5) | |||||
lwz 24,4*14(1) | |||||
stw 25,4*4(5) | |||||
lwz 25,4*15(1) | |||||
stw 26,4*5(5) | |||||
lwz 26,4*16(1) | |||||
stw 27,4*6(5) | |||||
lwz 27,4*17(1) | |||||
stw 28,4*7(5) | |||||
lwz 28,4*18(1) | |||||
stw 29,4*8(5) | |||||
lwz 29,4*19(1) | |||||
addi 5,1,4*11 | |||||
mtctr 30 | |||||
b .Lsqr8x_reduction | |||||
.align 5 | |||||
.Lsqr8x_reduction: | |||||
mullw 19,10,31 | |||||
mullw 20,11,31 | |||||
stwu 31,4(5) | |||||
mullw 21,12,31 | |||||
addic 22,22,-1 | |||||
mullw 18,14,31 | |||||
adde 22,23,19 | |||||
mullw 19,15,31 | |||||
adde 23,24,20 | |||||
mullw 20,16,31 | |||||
adde 24,25,21 | |||||
mullw 21,17,31 | |||||
adde 25,26,18 | |||||
mulhwu 18,9,31 | |||||
adde 26,27,19 | |||||
mulhwu 19,10,31 | |||||
adde 27,28,20 | |||||
mulhwu 20,11,31 | |||||
adde 28,29,21 | |||||
mulhwu 21,12,31 | |||||
addze 29,0 | |||||
addc 22,22,18 | |||||
mulhwu 18,14,31 | |||||
adde 23,23,19 | |||||
mulhwu 19,15,31 | |||||
adde 24,24,20 | |||||
mulhwu 20,16,31 | |||||
adde 25,25,21 | |||||
mulhwu 21,17,31 | |||||
mullw 31,7,22 | |||||
adde 26,26,18 | |||||
adde 27,27,19 | |||||
adde 28,28,20 | |||||
adde 29,29,21 | |||||
bdnz .Lsqr8x_reduction | |||||
lwz 18,4*1(5) | |||||
lwz 19,4*2(5) | |||||
lwz 20,4*3(5) | |||||
lwz 21,4*4(5) | |||||
subi 3,5,4*7 | |||||
.long 0x7c062040 | |||||
addc 22,22,18 | |||||
lwz 18,4*5(5) | |||||
adde 23,23,19 | |||||
lwz 19,4*6(5) | |||||
adde 24,24,20 | |||||
lwz 20,4*7(5) | |||||
adde 25,25,21 | |||||
lwz 21,4*8(5) | |||||
adde 26,26,18 | |||||
adde 27,27,19 | |||||
adde 28,28,20 | |||||
adde 29,29,21 | |||||
beq .Lsqr8x8_post_condition | |||||
lwz 7,4*0(3) | |||||
lwz 9,4*1(4) | |||||
lwz 10,4*2(4) | |||||
lwz 11,4*3(4) | |||||
lwz 12,4*4(4) | |||||
lwz 14,4*5(4) | |||||
lwz 15,4*6(4) | |||||
lwz 16,4*7(4) | |||||
lwzu 17,4*8(4) | |||||
li 30,0 | |||||
.align 5 | |||||
.Lsqr8x_tail: | |||||
mullw 18,9,7 | |||||
addze 31,0 | |||||
mullw 19,10,7 | |||||
addi 30,30,4 | |||||
mullw 20,11,7 | |||||
andi. 30,30,4*8-1 | |||||
mullw 21,12,7 | |||||
addc 22,22,18 | |||||
mullw 18,14,7 | |||||
adde 23,23,19 | |||||
mullw 19,15,7 | |||||
adde 24,24,20 | |||||
mullw 20,16,7 | |||||
adde 25,25,21 | |||||
mullw 21,17,7 | |||||
adde 26,26,18 | |||||
mulhwu 18,9,7 | |||||
adde 27,27,19 | |||||
mulhwu 19,10,7 | |||||
adde 28,28,20 | |||||
mulhwu 20,11,7 | |||||
adde 29,29,21 | |||||
mulhwu 21,12,7 | |||||
addze 31,31 | |||||
stwu 22,4(5) | |||||
addc 22,23,18 | |||||
mulhwu 18,14,7 | |||||
adde 23,24,19 | |||||
mulhwu 19,15,7 | |||||
adde 24,25,20 | |||||
mulhwu 20,16,7 | |||||
adde 25,26,21 | |||||
mulhwu 21,17,7 | |||||
lwzx 7,3,30 | |||||
adde 26,27,18 | |||||
adde 27,28,19 | |||||
adde 28,29,20 | |||||
adde 29,31,21 | |||||
bne .Lsqr8x_tail | |||||
lwz 9,4*1(5) | |||||
lwz 31,4*10(1) | |||||
.long 0x7c062040 | |||||
lwz 10,4*2(5) | |||||
sub 20,6,8 | |||||
lwz 11,4*3(5) | |||||
lwz 12,4*4(5) | |||||
lwz 14,4*5(5) | |||||
lwz 15,4*6(5) | |||||
lwz 16,4*7(5) | |||||
lwz 17,4*8(5) | |||||
beq .Lsqr8x_tail_break | |||||
addc 22,22,9 | |||||
lwz 9,4*1(4) | |||||
adde 23,23,10 | |||||
lwz 10,4*2(4) | |||||
adde 24,24,11 | |||||
lwz 11,4*3(4) | |||||
adde 25,25,12 | |||||
lwz 12,4*4(4) | |||||
adde 26,26,14 | |||||
lwz 14,4*5(4) | |||||
adde 27,27,15 | |||||
lwz 15,4*6(4) | |||||
adde 28,28,16 | |||||
lwz 16,4*7(4) | |||||
adde 29,29,17 | |||||
lwzu 17,4*8(4) | |||||
b .Lsqr8x_tail | |||||
.align 5 | |||||
.Lsqr8x_tail_break: | |||||
lwz 7,4*8(1) | |||||
lwz 21,4*9(1) | |||||
addi 30,5,4*8 | |||||
addic 31,31,-1 | |||||
adde 18,22,9 | |||||
lwz 22,4*8(3) | |||||
lwz 9,4*1(20) | |||||
adde 19,23,10 | |||||
lwz 23,4*9(3) | |||||
lwz 10,4*2(20) | |||||
adde 24,24,11 | |||||
lwz 11,4*3(20) | |||||
adde 25,25,12 | |||||
lwz 12,4*4(20) | |||||
adde 26,26,14 | |||||
lwz 14,4*5(20) | |||||
adde 27,27,15 | |||||
lwz 15,4*6(20) | |||||
adde 28,28,16 | |||||
lwz 16,4*7(20) | |||||
adde 29,29,17 | |||||
lwz 17,4*8(20) | |||||
addi 4,20,4*8 | |||||
addze 20,0 | |||||
mullw 31,7,22 | |||||
stw 18,4*1(5) | |||||
.long 0x7c1ea840 | |||||
stw 19,4*2(5) | |||||
li 30,8 | |||||
stw 24,4*3(5) | |||||
lwz 24,4*10(3) | |||||
stw 25,4*4(5) | |||||
lwz 25,4*11(3) | |||||
stw 26,4*5(5) | |||||
lwz 26,4*12(3) | |||||
stw 27,4*6(5) | |||||
lwz 27,4*13(3) | |||||
stw 28,4*7(5) | |||||
lwz 28,4*14(3) | |||||
stw 29,4*8(5) | |||||
lwz 29,4*15(3) | |||||
stw 20,4*10(1) | |||||
addi 5,3,4*7 | |||||
mtctr 30 | |||||
bne .Lsqr8x_reduction | |||||
lwz 3,4*6(1) | |||||
srwi 30,8,5 | |||||
mr 7,5 | |||||
addi 5,5,4*8 | |||||
subi 30,30,1 | |||||
subfc 18,9,22 | |||||
subfe 19,10,23 | |||||
mr 31,20 | |||||
mr 6,3 | |||||
mtctr 30 | |||||
b .Lsqr8x_sub | |||||
.align 5 | |||||
.Lsqr8x_sub: | |||||
lwz 9,4*1(4) | |||||
lwz 22,4*1(5) | |||||
lwz 10,4*2(4) | |||||
lwz 23,4*2(5) | |||||
subfe 20,11,24 | |||||
lwz 11,4*3(4) | |||||
lwz 24,4*3(5) | |||||
subfe 21,12,25 | |||||
lwz 12,4*4(4) | |||||
lwz 25,4*4(5) | |||||
stw 18,4*1(3) | |||||
subfe 18,14,26 | |||||
lwz 14,4*5(4) | |||||
lwz 26,4*5(5) | |||||
stw 19,4*2(3) | |||||
subfe 19,15,27 | |||||
lwz 15,4*6(4) | |||||
lwz 27,4*6(5) | |||||
stw 20,4*3(3) | |||||
subfe 20,16,28 | |||||
lwz 16,4*7(4) | |||||
lwz 28,4*7(5) | |||||
stw 21,4*4(3) | |||||
subfe 21,17,29 | |||||
lwzu 17,4*8(4) | |||||
lwzu 29,4*8(5) | |||||
stw 18,4*5(3) | |||||
subfe 18,9,22 | |||||
stw 19,4*6(3) | |||||
subfe 19,10,23 | |||||
stw 20,4*7(3) | |||||
stwu 21,4*8(3) | |||||
bdnz .Lsqr8x_sub | |||||
srwi 30,8,4 | |||||
lwz 9,4*1(6) | |||||
lwz 22,4*1(7) | |||||
subi 30,30,1 | |||||
lwz 10,4*2(6) | |||||
lwz 23,4*2(7) | |||||
subfe 20,11,24 | |||||
lwz 11,4*3(6) | |||||
lwz 24,4*3(7) | |||||
subfe 21,12,25 | |||||
lwz 12,4*4(6) | |||||
lwzu 25,4*4(7) | |||||
stw 18,4*1(3) | |||||
subfe 18,14,26 | |||||
stw 19,4*2(3) | |||||
subfe 19,15,27 | |||||
stw 20,4*3(3) | |||||
subfe 20,16,28 | |||||
stw 21,4*4(3) | |||||
subfe 21,17,29 | |||||
stw 18,4*5(3) | |||||
subfe 31,0,31 | |||||
stw 19,4*6(3) | |||||
stw 20,4*7(3) | |||||
stw 21,4*8(3) | |||||
addi 5,1,4*11 | |||||
mtctr 30 | |||||
.Lsqr4x_cond_copy: | |||||
andc 9,9,31 | |||||
stw 0,-4*3(7) | |||||
and 22,22,31 | |||||
stw 0,-4*2(7) | |||||
andc 10,10,31 | |||||
stw 0,-4*1(7) | |||||
and 23,23,31 | |||||
stw 0,-4*0(7) | |||||
andc 11,11,31 | |||||
stw 0,4*1(5) | |||||
and 24,24,31 | |||||
stw 0,4*2(5) | |||||
andc 12,12,31 | |||||
stw 0,4*3(5) | |||||
and 25,25,31 | |||||
stwu 0,4*4(5) | |||||
or 18,9,22 | |||||
lwz 9,4*5(6) | |||||
lwz 22,4*1(7) | |||||
or 19,10,23 | |||||
lwz 10,4*6(6) | |||||
lwz 23,4*2(7) | |||||
or 20,11,24 | |||||
lwz 11,4*7(6) | |||||
lwz 24,4*3(7) | |||||
or 21,12,25 | |||||
lwz 12,4*8(6) | |||||
lwzu 25,4*4(7) | |||||
stw 18,4*1(6) | |||||
stw 19,4*2(6) | |||||
stw 20,4*3(6) | |||||
stwu 21,4*4(6) | |||||
bdnz .Lsqr4x_cond_copy | |||||
lwz 4,0(1) | |||||
andc 9,9,31 | |||||
and 22,22,31 | |||||
andc 10,10,31 | |||||
and 23,23,31 | |||||
andc 11,11,31 | |||||
and 24,24,31 | |||||
andc 12,12,31 | |||||
and 25,25,31 | |||||
or 18,9,22 | |||||
or 19,10,23 | |||||
or 20,11,24 | |||||
or 21,12,25 | |||||
stw 18,4*1(6) | |||||
stw 19,4*2(6) | |||||
stw 20,4*3(6) | |||||
stw 21,4*4(6) | |||||
b .Lsqr8x_done | |||||
.align 5 | |||||
.Lsqr8x8_post_condition: | |||||
lwz 3,4*6(1) | |||||
lwz 4,0(1) | |||||
addze 31,0 | |||||
subfc 22,9,22 | |||||
subfe 23,10,23 | |||||
stw 0,4*12(1) | |||||
stw 0,4*13(1) | |||||
subfe 24,11,24 | |||||
stw 0,4*14(1) | |||||
stw 0,4*15(1) | |||||
subfe 25,12,25 | |||||
stw 0,4*16(1) | |||||
stw 0,4*17(1) | |||||
subfe 26,14,26 | |||||
stw 0,4*18(1) | |||||
stw 0,4*19(1) | |||||
subfe 27,15,27 | |||||
stw 0,4*20(1) | |||||
stw 0,4*21(1) | |||||
subfe 28,16,28 | |||||
stw 0,4*22(1) | |||||
stw 0,4*23(1) | |||||
subfe 29,17,29 | |||||
stw 0,4*24(1) | |||||
stw 0,4*25(1) | |||||
subfe 31,0,31 | |||||
stw 0,4*26(1) | |||||
stw 0,4*27(1) | |||||
and 9,9,31 | |||||
and 10,10,31 | |||||
addc 22,22,9 | |||||
and 11,11,31 | |||||
adde 23,23,10 | |||||
and 12,12,31 | |||||
adde 24,24,11 | |||||
and 14,14,31 | |||||
adde 25,25,12 | |||||
and 15,15,31 | |||||
adde 26,26,14 | |||||
and 16,16,31 | |||||
adde 27,27,15 | |||||
and 17,17,31 | |||||
adde 28,28,16 | |||||
adde 29,29,17 | |||||
stw 22,4*1(3) | |||||
stw 23,4*2(3) | |||||
stw 24,4*3(3) | |||||
stw 25,4*4(3) | |||||
stw 26,4*5(3) | |||||
stw 27,4*6(3) | |||||
stw 28,4*7(3) | |||||
stw 29,4*8(3) | |||||
.Lsqr8x_done: | |||||
stw 0,4*8(1) | |||||
stw 0,4*10(1) | |||||
lwz 14,-4*18(4) | |||||
li 3,1 | |||||
lwz 15,-4*17(4) | |||||
lwz 16,-4*16(4) | |||||
lwz 17,-4*15(4) | |||||
lwz 18,-4*14(4) | |||||
lwz 19,-4*13(4) | |||||
lwz 20,-4*12(4) | |||||
lwz 21,-4*11(4) | |||||
lwz 22,-4*10(4) | |||||
lwz 23,-4*9(4) | |||||
lwz 24,-4*8(4) | |||||
lwz 25,-4*7(4) | |||||
lwz 26,-4*6(4) | |||||
lwz 27,-4*5(4) | |||||
lwz 28,-4*4(4) | |||||
lwz 29,-4*3(4) | |||||
lwz 30,-4*2(4) | |||||
lwz 31,-4*1(4) | |||||
mr 1,4 | |||||
blr | |||||
.long 0 | |||||
.byte 0,12,4,0x20,0x80,18,6,0 | |||||
.long 0 | |||||
.size __bn_sqr8x_mont,.-__bn_sqr8x_mont | |||||
.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,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 |