Path: blob/main/sys/crypto/openssl/powerpc64le/chacha-ppc.S
39536 views
/* Do not modify. This file is auto-generated from chacha-ppc.pl. */1.machine "any"2.abiversion 23.text45.globl ChaCha20_ctr32_int6.type ChaCha20_ctr32_int,@function7.align 58ChaCha20_ctr32_int:9.localentry ChaCha20_ctr32_int,01011__ChaCha20_ctr32_int:12cmpldi 5,013.long 0x4DC200201415stdu 1,-256(1)16mflr 01718std 14,112(1)19std 15,120(1)20std 16,128(1)21std 17,136(1)22std 18,144(1)23std 19,152(1)24std 20,160(1)25std 21,168(1)26std 22,176(1)27std 23,184(1)28std 24,192(1)29std 25,200(1)30std 26,208(1)31std 27,216(1)32std 28,224(1)33std 29,232(1)34std 30,240(1)35std 31,248(1)36std 0,272(1)3738lwz 11,0(7)39lwz 12,4(7)40lwz 14,8(7)41lwz 15,12(7)4243bl __ChaCha20_1x4445ld 0,272(1)46ld 14,112(1)47ld 15,120(1)48ld 16,128(1)49ld 17,136(1)50ld 18,144(1)51ld 19,152(1)52ld 20,160(1)53ld 21,168(1)54ld 22,176(1)55ld 23,184(1)56ld 24,192(1)57ld 25,200(1)58ld 26,208(1)59ld 27,216(1)60ld 28,224(1)61ld 29,232(1)62ld 30,240(1)63ld 31,248(1)64mtlr 065addi 1,1,25666blr67.long 068.byte 0,12,4,1,0x80,18,5,069.long 070.size ChaCha20_ctr32_int,.-ChaCha20_ctr32_int7172.align 573__ChaCha20_1x:74.Loop_outer:75lis 16,0x617076lis 17,0x332077lis 18,0x796278lis 19,0x6b2079ori 16,16,0x786580ori 17,17,0x646e81ori 18,18,0x2d3282ori 19,19,0x65748384li 0,1085lwz 20,0(6)86lwz 21,4(6)87lwz 22,8(6)88lwz 23,12(6)89lwz 24,16(6)90mr 28,1191lwz 25,20(6)92mr 29,1293lwz 26,24(6)94mr 30,1495lwz 27,28(6)96mr 31,159798mr 7,2099mr 8,21100mr 9,22101mr 10,23102103mtctr 0104.Loop:105add 16,16,20106add 17,17,21107add 18,18,22108add 19,19,23109xor 28,28,16110xor 29,29,17111xor 30,30,18112xor 31,31,19113rotlwi 28,28,16114rotlwi 29,29,16115rotlwi 30,30,16116rotlwi 31,31,16117add 24,24,28118add 25,25,29119add 26,26,30120add 27,27,31121xor 20,20,24122xor 21,21,25123xor 22,22,26124xor 23,23,27125rotlwi 20,20,12126rotlwi 21,21,12127rotlwi 22,22,12128rotlwi 23,23,12129add 16,16,20130add 17,17,21131add 18,18,22132add 19,19,23133xor 28,28,16134xor 29,29,17135xor 30,30,18136xor 31,31,19137rotlwi 28,28,8138rotlwi 29,29,8139rotlwi 30,30,8140rotlwi 31,31,8141add 24,24,28142add 25,25,29143add 26,26,30144add 27,27,31145xor 20,20,24146xor 21,21,25147xor 22,22,26148xor 23,23,27149rotlwi 20,20,7150rotlwi 21,21,7151rotlwi 22,22,7152rotlwi 23,23,7153add 16,16,21154add 17,17,22155add 18,18,23156add 19,19,20157xor 31,31,16158xor 28,28,17159xor 29,29,18160xor 30,30,19161rotlwi 31,31,16162rotlwi 28,28,16163rotlwi 29,29,16164rotlwi 30,30,16165add 26,26,31166add 27,27,28167add 24,24,29168add 25,25,30169xor 21,21,26170xor 22,22,27171xor 23,23,24172xor 20,20,25173rotlwi 21,21,12174rotlwi 22,22,12175rotlwi 23,23,12176rotlwi 20,20,12177add 16,16,21178add 17,17,22179add 18,18,23180add 19,19,20181xor 31,31,16182xor 28,28,17183xor 29,29,18184xor 30,30,19185rotlwi 31,31,8186rotlwi 28,28,8187rotlwi 29,29,8188rotlwi 30,30,8189add 26,26,31190add 27,27,28191add 24,24,29192add 25,25,30193xor 21,21,26194xor 22,22,27195xor 23,23,24196xor 20,20,25197rotlwi 21,21,7198rotlwi 22,22,7199rotlwi 23,23,7200rotlwi 20,20,7201bdnz .Loop202203subic 5,5,64204addi 16,16,0x7865205addi 17,17,0x646e206addi 18,18,0x2d32207addi 19,19,0x6574208addis 16,16,0x6170209addis 17,17,0x3320210addis 18,18,0x7962211addis 19,19,0x6b20212213subfe. 0,0,0214add 20,20,7215lwz 7,16(6)216add 21,21,8217lwz 8,20(6)218add 22,22,9219lwz 9,24(6)220add 23,23,10221lwz 10,28(6)222add 24,24,7223add 25,25,8224add 26,26,9225add 27,27,10226227add 28,28,11228add 29,29,12229add 30,30,14230add 31,31,15231addi 11,11,1232bne .Ltail233234lwz 7,0(4)235lwz 8,4(4)236cmpldi 5,0237lwz 9,8(4)238lwz 10,12(4)239xor 16,16,7240lwz 7,16(4)241xor 17,17,8242lwz 8,20(4)243xor 18,18,9244lwz 9,24(4)245xor 19,19,10246lwz 10,28(4)247xor 20,20,7248lwz 7,32(4)249xor 21,21,8250lwz 8,36(4)251xor 22,22,9252lwz 9,40(4)253xor 23,23,10254lwz 10,44(4)255xor 24,24,7256lwz 7,48(4)257xor 25,25,8258lwz 8,52(4)259xor 26,26,9260lwz 9,56(4)261xor 27,27,10262lwz 10,60(4)263xor 28,28,7264stw 16,0(3)265xor 29,29,8266stw 17,4(3)267xor 30,30,9268stw 18,8(3)269xor 31,31,10270stw 19,12(3)271stw 20,16(3)272stw 21,20(3)273stw 22,24(3)274stw 23,28(3)275stw 24,32(3)276stw 25,36(3)277stw 26,40(3)278stw 27,44(3)279stw 28,48(3)280stw 29,52(3)281stw 30,56(3)282addi 4,4,64283stw 31,60(3)284addi 3,3,64285286bne .Loop_outer287288blr289290.align 4291.Ltail:292addi 5,5,64293subi 4,4,1294subi 3,3,1295addi 7,1,48-1296mtctr 5297298stw 16,48(1)299stw 17,52(1)300stw 18,56(1)301stw 19,60(1)302stw 20,64(1)303stw 21,68(1)304stw 22,72(1)305stw 23,76(1)306stw 24,80(1)307stw 25,84(1)308stw 26,88(1)309stw 27,92(1)310stw 28,96(1)311stw 29,100(1)312stw 30,104(1)313stw 31,108(1)314315.Loop_tail:316lbzu 11,1(4)317lbzu 16,1(7)318xor 12,11,16319stbu 12,1(3)320bdnz .Loop_tail321322stw 1,48(1)323stw 1,52(1)324stw 1,56(1)325stw 1,60(1)326stw 1,64(1)327stw 1,68(1)328stw 1,72(1)329stw 1,76(1)330stw 1,80(1)331stw 1,84(1)332stw 1,88(1)333stw 1,92(1)334stw 1,96(1)335stw 1,100(1)336stw 1,104(1)337stw 1,108(1)338339blr340.long 0341.byte 0,12,0x14,0,0,0,0,0342343.globl ChaCha20_ctr32_vmx344.type ChaCha20_ctr32_vmx,@function345.align 5346ChaCha20_ctr32_vmx:347.localentry ChaCha20_ctr32_vmx,0348349cmpldi 5,256350blt __ChaCha20_ctr32_int351352stdu 1,-416(1)353mflr 0354li 10,127355li 11,143356li 12,-1357stvx 23,10,1358addi 10,10,32359stvx 24,11,1360addi 11,11,32361stvx 25,10,1362addi 10,10,32363stvx 26,11,1364addi 11,11,32365stvx 27,10,1366addi 10,10,32367stvx 28,11,1368addi 11,11,32369stvx 29,10,1370addi 10,10,32371stvx 30,11,1372stvx 31,10,1373stw 12,268(1)374std 14,272(1)375std 15,280(1)376std 16,288(1)377std 17,296(1)378std 18,304(1)379std 19,312(1)380std 20,320(1)381std 21,328(1)382std 22,336(1)383std 23,344(1)384std 24,352(1)385std 25,360(1)386std 26,368(1)387std 27,376(1)388std 28,384(1)389std 29,392(1)390std 30,400(1)391std 31,408(1)392li 12,-4096+511393std 0, 432(1)394or 12,12,12395396bl .Lconsts397li 16,16398li 17,32399li 18,48400li 19,64401li 20,31402li 21,15403404lvx 13,0,6405lvsr 29,0,6406lvx 14,16,6407lvx 27,20,6408409lvx 15,0,7410lvsr 30,0,7411lvx 28,21,7412413lvx 12,0,12414lvx 17,16,12415lvx 18,17,12416lvx 19,18,12417lvx 23,19,12418419vperm 13,14,13,29420vperm 14,27,14,29421vperm 15,28,15,30422423lwz 11,0(7)424lwz 12,4(7)425vadduwm 15,15,17426lwz 14,8(7)427vadduwm 16,15,17428lwz 15,12(7)429vadduwm 17,16,17430431vxor 29,29,29432vspltisw 26,-1433lvsr 24,0,4434lvsl 25,0,3435vperm 26,26,29,25436437438439440441442443li 0,10444b .Loop_outer_vmx445446.align 4447.Loop_outer_vmx:448lis 16,0x6170449lis 17,0x3320450vor 0,12,12451lis 18,0x7962452lis 19,0x6b20453vor 4,12,12454ori 16,16,0x7865455ori 17,17,0x646e456vor 8,12,12457ori 18,18,0x2d32458ori 19,19,0x6574459vor 1,13,13460461lwz 20,0(6)462vor 5,13,13463lwz 21,4(6)464vor 9,13,13465lwz 22,8(6)466vor 2,14,14467lwz 23,12(6)468vor 6,14,14469lwz 24,16(6)470vor 10,14,14471mr 28,11472lwz 25,20(6)473vor 3,15,15474mr 29,12475lwz 26,24(6)476vor 7,16,16477mr 30,14478lwz 27,28(6)479vor 11,17,17480mr 31,15481482mr 7,20483mr 8,21484mr 9,22485mr 10,23486487vspltisw 27,12488vspltisw 28,7489490mtctr 0491nop492.Loop_vmx:493vadduwm 0,0,1494vadduwm 4,4,5495vadduwm 8,8,9496add 16,16,20497add 17,17,21498add 18,18,22499vxor 3,3,0500vxor 7,7,4501vxor 11,11,8502add 19,19,23503xor 28,28,16504xor 29,29,17505vperm 3,3,3,19506vperm 7,7,7,19507vperm 11,11,11,19508xor 30,30,18509xor 31,31,19510rotlwi 28,28,16511vadduwm 2,2,3512vadduwm 6,6,7513vadduwm 10,10,11514rotlwi 29,29,16515rotlwi 30,30,16516rotlwi 31,31,16517vxor 1,1,2518vxor 5,5,6519vxor 9,9,10520add 24,24,28521add 25,25,29522add 26,26,30523vrlw 1,1,27524vrlw 5,5,27525vrlw 9,9,27526add 27,27,31527xor 20,20,24528xor 21,21,25529vadduwm 0,0,1530vadduwm 4,4,5531vadduwm 8,8,9532xor 22,22,26533xor 23,23,27534rotlwi 20,20,12535vxor 3,3,0536vxor 7,7,4537vxor 11,11,8538rotlwi 21,21,12539rotlwi 22,22,12540rotlwi 23,23,12541vperm 3,3,3,23542vperm 7,7,7,23543vperm 11,11,11,23544add 16,16,20545add 17,17,21546add 18,18,22547vadduwm 2,2,3548vadduwm 6,6,7549vadduwm 10,10,11550add 19,19,23551xor 28,28,16552xor 29,29,17553vxor 1,1,2554vxor 5,5,6555vxor 9,9,10556xor 30,30,18557xor 31,31,19558rotlwi 28,28,8559vrlw 1,1,28560vrlw 5,5,28561vrlw 9,9,28562rotlwi 29,29,8563rotlwi 30,30,8564rotlwi 31,31,8565vsldoi 2,2,2, 8566vsldoi 6,6,6, 8567vsldoi 10,10,10, 8568add 24,24,28569add 25,25,29570add 26,26,30571vsldoi 1,1,1, 12572vsldoi 5,5,5, 12573vsldoi 9,9,9, 12574add 27,27,31575xor 20,20,24576xor 21,21,25577vsldoi 3,3,3, 4578vsldoi 7,7,7, 4579vsldoi 11,11,11, 4580xor 22,22,26581xor 23,23,27582rotlwi 20,20,7583rotlwi 21,21,7584rotlwi 22,22,7585rotlwi 23,23,7586vadduwm 0,0,1587vadduwm 4,4,5588vadduwm 8,8,9589add 16,16,21590add 17,17,22591add 18,18,23592vxor 3,3,0593vxor 7,7,4594vxor 11,11,8595add 19,19,20596xor 31,31,16597xor 28,28,17598vperm 3,3,3,19599vperm 7,7,7,19600vperm 11,11,11,19601xor 29,29,18602xor 30,30,19603rotlwi 31,31,16604vadduwm 2,2,3605vadduwm 6,6,7606vadduwm 10,10,11607rotlwi 28,28,16608rotlwi 29,29,16609rotlwi 30,30,16610vxor 1,1,2611vxor 5,5,6612vxor 9,9,10613add 26,26,31614add 27,27,28615add 24,24,29616vrlw 1,1,27617vrlw 5,5,27618vrlw 9,9,27619add 25,25,30620xor 21,21,26621xor 22,22,27622vadduwm 0,0,1623vadduwm 4,4,5624vadduwm 8,8,9625xor 23,23,24626xor 20,20,25627rotlwi 21,21,12628vxor 3,3,0629vxor 7,7,4630vxor 11,11,8631rotlwi 22,22,12632rotlwi 23,23,12633rotlwi 20,20,12634vperm 3,3,3,23635vperm 7,7,7,23636vperm 11,11,11,23637add 16,16,21638add 17,17,22639add 18,18,23640vadduwm 2,2,3641vadduwm 6,6,7642vadduwm 10,10,11643add 19,19,20644xor 31,31,16645xor 28,28,17646vxor 1,1,2647vxor 5,5,6648vxor 9,9,10649xor 29,29,18650xor 30,30,19651rotlwi 31,31,8652vrlw 1,1,28653vrlw 5,5,28654vrlw 9,9,28655rotlwi 28,28,8656rotlwi 29,29,8657rotlwi 30,30,8658vsldoi 2,2,2, 8659vsldoi 6,6,6, 8660vsldoi 10,10,10, 8661add 26,26,31662add 27,27,28663add 24,24,29664vsldoi 1,1,1, 4665vsldoi 5,5,5, 4666vsldoi 9,9,9, 4667add 25,25,30668xor 21,21,26669xor 22,22,27670vsldoi 3,3,3, 12671vsldoi 7,7,7, 12672vsldoi 11,11,11, 12673xor 23,23,24674xor 20,20,25675rotlwi 21,21,7676rotlwi 22,22,7677rotlwi 23,23,7678rotlwi 20,20,7679bdnz .Loop_vmx680681subi 5,5,256682addi 16,16,0x7865683addi 17,17,0x646e684addi 18,18,0x2d32685addi 19,19,0x6574686addis 16,16,0x6170687addis 17,17,0x3320688addis 18,18,0x7962689addis 19,19,0x6b20690add 20,20,7691lwz 7,16(6)692add 21,21,8693lwz 8,20(6)694add 22,22,9695lwz 9,24(6)696add 23,23,10697lwz 10,28(6)698add 24,24,7699add 25,25,8700add 26,26,9701add 27,27,10702add 28,28,11703add 29,29,12704add 30,30,14705add 31,31,15706707vadduwm 0,0,12708vadduwm 4,4,12709vadduwm 8,8,12710vadduwm 1,1,13711vadduwm 5,5,13712vadduwm 9,9,13713vadduwm 2,2,14714vadduwm 6,6,14715vadduwm 10,10,14716vadduwm 3,3,15717vadduwm 7,7,16718vadduwm 11,11,17719720addi 11,11,4721vadduwm 15,15,18722vadduwm 16,16,18723vadduwm 17,17,18724725lwz 7,0(4)726lwz 8,4(4)727lwz 9,8(4)728lwz 10,12(4)729xor 16,16,7730lwz 7,16(4)731xor 17,17,8732lwz 8,20(4)733xor 18,18,9734lwz 9,24(4)735xor 19,19,10736lwz 10,28(4)737xor 20,20,7738lwz 7,32(4)739xor 21,21,8740lwz 8,36(4)741xor 22,22,9742lwz 9,40(4)743xor 23,23,10744lwz 10,44(4)745xor 24,24,7746lwz 7,48(4)747xor 25,25,8748lwz 8,52(4)749xor 26,26,9750lwz 9,56(4)751xor 27,27,10752lwz 10,60(4)753xor 28,28,7754stw 16,0(3)755xor 29,29,8756stw 17,4(3)757xor 30,30,9758stw 18,8(3)759xor 31,31,10760stw 19,12(3)761addi 4,4,64762stw 20,16(3)763li 7,16764stw 21,20(3)765li 8,32766stw 22,24(3)767li 9,48768stw 23,28(3)769li 10,64770stw 24,32(3)771stw 25,36(3)772stw 26,40(3)773stw 27,44(3)774stw 28,48(3)775stw 29,52(3)776stw 30,56(3)777stw 31,60(3)778addi 3,3,64779780lvx 27,0,4781lvx 28,7,4782lvx 29,8,4783lvx 30,9,4784lvx 31,10,4785addi 4,4,64786787vperm 27,28,27,24788vperm 28,29,28,24789vperm 29,30,29,24790vperm 30,31,30,24791vxor 0,0,27792vxor 1,1,28793lvx 28,7,4794vxor 2,2,29795lvx 29,8,4796vxor 3,3,30797lvx 30,9,4798lvx 27,10,4799addi 4,4,64800li 10,63801vperm 0,0,0,25802vperm 1,1,1,25803vperm 2,2,2,25804vperm 3,3,3,25805806vperm 31,28,31,24807vperm 28,29,28,24808vperm 29,30,29,24809vperm 30,27,30,24810vxor 4,4,31811vxor 5,5,28812lvx 28,7,4813vxor 6,6,29814lvx 29,8,4815vxor 7,7,30816lvx 30,9,4817lvx 31,10,4818addi 4,4,64819vperm 4,4,4,25820vperm 5,5,5,25821vperm 6,6,6,25822vperm 7,7,7,25823824vperm 27,28,27,24825vperm 28,29,28,24826vperm 29,30,29,24827vperm 30,31,30,24828vxor 8,8,27829vxor 9,9,28830vxor 10,10,29831vxor 11,11,30832vperm 8,8,8,25833vperm 9,9,9,25834vperm 10,10,10,25835vperm 11,11,11,25836837andi. 17,3,15838mr 16,3839840vsel 27,0,1,26841vsel 28,1,2,26842vsel 29,2,3,26843vsel 30,3,4,26844vsel 1,4,5,26845vsel 2,5,6,26846vsel 3,6,7,26847vsel 4,7,8,26848vsel 5,8,9,26849vsel 6,9,10,26850vsel 7,10,11,26851852853stvx 27,7,3854stvx 28,8,3855stvx 29,9,3856addi 3,3,64857stvx 30,0,3858stvx 1,7,3859stvx 2,8,3860stvx 3,9,3861addi 3,3,64862stvx 4,0,3863stvx 5,7,3864stvx 6,8,3865stvx 7,9,3866addi 3,3,64867868beq .Laligned_vmx869870sub 18,3,17871li 19,0872.Lunaligned_tail_vmx:873stvebx 11,19,18874addi 19,19,1875cmpw 19,17876bne .Lunaligned_tail_vmx877878sub 18,16,17879.Lunaligned_head_vmx:880stvebx 0,17,18881cmpwi 17,15882addi 17,17,1883bne .Lunaligned_head_vmx884885cmpldi 5,255886bgt .Loop_outer_vmx887888b .Ldone_vmx889890.align 4891.Laligned_vmx:892stvx 0,0,16893894cmpldi 5,255895bgt .Loop_outer_vmx896nop897898.Ldone_vmx:899cmpldi 5,0900bnel __ChaCha20_1x901902lwz 12,268(1)903li 10,127904li 11,143905or 12,12,12906lvx 23,10,1907addi 10,10,32908lvx 24,11,1909addi 11,11,32910lvx 25,10,1911addi 10,10,32912lvx 26,11,1913addi 11,11,32914lvx 27,10,1915addi 10,10,32916lvx 28,11,1917addi 11,11,32918lvx 29,10,1919addi 10,10,32920lvx 30,11,1921lvx 31,10,1922ld 0, 432(1)923ld 14,272(1)924ld 15,280(1)925ld 16,288(1)926ld 17,296(1)927ld 18,304(1)928ld 19,312(1)929ld 20,320(1)930ld 21,328(1)931ld 22,336(1)932ld 23,344(1)933ld 24,352(1)934ld 25,360(1)935ld 26,368(1)936ld 27,376(1)937ld 28,384(1)938ld 29,392(1)939ld 30,400(1)940ld 31,408(1)941mtlr 0942addi 1,1,416943blr944.long 0945.byte 0,12,0x04,1,0x80,18,5,0946.long 0947.size ChaCha20_ctr32_vmx,.-ChaCha20_ctr32_vmx948949.globl ChaCha20_ctr32_vsx950.type ChaCha20_ctr32_vsx,@function951.align 5952ChaCha20_ctr32_vsx:953.localentry ChaCha20_ctr32_vsx,0954955stdu 1,-224(1)956mflr 0957li 10,127958li 11,143959li 12,-1960stvx 26,10,1961addi 10,10,32962stvx 27,11,1963addi 11,11,32964stvx 28,10,1965addi 10,10,32966stvx 29,11,1967addi 11,11,32968stvx 30,10,1969stvx 31,11,1970stw 12,220(1)971li 12,-4096+63972std 0, 240(1)973or 12,12,12974975bl .Lconsts976.long 0x7E006619977addi 12,12,0x50978li 8,16979li 9,32980li 10,48981li 11,64982983.long 0x7E203619984.long 0x7E483619985.long 0x7E603E19986987vxor 27,27,27988.long 0x7F8B6619989vspltw 26,19,0990vsldoi 19,19,27,4991vsldoi 19,27,19,12992vadduwm 26,26,28993994995996997998li 0,10999mtctr 01000b .Loop_outer_vsx10011002.align 51003.Loop_outer_vsx:1004lvx 0,0,121005lvx 1,8,121006lvx 2,9,121007lvx 3,10,1210081009vspltw 4,17,01010vspltw 5,17,11011vspltw 6,17,21012vspltw 7,17,310131014vspltw 8,18,01015vspltw 9,18,11016vspltw 10,18,21017vspltw 11,18,310181019vor 12,26,261020vspltw 13,19,11021vspltw 14,19,21022vspltw 15,19,310231024vspltisw 27,-161025vspltisw 28,121026vspltisw 29,81027vspltisw 30,710281029.Loop_vsx:1030vadduwm 0,0,41031vadduwm 1,1,51032vadduwm 2,2,61033vadduwm 3,3,71034vxor 12,12,01035vxor 13,13,11036vxor 14,14,21037vxor 15,15,31038vrlw 12,12,271039vrlw 13,13,271040vrlw 14,14,271041vrlw 15,15,271042vadduwm 8,8,121043vadduwm 9,9,131044vadduwm 10,10,141045vadduwm 11,11,151046vxor 4,4,81047vxor 5,5,91048vxor 6,6,101049vxor 7,7,111050vrlw 4,4,281051vrlw 5,5,281052vrlw 6,6,281053vrlw 7,7,281054vadduwm 0,0,41055vadduwm 1,1,51056vadduwm 2,2,61057vadduwm 3,3,71058vxor 12,12,01059vxor 13,13,11060vxor 14,14,21061vxor 15,15,31062vrlw 12,12,291063vrlw 13,13,291064vrlw 14,14,291065vrlw 15,15,291066vadduwm 8,8,121067vadduwm 9,9,131068vadduwm 10,10,141069vadduwm 11,11,151070vxor 4,4,81071vxor 5,5,91072vxor 6,6,101073vxor 7,7,111074vrlw 4,4,301075vrlw 5,5,301076vrlw 6,6,301077vrlw 7,7,301078vadduwm 0,0,51079vadduwm 1,1,61080vadduwm 2,2,71081vadduwm 3,3,41082vxor 15,15,01083vxor 12,12,11084vxor 13,13,21085vxor 14,14,31086vrlw 15,15,271087vrlw 12,12,271088vrlw 13,13,271089vrlw 14,14,271090vadduwm 10,10,151091vadduwm 11,11,121092vadduwm 8,8,131093vadduwm 9,9,141094vxor 5,5,101095vxor 6,6,111096vxor 7,7,81097vxor 4,4,91098vrlw 5,5,281099vrlw 6,6,281100vrlw 7,7,281101vrlw 4,4,281102vadduwm 0,0,51103vadduwm 1,1,61104vadduwm 2,2,71105vadduwm 3,3,41106vxor 15,15,01107vxor 12,12,11108vxor 13,13,21109vxor 14,14,31110vrlw 15,15,291111vrlw 12,12,291112vrlw 13,13,291113vrlw 14,14,291114vadduwm 10,10,151115vadduwm 11,11,121116vadduwm 8,8,131117vadduwm 9,9,141118vxor 5,5,101119vxor 6,6,111120vxor 7,7,81121vxor 4,4,91122vrlw 5,5,301123vrlw 6,6,301124vrlw 7,7,301125vrlw 4,4,301126bdnz .Loop_vsx11271128vadduwm 12,12,2611291130.long 0x13600F8C1131.long 0x13821F8C1132.long 0x10000E8C1133.long 0x10421E8C1134.long 0x13A42F8C1135.long 0x13C63F8C1136.long 0xF02010571137.long 0xF06013571138.long 0xF01BE0571139.long 0xF05BE35711401141.long 0x10842E8C1142.long 0x10C63E8C1143.long 0x13684F8C1144.long 0x138A5F8C1145.long 0xF0A430571146.long 0xF0E433571147.long 0xF09DF0571148.long 0xF0DDF35711491150.long 0x11084E8C1151.long 0x114A5E8C1152.long 0x13AC6F8C1153.long 0x13CE7F8C1154.long 0xF12850571155.long 0xF16853571156.long 0xF11BE0571157.long 0xF15BE35711581159.long 0x118C6E8C1160.long 0x11CE7E8C1161vspltisw 27,41162vadduwm 26,26,271163.long 0xF1AC70571164.long 0xF1EC73571165.long 0xF19DF0571166.long 0xF1DDF35711671168vadduwm 0,0,161169vadduwm 4,4,171170vadduwm 8,8,181171vadduwm 12,12,191172117311741175117611771178cmpldi 5,0x401179blt .Ltail_vsx11801181.long 0x7F6026191182.long 0x7F8826191183.long 0x7FA926191184.long 0x7FCA261911851186vxor 27,27,01187vxor 28,28,41188vxor 29,29,81189vxor 30,30,1211901191.long 0x7F601F191192.long 0x7F881F191193addi 4,4,0x401194.long 0x7FA91F191195subi 5,5,0x401196.long 0x7FCA1F191197addi 3,3,0x401198beq .Ldone_vsx11991200vadduwm 0,1,161201vadduwm 4,5,171202vadduwm 8,9,181203vadduwm 12,13,191204120512061207120812091210cmpldi 5,0x401211blt .Ltail_vsx12121213.long 0x7F6026191214.long 0x7F8826191215.long 0x7FA926191216.long 0x7FCA261912171218vxor 27,27,01219vxor 28,28,41220vxor 29,29,81221vxor 30,30,1212221223.long 0x7F601F191224.long 0x7F881F191225addi 4,4,0x401226.long 0x7FA91F191227subi 5,5,0x401228.long 0x7FCA1F191229addi 3,3,0x401230beq .Ldone_vsx12311232vadduwm 0,2,161233vadduwm 4,6,171234vadduwm 8,10,181235vadduwm 12,14,191236123712381239124012411242cmpldi 5,0x401243blt .Ltail_vsx12441245.long 0x7F6026191246.long 0x7F8826191247.long 0x7FA926191248.long 0x7FCA261912491250vxor 27,27,01251vxor 28,28,41252vxor 29,29,81253vxor 30,30,1212541255.long 0x7F601F191256.long 0x7F881F191257addi 4,4,0x401258.long 0x7FA91F191259subi 5,5,0x401260.long 0x7FCA1F191261addi 3,3,0x401262beq .Ldone_vsx12631264vadduwm 0,3,161265vadduwm 4,7,171266vadduwm 8,11,181267vadduwm 12,15,191268126912701271127212731274cmpldi 5,0x401275blt .Ltail_vsx12761277.long 0x7F6026191278.long 0x7F8826191279.long 0x7FA926191280.long 0x7FCA261912811282vxor 27,27,01283vxor 28,28,41284vxor 29,29,81285vxor 30,30,1212861287.long 0x7F601F191288.long 0x7F881F191289addi 4,4,0x401290.long 0x7FA91F191291subi 5,5,0x401292.long 0x7FCA1F191293addi 3,3,0x401294mtctr 01295bne .Loop_outer_vsx12961297.Ldone_vsx:1298lwz 12,220(1)1299li 10,1271300li 11,1431301ld 0, 240(1)1302or 12,12,121303lvx 26,10,11304addi 10,10,321305lvx 27,11,11306addi 11,11,321307lvx 28,10,11308addi 10,10,321309lvx 29,11,11310addi 11,11,321311lvx 30,10,11312lvx 31,11,11313mtlr 01314addi 1,1,2241315blr13161317.align 41318.Ltail_vsx:1319addi 11,1,481320mtctr 51321.long 0x7C005F191322.long 0x7C885F191323.long 0x7D095F191324.long 0x7D8A5F191325subi 12,11,11326subi 4,4,11327subi 3,3,113281329.Loop_tail_vsx:1330lbzu 6,1(12)1331lbzu 7,1(4)1332xor 6,6,71333stbu 6,1(3)1334bdnz .Loop_tail_vsx13351336.long 0x7E005F191337.long 0x7E085F191338.long 0x7E095F191339.long 0x7E0A5F1913401341b .Ldone_vsx1342.long 01343.byte 0,12,0x04,1,0x80,0,5,01344.long 01345.size ChaCha20_ctr32_vsx,.-ChaCha20_ctr32_vsx1346.align 51347.Lconsts:1348mflr 01349bcl 20,31,$+41350mflr 121351addi 12,12,561352mtlr 01353blr1354.long 01355.byte 0,12,0x14,0,0,0,0,01356.space 281357.Lsigma:1358.long 0x61707865,0x3320646e,0x79622d32,0x6b2065741359.long 1,0,0,01360.long 4,0,0,01361.long 0x0e0f0c0d,0x0a0b0809,0x06070405,0x020300011362.long 0x0d0e0f0c,0x090a0b08,0x05060704,0x010203001363.long 0x61707865,0x61707865,0x61707865,0x617078651364.long 0x3320646e,0x3320646e,0x3320646e,0x3320646e1365.long 0x79622d32,0x79622d32,0x79622d32,0x79622d321366.long 0x6b206574,0x6b206574,0x6b206574,0x6b2065741367.long 0,1,2,31368.byte 67,104,97,67,104,97,50,48,32,102,111,114,32,80,111,119,101,114,80,67,47,65,108,116,105,86,101,99,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,01369.align 21370.align 2137113721373