Path: blob/main/sys/crypto/openssl/powerpc64/ppc-mont.S
39482 views
/* Do not modify. This file is auto-generated from ppc-mont.pl. */1.machine "any"2.abiversion 23.text45.globl bn_mul_mont_int6.type bn_mul_mont_int,@function7.align 58bn_mul_mont_int:9.localentry bn_mul_mont_int,01011mr 9,312li 3,013slwi 8,8,314li 12,-409615addi 3,8,35216subf 3,3,117and 3,3,1218subf 3,1,319mr 12,120srwi 8,8,321stdux 1,1,32223std 20,-96(12)24std 21,-88(12)25std 22,-80(12)26std 23,-72(12)27std 24,-64(12)28std 25,-56(12)29std 26,-48(12)30std 27,-40(12)31std 28,-32(12)32std 29,-24(12)33std 30,-16(12)34std 31,-8(12)3536ld 7,0(7)37addi 8,8,-23839ld 23,0(5)40ld 10,0(4)41addi 22,1,6442mulld 25,10,2343mulhdu 26,10,234445ld 10,8(4)46ld 11,0(6)4748mulld 24,25,74950mulld 29,10,2351mulhdu 30,10,235253mulld 27,11,2454mulhdu 28,11,2455ld 11,8(6)56addc 27,27,2557addze 28,285859mulld 31,11,2460mulhdu 0,11,246162mtctr 863li 21,1664.align 465.L1st:66ldx 10,4,2167addc 25,29,2668ldx 11,6,2169addze 26,3070mulld 29,10,2371addc 27,31,2872mulhdu 30,10,2373addze 28,074mulld 31,11,2475addc 27,27,2576mulhdu 0,11,2477addze 28,2878std 27,0(22)7980addi 21,21,881addi 22,22,882bdnz .L1st8384addc 25,29,2685addze 26,308687addc 27,31,2888addze 28,089addc 27,27,2590addze 28,2891std 27,0(22)9293li 3,094addc 28,28,2695addze 3,396std 28,8(22)9798li 20,899.align 4100.Louter:101ldx 23,5,20102ld 10,0(4)103addi 22,1,64104ld 12,64(1)105mulld 25,10,23106mulhdu 26,10,23107ld 10,8(4)108ld 11,0(6)109addc 25,25,12110mulld 29,10,23111addze 26,26112mulld 24,25,7113mulhdu 30,10,23114mulld 27,11,24115mulhdu 28,11,24116ld 11,8(6)117addc 27,27,25118mulld 31,11,24119addze 28,28120mulhdu 0,11,24121122mtctr 8123li 21,16124.align 4125.Linner:126ldx 10,4,21127addc 25,29,26128ld 12,8(22)129addze 26,30130ldx 11,6,21131addc 27,31,28132mulld 29,10,23133addze 28,0134mulhdu 30,10,23135addc 25,25,12136mulld 31,11,24137addze 26,26138mulhdu 0,11,24139addc 27,27,25140addi 21,21,8141addze 28,28142std 27,0(22)143addi 22,22,8144bdnz .Linner145146ld 12,8(22)147addc 25,29,26148addze 26,30149addc 25,25,12150addze 26,26151152addc 27,31,28153addze 28,0154addc 27,27,25155addze 28,28156std 27,0(22)157158addic 3,3,-1159li 3,0160adde 28,28,26161addze 3,3162std 28,8(22)163164slwi 12,8,3165cmpld 20,12166addi 20,20,8167ble .Louter168169addi 8,8,2170subfc 21,21,21171addi 22,1,64172mtctr 8173174.align 4175.Lsub: ldx 12,22,21176ldx 11,6,21177subfe 10,11,12178stdx 10,9,21179addi 21,21,8180bdnz .Lsub181182li 21,0183mtctr 8184subfe 3,21,3185186.align 4187.Lcopy:188ldx 12,22,21189ldx 10,9,21190and 12,12,3191andc 10,10,3192stdx 21,22,21193or 10,10,12194stdx 10,9,21195addi 21,21,8196bdnz .Lcopy197198ld 12,0(1)199li 3,1200ld 20,-96(12)201ld 21,-88(12)202ld 22,-80(12)203ld 23,-72(12)204ld 24,-64(12)205ld 25,-56(12)206ld 26,-48(12)207ld 27,-40(12)208ld 28,-32(12)209ld 29,-24(12)210ld 30,-16(12)211ld 31,-8(12)212mr 1,12213blr214.long 0215.byte 0,12,4,0,0x80,12,6,0216.long 0217.size bn_mul_mont_int,.-bn_mul_mont_int218.globl bn_mul4x_mont_int219.type bn_mul4x_mont_int,@function220.align 5221bn_mul4x_mont_int:222.localentry bn_mul4x_mont_int,0223224andi. 0,8,7225bne .Lmul4x_do226cmpld 4,5227bne .Lmul4x_do228b .Lsqr8x_do229.Lmul4x_do:230slwi 8,8,3231mr 9,1232li 10,-32*8233sub 10,10,8234stdux 1,1,10235236std 14,-8*18(9)237std 15,-8*17(9)238std 16,-8*16(9)239std 17,-8*15(9)240std 18,-8*14(9)241std 19,-8*13(9)242std 20,-8*12(9)243std 21,-8*11(9)244std 22,-8*10(9)245std 23,-8*9(9)246std 24,-8*8(9)247std 25,-8*7(9)248std 26,-8*6(9)249std 27,-8*5(9)250std 28,-8*4(9)251std 29,-8*3(9)252std 30,-8*2(9)253std 31,-8*1(9)254255subi 4,4,8256subi 6,6,8257subi 3,3,8258ld 7,0(7)259260add 14,5,8261add 30,4,8262subi 14,14,8*4263264ld 27,8*0(5)265li 22,0266ld 9,8*1(4)267li 23,0268ld 10,8*2(4)269li 24,0270ld 11,8*3(4)271li 25,0272ldu 12,8*4(4)273ld 18,8*1(6)274ld 19,8*2(6)275ld 20,8*3(6)276ldu 21,8*4(6)277278std 3,8*6(1)279std 14,8*7(1)280li 3,0281addic 29,1,8*7282li 31,0283li 0,0284b .Loop_mul4x_1st_reduction285286.align 5287.Loop_mul4x_1st_reduction:288mulld 14,9,27289addze 3,3290mulld 15,10,27291addi 31,31,8292mulld 16,11,27293andi. 31,31,8*4-1294mulld 17,12,27295addc 22,22,14296mulhdu 14,9,27297adde 23,23,15298mulhdu 15,10,27299adde 24,24,16300mulld 28,22,7301adde 25,25,17302mulhdu 16,11,27303addze 26,0304mulhdu 17,12,27305ldx 27,5,31306addc 23,23,14307308stdu 28,8(29)309adde 24,24,15310mulld 15,19,28311adde 25,25,16312mulld 16,20,28313adde 26,26,17314mulld 17,21,28315316317318319320321322323324325addic 22,22,-1326mulhdu 14,18,28327adde 22,23,15328mulhdu 15,19,28329adde 23,24,16330mulhdu 16,20,28331adde 24,25,17332mulhdu 17,21,28333adde 25,26,3334addze 3,0335addc 22,22,14336adde 23,23,15337adde 24,24,16338adde 25,25,17339340bne .Loop_mul4x_1st_reduction341342cmpld 30,4343beq .Lmul4x4_post_condition344345ld 9,8*1(4)346ld 10,8*2(4)347ld 11,8*3(4)348ldu 12,8*4(4)349ld 28,8*8(1)350ld 18,8*1(6)351ld 19,8*2(6)352ld 20,8*3(6)353ldu 21,8*4(6)354b .Loop_mul4x_1st_tail355356.align 5357.Loop_mul4x_1st_tail:358mulld 14,9,27359addze 3,3360mulld 15,10,27361addi 31,31,8362mulld 16,11,27363andi. 31,31,8*4-1364mulld 17,12,27365addc 22,22,14366mulhdu 14,9,27367adde 23,23,15368mulhdu 15,10,27369adde 24,24,16370mulhdu 16,11,27371adde 25,25,17372mulhdu 17,12,27373addze 26,0374ldx 27,5,31375addc 23,23,14376mulld 14,18,28377adde 24,24,15378mulld 15,19,28379adde 25,25,16380mulld 16,20,28381adde 26,26,17382mulld 17,21,28383addc 22,22,14384mulhdu 14,18,28385adde 23,23,15386mulhdu 15,19,28387adde 24,24,16388mulhdu 16,20,28389adde 25,25,17390adde 26,26,3391mulhdu 17,21,28392addze 3,0393addi 28,1,8*8394ldx 28,28,31395stdu 22,8(29)396addc 22,23,14397adde 23,24,15398adde 24,25,16399adde 25,26,17400401bne .Loop_mul4x_1st_tail402403sub 15,30,8404cmpld 30,4405beq .Lmul4x_proceed406407ld 9,8*1(4)408ld 10,8*2(4)409ld 11,8*3(4)410ldu 12,8*4(4)411ld 18,8*1(6)412ld 19,8*2(6)413ld 20,8*3(6)414ldu 21,8*4(6)415b .Loop_mul4x_1st_tail416417.align 5418.Lmul4x_proceed:419ldu 27,8*4(5)420addze 3,3421ld 9,8*1(15)422ld 10,8*2(15)423ld 11,8*3(15)424ld 12,8*4(15)425addi 4,15,8*4426sub 6,6,8427428std 22,8*1(29)429std 23,8*2(29)430std 24,8*3(29)431std 25,8*4(29)432std 3,8*5(29)433ld 22,8*12(1)434ld 23,8*13(1)435ld 24,8*14(1)436ld 25,8*15(1)437438ld 18,8*1(6)439ld 19,8*2(6)440ld 20,8*3(6)441ldu 21,8*4(6)442addic 29,1,8*7443li 3,0444b .Loop_mul4x_reduction445446.align 5447.Loop_mul4x_reduction:448mulld 14,9,27449addze 3,3450mulld 15,10,27451addi 31,31,8452mulld 16,11,27453andi. 31,31,8*4-1454mulld 17,12,27455addc 22,22,14456mulhdu 14,9,27457adde 23,23,15458mulhdu 15,10,27459adde 24,24,16460mulld 28,22,7461adde 25,25,17462mulhdu 16,11,27463addze 26,0464mulhdu 17,12,27465ldx 27,5,31466addc 23,23,14467468stdu 28,8(29)469adde 24,24,15470mulld 15,19,28471adde 25,25,16472mulld 16,20,28473adde 26,26,17474mulld 17,21,28475476addic 22,22,-1477mulhdu 14,18,28478adde 22,23,15479mulhdu 15,19,28480adde 23,24,16481mulhdu 16,20,28482adde 24,25,17483mulhdu 17,21,28484adde 25,26,3485addze 3,0486addc 22,22,14487adde 23,23,15488adde 24,24,16489adde 25,25,17490491bne .Loop_mul4x_reduction492493ld 14,8*5(29)494addze 3,3495ld 15,8*6(29)496ld 16,8*7(29)497ld 17,8*8(29)498ld 9,8*1(4)499ld 10,8*2(4)500ld 11,8*3(4)501ldu 12,8*4(4)502addc 22,22,14503adde 23,23,15504adde 24,24,16505adde 25,25,17506507508ld 28,8*8(1)509ld 18,8*1(6)510ld 19,8*2(6)511ld 20,8*3(6)512ldu 21,8*4(6)513b .Loop_mul4x_tail514515.align 5516.Loop_mul4x_tail:517mulld 14,9,27518addze 3,3519mulld 15,10,27520addi 31,31,8521mulld 16,11,27522andi. 31,31,8*4-1523mulld 17,12,27524addc 22,22,14525mulhdu 14,9,27526adde 23,23,15527mulhdu 15,10,27528adde 24,24,16529mulhdu 16,11,27530adde 25,25,17531mulhdu 17,12,27532addze 26,0533ldx 27,5,31534addc 23,23,14535mulld 14,18,28536adde 24,24,15537mulld 15,19,28538adde 25,25,16539mulld 16,20,28540adde 26,26,17541mulld 17,21,28542addc 22,22,14543mulhdu 14,18,28544adde 23,23,15545mulhdu 15,19,28546adde 24,24,16547mulhdu 16,20,28548adde 25,25,17549mulhdu 17,21,28550adde 26,26,3551addi 28,1,8*8552ldx 28,28,31553addze 3,0554stdu 22,8(29)555addc 22,23,14556adde 23,24,15557adde 24,25,16558adde 25,26,17559560bne .Loop_mul4x_tail561562ld 14,8*5(29)563sub 15,6,8564addze 3,3565cmpld 30,4566beq .Loop_mul4x_break567568ld 15,8*6(29)569ld 16,8*7(29)570ld 17,8*8(29)571ld 9,8*1(4)572ld 10,8*2(4)573ld 11,8*3(4)574ldu 12,8*4(4)575addc 22,22,14576adde 23,23,15577adde 24,24,16578adde 25,25,17579580581ld 18,8*1(6)582ld 19,8*2(6)583ld 20,8*3(6)584ldu 21,8*4(6)585b .Loop_mul4x_tail586587.align 5588.Loop_mul4x_break:589ld 16,8*6(1)590ld 17,8*7(1)591addc 9,22,14592ld 22,8*12(1)593addze 10,23594ld 23,8*13(1)595addze 11,24596ld 24,8*14(1)597addze 12,25598ld 25,8*15(1)599addze 3,3600std 9,8*1(29)601sub 4,30,8602std 10,8*2(29)603std 11,8*3(29)604std 12,8*4(29)605std 3,8*5(29)606607ld 18,8*1(15)608ld 19,8*2(15)609ld 20,8*3(15)610ld 21,8*4(15)611addi 6,15,8*4612cmpld 5,17613beq .Lmul4x_post614615ldu 27,8*4(5)616ld 9,8*1(4)617ld 10,8*2(4)618ld 11,8*3(4)619ldu 12,8*4(4)620li 3,0621addic 29,1,8*7622b .Loop_mul4x_reduction623624.align 5625.Lmul4x_post:626627628629630srwi 31,8,5631mr 5,16632subi 31,31,1633mr 30,16634subfc 14,18,22635addi 29,1,8*15636subfe 15,19,23637638mtctr 31639.Lmul4x_sub:640ld 18,8*1(6)641ld 22,8*1(29)642subfe 16,20,24643ld 19,8*2(6)644ld 23,8*2(29)645subfe 17,21,25646ld 20,8*3(6)647ld 24,8*3(29)648ldu 21,8*4(6)649ldu 25,8*4(29)650std 14,8*1(5)651std 15,8*2(5)652subfe 14,18,22653std 16,8*3(5)654stdu 17,8*4(5)655subfe 15,19,23656bdnz .Lmul4x_sub657658ld 9,8*1(30)659std 14,8*1(5)660ld 14,8*12(1)661subfe 16,20,24662ld 10,8*2(30)663std 15,8*2(5)664ld 15,8*13(1)665subfe 17,21,25666subfe 3,0,3667addi 29,1,8*12668ld 11,8*3(30)669std 16,8*3(5)670ld 16,8*14(1)671ld 12,8*4(30)672std 17,8*4(5)673ld 17,8*15(1)674675mtctr 31676.Lmul4x_cond_copy:677and 14,14,3678andc 9,9,3679std 0,8*0(29)680and 15,15,3681andc 10,10,3682std 0,8*1(29)683and 16,16,3684andc 11,11,3685std 0,8*2(29)686and 17,17,3687andc 12,12,3688std 0,8*3(29)689or 22,14,9690ld 9,8*5(30)691ld 14,8*4(29)692or 23,15,10693ld 10,8*6(30)694ld 15,8*5(29)695or 24,16,11696ld 11,8*7(30)697ld 16,8*6(29)698or 25,17,12699ld 12,8*8(30)700ld 17,8*7(29)701addi 29,29,8*4702std 22,8*1(30)703std 23,8*2(30)704std 24,8*3(30)705stdu 25,8*4(30)706bdnz .Lmul4x_cond_copy707708ld 5,0(1)709and 14,14,3710andc 9,9,3711std 0,8*0(29)712and 15,15,3713andc 10,10,3714std 0,8*1(29)715and 16,16,3716andc 11,11,3717std 0,8*2(29)718and 17,17,3719andc 12,12,3720std 0,8*3(29)721or 22,14,9722or 23,15,10723std 0,8*4(29)724or 24,16,11725or 25,17,12726std 22,8*1(30)727std 23,8*2(30)728std 24,8*3(30)729std 25,8*4(30)730731b .Lmul4x_done732733.align 4734.Lmul4x4_post_condition:735ld 4,8*6(1)736ld 5,0(1)737addze 3,3738739subfc 9,18,22740subfe 10,19,23741subfe 11,20,24742subfe 12,21,25743subfe 3,0,3744745and 18,18,3746and 19,19,3747addc 9,9,18748and 20,20,3749adde 10,10,19750and 21,21,3751adde 11,11,20752adde 12,12,21753754std 9,8*1(4)755std 10,8*2(4)756std 11,8*3(4)757std 12,8*4(4)758759.Lmul4x_done:760std 0,8*8(1)761std 0,8*9(1)762std 0,8*10(1)763std 0,8*11(1)764li 3,1765ld 14,-8*18(5)766ld 15,-8*17(5)767ld 16,-8*16(5)768ld 17,-8*15(5)769ld 18,-8*14(5)770ld 19,-8*13(5)771ld 20,-8*12(5)772ld 21,-8*11(5)773ld 22,-8*10(5)774ld 23,-8*9(5)775ld 24,-8*8(5)776ld 25,-8*7(5)777ld 26,-8*6(5)778ld 27,-8*5(5)779ld 28,-8*4(5)780ld 29,-8*3(5)781ld 30,-8*2(5)782ld 31,-8*1(5)783mr 1,5784blr785.long 0786.byte 0,12,4,0x20,0x80,18,6,0787.long 0788.size bn_mul4x_mont_int,.-bn_mul4x_mont_int789.align 5790__bn_sqr8x_mont:791.Lsqr8x_do:792mr 9,1793slwi 10,8,4794li 11,-32*8795sub 10,11,10796slwi 8,8,3797stdux 1,1,10798799std 14,-8*18(9)800std 15,-8*17(9)801std 16,-8*16(9)802std 17,-8*15(9)803std 18,-8*14(9)804std 19,-8*13(9)805std 20,-8*12(9)806std 21,-8*11(9)807std 22,-8*10(9)808std 23,-8*9(9)809std 24,-8*8(9)810std 25,-8*7(9)811std 26,-8*6(9)812std 27,-8*5(9)813std 28,-8*4(9)814std 29,-8*3(9)815std 30,-8*2(9)816std 31,-8*1(9)817818subi 4,4,8819subi 18,6,8820subi 3,3,8821ld 7,0(7)822li 0,0823824add 6,4,8825ld 9,8*1(4)826827ld 10,8*2(4)828li 23,0829ld 11,8*3(4)830li 24,0831ld 12,8*4(4)832li 25,0833ld 14,8*5(4)834li 26,0835ld 15,8*6(4)836li 27,0837ld 16,8*7(4)838li 28,0839ldu 17,8*8(4)840li 29,0841842addi 5,1,8*11843subic. 30,8,8*8844b .Lsqr8x_zero_start845846.align 5847.Lsqr8x_zero:848subic. 30,30,8*8849std 0,8*1(5)850std 0,8*2(5)851std 0,8*3(5)852std 0,8*4(5)853std 0,8*5(5)854std 0,8*6(5)855std 0,8*7(5)856std 0,8*8(5)857.Lsqr8x_zero_start:858std 0,8*9(5)859std 0,8*10(5)860std 0,8*11(5)861std 0,8*12(5)862std 0,8*13(5)863std 0,8*14(5)864std 0,8*15(5)865stdu 0,8*16(5)866bne .Lsqr8x_zero867868std 3,8*6(1)869std 18,8*7(1)870std 7,8*8(1)871std 5,8*9(1)872std 0,8*10(1)873addi 5,1,8*11874875876.align 5877.Lsqr8x_outer_loop:878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907mulld 18,10,9908mulld 19,11,9909mulld 20,12,9910mulld 21,14,9911addc 23,23,18912mulld 18,15,9913adde 24,24,19914mulld 19,16,9915adde 25,25,20916mulld 20,17,9917adde 26,26,21918mulhdu 21,10,9919adde 27,27,18920mulhdu 18,11,9921adde 28,28,19922mulhdu 19,12,9923adde 29,29,20924mulhdu 20,14,9925std 22,8*1(5)926addze 22,0927std 23,8*2(5)928addc 24,24,21929mulhdu 21,15,9930adde 25,25,18931mulhdu 18,16,9932adde 26,26,19933mulhdu 19,17,9934adde 27,27,20935mulld 20,11,10936adde 28,28,21937mulld 21,12,10938adde 29,29,18939mulld 18,14,10940adde 22,22,19941942mulld 19,15,10943addc 25,25,20944mulld 20,16,10945adde 26,26,21946mulld 21,17,10947adde 27,27,18948mulhdu 18,11,10949adde 28,28,19950mulhdu 19,12,10951adde 29,29,20952mulhdu 20,14,10953adde 22,22,21954mulhdu 21,15,10955std 24,8*3(5)956addze 23,0957std 25,8*4(5)958addc 26,26,18959mulhdu 18,16,10960adde 27,27,19961mulhdu 19,17,10962adde 28,28,20963mulld 20,12,11964adde 29,29,21965mulld 21,14,11966adde 22,22,18967mulld 18,15,11968adde 23,23,19969970mulld 19,16,11971addc 27,27,20972mulld 20,17,11973adde 28,28,21974mulhdu 21,12,11975adde 29,29,18976mulhdu 18,14,11977adde 22,22,19978mulhdu 19,15,11979adde 23,23,20980mulhdu 20,16,11981std 26,8*5(5)982addze 24,0983std 27,8*6(5)984addc 28,28,21985mulhdu 21,17,11986adde 29,29,18987mulld 18,14,12988adde 22,22,19989mulld 19,15,12990adde 23,23,20991mulld 20,16,12992adde 24,24,21993994mulld 21,17,12995addc 29,29,18996mulhdu 18,14,12997adde 22,22,19998mulhdu 19,15,12999adde 23,23,201000mulhdu 20,16,121001adde 24,24,211002mulhdu 21,17,121003std 28,8*7(5)1004addze 25,01005stdu 29,8*8(5)1006addc 22,22,181007mulld 18,15,141008adde 23,23,191009mulld 19,16,141010adde 24,24,201011mulld 20,17,141012adde 25,25,2110131014mulhdu 21,15,141015addc 23,23,181016mulhdu 18,16,141017adde 24,24,191018mulhdu 19,17,141019adde 25,25,201020mulld 20,16,151021addze 26,01022addc 24,24,211023mulld 21,17,151024adde 25,25,181025mulhdu 18,16,151026adde 26,26,1910271028mulhdu 19,17,151029addc 25,25,201030mulld 20,17,161031adde 26,26,211032mulhdu 21,17,161033addze 27,01034addc 26,26,181035cmpld 6,41036adde 27,27,1910371038addc 27,27,201039sub 18,6,81040addze 28,01041add 28,28,2110421043beq .Lsqr8x_outer_break10441045mr 7,91046ld 9,8*1(5)1047ld 10,8*2(5)1048ld 11,8*3(5)1049ld 12,8*4(5)1050ld 14,8*5(5)1051ld 15,8*6(5)1052ld 16,8*7(5)1053ld 17,8*8(5)1054addc 22,22,91055ld 9,8*1(4)1056adde 23,23,101057ld 10,8*2(4)1058adde 24,24,111059ld 11,8*3(4)1060adde 25,25,121061ld 12,8*4(4)1062adde 26,26,141063ld 14,8*5(4)1064adde 27,27,151065ld 15,8*6(4)1066adde 28,28,161067ld 16,8*7(4)1068subi 3,4,8*71069addze 29,171070ldu 17,8*8(4)10711072li 30,01073b .Lsqr8x_mul107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097.align 51098.Lsqr8x_mul:1099mulld 18,9,71100addze 31,01101mulld 19,10,71102addi 30,30,81103mulld 20,11,71104andi. 30,30,8*8-11105mulld 21,12,71106addc 22,22,181107mulld 18,14,71108adde 23,23,191109mulld 19,15,71110adde 24,24,201111mulld 20,16,71112adde 25,25,211113mulld 21,17,71114adde 26,26,181115mulhdu 18,9,71116adde 27,27,191117mulhdu 19,10,71118adde 28,28,201119mulhdu 20,11,71120adde 29,29,211121mulhdu 21,12,71122addze 31,311123stdu 22,8(5)1124addc 22,23,181125mulhdu 18,14,71126adde 23,24,191127mulhdu 19,15,71128adde 24,25,201129mulhdu 20,16,71130adde 25,26,211131mulhdu 21,17,71132ldx 7,3,301133adde 26,27,181134adde 27,28,191135adde 28,29,201136adde 29,31,2111371138bne .Lsqr8x_mul113911401141cmpld 4,61142beq .Lsqr8x_break11431144ld 9,8*1(5)1145ld 10,8*2(5)1146ld 11,8*3(5)1147ld 12,8*4(5)1148ld 14,8*5(5)1149ld 15,8*6(5)1150ld 16,8*7(5)1151ld 17,8*8(5)1152addc 22,22,91153ld 9,8*1(4)1154adde 23,23,101155ld 10,8*2(4)1156adde 24,24,111157ld 11,8*3(4)1158adde 25,25,121159ld 12,8*4(4)1160adde 26,26,141161ld 14,8*5(4)1162adde 27,27,151163ld 15,8*6(4)1164adde 28,28,161165ld 16,8*7(4)1166adde 29,29,171167ldu 17,8*8(4)11681169b .Lsqr8x_mul11701171.align 51172.Lsqr8x_break:1173ld 9,8*8(3)1174addi 4,3,8*151175ld 10,8*9(3)1176sub. 18,6,41177ld 11,8*10(3)1178sub 19,5,181179ld 12,8*11(3)1180ld 14,8*12(3)1181ld 15,8*13(3)1182ld 16,8*14(3)1183ld 17,8*15(3)1184beq .Lsqr8x_outer_loop11851186std 22,8*1(5)1187ld 22,8*1(19)1188std 23,8*2(5)1189ld 23,8*2(19)1190std 24,8*3(5)1191ld 24,8*3(19)1192std 25,8*4(5)1193ld 25,8*4(19)1194std 26,8*5(5)1195ld 26,8*5(19)1196std 27,8*6(5)1197ld 27,8*6(19)1198std 28,8*7(5)1199ld 28,8*7(19)1200std 29,8*8(5)1201ld 29,8*8(19)1202mr 5,191203b .Lsqr8x_outer_loop12041205.align 51206.Lsqr8x_outer_break:120712081209ld 10,8*1(18)1210ld 12,8*2(18)1211ld 15,8*3(18)1212ld 17,8*4(18)1213addi 4,18,8*412141215ld 19,8*13(1)1216ld 20,8*14(1)1217ld 21,8*15(1)1218ld 18,8*16(1)12191220std 22,8*1(5)1221srwi 30,8,51222std 23,8*2(5)1223subi 30,30,11224std 24,8*3(5)1225std 25,8*4(5)1226std 26,8*5(5)1227std 27,8*6(5)1228std 28,8*7(5)12291230addi 5,1,8*111231mulld 22,10,101232mulhdu 10,10,101233add 23,19,191234srdi 19,19,64-11235mulld 11,12,121236mulhdu 12,12,121237addc 23,23,101238add 24,20,201239srdi 20,20,64-11240add 25,21,211241srdi 21,21,64-11242or 24,24,1912431244mtctr 301245.Lsqr4x_shift_n_add:1246mulld 14,15,151247mulhdu 15,15,151248ld 19,8*6(5)1249ld 10,8*1(4)1250adde 24,24,111251add 26,18,181252srdi 18,18,64-11253or 25,25,201254ld 20,8*7(5)1255adde 25,25,121256ld 12,8*2(4)1257add 27,19,191258srdi 19,19,64-11259or 26,26,211260ld 21,8*8(5)1261mulld 16,17,171262mulhdu 17,17,171263adde 26,26,141264add 28,20,201265srdi 20,20,64-11266or 27,27,181267ld 18,8*9(5)1268adde 27,27,151269ld 15,8*3(4)1270add 29,21,211271srdi 21,21,64-11272or 28,28,191273ld 19,8*10(5)1274mulld 9,10,101275mulhdu 10,10,101276adde 28,28,161277std 22,8*1(5)1278add 22,18,181279srdi 18,18,64-11280or 29,29,201281ld 20,8*11(5)1282adde 29,29,171283ldu 17,8*4(4)1284std 23,8*2(5)1285add 23,19,191286srdi 19,19,64-11287or 22,22,211288ld 21,8*12(5)1289mulld 11,12,121290mulhdu 12,12,121291adde 22,22,91292std 24,8*3(5)1293add 24,20,201294srdi 20,20,64-11295or 23,23,181296ld 18,8*13(5)1297adde 23,23,101298std 25,8*4(5)1299std 26,8*5(5)1300std 27,8*6(5)1301std 28,8*7(5)1302stdu 29,8*8(5)1303add 25,21,211304srdi 21,21,64-11305or 24,24,191306bdnz .Lsqr4x_shift_n_add1307ld 4,8*7(1)1308ld 7,8*8(1)13091310mulld 14,15,151311mulhdu 15,15,151312std 22,8*1(5)1313ld 22,8*12(1)1314ld 19,8*6(5)1315adde 24,24,111316add 26,18,181317srdi 18,18,64-11318or 25,25,201319ld 20,8*7(5)1320adde 25,25,121321add 27,19,191322srdi 19,19,64-11323or 26,26,211324mulld 16,17,171325mulhdu 17,17,171326adde 26,26,141327add 28,20,201328srdi 20,20,64-11329or 27,27,181330std 23,8*2(5)1331ld 23,8*13(1)1332adde 27,27,151333or 28,28,191334ld 9,8*1(4)1335ld 10,8*2(4)1336adde 28,28,161337ld 11,8*3(4)1338ld 12,8*4(4)1339adde 29,17,201340ld 14,8*5(4)1341ld 15,8*6(4)1342134313441345mulld 31,7,221346li 30,81347ld 16,8*7(4)1348add 6,4,81349ldu 17,8*8(4)1350std 24,8*3(5)1351ld 24,8*14(1)1352std 25,8*4(5)1353ld 25,8*15(1)1354std 26,8*5(5)1355ld 26,8*16(1)1356std 27,8*6(5)1357ld 27,8*17(1)1358std 28,8*7(5)1359ld 28,8*18(1)1360std 29,8*8(5)1361ld 29,8*19(1)1362addi 5,1,8*111363mtctr 301364b .Lsqr8x_reduction13651366.align 51367.Lsqr8x_reduction:13681369mulld 19,10,311370mulld 20,11,311371stdu 31,8(5)1372mulld 21,12,3113731374addic 22,22,-11375mulld 18,14,311376adde 22,23,191377mulld 19,15,311378adde 23,24,201379mulld 20,16,311380adde 24,25,211381mulld 21,17,311382adde 25,26,181383mulhdu 18,9,311384adde 26,27,191385mulhdu 19,10,311386adde 27,28,201387mulhdu 20,11,311388adde 28,29,211389mulhdu 21,12,311390addze 29,01391addc 22,22,181392mulhdu 18,14,311393adde 23,23,191394mulhdu 19,15,311395adde 24,24,201396mulhdu 20,16,311397adde 25,25,211398mulhdu 21,17,311399mulld 31,7,221400adde 26,26,181401adde 27,27,191402adde 28,28,201403adde 29,29,211404bdnz .Lsqr8x_reduction14051406ld 18,8*1(5)1407ld 19,8*2(5)1408ld 20,8*3(5)1409ld 21,8*4(5)1410subi 3,5,8*71411cmpld 6,41412addc 22,22,181413ld 18,8*5(5)1414adde 23,23,191415ld 19,8*6(5)1416adde 24,24,201417ld 20,8*7(5)1418adde 25,25,211419ld 21,8*8(5)1420adde 26,26,181421adde 27,27,191422adde 28,28,201423adde 29,29,2114241425beq .Lsqr8x8_post_condition14261427ld 7,8*0(3)1428ld 9,8*1(4)1429ld 10,8*2(4)1430ld 11,8*3(4)1431ld 12,8*4(4)1432ld 14,8*5(4)1433ld 15,8*6(4)1434ld 16,8*7(4)1435ldu 17,8*8(4)1436li 30,014371438.align 51439.Lsqr8x_tail:1440mulld 18,9,71441addze 31,01442mulld 19,10,71443addi 30,30,81444mulld 20,11,71445andi. 30,30,8*8-11446mulld 21,12,71447addc 22,22,181448mulld 18,14,71449adde 23,23,191450mulld 19,15,71451adde 24,24,201452mulld 20,16,71453adde 25,25,211454mulld 21,17,71455adde 26,26,181456mulhdu 18,9,71457adde 27,27,191458mulhdu 19,10,71459adde 28,28,201460mulhdu 20,11,71461adde 29,29,211462mulhdu 21,12,71463addze 31,311464stdu 22,8(5)1465addc 22,23,181466mulhdu 18,14,71467adde 23,24,191468mulhdu 19,15,71469adde 24,25,201470mulhdu 20,16,71471adde 25,26,211472mulhdu 21,17,71473ldx 7,3,301474adde 26,27,181475adde 27,28,191476adde 28,29,201477adde 29,31,2114781479bne .Lsqr8x_tail148014811482ld 9,8*1(5)1483ld 31,8*10(1)1484cmpld 6,41485ld 10,8*2(5)1486sub 20,6,81487ld 11,8*3(5)1488ld 12,8*4(5)1489ld 14,8*5(5)1490ld 15,8*6(5)1491ld 16,8*7(5)1492ld 17,8*8(5)1493beq .Lsqr8x_tail_break14941495addc 22,22,91496ld 9,8*1(4)1497adde 23,23,101498ld 10,8*2(4)1499adde 24,24,111500ld 11,8*3(4)1501adde 25,25,121502ld 12,8*4(4)1503adde 26,26,141504ld 14,8*5(4)1505adde 27,27,151506ld 15,8*6(4)1507adde 28,28,161508ld 16,8*7(4)1509adde 29,29,171510ldu 17,8*8(4)15111512b .Lsqr8x_tail15131514.align 51515.Lsqr8x_tail_break:1516ld 7,8*8(1)1517ld 21,8*9(1)1518addi 30,5,8*815191520addic 31,31,-11521adde 18,22,91522ld 22,8*8(3)1523ld 9,8*1(20)1524adde 19,23,101525ld 23,8*9(3)1526ld 10,8*2(20)1527adde 24,24,111528ld 11,8*3(20)1529adde 25,25,121530ld 12,8*4(20)1531adde 26,26,141532ld 14,8*5(20)1533adde 27,27,151534ld 15,8*6(20)1535adde 28,28,161536ld 16,8*7(20)1537adde 29,29,171538ld 17,8*8(20)1539addi 4,20,8*81540addze 20,01541mulld 31,7,221542std 18,8*1(5)1543cmpld 30,211544std 19,8*2(5)1545li 30,81546std 24,8*3(5)1547ld 24,8*10(3)1548std 25,8*4(5)1549ld 25,8*11(3)1550std 26,8*5(5)1551ld 26,8*12(3)1552std 27,8*6(5)1553ld 27,8*13(3)1554std 28,8*7(5)1555ld 28,8*14(3)1556std 29,8*8(5)1557ld 29,8*15(3)1558std 20,8*10(1)1559addi 5,3,8*71560mtctr 301561bne .Lsqr8x_reduction1562156315641565156615671568ld 3,8*6(1)1569srwi 30,8,61570mr 7,51571addi 5,5,8*81572subi 30,30,11573subfc 18,9,221574subfe 19,10,231575mr 31,201576mr 6,315771578mtctr 301579b .Lsqr8x_sub15801581.align 51582.Lsqr8x_sub:1583ld 9,8*1(4)1584ld 22,8*1(5)1585ld 10,8*2(4)1586ld 23,8*2(5)1587subfe 20,11,241588ld 11,8*3(4)1589ld 24,8*3(5)1590subfe 21,12,251591ld 12,8*4(4)1592ld 25,8*4(5)1593std 18,8*1(3)1594subfe 18,14,261595ld 14,8*5(4)1596ld 26,8*5(5)1597std 19,8*2(3)1598subfe 19,15,271599ld 15,8*6(4)1600ld 27,8*6(5)1601std 20,8*3(3)1602subfe 20,16,281603ld 16,8*7(4)1604ld 28,8*7(5)1605std 21,8*4(3)1606subfe 21,17,291607ldu 17,8*8(4)1608ldu 29,8*8(5)1609std 18,8*5(3)1610subfe 18,9,221611std 19,8*6(3)1612subfe 19,10,231613std 20,8*7(3)1614stdu 21,8*8(3)1615bdnz .Lsqr8x_sub16161617srwi 30,8,51618ld 9,8*1(6)1619ld 22,8*1(7)1620subi 30,30,11621ld 10,8*2(6)1622ld 23,8*2(7)1623subfe 20,11,241624ld 11,8*3(6)1625ld 24,8*3(7)1626subfe 21,12,251627ld 12,8*4(6)1628ldu 25,8*4(7)1629std 18,8*1(3)1630subfe 18,14,261631std 19,8*2(3)1632subfe 19,15,271633std 20,8*3(3)1634subfe 20,16,281635std 21,8*4(3)1636subfe 21,17,291637std 18,8*5(3)1638subfe 31,0,311639std 19,8*6(3)1640std 20,8*7(3)1641std 21,8*8(3)16421643addi 5,1,8*111644mtctr 3016451646.Lsqr4x_cond_copy:1647andc 9,9,311648std 0,-8*3(7)1649and 22,22,311650std 0,-8*2(7)1651andc 10,10,311652std 0,-8*1(7)1653and 23,23,311654std 0,-8*0(7)1655andc 11,11,311656std 0,8*1(5)1657and 24,24,311658std 0,8*2(5)1659andc 12,12,311660std 0,8*3(5)1661and 25,25,311662stdu 0,8*4(5)1663or 18,9,221664ld 9,8*5(6)1665ld 22,8*1(7)1666or 19,10,231667ld 10,8*6(6)1668ld 23,8*2(7)1669or 20,11,241670ld 11,8*7(6)1671ld 24,8*3(7)1672or 21,12,251673ld 12,8*8(6)1674ldu 25,8*4(7)1675std 18,8*1(6)1676std 19,8*2(6)1677std 20,8*3(6)1678stdu 21,8*4(6)1679bdnz .Lsqr4x_cond_copy16801681ld 4,0(1)1682andc 9,9,311683and 22,22,311684andc 10,10,311685and 23,23,311686andc 11,11,311687and 24,24,311688andc 12,12,311689and 25,25,311690or 18,9,221691or 19,10,231692or 20,11,241693or 21,12,251694std 18,8*1(6)1695std 19,8*2(6)1696std 20,8*3(6)1697std 21,8*4(6)16981699b .Lsqr8x_done17001701.align 51702.Lsqr8x8_post_condition:1703ld 3,8*6(1)1704ld 4,0(1)1705addze 31,0170617071708subfc 22,9,221709subfe 23,10,231710std 0,8*12(1)1711std 0,8*13(1)1712subfe 24,11,241713std 0,8*14(1)1714std 0,8*15(1)1715subfe 25,12,251716std 0,8*16(1)1717std 0,8*17(1)1718subfe 26,14,261719std 0,8*18(1)1720std 0,8*19(1)1721subfe 27,15,271722std 0,8*20(1)1723std 0,8*21(1)1724subfe 28,16,281725std 0,8*22(1)1726std 0,8*23(1)1727subfe 29,17,291728std 0,8*24(1)1729std 0,8*25(1)1730subfe 31,0,311731std 0,8*26(1)1732std 0,8*27(1)17331734and 9,9,311735and 10,10,311736addc 22,22,91737and 11,11,311738adde 23,23,101739and 12,12,311740adde 24,24,111741and 14,14,311742adde 25,25,121743and 15,15,311744adde 26,26,141745and 16,16,311746adde 27,27,151747and 17,17,311748adde 28,28,161749adde 29,29,171750std 22,8*1(3)1751std 23,8*2(3)1752std 24,8*3(3)1753std 25,8*4(3)1754std 26,8*5(3)1755std 27,8*6(3)1756std 28,8*7(3)1757std 29,8*8(3)17581759.Lsqr8x_done:1760std 0,8*8(1)1761std 0,8*10(1)17621763ld 14,-8*18(4)1764li 3,11765ld 15,-8*17(4)1766ld 16,-8*16(4)1767ld 17,-8*15(4)1768ld 18,-8*14(4)1769ld 19,-8*13(4)1770ld 20,-8*12(4)1771ld 21,-8*11(4)1772ld 22,-8*10(4)1773ld 23,-8*9(4)1774ld 24,-8*8(4)1775ld 25,-8*7(4)1776ld 26,-8*6(4)1777ld 27,-8*5(4)1778ld 28,-8*4(4)1779ld 29,-8*3(4)1780ld 30,-8*2(4)1781ld 31,-8*1(4)1782mr 1,41783blr1784.long 01785.byte 0,12,4,0x20,0x80,18,6,01786.long 01787.size __bn_sqr8x_mont,.-__bn_sqr8x_mont1788.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,01789.align 2179017911792