Path: blob/main/sys/crypto/openssl/powerpc/aes-gcm-ppc.S
39482 views
/* Do not modify. This file is auto-generated from aes-gcm-ppc.pl. */1.machine "any"2.text345678.macro .Loop_aes_middle4x9xxlor 19+32, 1, 110xxlor 20+32, 2, 211xxlor 21+32, 3, 312xxlor 22+32, 4, 41314.long 0x11EF9D0815.long 0x12109D0816.long 0x12319D0817.long 0x12529D081819.long 0x11EFA50820.long 0x1210A50821.long 0x1231A50822.long 0x1252A5082324.long 0x11EFAD0825.long 0x1210AD0826.long 0x1231AD0827.long 0x1252AD082829.long 0x11EFB50830.long 0x1210B50831.long 0x1231B50832.long 0x1252B5083334xxlor 19+32, 5, 535xxlor 20+32, 6, 636xxlor 21+32, 7, 737xxlor 22+32, 8, 83839.long 0x11EF9D0840.long 0x12109D0841.long 0x12319D0842.long 0x12529D084344.long 0x11EFA50845.long 0x1210A50846.long 0x1231A50847.long 0x1252A5084849.long 0x11EFAD0850.long 0x1210AD0851.long 0x1231AD0852.long 0x1252AD085354.long 0x11EFB50855.long 0x1210B50856.long 0x1231B50857.long 0x1252B5085859xxlor 23+32, 9, 960.long 0x11EFBD0861.long 0x1210BD0862.long 0x1231BD0863.long 0x1252BD0864.endm656667686970.macro .Loop_aes_middle8x71xxlor 23+32, 1, 172xxlor 24+32, 2, 273xxlor 25+32, 3, 374xxlor 26+32, 4, 47576.long 0x11EFBD0877.long 0x1210BD0878.long 0x1231BD0879.long 0x1252BD0880.long 0x1273BD0881.long 0x1294BD0882.long 0x12B5BD0883.long 0x12D6BD088485.long 0x11EFC50886.long 0x1210C50887.long 0x1231C50888.long 0x1252C50889.long 0x1273C50890.long 0x1294C50891.long 0x12B5C50892.long 0x12D6C5089394.long 0x11EFCD0895.long 0x1210CD0896.long 0x1231CD0897.long 0x1252CD0898.long 0x1273CD0899.long 0x1294CD08100.long 0x12B5CD08101.long 0x12D6CD08102103.long 0x11EFD508104.long 0x1210D508105.long 0x1231D508106.long 0x1252D508107.long 0x1273D508108.long 0x1294D508109.long 0x12B5D508110.long 0x12D6D508111112xxlor 23+32, 5, 5113xxlor 24+32, 6, 6114xxlor 25+32, 7, 7115xxlor 26+32, 8, 8116117.long 0x11EFBD08118.long 0x1210BD08119.long 0x1231BD08120.long 0x1252BD08121.long 0x1273BD08122.long 0x1294BD08123.long 0x12B5BD08124.long 0x12D6BD08125126.long 0x11EFC508127.long 0x1210C508128.long 0x1231C508129.long 0x1252C508130.long 0x1273C508131.long 0x1294C508132.long 0x12B5C508133.long 0x12D6C508134135.long 0x11EFCD08136.long 0x1210CD08137.long 0x1231CD08138.long 0x1252CD08139.long 0x1273CD08140.long 0x1294CD08141.long 0x12B5CD08142.long 0x12D6CD08143144.long 0x11EFD508145.long 0x1210D508146.long 0x1231D508147.long 0x1252D508148.long 0x1273D508149.long 0x1294D508150.long 0x12B5D508151.long 0x12D6D508152153xxlor 23+32, 9, 9154.long 0x11EFBD08155.long 0x1210BD08156.long 0x1231BD08157.long 0x1252BD08158.long 0x1273BD08159.long 0x1294BD08160.long 0x12B5BD08161.long 0x12D6BD08162.endm163164165166167ppc_aes_gcm_ghash:168vxor 15, 15, 0169170xxlxor 29, 29, 29171172.long 0x12EC7CC8173.long 0x130984C8174.long 0x13268CC8175.long 0x134394C8176177vxor 23, 23, 24178vxor 23, 23, 25179vxor 23, 23, 26180181.long 0x130D7CC8182.long 0x132A84C8183.long 0x13478CC8184.long 0x136494C8185186vxor 24, 24, 25187vxor 24, 24, 26188vxor 24, 24, 27189190191.long 0x139714C8192193xxlor 29+32, 29, 29194vsldoi 26, 24, 29, 8195vsldoi 29, 29, 24, 8196vxor 23, 23, 26197198vsldoi 23, 23, 23, 8199vxor 23, 23, 28200201.long 0x130E7CC8202.long 0x132B84C8203.long 0x13488CC8204.long 0x136594C8205206vxor 24, 24, 25207vxor 24, 24, 26208vxor 24, 24, 27209210vxor 24, 24, 29211212213vsldoi 27, 23, 23, 8214.long 0x12F714C8215vxor 27, 27, 24216vxor 23, 23, 27217218xxlor 32, 23+32, 23+32219220blr221222223224225226.macro ppc_aes_gcm_ghash2_4x227228vxor 15, 15, 0229230xxlxor 29, 29, 29231232.long 0x12EC7CC8233.long 0x130984C8234.long 0x13268CC8235.long 0x134394C8236237vxor 23, 23, 24238vxor 23, 23, 25239vxor 23, 23, 26240241.long 0x130D7CC8242.long 0x132A84C8243.long 0x13478CC8244.long 0x136494C8245246vxor 24, 24, 25247vxor 24, 24, 26248249250.long 0x139714C8251252xxlor 29+32, 29, 29253254vxor 24, 24, 27255vsldoi 26, 24, 29, 8256vsldoi 29, 29, 24, 8257vxor 23, 23, 26258259vsldoi 23, 23, 23, 8260vxor 23, 23, 28261262.long 0x130E7CC8263.long 0x132B84C8264.long 0x13488CC8265.long 0x136594C8266267vxor 24, 24, 25268vxor 24, 24, 26269vxor 24, 24, 27270271vxor 24, 24, 29272273274vsldoi 27, 23, 23, 8275.long 0x12F714C8276vxor 27, 27, 24277vxor 27, 23, 27278279280.long 0x1309A4C8281.long 0x1326ACC8282.long 0x1343B4C8283vxor 19, 19, 27284.long 0x12EC9CC8285286vxor 23, 23, 24287vxor 23, 23, 25288vxor 23, 23, 26289290.long 0x130D9CC8291.long 0x132AA4C8292.long 0x1347ACC8293.long 0x1364B4C8294295vxor 24, 24, 25296vxor 24, 24, 26297298299.long 0x139714C8300301xxlor 29+32, 29, 29302303vxor 24, 24, 27304vsldoi 26, 24, 29, 8305vsldoi 29, 29, 24, 8306vxor 23, 23, 26307308vsldoi 23, 23, 23, 8309vxor 23, 23, 28310311.long 0x130E9CC8312.long 0x132BA4C8313.long 0x1348ACC8314.long 0x1365B4C8315316vxor 24, 24, 25317vxor 24, 24, 26318vxor 24, 24, 27319320vxor 24, 24, 29321322323vsldoi 27, 23, 23, 8324.long 0x12F714C8325vxor 27, 27, 24326vxor 23, 23, 27327328xxlor 32, 23+32, 23+32329330.endm331332333334335.macro ppc_update_hash_1x336vxor 28, 28, 0337338vxor 19, 19, 19339340.long 0x12C3E4C8341.long 0x12E4E4C8342.long 0x1305E4C8343344.long 0x137614C8345346vsldoi 25, 23, 19, 8347vsldoi 26, 19, 23, 8348vxor 22, 22, 25349vxor 24, 24, 26350351vsldoi 22, 22, 22, 8352vxor 22, 22, 27353354vsldoi 20, 22, 22, 8355.long 0x12D614C8356vxor 20, 20, 24357vxor 22, 22, 20358359vor 0,22,22360361.endm362363364365366367368369370371372373374375.global ppc_aes_gcm_encrypt376.align 5377ppc_aes_gcm_encrypt:378_ppc_aes_gcm_encrypt:379380stdu 1,-512(1)381mflr 0382383std 14,112(1)384std 15,120(1)385std 16,128(1)386std 17,136(1)387std 18,144(1)388std 19,152(1)389std 20,160(1)390std 21,168(1)391li 9, 256392stvx 20, 9, 1393addi 9, 9, 16394stvx 21, 9, 1395addi 9, 9, 16396stvx 22, 9, 1397addi 9, 9, 16398stvx 23, 9, 1399addi 9, 9, 16400stvx 24, 9, 1401addi 9, 9, 16402stvx 25, 9, 1403addi 9, 9, 16404stvx 26, 9, 1405addi 9, 9, 16406stvx 27, 9, 1407addi 9, 9, 16408stvx 28, 9, 1409addi 9, 9, 16410stvx 29, 9, 1411addi 9, 9, 16412stvx 30, 9, 1413addi 9, 9, 16414stvx 31, 9, 1415std 0, 528(1)416417418lxvb16x 32, 0, 8419420421li 10, 32422lxvd2x 2+32, 10, 8423li 10, 48424lxvd2x 3+32, 10, 8425li 10, 64426lxvd2x 4+32, 10, 8427li 10, 80428lxvd2x 5+32, 10, 8429430li 10, 96431lxvd2x 6+32, 10, 8432li 10, 112433lxvd2x 7+32, 10, 8434li 10, 128435lxvd2x 8+32, 10, 8436437li 10, 144438lxvd2x 9+32, 10, 8439li 10, 160440lxvd2x 10+32, 10, 8441li 10, 176442lxvd2x 11+32, 10, 8443444li 10, 192445lxvd2x 12+32, 10, 8446li 10, 208447lxvd2x 13+32, 10, 8448li 10, 224449lxvd2x 14+32, 10, 8450451452lxvb16x 30+32, 0, 7453454mr 12, 5455li 11, 0456457458vxor 31, 31, 31459vspltisb 22,1460vsldoi 31, 31, 22,1461462463lxv 0, 0(6)464lxv 1, 0x10(6)465lxv 2, 0x20(6)466lxv 3, 0x30(6)467lxv 4, 0x40(6)468lxv 5, 0x50(6)469lxv 6, 0x60(6)470lxv 7, 0x70(6)471lxv 8, 0x80(6)472lxv 9, 0x90(6)473lxv 10, 0xa0(6)474475476lwz 9,240(6)477478479480xxlor 32+29, 0, 0481vxor 15, 30, 29482483cmpdi 9, 10484beq .Loop_aes_gcm_8x485486487lxv 11, 0xb0(6)488lxv 12, 0xc0(6)489490cmpdi 9, 12491beq .Loop_aes_gcm_8x492493494lxv 13, 0xd0(6)495lxv 14, 0xe0(6)496cmpdi 9, 14497beq .Loop_aes_gcm_8x498499b aes_gcm_out500501.align 5502.Loop_aes_gcm_8x:503mr 14, 3504mr 9, 4505506507li 10, 128508divdu 10, 5, 10509cmpdi 10, 0510beq .Loop_last_block511512.long 0x13DEF8C0513vxor 16, 30, 29514.long 0x13DEF8C0515vxor 17, 30, 29516.long 0x13DEF8C0517vxor 18, 30, 29518.long 0x13DEF8C0519vxor 19, 30, 29520.long 0x13DEF8C0521vxor 20, 30, 29522.long 0x13DEF8C0523vxor 21, 30, 29524.long 0x13DEF8C0525vxor 22, 30, 29526527mtctr 10528529li 15, 16530li 16, 32531li 17, 48532li 18, 64533li 19, 80534li 20, 96535li 21, 112536537lwz 10, 240(6)538539.Loop_8x_block:540541lxvb16x 15, 0, 14542lxvb16x 16, 15, 14543lxvb16x 17, 16, 14544lxvb16x 18, 17, 14545lxvb16x 19, 18, 14546lxvb16x 20, 19, 14547lxvb16x 21, 20, 14548lxvb16x 22, 21, 14549addi 14, 14, 128550551.Loop_aes_middle8x552553xxlor 23+32, 10, 10554555cmpdi 10, 10556beq Do_next_ghash557558559xxlor 24+32, 11, 11560561.long 0x11EFBD08562.long 0x1210BD08563.long 0x1231BD08564.long 0x1252BD08565.long 0x1273BD08566.long 0x1294BD08567.long 0x12B5BD08568.long 0x12D6BD08569570.long 0x11EFC508571.long 0x1210C508572.long 0x1231C508573.long 0x1252C508574.long 0x1273C508575.long 0x1294C508576.long 0x12B5C508577.long 0x12D6C508578579xxlor 23+32, 12, 12580581cmpdi 10, 12582beq Do_next_ghash583584585xxlor 24+32, 13, 13586587.long 0x11EFBD08588.long 0x1210BD08589.long 0x1231BD08590.long 0x1252BD08591.long 0x1273BD08592.long 0x1294BD08593.long 0x12B5BD08594.long 0x12D6BD08595596.long 0x11EFC508597.long 0x1210C508598.long 0x1231C508599.long 0x1252C508600.long 0x1273C508601.long 0x1294C508602.long 0x12B5C508603.long 0x12D6C508604605xxlor 23+32, 14, 14606607cmpdi 10, 14608beq Do_next_ghash609b aes_gcm_out610611Do_next_ghash:612613614615.long 0x11EFBD09616.long 0x1210BD09617618xxlxor 47, 47, 15619stxvb16x 47, 0, 9620xxlxor 48, 48, 16621stxvb16x 48, 15, 9622623.long 0x1231BD09624.long 0x1252BD09625626xxlxor 49, 49, 17627stxvb16x 49, 16, 9628xxlxor 50, 50, 18629stxvb16x 50, 17, 9630631.long 0x1273BD09632.long 0x1294BD09633634xxlxor 51, 51, 19635stxvb16x 51, 18, 9636xxlxor 52, 52, 20637stxvb16x 52, 19, 9638639.long 0x12B5BD09640.long 0x12D6BD09641642xxlxor 53, 53, 21643stxvb16x 53, 20, 9644xxlxor 54, 54, 22645stxvb16x 54, 21, 9646647addi 9, 9, 128648649650ppc_aes_gcm_ghash2_4x651652xxlor 27+32, 0, 0653.long 0x13DEF8C0654vor 29,30,30655vxor 15, 30, 27656.long 0x13DEF8C0657vxor 16, 30, 27658.long 0x13DEF8C0659vxor 17, 30, 27660.long 0x13DEF8C0661vxor 18, 30, 27662.long 0x13DEF8C0663vxor 19, 30, 27664.long 0x13DEF8C0665vxor 20, 30, 27666.long 0x13DEF8C0667vxor 21, 30, 27668.long 0x13DEF8C0669vxor 22, 30, 27670671addi 12, 12, -128672addi 11, 11, 128673674bdnz .Loop_8x_block675676vor 30,29,29677678.Loop_last_block:679cmpdi 12, 0680beq aes_gcm_out681682683li 10, 16684divdu 10, 12, 10685686mtctr 10687688lwz 10, 240(6)689690cmpdi 12, 16691blt Final_block692693.macro .Loop_aes_middle_1x694xxlor 19+32, 1, 1695xxlor 20+32, 2, 2696xxlor 21+32, 3, 3697xxlor 22+32, 4, 4698699.long 0x11EF9D08700.long 0x11EFA508701.long 0x11EFAD08702.long 0x11EFB508703704xxlor 19+32, 5, 5705xxlor 20+32, 6, 6706xxlor 21+32, 7, 7707xxlor 22+32, 8, 8708709.long 0x11EF9D08710.long 0x11EFA508711.long 0x11EFAD08712.long 0x11EFB508713714xxlor 19+32, 9, 9715.long 0x11EF9D08716.endm717718Next_rem_block:719lxvb16x 15, 0, 14720721.Loop_aes_middle_1x722723xxlor 23+32, 10, 10724725cmpdi 10, 10726beq Do_next_1x727728729xxlor 24+32, 11, 11730731.long 0x11EFBD08732.long 0x11EFC508733734xxlor 23+32, 12, 12735736cmpdi 10, 12737beq Do_next_1x738739740xxlor 24+32, 13, 13741742.long 0x11EFBD08743.long 0x11EFC508744745xxlor 23+32, 14, 14746747cmpdi 10, 14748beq Do_next_1x749750Do_next_1x:751.long 0x11EFBD09752753xxlxor 47, 47, 15754stxvb16x 47, 0, 9755addi 14, 14, 16756addi 9, 9, 16757758vor 28,15,15759ppc_update_hash_1x760761addi 12, 12, -16762addi 11, 11, 16763xxlor 19+32, 0, 0764.long 0x13DEF8C0765vxor 15, 30, 19766767bdnz Next_rem_block768769cmpdi 12, 0770beq aes_gcm_out771772Final_block:773.Loop_aes_middle_1x774775xxlor 23+32, 10, 10776777cmpdi 10, 10778beq Do_final_1x779780781xxlor 24+32, 11, 11782783.long 0x11EFBD08784.long 0x11EFC508785786xxlor 23+32, 12, 12787788cmpdi 10, 12789beq Do_final_1x790791792xxlor 24+32, 13, 13793794.long 0x11EFBD08795.long 0x11EFC508796797xxlor 23+32, 14, 14798799cmpdi 10, 14800beq Do_final_1x801802Do_final_1x:803.long 0x11EFBD09804805lxvb16x 15, 0, 14806xxlxor 47, 47, 15807808809li 15, 16810sub 15, 15, 12811812vspltisb 16,-1813vspltisb 17,0814li 10, 192815stvx 16, 10, 1816addi 10, 10, 16817stvx 17, 10, 1818819addi 10, 1, 192820lxvb16x 16, 15, 10821xxland 47, 47, 16822823vor 28,15,15824ppc_update_hash_1x825826827bl Write_partial_block828829b aes_gcm_out830831832833834835836837Write_partial_block:838li 10, 192839stxvb16x 15+32, 10, 1840841842addi 10, 9, -1843addi 16, 1, 191844845mtctr 12846li 15, 0847848Write_last_byte:849lbzu 14, 1(16)850stbu 14, 1(10)851bdnz Write_last_byte852blr853854aes_gcm_out:855856stxvb16x 32, 0, 8857add 3, 11, 12858859li 9, 256860lvx 20, 9, 1861addi 9, 9, 16862lvx 21, 9, 1863addi 9, 9, 16864lvx 22, 9, 1865addi 9, 9, 16866lvx 23, 9, 1867addi 9, 9, 16868lvx 24, 9, 1869addi 9, 9, 16870lvx 25, 9, 1871addi 9, 9, 16872lvx 26, 9, 1873addi 9, 9, 16874lvx 27, 9, 1875addi 9, 9, 16876lvx 28, 9, 1877addi 9, 9, 16878lvx 29, 9, 1879addi 9, 9, 16880lvx 30, 9, 1881addi 9, 9, 16882lvx 31, 9, 1883884ld 0, 528(1)885ld 14,112(1)886ld 15,120(1)887ld 16,128(1)888ld 17,136(1)889ld 18,144(1)890ld 19,152(1)891ld 20,160(1)892ld 21,168(1)893894mtlr 0895addi 1, 1, 512896blr897898899900901.global ppc_aes_gcm_decrypt902.align 5903ppc_aes_gcm_decrypt:904_ppc_aes_gcm_decrypt:905906stdu 1,-512(1)907mflr 0908909std 14,112(1)910std 15,120(1)911std 16,128(1)912std 17,136(1)913std 18,144(1)914std 19,152(1)915std 20,160(1)916std 21,168(1)917li 9, 256918stvx 20, 9, 1919addi 9, 9, 16920stvx 21, 9, 1921addi 9, 9, 16922stvx 22, 9, 1923addi 9, 9, 16924stvx 23, 9, 1925addi 9, 9, 16926stvx 24, 9, 1927addi 9, 9, 16928stvx 25, 9, 1929addi 9, 9, 16930stvx 26, 9, 1931addi 9, 9, 16932stvx 27, 9, 1933addi 9, 9, 16934stvx 28, 9, 1935addi 9, 9, 16936stvx 29, 9, 1937addi 9, 9, 16938stvx 30, 9, 1939addi 9, 9, 16940stvx 31, 9, 1941std 0, 528(1)942943944lxvb16x 32, 0, 8945946947li 10, 32948lxvd2x 2+32, 10, 8949li 10, 48950lxvd2x 3+32, 10, 8951li 10, 64952lxvd2x 4+32, 10, 8953li 10, 80954lxvd2x 5+32, 10, 8955956li 10, 96957lxvd2x 6+32, 10, 8958li 10, 112959lxvd2x 7+32, 10, 8960li 10, 128961lxvd2x 8+32, 10, 8962963li 10, 144964lxvd2x 9+32, 10, 8965li 10, 160966lxvd2x 10+32, 10, 8967li 10, 176968lxvd2x 11+32, 10, 8969970li 10, 192971lxvd2x 12+32, 10, 8972li 10, 208973lxvd2x 13+32, 10, 8974li 10, 224975lxvd2x 14+32, 10, 8976977978lxvb16x 30+32, 0, 7979980mr 12, 5981li 11, 0982983984vxor 31, 31, 31985vspltisb 22,1986vsldoi 31, 31, 22,1987988989lxv 0, 0(6)990lxv 1, 0x10(6)991lxv 2, 0x20(6)992lxv 3, 0x30(6)993lxv 4, 0x40(6)994lxv 5, 0x50(6)995lxv 6, 0x60(6)996lxv 7, 0x70(6)997lxv 8, 0x80(6)998lxv 9, 0x90(6)999lxv 10, 0xa0(6)100010011002lwz 9,240(6)1003100410051006xxlor 32+29, 0, 01007vxor 15, 30, 2910081009cmpdi 9, 101010beq .Loop_aes_gcm_8x_dec101110121013lxv 11, 0xb0(6)1014lxv 12, 0xc0(6)10151016cmpdi 9, 121017beq .Loop_aes_gcm_8x_dec101810191020lxv 13, 0xd0(6)1021lxv 14, 0xe0(6)1022cmpdi 9, 141023beq .Loop_aes_gcm_8x_dec10241025b aes_gcm_out10261027.align 51028.Loop_aes_gcm_8x_dec:1029mr 14, 31030mr 9, 4103110321033li 10, 1281034divdu 10, 5, 101035cmpdi 10, 01036beq .Loop_last_block_dec10371038.long 0x13DEF8C01039vxor 16, 30, 291040.long 0x13DEF8C01041vxor 17, 30, 291042.long 0x13DEF8C01043vxor 18, 30, 291044.long 0x13DEF8C01045vxor 19, 30, 291046.long 0x13DEF8C01047vxor 20, 30, 291048.long 0x13DEF8C01049vxor 21, 30, 291050.long 0x13DEF8C01051vxor 22, 30, 2910521053mtctr 1010541055li 15, 161056li 16, 321057li 17, 481058li 18, 641059li 19, 801060li 20, 961061li 21, 11210621063lwz 10, 240(6)10641065.Loop_8x_block_dec:10661067lxvb16x 15, 0, 141068lxvb16x 16, 15, 141069lxvb16x 17, 16, 141070lxvb16x 18, 17, 141071lxvb16x 19, 18, 141072lxvb16x 20, 19, 141073lxvb16x 21, 20, 141074lxvb16x 22, 21, 141075addi 14, 14, 12810761077.Loop_aes_middle8x10781079xxlor 23+32, 10, 1010801081cmpdi 10, 101082beq Do_last_aes_dec108310841085xxlor 24+32, 11, 1110861087.long 0x11EFBD081088.long 0x1210BD081089.long 0x1231BD081090.long 0x1252BD081091.long 0x1273BD081092.long 0x1294BD081093.long 0x12B5BD081094.long 0x12D6BD0810951096.long 0x11EFC5081097.long 0x1210C5081098.long 0x1231C5081099.long 0x1252C5081100.long 0x1273C5081101.long 0x1294C5081102.long 0x12B5C5081103.long 0x12D6C50811041105xxlor 23+32, 12, 1211061107cmpdi 10, 121108beq Do_last_aes_dec110911101111xxlor 24+32, 13, 1311121113.long 0x11EFBD081114.long 0x1210BD081115.long 0x1231BD081116.long 0x1252BD081117.long 0x1273BD081118.long 0x1294BD081119.long 0x12B5BD081120.long 0x12D6BD0811211122.long 0x11EFC5081123.long 0x1210C5081124.long 0x1231C5081125.long 0x1252C5081126.long 0x1273C5081127.long 0x1294C5081128.long 0x12B5C5081129.long 0x12D6C50811301131xxlor 23+32, 14, 1411321133cmpdi 10, 141134beq Do_last_aes_dec1135b aes_gcm_out11361137Do_last_aes_dec:1138113911401141.long 0x11EFBD091142.long 0x1210BD0911431144xxlxor 47, 47, 151145stxvb16x 47, 0, 91146xxlxor 48, 48, 161147stxvb16x 48, 15, 911481149.long 0x1231BD091150.long 0x1252BD0911511152xxlxor 49, 49, 171153stxvb16x 49, 16, 91154xxlxor 50, 50, 181155stxvb16x 50, 17, 911561157.long 0x1273BD091158.long 0x1294BD0911591160xxlxor 51, 51, 191161stxvb16x 51, 18, 91162xxlxor 52, 52, 201163stxvb16x 52, 19, 911641165.long 0x12B5BD091166.long 0x12D6BD0911671168xxlxor 53, 53, 211169stxvb16x 53, 20, 91170xxlxor 54, 54, 221171stxvb16x 54, 21, 911721173addi 9, 9, 12811741175xxlor 15+32, 15, 151176xxlor 16+32, 16, 161177xxlor 17+32, 17, 171178xxlor 18+32, 18, 181179xxlor 19+32, 19, 191180xxlor 20+32, 20, 201181xxlor 21+32, 21, 211182xxlor 22+32, 22, 22118311841185ppc_aes_gcm_ghash2_4x11861187xxlor 27+32, 0, 01188.long 0x13DEF8C01189vor 29,30,301190vxor 15, 30, 271191.long 0x13DEF8C01192vxor 16, 30, 271193.long 0x13DEF8C01194vxor 17, 30, 271195.long 0x13DEF8C01196vxor 18, 30, 271197.long 0x13DEF8C01198vxor 19, 30, 271199.long 0x13DEF8C01200vxor 20, 30, 271201.long 0x13DEF8C01202vxor 21, 30, 271203.long 0x13DEF8C01204vxor 22, 30, 271205addi 12, 12, -1281206addi 11, 11, 12812071208bdnz .Loop_8x_block_dec12091210vor 30,29,2912111212.Loop_last_block_dec:1213cmpdi 12, 01214beq aes_gcm_out121512161217li 10, 161218divdu 10, 12, 1012191220mtctr 1012211222lwz 10,240(6)12231224cmpdi 12, 161225blt Final_block_dec12261227Next_rem_block_dec:1228lxvb16x 15, 0, 1412291230.Loop_aes_middle_1x12311232xxlor 23+32, 10, 1012331234cmpdi 10, 101235beq Do_next_1x_dec123612371238xxlor 24+32, 11, 1112391240.long 0x11EFBD081241.long 0x11EFC50812421243xxlor 23+32, 12, 1212441245cmpdi 10, 121246beq Do_next_1x_dec124712481249xxlor 24+32, 13, 1312501251.long 0x11EFBD081252.long 0x11EFC50812531254xxlor 23+32, 14, 1412551256cmpdi 10, 141257beq Do_next_1x_dec12581259Do_next_1x_dec:1260.long 0x11EFBD0912611262xxlxor 47, 47, 151263stxvb16x 47, 0, 91264addi 14, 14, 161265addi 9, 9, 1612661267xxlor 28+32, 15, 151268ppc_update_hash_1x12691270addi 12, 12, -161271addi 11, 11, 161272xxlor 19+32, 0, 01273.long 0x13DEF8C01274vxor 15, 30, 1912751276bdnz Next_rem_block_dec12771278cmpdi 12, 01279beq aes_gcm_out12801281Final_block_dec:1282.Loop_aes_middle_1x12831284xxlor 23+32, 10, 1012851286cmpdi 10, 101287beq Do_final_1x_dec128812891290xxlor 24+32, 11, 1112911292.long 0x11EFBD081293.long 0x11EFC50812941295xxlor 23+32, 12, 1212961297cmpdi 10, 121298beq Do_final_1x_dec129913001301xxlor 24+32, 13, 1313021303.long 0x11EFBD081304.long 0x11EFC50813051306xxlor 23+32, 14, 1413071308cmpdi 10, 141309beq Do_final_1x_dec13101311Do_final_1x_dec:1312.long 0x11EFBD0913131314lxvb16x 15, 0, 141315xxlxor 47, 47, 15131613171318li 15, 161319sub 15, 15, 1213201321vspltisb 16,-11322vspltisb 17,01323li 10, 1921324stvx 16, 10, 11325addi 10, 10, 161326stvx 17, 10, 113271328addi 10, 1, 1921329lxvb16x 16, 15, 101330xxland 47, 47, 1613311332xxlor 28+32, 15, 151333ppc_update_hash_1x133413351336bl Write_partial_block13371338b aes_gcm_out133913401341