Path: blob/main/sys/crypto/openssl/powerpc/ppc-mont.S
39482 views
/* Do not modify. This file is auto-generated from ppc-mont.pl. */1.machine "any"2.text34.globl bn_mul_mont_int5.type bn_mul_mont_int,@function6.align 57bn_mul_mont_int:8mr 9,39li 3,010cmpwi 8,3211bgelr12slwi 8,8,213li 12,-409614addi 3,8,25615subf 3,3,116and 3,3,1217subf 3,1,318mr 12,119srwi 8,8,220stwux 1,1,32122stw 20,-48(12)23stw 21,-44(12)24stw 22,-40(12)25stw 23,-36(12)26stw 24,-32(12)27stw 25,-28(12)28stw 26,-24(12)29stw 27,-20(12)30stw 28,-16(12)31stw 29,-12(12)32stw 30,-8(12)33stw 31,-4(12)3435lwz 7,0(7)36addi 8,8,-23738lwz 23,0(5)39lwz 10,0(4)40addi 22,1,3241mullw 25,10,2342mulhwu 26,10,234344lwz 10,4(4)45lwz 11,0(6)4647mullw 24,25,74849mullw 29,10,2350mulhwu 30,10,235152mullw 27,11,2453mulhwu 28,11,2454lwz 11,4(6)55addc 27,27,2556addze 28,285758mullw 31,11,2459mulhwu 0,11,246061mtctr 862li 21,863.align 464.L1st:65lwzx 10,4,2166addc 25,29,2667lwzx 11,6,2168addze 26,3069mullw 29,10,2370addc 27,31,2871mulhwu 30,10,2372addze 28,073mullw 31,11,2474addc 27,27,2575mulhwu 0,11,2476addze 28,2877stw 27,0(22)7879addi 21,21,480addi 22,22,481bdnz .L1st8283addc 25,29,2684addze 26,308586addc 27,31,2887addze 28,088addc 27,27,2589addze 28,2890stw 27,0(22)9192li 3,093addc 28,28,2694addze 3,395stw 28,4(22)9697li 20,498.align 499.Louter:100lwzx 23,5,20101lwz 10,0(4)102addi 22,1,32103lwz 12,32(1)104mullw 25,10,23105mulhwu 26,10,23106lwz 10,4(4)107lwz 11,0(6)108addc 25,25,12109mullw 29,10,23110addze 26,26111mullw 24,25,7112mulhwu 30,10,23113mullw 27,11,24114mulhwu 28,11,24115lwz 11,4(6)116addc 27,27,25117mullw 31,11,24118addze 28,28119mulhwu 0,11,24120121mtctr 8122li 21,8123.align 4124.Linner:125lwzx 10,4,21126addc 25,29,26127lwz 12,4(22)128addze 26,30129lwzx 11,6,21130addc 27,31,28131mullw 29,10,23132addze 28,0133mulhwu 30,10,23134addc 25,25,12135mullw 31,11,24136addze 26,26137mulhwu 0,11,24138addc 27,27,25139addi 21,21,4140addze 28,28141stw 27,0(22)142addi 22,22,4143bdnz .Linner144145lwz 12,4(22)146addc 25,29,26147addze 26,30148addc 25,25,12149addze 26,26150151addc 27,31,28152addze 28,0153addc 27,27,25154addze 28,28155stw 27,0(22)156157addic 3,3,-1158li 3,0159adde 28,28,26160addze 3,3161stw 28,4(22)162163slwi 12,8,2164.long 0x7c146040165addi 20,20,4166ble .Louter167168addi 8,8,2169subfc 21,21,21170addi 22,1,32171mtctr 8172173.align 4174.Lsub: lwzx 12,22,21175lwzx 11,6,21176subfe 10,11,12177stwx 10,9,21178addi 21,21,4179bdnz .Lsub180181li 21,0182mtctr 8183subfe 3,21,3184185.align 4186.Lcopy:187lwzx 12,22,21188lwzx 10,9,21189and 12,12,3190andc 10,10,3191stwx 21,22,21192or 10,10,12193stwx 10,9,21194addi 21,21,4195bdnz .Lcopy196197lwz 12,0(1)198li 3,1199lwz 20,-48(12)200lwz 21,-44(12)201lwz 22,-40(12)202lwz 23,-36(12)203lwz 24,-32(12)204lwz 25,-28(12)205lwz 26,-24(12)206lwz 27,-20(12)207lwz 28,-16(12)208lwz 29,-12(12)209lwz 30,-8(12)210lwz 31,-4(12)211mr 1,12212blr213.long 0214.byte 0,12,4,0,0x80,12,6,0215.long 0216.size bn_mul_mont_int,.-bn_mul_mont_int217.globl bn_mul4x_mont_int218.type bn_mul4x_mont_int,@function219.align 5220bn_mul4x_mont_int:221andi. 0,8,7222bne .Lmul4x_do223.long 0x7c042840224bne .Lmul4x_do225b .Lsqr8x_do226.Lmul4x_do:227slwi 8,8,2228mr 9,1229li 10,-32*4230sub 10,10,8231stwux 1,1,10232233stw 14,-4*18(9)234stw 15,-4*17(9)235stw 16,-4*16(9)236stw 17,-4*15(9)237stw 18,-4*14(9)238stw 19,-4*13(9)239stw 20,-4*12(9)240stw 21,-4*11(9)241stw 22,-4*10(9)242stw 23,-4*9(9)243stw 24,-4*8(9)244stw 25,-4*7(9)245stw 26,-4*6(9)246stw 27,-4*5(9)247stw 28,-4*4(9)248stw 29,-4*3(9)249stw 30,-4*2(9)250stw 31,-4*1(9)251252subi 4,4,4253subi 6,6,4254subi 3,3,4255lwz 7,0(7)256257add 14,5,8258add 30,4,8259subi 14,14,4*4260261lwz 27,4*0(5)262li 22,0263lwz 9,4*1(4)264li 23,0265lwz 10,4*2(4)266li 24,0267lwz 11,4*3(4)268li 25,0269lwzu 12,4*4(4)270lwz 18,4*1(6)271lwz 19,4*2(6)272lwz 20,4*3(6)273lwzu 21,4*4(6)274275stw 3,4*6(1)276stw 14,4*7(1)277li 3,0278addic 29,1,4*7279li 31,0280li 0,0281b .Loop_mul4x_1st_reduction282283.align 5284.Loop_mul4x_1st_reduction:285mullw 14,9,27286addze 3,3287mullw 15,10,27288addi 31,31,4289mullw 16,11,27290andi. 31,31,4*4-1291mullw 17,12,27292addc 22,22,14293mulhwu 14,9,27294adde 23,23,15295mulhwu 15,10,27296adde 24,24,16297mullw 28,22,7298adde 25,25,17299mulhwu 16,11,27300addze 26,0301mulhwu 17,12,27302lwzx 27,5,31303addc 23,23,14304305stwu 28,4(29)306adde 24,24,15307mullw 15,19,28308adde 25,25,16309mullw 16,20,28310adde 26,26,17311mullw 17,21,28312313314315316317318319320321322addic 22,22,-1323mulhwu 14,18,28324adde 22,23,15325mulhwu 15,19,28326adde 23,24,16327mulhwu 16,20,28328adde 24,25,17329mulhwu 17,21,28330adde 25,26,3331addze 3,0332addc 22,22,14333adde 23,23,15334adde 24,24,16335adde 25,25,17336337bne .Loop_mul4x_1st_reduction338339.long 0x7c1e2040340beq .Lmul4x4_post_condition341342lwz 9,4*1(4)343lwz 10,4*2(4)344lwz 11,4*3(4)345lwzu 12,4*4(4)346lwz 28,4*8(1)347lwz 18,4*1(6)348lwz 19,4*2(6)349lwz 20,4*3(6)350lwzu 21,4*4(6)351b .Loop_mul4x_1st_tail352353.align 5354.Loop_mul4x_1st_tail:355mullw 14,9,27356addze 3,3357mullw 15,10,27358addi 31,31,4359mullw 16,11,27360andi. 31,31,4*4-1361mullw 17,12,27362addc 22,22,14363mulhwu 14,9,27364adde 23,23,15365mulhwu 15,10,27366adde 24,24,16367mulhwu 16,11,27368adde 25,25,17369mulhwu 17,12,27370addze 26,0371lwzx 27,5,31372addc 23,23,14373mullw 14,18,28374adde 24,24,15375mullw 15,19,28376adde 25,25,16377mullw 16,20,28378adde 26,26,17379mullw 17,21,28380addc 22,22,14381mulhwu 14,18,28382adde 23,23,15383mulhwu 15,19,28384adde 24,24,16385mulhwu 16,20,28386adde 25,25,17387adde 26,26,3388mulhwu 17,21,28389addze 3,0390addi 28,1,4*8391lwzx 28,28,31392stwu 22,4(29)393addc 22,23,14394adde 23,24,15395adde 24,25,16396adde 25,26,17397398bne .Loop_mul4x_1st_tail399400sub 15,30,8401.long 0x7c1e2040402beq .Lmul4x_proceed403404lwz 9,4*1(4)405lwz 10,4*2(4)406lwz 11,4*3(4)407lwzu 12,4*4(4)408lwz 18,4*1(6)409lwz 19,4*2(6)410lwz 20,4*3(6)411lwzu 21,4*4(6)412b .Loop_mul4x_1st_tail413414.align 5415.Lmul4x_proceed:416lwzu 27,4*4(5)417addze 3,3418lwz 9,4*1(15)419lwz 10,4*2(15)420lwz 11,4*3(15)421lwz 12,4*4(15)422addi 4,15,4*4423sub 6,6,8424425stw 22,4*1(29)426stw 23,4*2(29)427stw 24,4*3(29)428stw 25,4*4(29)429stw 3,4*5(29)430lwz 22,4*12(1)431lwz 23,4*13(1)432lwz 24,4*14(1)433lwz 25,4*15(1)434435lwz 18,4*1(6)436lwz 19,4*2(6)437lwz 20,4*3(6)438lwzu 21,4*4(6)439addic 29,1,4*7440li 3,0441b .Loop_mul4x_reduction442443.align 5444.Loop_mul4x_reduction:445mullw 14,9,27446addze 3,3447mullw 15,10,27448addi 31,31,4449mullw 16,11,27450andi. 31,31,4*4-1451mullw 17,12,27452addc 22,22,14453mulhwu 14,9,27454adde 23,23,15455mulhwu 15,10,27456adde 24,24,16457mullw 28,22,7458adde 25,25,17459mulhwu 16,11,27460addze 26,0461mulhwu 17,12,27462lwzx 27,5,31463addc 23,23,14464465stwu 28,4(29)466adde 24,24,15467mullw 15,19,28468adde 25,25,16469mullw 16,20,28470adde 26,26,17471mullw 17,21,28472473addic 22,22,-1474mulhwu 14,18,28475adde 22,23,15476mulhwu 15,19,28477adde 23,24,16478mulhwu 16,20,28479adde 24,25,17480mulhwu 17,21,28481adde 25,26,3482addze 3,0483addc 22,22,14484adde 23,23,15485adde 24,24,16486adde 25,25,17487488bne .Loop_mul4x_reduction489490lwz 14,4*5(29)491addze 3,3492lwz 15,4*6(29)493lwz 16,4*7(29)494lwz 17,4*8(29)495lwz 9,4*1(4)496lwz 10,4*2(4)497lwz 11,4*3(4)498lwzu 12,4*4(4)499addc 22,22,14500adde 23,23,15501adde 24,24,16502adde 25,25,17503504505lwz 28,4*8(1)506lwz 18,4*1(6)507lwz 19,4*2(6)508lwz 20,4*3(6)509lwzu 21,4*4(6)510b .Loop_mul4x_tail511512.align 5513.Loop_mul4x_tail:514mullw 14,9,27515addze 3,3516mullw 15,10,27517addi 31,31,4518mullw 16,11,27519andi. 31,31,4*4-1520mullw 17,12,27521addc 22,22,14522mulhwu 14,9,27523adde 23,23,15524mulhwu 15,10,27525adde 24,24,16526mulhwu 16,11,27527adde 25,25,17528mulhwu 17,12,27529addze 26,0530lwzx 27,5,31531addc 23,23,14532mullw 14,18,28533adde 24,24,15534mullw 15,19,28535adde 25,25,16536mullw 16,20,28537adde 26,26,17538mullw 17,21,28539addc 22,22,14540mulhwu 14,18,28541adde 23,23,15542mulhwu 15,19,28543adde 24,24,16544mulhwu 16,20,28545adde 25,25,17546mulhwu 17,21,28547adde 26,26,3548addi 28,1,4*8549lwzx 28,28,31550addze 3,0551stwu 22,4(29)552addc 22,23,14553adde 23,24,15554adde 24,25,16555adde 25,26,17556557bne .Loop_mul4x_tail558559lwz 14,4*5(29)560sub 15,6,8561addze 3,3562.long 0x7c1e2040563beq .Loop_mul4x_break564565lwz 15,4*6(29)566lwz 16,4*7(29)567lwz 17,4*8(29)568lwz 9,4*1(4)569lwz 10,4*2(4)570lwz 11,4*3(4)571lwzu 12,4*4(4)572addc 22,22,14573adde 23,23,15574adde 24,24,16575adde 25,25,17576577578lwz 18,4*1(6)579lwz 19,4*2(6)580lwz 20,4*3(6)581lwzu 21,4*4(6)582b .Loop_mul4x_tail583584.align 5585.Loop_mul4x_break:586lwz 16,4*6(1)587lwz 17,4*7(1)588addc 9,22,14589lwz 22,4*12(1)590addze 10,23591lwz 23,4*13(1)592addze 11,24593lwz 24,4*14(1)594addze 12,25595lwz 25,4*15(1)596addze 3,3597stw 9,4*1(29)598sub 4,30,8599stw 10,4*2(29)600stw 11,4*3(29)601stw 12,4*4(29)602stw 3,4*5(29)603604lwz 18,4*1(15)605lwz 19,4*2(15)606lwz 20,4*3(15)607lwz 21,4*4(15)608addi 6,15,4*4609.long 0x7c058840610beq .Lmul4x_post611612lwzu 27,4*4(5)613lwz 9,4*1(4)614lwz 10,4*2(4)615lwz 11,4*3(4)616lwzu 12,4*4(4)617li 3,0618addic 29,1,4*7619b .Loop_mul4x_reduction620621.align 5622.Lmul4x_post:623624625626627srwi 31,8,4628mr 5,16629subi 31,31,1630mr 30,16631subfc 14,18,22632addi 29,1,4*15633subfe 15,19,23634635mtctr 31636.Lmul4x_sub:637lwz 18,4*1(6)638lwz 22,4*1(29)639subfe 16,20,24640lwz 19,4*2(6)641lwz 23,4*2(29)642subfe 17,21,25643lwz 20,4*3(6)644lwz 24,4*3(29)645lwzu 21,4*4(6)646lwzu 25,4*4(29)647stw 14,4*1(5)648stw 15,4*2(5)649subfe 14,18,22650stw 16,4*3(5)651stwu 17,4*4(5)652subfe 15,19,23653bdnz .Lmul4x_sub654655lwz 9,4*1(30)656stw 14,4*1(5)657lwz 14,4*12(1)658subfe 16,20,24659lwz 10,4*2(30)660stw 15,4*2(5)661lwz 15,4*13(1)662subfe 17,21,25663subfe 3,0,3664addi 29,1,4*12665lwz 11,4*3(30)666stw 16,4*3(5)667lwz 16,4*14(1)668lwz 12,4*4(30)669stw 17,4*4(5)670lwz 17,4*15(1)671672mtctr 31673.Lmul4x_cond_copy:674and 14,14,3675andc 9,9,3676stw 0,4*0(29)677and 15,15,3678andc 10,10,3679stw 0,4*1(29)680and 16,16,3681andc 11,11,3682stw 0,4*2(29)683and 17,17,3684andc 12,12,3685stw 0,4*3(29)686or 22,14,9687lwz 9,4*5(30)688lwz 14,4*4(29)689or 23,15,10690lwz 10,4*6(30)691lwz 15,4*5(29)692or 24,16,11693lwz 11,4*7(30)694lwz 16,4*6(29)695or 25,17,12696lwz 12,4*8(30)697lwz 17,4*7(29)698addi 29,29,4*4699stw 22,4*1(30)700stw 23,4*2(30)701stw 24,4*3(30)702stwu 25,4*4(30)703bdnz .Lmul4x_cond_copy704705lwz 5,0(1)706and 14,14,3707andc 9,9,3708stw 0,4*0(29)709and 15,15,3710andc 10,10,3711stw 0,4*1(29)712and 16,16,3713andc 11,11,3714stw 0,4*2(29)715and 17,17,3716andc 12,12,3717stw 0,4*3(29)718or 22,14,9719or 23,15,10720stw 0,4*4(29)721or 24,16,11722or 25,17,12723stw 22,4*1(30)724stw 23,4*2(30)725stw 24,4*3(30)726stw 25,4*4(30)727728b .Lmul4x_done729730.align 4731.Lmul4x4_post_condition:732lwz 4,4*6(1)733lwz 5,0(1)734addze 3,3735736subfc 9,18,22737subfe 10,19,23738subfe 11,20,24739subfe 12,21,25740subfe 3,0,3741742and 18,18,3743and 19,19,3744addc 9,9,18745and 20,20,3746adde 10,10,19747and 21,21,3748adde 11,11,20749adde 12,12,21750751stw 9,4*1(4)752stw 10,4*2(4)753stw 11,4*3(4)754stw 12,4*4(4)755756.Lmul4x_done:757stw 0,4*8(1)758stw 0,4*9(1)759stw 0,4*10(1)760stw 0,4*11(1)761li 3,1762lwz 14,-4*18(5)763lwz 15,-4*17(5)764lwz 16,-4*16(5)765lwz 17,-4*15(5)766lwz 18,-4*14(5)767lwz 19,-4*13(5)768lwz 20,-4*12(5)769lwz 21,-4*11(5)770lwz 22,-4*10(5)771lwz 23,-4*9(5)772lwz 24,-4*8(5)773lwz 25,-4*7(5)774lwz 26,-4*6(5)775lwz 27,-4*5(5)776lwz 28,-4*4(5)777lwz 29,-4*3(5)778lwz 30,-4*2(5)779lwz 31,-4*1(5)780mr 1,5781blr782.long 0783.byte 0,12,4,0x20,0x80,18,6,0784.long 0785.size bn_mul4x_mont_int,.-bn_mul4x_mont_int786.align 5787__bn_sqr8x_mont:788.Lsqr8x_do:789mr 9,1790slwi 10,8,3791li 11,-32*4792sub 10,11,10793slwi 8,8,2794stwux 1,1,10795796stw 14,-4*18(9)797stw 15,-4*17(9)798stw 16,-4*16(9)799stw 17,-4*15(9)800stw 18,-4*14(9)801stw 19,-4*13(9)802stw 20,-4*12(9)803stw 21,-4*11(9)804stw 22,-4*10(9)805stw 23,-4*9(9)806stw 24,-4*8(9)807stw 25,-4*7(9)808stw 26,-4*6(9)809stw 27,-4*5(9)810stw 28,-4*4(9)811stw 29,-4*3(9)812stw 30,-4*2(9)813stw 31,-4*1(9)814815subi 4,4,4816subi 18,6,4817subi 3,3,4818lwz 7,0(7)819li 0,0820821add 6,4,8822lwz 9,4*1(4)823824lwz 10,4*2(4)825li 23,0826lwz 11,4*3(4)827li 24,0828lwz 12,4*4(4)829li 25,0830lwz 14,4*5(4)831li 26,0832lwz 15,4*6(4)833li 27,0834lwz 16,4*7(4)835li 28,0836lwzu 17,4*8(4)837li 29,0838839addi 5,1,4*11840subic. 30,8,4*8841b .Lsqr8x_zero_start842843.align 5844.Lsqr8x_zero:845subic. 30,30,4*8846stw 0,4*1(5)847stw 0,4*2(5)848stw 0,4*3(5)849stw 0,4*4(5)850stw 0,4*5(5)851stw 0,4*6(5)852stw 0,4*7(5)853stw 0,4*8(5)854.Lsqr8x_zero_start:855stw 0,4*9(5)856stw 0,4*10(5)857stw 0,4*11(5)858stw 0,4*12(5)859stw 0,4*13(5)860stw 0,4*14(5)861stw 0,4*15(5)862stwu 0,4*16(5)863bne .Lsqr8x_zero864865stw 3,4*6(1)866stw 18,4*7(1)867stw 7,4*8(1)868stw 5,4*9(1)869stw 0,4*10(1)870addi 5,1,4*11871872873.align 5874.Lsqr8x_outer_loop:875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904mullw 18,10,9905mullw 19,11,9906mullw 20,12,9907mullw 21,14,9908addc 23,23,18909mullw 18,15,9910adde 24,24,19911mullw 19,16,9912adde 25,25,20913mullw 20,17,9914adde 26,26,21915mulhwu 21,10,9916adde 27,27,18917mulhwu 18,11,9918adde 28,28,19919mulhwu 19,12,9920adde 29,29,20921mulhwu 20,14,9922stw 22,4*1(5)923addze 22,0924stw 23,4*2(5)925addc 24,24,21926mulhwu 21,15,9927adde 25,25,18928mulhwu 18,16,9929adde 26,26,19930mulhwu 19,17,9931adde 27,27,20932mullw 20,11,10933adde 28,28,21934mullw 21,12,10935adde 29,29,18936mullw 18,14,10937adde 22,22,19938939mullw 19,15,10940addc 25,25,20941mullw 20,16,10942adde 26,26,21943mullw 21,17,10944adde 27,27,18945mulhwu 18,11,10946adde 28,28,19947mulhwu 19,12,10948adde 29,29,20949mulhwu 20,14,10950adde 22,22,21951mulhwu 21,15,10952stw 24,4*3(5)953addze 23,0954stw 25,4*4(5)955addc 26,26,18956mulhwu 18,16,10957adde 27,27,19958mulhwu 19,17,10959adde 28,28,20960mullw 20,12,11961adde 29,29,21962mullw 21,14,11963adde 22,22,18964mullw 18,15,11965adde 23,23,19966967mullw 19,16,11968addc 27,27,20969mullw 20,17,11970adde 28,28,21971mulhwu 21,12,11972adde 29,29,18973mulhwu 18,14,11974adde 22,22,19975mulhwu 19,15,11976adde 23,23,20977mulhwu 20,16,11978stw 26,4*5(5)979addze 24,0980stw 27,4*6(5)981addc 28,28,21982mulhwu 21,17,11983adde 29,29,18984mullw 18,14,12985adde 22,22,19986mullw 19,15,12987adde 23,23,20988mullw 20,16,12989adde 24,24,21990991mullw 21,17,12992addc 29,29,18993mulhwu 18,14,12994adde 22,22,19995mulhwu 19,15,12996adde 23,23,20997mulhwu 20,16,12998adde 24,24,21999mulhwu 21,17,121000stw 28,4*7(5)1001addze 25,01002stwu 29,4*8(5)1003addc 22,22,181004mullw 18,15,141005adde 23,23,191006mullw 19,16,141007adde 24,24,201008mullw 20,17,141009adde 25,25,2110101011mulhwu 21,15,141012addc 23,23,181013mulhwu 18,16,141014adde 24,24,191015mulhwu 19,17,141016adde 25,25,201017mullw 20,16,151018addze 26,01019addc 24,24,211020mullw 21,17,151021adde 25,25,181022mulhwu 18,16,151023adde 26,26,1910241025mulhwu 19,17,151026addc 25,25,201027mullw 20,17,161028adde 26,26,211029mulhwu 21,17,161030addze 27,01031addc 26,26,181032.long 0x7c0620401033adde 27,27,1910341035addc 27,27,201036sub 18,6,81037addze 28,01038add 28,28,2110391040beq .Lsqr8x_outer_break10411042mr 7,91043lwz 9,4*1(5)1044lwz 10,4*2(5)1045lwz 11,4*3(5)1046lwz 12,4*4(5)1047lwz 14,4*5(5)1048lwz 15,4*6(5)1049lwz 16,4*7(5)1050lwz 17,4*8(5)1051addc 22,22,91052lwz 9,4*1(4)1053adde 23,23,101054lwz 10,4*2(4)1055adde 24,24,111056lwz 11,4*3(4)1057adde 25,25,121058lwz 12,4*4(4)1059adde 26,26,141060lwz 14,4*5(4)1061adde 27,27,151062lwz 15,4*6(4)1063adde 28,28,161064lwz 16,4*7(4)1065subi 3,4,4*71066addze 29,171067lwzu 17,4*8(4)10681069li 30,01070b .Lsqr8x_mul107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094.align 51095.Lsqr8x_mul:1096mullw 18,9,71097addze 31,01098mullw 19,10,71099addi 30,30,41100mullw 20,11,71101andi. 30,30,4*8-11102mullw 21,12,71103addc 22,22,181104mullw 18,14,71105adde 23,23,191106mullw 19,15,71107adde 24,24,201108mullw 20,16,71109adde 25,25,211110mullw 21,17,71111adde 26,26,181112mulhwu 18,9,71113adde 27,27,191114mulhwu 19,10,71115adde 28,28,201116mulhwu 20,11,71117adde 29,29,211118mulhwu 21,12,71119addze 31,311120stwu 22,4(5)1121addc 22,23,181122mulhwu 18,14,71123adde 23,24,191124mulhwu 19,15,71125adde 24,25,201126mulhwu 20,16,71127adde 25,26,211128mulhwu 21,17,71129lwzx 7,3,301130adde 26,27,181131adde 27,28,191132adde 28,29,201133adde 29,31,2111341135bne .Lsqr8x_mul113611371138.long 0x7c0430401139beq .Lsqr8x_break11401141lwz 9,4*1(5)1142lwz 10,4*2(5)1143lwz 11,4*3(5)1144lwz 12,4*4(5)1145lwz 14,4*5(5)1146lwz 15,4*6(5)1147lwz 16,4*7(5)1148lwz 17,4*8(5)1149addc 22,22,91150lwz 9,4*1(4)1151adde 23,23,101152lwz 10,4*2(4)1153adde 24,24,111154lwz 11,4*3(4)1155adde 25,25,121156lwz 12,4*4(4)1157adde 26,26,141158lwz 14,4*5(4)1159adde 27,27,151160lwz 15,4*6(4)1161adde 28,28,161162lwz 16,4*7(4)1163adde 29,29,171164lwzu 17,4*8(4)11651166b .Lsqr8x_mul11671168.align 51169.Lsqr8x_break:1170lwz 9,4*8(3)1171addi 4,3,4*151172lwz 10,4*9(3)1173sub. 18,6,41174lwz 11,4*10(3)1175sub 19,5,181176lwz 12,4*11(3)1177lwz 14,4*12(3)1178lwz 15,4*13(3)1179lwz 16,4*14(3)1180lwz 17,4*15(3)1181beq .Lsqr8x_outer_loop11821183stw 22,4*1(5)1184lwz 22,4*1(19)1185stw 23,4*2(5)1186lwz 23,4*2(19)1187stw 24,4*3(5)1188lwz 24,4*3(19)1189stw 25,4*4(5)1190lwz 25,4*4(19)1191stw 26,4*5(5)1192lwz 26,4*5(19)1193stw 27,4*6(5)1194lwz 27,4*6(19)1195stw 28,4*7(5)1196lwz 28,4*7(19)1197stw 29,4*8(5)1198lwz 29,4*8(19)1199mr 5,191200b .Lsqr8x_outer_loop12011202.align 51203.Lsqr8x_outer_break:120412051206lwz 10,4*1(18)1207lwz 12,4*2(18)1208lwz 15,4*3(18)1209lwz 17,4*4(18)1210addi 4,18,4*412111212lwz 19,4*13(1)1213lwz 20,4*14(1)1214lwz 21,4*15(1)1215lwz 18,4*16(1)12161217stw 22,4*1(5)1218srwi 30,8,41219stw 23,4*2(5)1220subi 30,30,11221stw 24,4*3(5)1222stw 25,4*4(5)1223stw 26,4*5(5)1224stw 27,4*6(5)1225stw 28,4*7(5)12261227addi 5,1,4*111228mullw 22,10,101229mulhwu 10,10,101230add 23,19,191231srwi 19,19,32-11232mullw 11,12,121233mulhwu 12,12,121234addc 23,23,101235add 24,20,201236srwi 20,20,32-11237add 25,21,211238srwi 21,21,32-11239or 24,24,1912401241mtctr 301242.Lsqr4x_shift_n_add:1243mullw 14,15,151244mulhwu 15,15,151245lwz 19,4*6(5)1246lwz 10,4*1(4)1247adde 24,24,111248add 26,18,181249srwi 18,18,32-11250or 25,25,201251lwz 20,4*7(5)1252adde 25,25,121253lwz 12,4*2(4)1254add 27,19,191255srwi 19,19,32-11256or 26,26,211257lwz 21,4*8(5)1258mullw 16,17,171259mulhwu 17,17,171260adde 26,26,141261add 28,20,201262srwi 20,20,32-11263or 27,27,181264lwz 18,4*9(5)1265adde 27,27,151266lwz 15,4*3(4)1267add 29,21,211268srwi 21,21,32-11269or 28,28,191270lwz 19,4*10(5)1271mullw 9,10,101272mulhwu 10,10,101273adde 28,28,161274stw 22,4*1(5)1275add 22,18,181276srwi 18,18,32-11277or 29,29,201278lwz 20,4*11(5)1279adde 29,29,171280lwzu 17,4*4(4)1281stw 23,4*2(5)1282add 23,19,191283srwi 19,19,32-11284or 22,22,211285lwz 21,4*12(5)1286mullw 11,12,121287mulhwu 12,12,121288adde 22,22,91289stw 24,4*3(5)1290add 24,20,201291srwi 20,20,32-11292or 23,23,181293lwz 18,4*13(5)1294adde 23,23,101295stw 25,4*4(5)1296stw 26,4*5(5)1297stw 27,4*6(5)1298stw 28,4*7(5)1299stwu 29,4*8(5)1300add 25,21,211301srwi 21,21,32-11302or 24,24,191303bdnz .Lsqr4x_shift_n_add1304lwz 4,4*7(1)1305lwz 7,4*8(1)13061307mullw 14,15,151308mulhwu 15,15,151309stw 22,4*1(5)1310lwz 22,4*12(1)1311lwz 19,4*6(5)1312adde 24,24,111313add 26,18,181314srwi 18,18,32-11315or 25,25,201316lwz 20,4*7(5)1317adde 25,25,121318add 27,19,191319srwi 19,19,32-11320or 26,26,211321mullw 16,17,171322mulhwu 17,17,171323adde 26,26,141324add 28,20,201325srwi 20,20,32-11326or 27,27,181327stw 23,4*2(5)1328lwz 23,4*13(1)1329adde 27,27,151330or 28,28,191331lwz 9,4*1(4)1332lwz 10,4*2(4)1333adde 28,28,161334lwz 11,4*3(4)1335lwz 12,4*4(4)1336adde 29,17,201337lwz 14,4*5(4)1338lwz 15,4*6(4)1339134013411342mullw 31,7,221343li 30,81344lwz 16,4*7(4)1345add 6,4,81346lwzu 17,4*8(4)1347stw 24,4*3(5)1348lwz 24,4*14(1)1349stw 25,4*4(5)1350lwz 25,4*15(1)1351stw 26,4*5(5)1352lwz 26,4*16(1)1353stw 27,4*6(5)1354lwz 27,4*17(1)1355stw 28,4*7(5)1356lwz 28,4*18(1)1357stw 29,4*8(5)1358lwz 29,4*19(1)1359addi 5,1,4*111360mtctr 301361b .Lsqr8x_reduction13621363.align 51364.Lsqr8x_reduction:13651366mullw 19,10,311367mullw 20,11,311368stwu 31,4(5)1369mullw 21,12,3113701371addic 22,22,-11372mullw 18,14,311373adde 22,23,191374mullw 19,15,311375adde 23,24,201376mullw 20,16,311377adde 24,25,211378mullw 21,17,311379adde 25,26,181380mulhwu 18,9,311381adde 26,27,191382mulhwu 19,10,311383adde 27,28,201384mulhwu 20,11,311385adde 28,29,211386mulhwu 21,12,311387addze 29,01388addc 22,22,181389mulhwu 18,14,311390adde 23,23,191391mulhwu 19,15,311392adde 24,24,201393mulhwu 20,16,311394adde 25,25,211395mulhwu 21,17,311396mullw 31,7,221397adde 26,26,181398adde 27,27,191399adde 28,28,201400adde 29,29,211401bdnz .Lsqr8x_reduction14021403lwz 18,4*1(5)1404lwz 19,4*2(5)1405lwz 20,4*3(5)1406lwz 21,4*4(5)1407subi 3,5,4*71408.long 0x7c0620401409addc 22,22,181410lwz 18,4*5(5)1411adde 23,23,191412lwz 19,4*6(5)1413adde 24,24,201414lwz 20,4*7(5)1415adde 25,25,211416lwz 21,4*8(5)1417adde 26,26,181418adde 27,27,191419adde 28,28,201420adde 29,29,2114211422beq .Lsqr8x8_post_condition14231424lwz 7,4*0(3)1425lwz 9,4*1(4)1426lwz 10,4*2(4)1427lwz 11,4*3(4)1428lwz 12,4*4(4)1429lwz 14,4*5(4)1430lwz 15,4*6(4)1431lwz 16,4*7(4)1432lwzu 17,4*8(4)1433li 30,014341435.align 51436.Lsqr8x_tail:1437mullw 18,9,71438addze 31,01439mullw 19,10,71440addi 30,30,41441mullw 20,11,71442andi. 30,30,4*8-11443mullw 21,12,71444addc 22,22,181445mullw 18,14,71446adde 23,23,191447mullw 19,15,71448adde 24,24,201449mullw 20,16,71450adde 25,25,211451mullw 21,17,71452adde 26,26,181453mulhwu 18,9,71454adde 27,27,191455mulhwu 19,10,71456adde 28,28,201457mulhwu 20,11,71458adde 29,29,211459mulhwu 21,12,71460addze 31,311461stwu 22,4(5)1462addc 22,23,181463mulhwu 18,14,71464adde 23,24,191465mulhwu 19,15,71466adde 24,25,201467mulhwu 20,16,71468adde 25,26,211469mulhwu 21,17,71470lwzx 7,3,301471adde 26,27,181472adde 27,28,191473adde 28,29,201474adde 29,31,2114751476bne .Lsqr8x_tail147714781479lwz 9,4*1(5)1480lwz 31,4*10(1)1481.long 0x7c0620401482lwz 10,4*2(5)1483sub 20,6,81484lwz 11,4*3(5)1485lwz 12,4*4(5)1486lwz 14,4*5(5)1487lwz 15,4*6(5)1488lwz 16,4*7(5)1489lwz 17,4*8(5)1490beq .Lsqr8x_tail_break14911492addc 22,22,91493lwz 9,4*1(4)1494adde 23,23,101495lwz 10,4*2(4)1496adde 24,24,111497lwz 11,4*3(4)1498adde 25,25,121499lwz 12,4*4(4)1500adde 26,26,141501lwz 14,4*5(4)1502adde 27,27,151503lwz 15,4*6(4)1504adde 28,28,161505lwz 16,4*7(4)1506adde 29,29,171507lwzu 17,4*8(4)15081509b .Lsqr8x_tail15101511.align 51512.Lsqr8x_tail_break:1513lwz 7,4*8(1)1514lwz 21,4*9(1)1515addi 30,5,4*815161517addic 31,31,-11518adde 18,22,91519lwz 22,4*8(3)1520lwz 9,4*1(20)1521adde 19,23,101522lwz 23,4*9(3)1523lwz 10,4*2(20)1524adde 24,24,111525lwz 11,4*3(20)1526adde 25,25,121527lwz 12,4*4(20)1528adde 26,26,141529lwz 14,4*5(20)1530adde 27,27,151531lwz 15,4*6(20)1532adde 28,28,161533lwz 16,4*7(20)1534adde 29,29,171535lwz 17,4*8(20)1536addi 4,20,4*81537addze 20,01538mullw 31,7,221539stw 18,4*1(5)1540.long 0x7c1ea8401541stw 19,4*2(5)1542li 30,81543stw 24,4*3(5)1544lwz 24,4*10(3)1545stw 25,4*4(5)1546lwz 25,4*11(3)1547stw 26,4*5(5)1548lwz 26,4*12(3)1549stw 27,4*6(5)1550lwz 27,4*13(3)1551stw 28,4*7(5)1552lwz 28,4*14(3)1553stw 29,4*8(5)1554lwz 29,4*15(3)1555stw 20,4*10(1)1556addi 5,3,4*71557mtctr 301558bne .Lsqr8x_reduction1559156015611562156315641565lwz 3,4*6(1)1566srwi 30,8,51567mr 7,51568addi 5,5,4*81569subi 30,30,11570subfc 18,9,221571subfe 19,10,231572mr 31,201573mr 6,315741575mtctr 301576b .Lsqr8x_sub15771578.align 51579.Lsqr8x_sub:1580lwz 9,4*1(4)1581lwz 22,4*1(5)1582lwz 10,4*2(4)1583lwz 23,4*2(5)1584subfe 20,11,241585lwz 11,4*3(4)1586lwz 24,4*3(5)1587subfe 21,12,251588lwz 12,4*4(4)1589lwz 25,4*4(5)1590stw 18,4*1(3)1591subfe 18,14,261592lwz 14,4*5(4)1593lwz 26,4*5(5)1594stw 19,4*2(3)1595subfe 19,15,271596lwz 15,4*6(4)1597lwz 27,4*6(5)1598stw 20,4*3(3)1599subfe 20,16,281600lwz 16,4*7(4)1601lwz 28,4*7(5)1602stw 21,4*4(3)1603subfe 21,17,291604lwzu 17,4*8(4)1605lwzu 29,4*8(5)1606stw 18,4*5(3)1607subfe 18,9,221608stw 19,4*6(3)1609subfe 19,10,231610stw 20,4*7(3)1611stwu 21,4*8(3)1612bdnz .Lsqr8x_sub16131614srwi 30,8,41615lwz 9,4*1(6)1616lwz 22,4*1(7)1617subi 30,30,11618lwz 10,4*2(6)1619lwz 23,4*2(7)1620subfe 20,11,241621lwz 11,4*3(6)1622lwz 24,4*3(7)1623subfe 21,12,251624lwz 12,4*4(6)1625lwzu 25,4*4(7)1626stw 18,4*1(3)1627subfe 18,14,261628stw 19,4*2(3)1629subfe 19,15,271630stw 20,4*3(3)1631subfe 20,16,281632stw 21,4*4(3)1633subfe 21,17,291634stw 18,4*5(3)1635subfe 31,0,311636stw 19,4*6(3)1637stw 20,4*7(3)1638stw 21,4*8(3)16391640addi 5,1,4*111641mtctr 3016421643.Lsqr4x_cond_copy:1644andc 9,9,311645stw 0,-4*3(7)1646and 22,22,311647stw 0,-4*2(7)1648andc 10,10,311649stw 0,-4*1(7)1650and 23,23,311651stw 0,-4*0(7)1652andc 11,11,311653stw 0,4*1(5)1654and 24,24,311655stw 0,4*2(5)1656andc 12,12,311657stw 0,4*3(5)1658and 25,25,311659stwu 0,4*4(5)1660or 18,9,221661lwz 9,4*5(6)1662lwz 22,4*1(7)1663or 19,10,231664lwz 10,4*6(6)1665lwz 23,4*2(7)1666or 20,11,241667lwz 11,4*7(6)1668lwz 24,4*3(7)1669or 21,12,251670lwz 12,4*8(6)1671lwzu 25,4*4(7)1672stw 18,4*1(6)1673stw 19,4*2(6)1674stw 20,4*3(6)1675stwu 21,4*4(6)1676bdnz .Lsqr4x_cond_copy16771678lwz 4,0(1)1679andc 9,9,311680and 22,22,311681andc 10,10,311682and 23,23,311683andc 11,11,311684and 24,24,311685andc 12,12,311686and 25,25,311687or 18,9,221688or 19,10,231689or 20,11,241690or 21,12,251691stw 18,4*1(6)1692stw 19,4*2(6)1693stw 20,4*3(6)1694stw 21,4*4(6)16951696b .Lsqr8x_done16971698.align 51699.Lsqr8x8_post_condition:1700lwz 3,4*6(1)1701lwz 4,0(1)1702addze 31,0170317041705subfc 22,9,221706subfe 23,10,231707stw 0,4*12(1)1708stw 0,4*13(1)1709subfe 24,11,241710stw 0,4*14(1)1711stw 0,4*15(1)1712subfe 25,12,251713stw 0,4*16(1)1714stw 0,4*17(1)1715subfe 26,14,261716stw 0,4*18(1)1717stw 0,4*19(1)1718subfe 27,15,271719stw 0,4*20(1)1720stw 0,4*21(1)1721subfe 28,16,281722stw 0,4*22(1)1723stw 0,4*23(1)1724subfe 29,17,291725stw 0,4*24(1)1726stw 0,4*25(1)1727subfe 31,0,311728stw 0,4*26(1)1729stw 0,4*27(1)17301731and 9,9,311732and 10,10,311733addc 22,22,91734and 11,11,311735adde 23,23,101736and 12,12,311737adde 24,24,111738and 14,14,311739adde 25,25,121740and 15,15,311741adde 26,26,141742and 16,16,311743adde 27,27,151744and 17,17,311745adde 28,28,161746adde 29,29,171747stw 22,4*1(3)1748stw 23,4*2(3)1749stw 24,4*3(3)1750stw 25,4*4(3)1751stw 26,4*5(3)1752stw 27,4*6(3)1753stw 28,4*7(3)1754stw 29,4*8(3)17551756.Lsqr8x_done:1757stw 0,4*8(1)1758stw 0,4*10(1)17591760lwz 14,-4*18(4)1761li 3,11762lwz 15,-4*17(4)1763lwz 16,-4*16(4)1764lwz 17,-4*15(4)1765lwz 18,-4*14(4)1766lwz 19,-4*13(4)1767lwz 20,-4*12(4)1768lwz 21,-4*11(4)1769lwz 22,-4*10(4)1770lwz 23,-4*9(4)1771lwz 24,-4*8(4)1772lwz 25,-4*7(4)1773lwz 26,-4*6(4)1774lwz 27,-4*5(4)1775lwz 28,-4*4(4)1776lwz 29,-4*3(4)1777lwz 30,-4*2(4)1778lwz 31,-4*1(4)1779mr 1,41780blr1781.long 01782.byte 0,12,4,0x20,0x80,18,6,01783.long 01784.size __bn_sqr8x_mont,.-__bn_sqr8x_mont1785.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,01786.align 2178717881789