Path: blob/main/sys/crypto/openssl/powerpc64/vpaes-ppc.S
39482 views
/* Do not modify. This file is auto-generated from vpaes-ppc.pl. */1.machine "any"23.abiversion 24.text56.align 77_vpaes_consts:8.Lk_mc_forward:9.byte 0x01,0x02,0x03,0x00,0x05,0x06,0x07,0x04,0x09,0x0a,0x0b,0x08,0x0d,0x0e,0x0f,0x0c10.byte 0x05,0x06,0x07,0x04,0x09,0x0a,0x0b,0x08,0x0d,0x0e,0x0f,0x0c,0x01,0x02,0x03,0x0011.byte 0x09,0x0a,0x0b,0x08,0x0d,0x0e,0x0f,0x0c,0x01,0x02,0x03,0x00,0x05,0x06,0x07,0x0412.byte 0x0d,0x0e,0x0f,0x0c,0x01,0x02,0x03,0x00,0x05,0x06,0x07,0x04,0x09,0x0a,0x0b,0x0813.Lk_mc_backward:14.byte 0x03,0x00,0x01,0x02,0x07,0x04,0x05,0x06,0x0b,0x08,0x09,0x0a,0x0f,0x0c,0x0d,0x0e15.byte 0x0f,0x0c,0x0d,0x0e,0x03,0x00,0x01,0x02,0x07,0x04,0x05,0x06,0x0b,0x08,0x09,0x0a16.byte 0x0b,0x08,0x09,0x0a,0x0f,0x0c,0x0d,0x0e,0x03,0x00,0x01,0x02,0x07,0x04,0x05,0x0617.byte 0x07,0x04,0x05,0x06,0x0b,0x08,0x09,0x0a,0x0f,0x0c,0x0d,0x0e,0x03,0x00,0x01,0x0218.Lk_sr:19.byte 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f20.byte 0x00,0x05,0x0a,0x0f,0x04,0x09,0x0e,0x03,0x08,0x0d,0x02,0x07,0x0c,0x01,0x06,0x0b21.byte 0x00,0x09,0x02,0x0b,0x04,0x0d,0x06,0x0f,0x08,0x01,0x0a,0x03,0x0c,0x05,0x0e,0x0722.byte 0x00,0x0d,0x0a,0x07,0x04,0x01,0x0e,0x0b,0x08,0x05,0x02,0x0f,0x0c,0x09,0x06,0x032324252627.Lk_inv:28.byte 0xf0,0x01,0x08,0x0d,0x0f,0x06,0x05,0x0e,0x02,0x0c,0x0b,0x0a,0x09,0x03,0x07,0x0429.byte 0xf0,0x07,0x0b,0x0f,0x06,0x0a,0x04,0x01,0x09,0x08,0x05,0x02,0x0c,0x0e,0x0d,0x0330.Lk_ipt:31.byte 0x00,0x70,0x2a,0x5a,0x98,0xe8,0xb2,0xc2,0x08,0x78,0x22,0x52,0x90,0xe0,0xba,0xca32.byte 0x00,0x4d,0x7c,0x31,0x7d,0x30,0x01,0x4c,0x81,0xcc,0xfd,0xb0,0xfc,0xb1,0x80,0xcd33.Lk_sbo:34.byte 0x00,0xc7,0xbd,0x6f,0x17,0x6d,0xd2,0xd0,0x78,0xa8,0x02,0xc5,0x7a,0xbf,0xaa,0x1535.byte 0x00,0x6a,0xbb,0x5f,0xa5,0x74,0xe4,0xcf,0xfa,0x35,0x2b,0x41,0xd1,0x90,0x1e,0x8e36.Lk_sb1:37.byte 0x00,0x23,0xe2,0xfa,0x15,0xd4,0x18,0x36,0xef,0xd9,0x2e,0x0d,0xc1,0xcc,0xf7,0x3b38.byte 0x00,0x3e,0x50,0xcb,0x8f,0xe1,0x9b,0xb1,0x44,0xf5,0x2a,0x14,0x6e,0x7a,0xdf,0xa539.Lk_sb2:40.byte 0x00,0x29,0xe1,0x0a,0x40,0x88,0xeb,0x69,0x4a,0x23,0x82,0xab,0xc8,0x63,0xa1,0xc241.byte 0x00,0x24,0x71,0x0b,0xc6,0x93,0x7a,0xe2,0xcd,0x2f,0x98,0xbc,0x55,0xe9,0xb7,0x5e4243444546.Lk_dipt:47.byte 0x00,0x5f,0x54,0x0b,0x04,0x5b,0x50,0x0f,0x1a,0x45,0x4e,0x11,0x1e,0x41,0x4a,0x1548.byte 0x00,0x65,0x05,0x60,0xe6,0x83,0xe3,0x86,0x94,0xf1,0x91,0xf4,0x72,0x17,0x77,0x1249.Lk_dsbo:50.byte 0x00,0x40,0xf9,0x7e,0x53,0xea,0x87,0x13,0x2d,0x3e,0x94,0xd4,0xb9,0x6d,0xaa,0xc751.byte 0x00,0x1d,0x44,0x93,0x0f,0x56,0xd7,0x12,0x9c,0x8e,0xc5,0xd8,0x59,0x81,0x4b,0xca52.Lk_dsb9:53.byte 0x00,0xd6,0x86,0x9a,0x53,0x03,0x1c,0x85,0xc9,0x4c,0x99,0x4f,0x50,0x1f,0xd5,0xca54.byte 0x00,0x49,0xd7,0xec,0x89,0x17,0x3b,0xc0,0x65,0xa5,0xfb,0xb2,0x9e,0x2c,0x5e,0x7255.Lk_dsbd:56.byte 0x00,0xa2,0xb1,0xe6,0xdf,0xcc,0x57,0x7d,0x39,0x44,0x2a,0x88,0x13,0x9b,0x6e,0xf557.byte 0x00,0xcb,0xc6,0x24,0xf7,0xfa,0xe2,0x3c,0xd3,0xef,0xde,0x15,0x0d,0x18,0x31,0x2958.Lk_dsbb:59.byte 0x00,0x42,0xb4,0x96,0x92,0x64,0x22,0xd0,0x04,0xd4,0xf2,0xb0,0xf6,0x46,0x26,0x6060.byte 0x00,0x67,0x59,0xcd,0xa6,0x98,0x94,0xc1,0x6b,0xaa,0x55,0x32,0x3e,0x0c,0xff,0xf361.Lk_dsbe:62.byte 0x00,0xd0,0xd4,0x26,0x96,0x92,0xf2,0x46,0xb0,0xf6,0xb4,0x64,0x04,0x60,0x42,0x2263.byte 0x00,0xc1,0xaa,0xff,0xcd,0xa6,0x55,0x0c,0x32,0x3e,0x59,0x98,0x6b,0xf3,0x67,0x946465666768.Lk_dksd:69.byte 0x00,0x47,0xe4,0xa3,0x5d,0x1a,0xb9,0xfe,0xf9,0xbe,0x1d,0x5a,0xa4,0xe3,0x40,0x0770.byte 0x00,0x83,0x36,0xb5,0xf4,0x77,0xc2,0x41,0x1e,0x9d,0x28,0xab,0xea,0x69,0xdc,0x5f71.Lk_dksb:72.byte 0x00,0xd5,0x50,0x85,0x1f,0xca,0x4f,0x9a,0x99,0x4c,0xc9,0x1c,0x86,0x53,0xd6,0x0373.byte 0x00,0x4a,0xfc,0xb6,0xa7,0xed,0x5b,0x11,0xc8,0x82,0x34,0x7e,0x6f,0x25,0x93,0xd974.Lk_dkse:75.byte 0x00,0xd6,0xc9,0x1f,0xca,0x1c,0x03,0xd5,0x86,0x50,0x4f,0x99,0x4c,0x9a,0x85,0x5376.byte 0xe8,0x7b,0xdc,0x4f,0x05,0x96,0x31,0xa2,0x87,0x14,0xb3,0x20,0x6a,0xf9,0x5e,0xcd77.Lk_dks9:78.byte 0x00,0xa7,0xd9,0x7e,0xc8,0x6f,0x11,0xb6,0xfc,0x5b,0x25,0x82,0x34,0x93,0xed,0x4a79.byte 0x00,0x33,0x14,0x27,0x62,0x51,0x76,0x45,0xce,0xfd,0xda,0xe9,0xac,0x9f,0xb8,0x8b8081.Lk_rcon:82.byte 0xb6,0xee,0x9d,0xaf,0xb9,0x91,0x83,0x1f,0x81,0x7d,0x7c,0x4d,0x08,0x98,0x2a,0x7083.Lk_s63:84.byte 0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b8586.Lk_opt:87.byte 0x00,0x60,0xb6,0xd6,0x29,0x49,0x9f,0xff,0x08,0x68,0xbe,0xde,0x21,0x41,0x97,0xf788.byte 0x00,0xec,0xbc,0x50,0x51,0xbd,0xed,0x01,0xe0,0x0c,0x5c,0xb0,0xb1,0x5d,0x0d,0xe189.Lk_deskew:90.byte 0x00,0xe3,0xa4,0x47,0x40,0xa3,0xe4,0x07,0x1a,0xf9,0xbe,0x5d,0x5a,0xb9,0xfe,0x1d91.byte 0x00,0x69,0xea,0x83,0xdc,0xb5,0x36,0x5f,0x77,0x1e,0x9d,0xf4,0xab,0xc2,0x41,0x2892.align 593.Lconsts:94mflr 095bcl 20,31,$+496mflr 1297addi 12,12,-0x30898mtlr 099blr100.long 0101.byte 0,12,0x14,0,0,0,0,0102.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,65,108,116,105,86,101,99,44,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0103.align 2104.align 6105106107108109110111.align 4112_vpaes_encrypt_preheat:113mflr 8114bl .Lconsts115mtlr 8116li 11, 0xc0117li 10, 0xd0118li 9, 0xe0119li 8, 0xf0120vxor 7, 7, 7121vspltisb 8,4122vspltisb 9,0x0f123lvx 10, 12, 11124li 11, 0x100125lvx 11, 12, 10126li 10, 0x110127lvx 12, 12, 9128li 9, 0x120129lvx 13, 12, 8130li 8, 0x130131lvx 14, 12, 11132li 11, 0x140133lvx 15, 12, 10134li 10, 0x150135lvx 16, 12, 9136lvx 17, 12, 8137lvx 18, 12, 11138lvx 19, 12, 10139blr140.long 0141.byte 0,12,0x14,0,0,0,0,0142143144145146147148149150151152153154155156157.align 5158_vpaes_encrypt_core:159lwz 8, 240(5)160li 9, 16161lvx 5, 0, 5162li 11, 0x10163lvx 6, 9, 5164addi 9, 9, 16165vperm 5, 5, 6, 31166addi 10, 11, 0x40167vsrb 1, 0, 8168vperm 0, 12, 12, 0169vperm 1, 13, 13, 1170vxor 0, 0, 5171vxor 0, 0, 1172mtctr 8173b .Lenc_entry174175.align 4176.Lenc_loop:177178vperm 4, 17, 7, 2179lvx 1, 12, 11180addi 11, 11, 16181vperm 0, 16, 7, 3182vxor 4, 4, 5183andi. 11, 11, 0x30184vperm 5, 19, 7, 2185vxor 0, 0, 4186vperm 2, 18, 7, 3187lvx 4, 12, 10188addi 10, 11, 0x40189vperm 3, 0, 7, 1190vxor 2, 2, 5191vperm 0, 0, 7, 4192vxor 3, 3, 2193vperm 4, 3, 7, 1194vxor 0, 0, 3195vxor 0, 0, 4196197.Lenc_entry:198199vsrb 1, 0, 8200vperm 5, 11, 11, 0201vxor 0, 0, 1202vperm 3, 10, 10, 1203vperm 4, 10, 10, 0204vand 0, 0, 9205vxor 3, 3, 5206vxor 4, 4, 5207vperm 2, 10, 7, 3208vor 5,6,6209lvx 6, 9, 5210vperm 3, 10, 7, 4211addi 9, 9, 16212vxor 2, 2, 0213vperm 5, 5, 6, 31214vxor 3, 3, 1215bdnz .Lenc_loop216217218addi 10, 11, 0x80219220221vperm 4, 14, 7, 2222lvx 1, 12, 10223vperm 0, 15, 7, 3224vxor 4, 4, 5225vxor 0, 0, 4226vperm 0, 0, 7, 1227blr228.long 0229.byte 0,12,0x14,0,0,0,0,0230231.globl vpaes_encrypt232.type vpaes_encrypt,@function233.align 5234vpaes_encrypt:235.localentry vpaes_encrypt,0236237stdu 1,-256(1)238li 10,63239li 11,79240mflr 6241li 7,-1242stvx 20,10,1243addi 10,10,32244stvx 21,11,1245addi 11,11,32246stvx 22,10,1247addi 10,10,32248stvx 23,11,1249addi 11,11,32250stvx 24,10,1251addi 10,10,32252stvx 25,11,1253addi 11,11,32254stvx 26,10,1255addi 10,10,32256stvx 27,11,1257addi 11,11,32258stvx 28,10,1259addi 10,10,32260stvx 29,11,1261addi 11,11,32262stvx 30,10,1263stvx 31,11,1264stw 7,252(1)265li 0, -1266std 6,272(1)267or 0,0,0268269bl _vpaes_encrypt_preheat270271lvsl 27, 0, 3272lvx 0, 0, 3273addi 3, 3, 15274lvsr 29, 0, 4275lvsl 31, 0, 5276lvx 26, 0, 3277vperm 0, 0, 26, 27278279bl _vpaes_encrypt_core280281andi. 8, 4, 15282li 9, 16283beq .Lenc_out_aligned284285vperm 0, 0, 0, 29286mtctr 9287.Lenc_out_unaligned:288stvebx 0, 0, 4289addi 4, 4, 1290bdnz .Lenc_out_unaligned291b .Lenc_done292293.align 4294.Lenc_out_aligned:295stvx 0, 0, 4296.Lenc_done:297298li 10,63299li 11,79300mtlr 6301or 7,7,7302lvx 20,10,1303addi 10,10,32304lvx 21,11,1305addi 11,11,32306lvx 22,10,1307addi 10,10,32308lvx 23,11,1309addi 11,11,32310lvx 24,10,1311addi 10,10,32312lvx 25,11,1313addi 11,11,32314lvx 26,10,1315addi 10,10,32316lvx 27,11,1317addi 11,11,32318lvx 28,10,1319addi 10,10,32320lvx 29,11,1321addi 11,11,32322lvx 30,10,1323lvx 31,11,1324addi 1,1,256325blr326.long 0327.byte 0,12,0x04,1,0x80,0,3,0328.long 0329.size vpaes_encrypt,.-vpaes_encrypt330331.align 4332_vpaes_decrypt_preheat:333mflr 8334bl .Lconsts335mtlr 8336li 11, 0xc0337li 10, 0xd0338li 9, 0x160339li 8, 0x170340vxor 7, 7, 7341vspltisb 8,4342vspltisb 9,0x0f343lvx 10, 12, 11344li 11, 0x180345lvx 11, 12, 10346li 10, 0x190347lvx 12, 12, 9348li 9, 0x1a0349lvx 13, 12, 8350li 8, 0x1b0351lvx 14, 12, 11352li 11, 0x1c0353lvx 15, 12, 10354li 10, 0x1d0355lvx 16, 12, 9356li 9, 0x1e0357lvx 17, 12, 8358li 8, 0x1f0359lvx 18, 12, 11360li 11, 0x200361lvx 19, 12, 10362li 10, 0x210363lvx 20, 12, 9364lvx 21, 12, 8365lvx 22, 12, 11366lvx 23, 12, 10367blr368.long 0369.byte 0,12,0x14,0,0,0,0,0370371372373374375376.align 4377_vpaes_decrypt_core:378lwz 8, 240(5)379li 9, 16380lvx 5, 0, 5381li 11, 0x30382lvx 6, 9, 5383addi 9, 9, 16384vperm 5, 5, 6, 31385vsrb 1, 0, 8386vperm 0, 12, 12, 0387vperm 1, 13, 13, 1388vxor 0, 0, 5389vxor 0, 0, 1390mtctr 8391b .Ldec_entry392393.align 4394.Ldec_loop:395396397398lvx 0, 12, 11399400401vperm 4, 16, 7, 2402subi 11, 11, 16403vperm 1, 17, 7, 3404andi. 11, 11, 0x30405vxor 5, 5, 4406407vxor 5, 5, 1408409410vperm 4, 18, 7, 2411vperm 5, 5, 7, 0412vperm 1, 19, 7, 3413vxor 5, 5, 4414415vxor 5, 5, 1416417418vperm 4, 20, 7, 2419vperm 5, 5, 7, 0420vperm 1, 21, 7, 3421vxor 5, 5, 4422423vxor 5, 5, 1424425426vperm 4, 22, 7, 2427vperm 5, 5, 7, 0428vperm 1, 23, 7, 3429vxor 0, 5, 4430vxor 0, 0, 1431432.Ldec_entry:433434vsrb 1, 0, 8435vperm 2, 11, 11, 0436vxor 0, 0, 1437vperm 3, 10, 10, 1438vperm 4, 10, 10, 0439vand 0, 0, 9440vxor 3, 3, 2441vxor 4, 4, 2442vperm 2, 10, 7, 3443vor 5,6,6444lvx 6, 9, 5445vperm 3, 10, 7, 4446addi 9, 9, 16447vxor 2, 2, 0448vperm 5, 5, 6, 31449vxor 3, 3, 1450bdnz .Ldec_loop451452453addi 10, 11, 0x80454455vperm 4, 14, 7, 2456457lvx 2, 12, 10458vperm 1, 15, 7, 3459vxor 4, 4, 5460vxor 0, 1, 4461vperm 0, 0, 7, 2462blr463.long 0464.byte 0,12,0x14,0,0,0,0,0465466.globl vpaes_decrypt467.type vpaes_decrypt,@function468.align 5469vpaes_decrypt:470.localentry vpaes_decrypt,0471472stdu 1,-256(1)473li 10,63474li 11,79475mflr 6476li 7,-1477stvx 20,10,1478addi 10,10,32479stvx 21,11,1480addi 11,11,32481stvx 22,10,1482addi 10,10,32483stvx 23,11,1484addi 11,11,32485stvx 24,10,1486addi 10,10,32487stvx 25,11,1488addi 11,11,32489stvx 26,10,1490addi 10,10,32491stvx 27,11,1492addi 11,11,32493stvx 28,10,1494addi 10,10,32495stvx 29,11,1496addi 11,11,32497stvx 30,10,1498stvx 31,11,1499stw 7,252(1)500li 0, -1501std 6,272(1)502or 0,0,0503504bl _vpaes_decrypt_preheat505506lvsl 27, 0, 3507lvx 0, 0, 3508addi 3, 3, 15509lvsr 29, 0, 4510lvsl 31, 0, 5511lvx 26, 0, 3512vperm 0, 0, 26, 27513514bl _vpaes_decrypt_core515516andi. 8, 4, 15517li 9, 16518beq .Ldec_out_aligned519520vperm 0, 0, 0, 29521mtctr 9522.Ldec_out_unaligned:523stvebx 0, 0, 4524addi 4, 4, 1525bdnz .Ldec_out_unaligned526b .Ldec_done527528.align 4529.Ldec_out_aligned:530stvx 0, 0, 4531.Ldec_done:532533li 10,63534li 11,79535mtlr 6536or 7,7,7537lvx 20,10,1538addi 10,10,32539lvx 21,11,1540addi 11,11,32541lvx 22,10,1542addi 10,10,32543lvx 23,11,1544addi 11,11,32545lvx 24,10,1546addi 10,10,32547lvx 25,11,1548addi 11,11,32549lvx 26,10,1550addi 10,10,32551lvx 27,11,1552addi 11,11,32553lvx 28,10,1554addi 10,10,32555lvx 29,11,1556addi 11,11,32557lvx 30,10,1558lvx 31,11,1559addi 1,1,256560blr561.long 0562.byte 0,12,0x04,1,0x80,0,3,0563.long 0564.size vpaes_decrypt,.-vpaes_decrypt565566.globl vpaes_cbc_encrypt567.type vpaes_cbc_encrypt,@function568.align 5569vpaes_cbc_encrypt:570.localentry vpaes_cbc_encrypt,0571572cmpldi 5,16573.long 0x4dc00020574575stdu 1,-272(1)576mflr 0577li 10,63578li 11,79579li 12,-1580stvx 20,10,1581addi 10,10,32582stvx 21,11,1583addi 11,11,32584stvx 22,10,1585addi 10,10,32586stvx 23,11,1587addi 11,11,32588stvx 24,10,1589addi 10,10,32590stvx 25,11,1591addi 11,11,32592stvx 26,10,1593addi 10,10,32594stvx 27,11,1595addi 11,11,32596stvx 28,10,1597addi 10,10,32598stvx 29,11,1599addi 11,11,32600stvx 30,10,1601stvx 31,11,1602stw 12,252(1)603std 30,256(1)604std 31,264(1)605li 9, -16606std 0, 288(1)607608and 30, 5, 9609andi. 9, 4, 15610mr 5, 6611mr 31, 7612li 6, -1613mcrf 1, 0614mr 7, 12615or 6,6,6616617lvx 24, 0, 31618li 9, 15619lvsl 27, 0, 31620lvx 25, 9, 31621vperm 24, 24, 25, 27622623cmpwi 8, 0624neg 8, 3625vxor 7, 7, 7626lvsl 31, 0, 5627lvsr 29, 0, 4628lvsr 27, 0, 8629vnor 30, 7, 7630lvx 26, 0, 3631vperm 30, 7, 30, 29632addi 3, 3, 15633634beq .Lcbc_decrypt635636bl _vpaes_encrypt_preheat637li 0, 16638639beq 1, .Lcbc_enc_loop640641vor 0,26,26642lvx 26, 0, 3643addi 3, 3, 16644vperm 0, 0, 26, 27645vxor 0, 0, 24646647bl _vpaes_encrypt_core648649andi. 8, 4, 15650vor 24,0,0651sub 9, 4, 8652vperm 28, 0, 0, 29653654.Lcbc_enc_head:655stvebx 28, 8, 9656cmpwi 8, 15657addi 8, 8, 1658bne .Lcbc_enc_head659660sub. 30, 30, 0661addi 4, 4, 16662beq .Lcbc_unaligned_done663664.Lcbc_enc_loop:665vor 0,26,26666lvx 26, 0, 3667addi 3, 3, 16668vperm 0, 0, 26, 27669vxor 0, 0, 24670671bl _vpaes_encrypt_core672673vor 24,0,0674sub. 30, 30, 0675vperm 0, 0, 0, 29676vsel 1,28,0,30677vor 28,0,0678stvx 1, 0, 4679addi 4, 4, 16680bne .Lcbc_enc_loop681682b .Lcbc_done683684.align 5685.Lcbc_decrypt:686bl _vpaes_decrypt_preheat687li 0, 16688689beq 1, .Lcbc_dec_loop690691vor 0,26,26692lvx 26, 0, 3693addi 3, 3, 16694vperm 0, 0, 26, 27695vor 25,0,0696697bl _vpaes_decrypt_core698699andi. 8, 4, 15700vxor 0, 0, 24701vor 24,25,25702sub 9, 4, 8703vperm 28, 0, 0, 29704705.Lcbc_dec_head:706stvebx 28, 8, 9707cmpwi 8, 15708addi 8, 8, 1709bne .Lcbc_dec_head710711sub. 30, 30, 0712addi 4, 4, 16713beq .Lcbc_unaligned_done714715.Lcbc_dec_loop:716vor 0,26,26717lvx 26, 0, 3718addi 3, 3, 16719vperm 0, 0, 26, 27720vor 25,0,0721722bl _vpaes_decrypt_core723724vxor 0, 0, 24725vor 24,25,25726sub. 30, 30, 0727vperm 0, 0, 0, 29728vsel 1,28,0,30729vor 28,0,0730stvx 1, 0, 4731addi 4, 4, 16732bne .Lcbc_dec_loop733734.Lcbc_done:735beq 1, .Lcbc_write_iv736737.Lcbc_unaligned_done:738andi. 8, 4, 15739sub 4, 4, 8740li 9, 0741.Lcbc_tail:742stvebx 28, 9, 4743addi 9, 9, 1744cmpw 9, 8745bne .Lcbc_tail746747.Lcbc_write_iv:748neg 8, 31749li 10, 4750lvsl 29, 0, 8751li 11, 8752li 12, 12753vperm 24, 24, 24, 29754stvewx 24, 0, 31755stvewx 24, 10, 31756stvewx 24, 11, 31757stvewx 24, 12, 31758759or 7,7,7760li 10,63761li 11,79762lvx 20,10,1763addi 10,10,32764lvx 21,11,1765addi 11,11,32766lvx 22,10,1767addi 10,10,32768lvx 23,11,1769addi 11,11,32770lvx 24,10,1771addi 10,10,32772lvx 25,11,1773addi 11,11,32774lvx 26,10,1775addi 10,10,32776lvx 27,11,1777addi 11,11,32778lvx 28,10,1779addi 10,10,32780lvx 29,11,1781addi 11,11,32782lvx 30,10,1783lvx 31,11,1784.Lcbc_abort:785ld 0, 288(1)786ld 30,256(1)787ld 31,264(1)788mtlr 0789addi 1,1,272790blr791.long 0792.byte 0,12,0x04,1,0x80,2,6,0793.long 0794.size vpaes_cbc_encrypt,.-vpaes_cbc_encrypt795796797798799800.align 4801_vpaes_key_preheat:802mflr 8803bl .Lconsts804mtlr 8805li 11, 0xc0806li 10, 0xd0807li 9, 0xe0808li 8, 0xf0809810vspltisb 8,4811vxor 9,9,9812lvx 10, 12, 11813li 11, 0x120814lvx 11, 12, 10815li 10, 0x130816lvx 12, 12, 9817li 9, 0x220818lvx 13, 12, 8819li 8, 0x230820821lvx 14, 12, 11822li 11, 0x240823lvx 15, 12, 10824li 10, 0x250825826lvx 16, 12, 9827li 9, 0x260828lvx 17, 12, 8829li 8, 0x270830lvx 18, 12, 11831li 11, 0x280832lvx 19, 12, 10833li 10, 0x290834lvx 20, 12, 9835li 9, 0x2a0836lvx 21, 12, 8837li 8, 0x2b0838lvx 22, 12, 11839lvx 23, 12, 10840841lvx 24, 12, 9842lvx 25, 0, 12843lvx 26, 12, 8844blr845.long 0846.byte 0,12,0x14,0,0,0,0,0847848.align 4849_vpaes_schedule_core:850mflr 7851852bl _vpaes_key_preheat853854855neg 8, 3856lvx 0, 0, 3857addi 3, 3, 15858lvsr 27, 0, 8859lvx 6, 0, 3860addi 3, 3, 8861vperm 0, 0, 6, 27862863864vor 3,0,0865bl _vpaes_schedule_transform866vor 7,0,0867868bne 1, .Lschedule_am_decrypting869870871li 8, 0x30872li 9, 4873li 10, 8874li 11, 12875876lvsr 29, 0, 5877vnor 30, 9, 9878vperm 30, 9, 30, 29879880881vperm 28, 0, 0, 29882stvewx 28, 0, 5883stvewx 28, 9, 5884stvewx 28, 10, 5885addi 10, 12, 0x80886stvewx 28, 11, 5887b .Lschedule_go888889.Lschedule_am_decrypting:890srwi 8, 4, 1891andi. 8, 8, 32892xori 8, 8, 32893addi 10, 12, 0x80894895lvx 1, 8, 10896li 9, 4897li 10, 8898li 11, 12899vperm 4, 3, 3, 1900901neg 0, 5902lvsl 29, 0, 0903vnor 30, 9, 9904vperm 30, 30, 9, 29905906907vperm 28, 4, 4, 29908stvewx 28, 0, 5909stvewx 28, 9, 5910stvewx 28, 10, 5911addi 10, 12, 0x80912stvewx 28, 11, 5913addi 5, 5, 15914xori 8, 8, 0x30915916.Lschedule_go:917cmplwi 4, 192918bgt .Lschedule_256919beq .Lschedule_192920921922923924925926927928929930.Lschedule_128:931li 0, 10932mtctr 0933934.Loop_schedule_128:935bl _vpaes_schedule_round936bdz .Lschedule_mangle_last937bl _vpaes_schedule_mangle938b .Loop_schedule_128939940941942943944945946947948949950951952953954955.align 4956.Lschedule_192:957li 0, 4958lvx 0, 0, 3959vperm 0, 6, 0, 27960vsldoi 0, 3, 0, 8961bl _vpaes_schedule_transform962vsldoi 6, 0, 9, 8963vsldoi 6, 9, 6, 8964mtctr 0965966.Loop_schedule_192:967bl _vpaes_schedule_round968vsldoi 0, 6, 0, 8969bl _vpaes_schedule_mangle970bl _vpaes_schedule_192_smear971bl _vpaes_schedule_mangle972bl _vpaes_schedule_round973bdz .Lschedule_mangle_last974bl _vpaes_schedule_mangle975bl _vpaes_schedule_192_smear976b .Loop_schedule_192977978979980981982983984985986987988.align 4989.Lschedule_256:990li 0, 7991addi 3, 3, 8992lvx 0, 0, 3993vperm 0, 6, 0, 27994bl _vpaes_schedule_transform995mtctr 0996997.Loop_schedule_256:998bl _vpaes_schedule_mangle999vor 6,0,0100010011002bl _vpaes_schedule_round1003bdz .Lschedule_mangle_last1004bl _vpaes_schedule_mangle100510061007vspltw 0, 0, 31008vor 5,7,71009vor 7,6,61010bl _vpaes_schedule_low_round1011vor 7,5,510121013b .Loop_schedule_25610141015101610171018101910201021102210231024.align 41025.Lschedule_mangle_last:10261027li 11, 0x2e01028li 9, 0x2f01029bne 1, .Lschedule_mangle_last_dec103010311032lvx 1, 8, 101033li 11, 0x2c01034li 9, 0x2d01035vperm 0, 0, 0, 110361037lvx 12, 11, 121038lvx 13, 9, 121039addi 5, 5, 161040vxor 0, 0, 261041bl _vpaes_schedule_transform104210431044vperm 0, 0, 0, 291045li 10, 41046vsel 2,28,0,301047li 11, 81048stvx 2, 0, 51049li 12, 121050stvewx 0, 0, 51051stvewx 0, 10, 51052stvewx 0, 11, 51053stvewx 0, 12, 51054b .Lschedule_mangle_done10551056.align 41057.Lschedule_mangle_last_dec:1058lvx 12, 11, 121059lvx 13, 9, 121060addi 5, 5, -161061vxor 0, 0, 261062bl _vpaes_schedule_transform106310641065addi 9, 5, -151066vperm 0, 0, 0, 291067li 10, 41068vsel 2,28,0,301069li 11, 81070stvx 2, 0, 51071li 12, 121072stvewx 0, 0, 91073stvewx 0, 10, 91074stvewx 0, 11, 91075stvewx 0, 12, 9107610771078.Lschedule_mangle_done:1079mtlr 710801081vxor 0, 0, 01082vxor 1, 1, 11083vxor 2, 2, 21084vxor 3, 3, 31085vxor 4, 4, 41086vxor 5, 5, 51087vxor 6, 6, 61088vxor 7, 7, 710891090blr1091.long 01092.byte 0,12,0x14,0,0,0,0,01093109410951096109710981099110011011102110311041105110611071108.align 41109_vpaes_schedule_192_smear:1110vspltw 0, 7, 31111vsldoi 1, 9, 6, 121112vsldoi 0, 7, 0, 81113vxor 6, 6, 11114vxor 6, 6, 01115vor 0,6,61116vsldoi 6, 6, 9, 81117vsldoi 6, 9, 6, 81118blr1119.long 01120.byte 0,12,0x14,0,0,0,0,011211122112311241125112611271128112911301131113211331134113511361137113811391140.align 41141_vpaes_schedule_round:114211431144vsldoi 1, 24, 9, 151145vsldoi 24, 24, 24, 151146vxor 7, 7, 1114711481149vspltw 0, 0, 31150vsldoi 0, 0, 0, 111511152115311541155_vpaes_schedule_low_round:11561157vsldoi 1, 9, 7, 121158vxor 7, 7, 11159vspltisb 1,0x0f1160vsldoi 4, 9, 7, 8116111621163vand 1, 1, 01164vsrb 0, 0, 81165vxor 7, 7, 41166vperm 2, 11, 9, 11167vxor 1, 1, 01168vperm 3, 10, 9, 01169vxor 3, 3, 21170vperm 4, 10, 9, 11171vxor 7, 7, 261172vperm 3, 10, 9, 31173vxor 4, 4, 21174vperm 2, 10, 9, 41175vxor 3, 3, 11176vxor 2, 2, 01177vperm 4, 15, 9, 31178vperm 1, 14, 9, 21179vxor 1, 1, 4118011811182vxor 0, 1, 71183vxor 7, 1, 71184blr1185.long 01186.byte 0,12,0x14,0,0,0,0,011871188118911901191119211931194119511961197.align 41198_vpaes_schedule_transform:11991200vsrb 2, 0, 812011202vperm 0, 12, 12, 012031204vperm 2, 13, 13, 21205vxor 0, 0, 21206blr1207.long 01208.byte 0,12,0x14,0,0,0,0,01209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233.align 41234_vpaes_schedule_mangle:123512361237bne 1, .Lschedule_mangle_dec123812391240vxor 4, 0, 261241addi 5, 5, 161242vperm 4, 4, 4, 251243vperm 1, 4, 4, 251244vperm 3, 1, 1, 251245vxor 4, 4, 11246lvx 1, 8, 101247vxor 3, 3, 412481249vperm 3, 3, 3, 11250addi 8, 8, -161251andi. 8, 8, 0x30125212531254vperm 1, 3, 3, 291255vsel 2,28,1,301256vor 28,1,11257stvx 2, 0, 51258blr12591260.align 41261.Lschedule_mangle_dec:126212631264vsrb 1, 0, 81265126612671268vperm 2, 16, 16, 012691270vperm 3, 17, 17, 11271vxor 3, 3, 21272vperm 3, 3, 9, 25127312741275vperm 2, 18, 18, 01276vxor 2, 2, 312771278vperm 3, 19, 19, 11279vxor 3, 3, 21280vperm 3, 3, 9, 25128112821283vperm 2, 20, 20, 01284vxor 2, 2, 312851286vperm 3, 21, 21, 11287vxor 3, 3, 2128812891290vperm 2, 22, 22, 01291vperm 3, 3, 9, 2512921293vperm 4, 23, 23, 11294lvx 1, 8, 101295vxor 2, 2, 31296vxor 3, 4, 212971298addi 5, 5, -1612991300vperm 3, 3, 3, 11301addi 8, 8, -161302andi. 8, 8, 0x30130313041305vperm 1, 3, 3, 291306vsel 2,28,1,301307vor 28,1,11308stvx 2, 0, 51309blr1310.long 01311.byte 0,12,0x14,0,0,0,0,013121313.globl vpaes_set_encrypt_key1314.type vpaes_set_encrypt_key,@function1315.align 51316vpaes_set_encrypt_key:1317.localentry vpaes_set_encrypt_key,013181319stdu 1,-256(1)1320li 10,631321li 11,791322mflr 01323li 6,-11324stvx 20,10,11325addi 10,10,321326stvx 21,11,11327addi 11,11,321328stvx 22,10,11329addi 10,10,321330stvx 23,11,11331addi 11,11,321332stvx 24,10,11333addi 10,10,321334stvx 25,11,11335addi 11,11,321336stvx 26,10,11337addi 10,10,321338stvx 27,11,11339addi 11,11,321340stvx 28,10,11341addi 10,10,321342stvx 29,11,11343addi 11,11,321344stvx 30,10,11345stvx 31,11,11346stw 6,252(1)1347li 7, -11348std 0, 272(1)1349or 7,7,713501351srwi 9, 4, 51352addi 9, 9, 61353stw 9, 240(5)13541355cmplw 1,4,41356li 8, 0x301357bl _vpaes_schedule_core13581359ld 0, 272(1)1360li 10,631361li 11,791362or 6,6,61363mtlr 01364xor 3, 3, 31365lvx 20,10,11366addi 10,10,321367lvx 21,11,11368addi 11,11,321369lvx 22,10,11370addi 10,10,321371lvx 23,11,11372addi 11,11,321373lvx 24,10,11374addi 10,10,321375lvx 25,11,11376addi 11,11,321377lvx 26,10,11378addi 10,10,321379lvx 27,11,11380addi 11,11,321381lvx 28,10,11382addi 10,10,321383lvx 29,11,11384addi 11,11,321385lvx 30,10,11386lvx 31,11,11387addi 1,1,2561388blr1389.long 01390.byte 0,12,0x04,1,0x80,0,3,01391.long 01392.size vpaes_set_encrypt_key,.-vpaes_set_encrypt_key13931394.globl vpaes_set_decrypt_key1395.type vpaes_set_decrypt_key,@function1396.align 41397vpaes_set_decrypt_key:1398.localentry vpaes_set_decrypt_key,013991400stdu 1,-256(1)1401li 10,631402li 11,791403mflr 01404li 6,-11405stvx 20,10,11406addi 10,10,321407stvx 21,11,11408addi 11,11,321409stvx 22,10,11410addi 10,10,321411stvx 23,11,11412addi 11,11,321413stvx 24,10,11414addi 10,10,321415stvx 25,11,11416addi 11,11,321417stvx 26,10,11418addi 10,10,321419stvx 27,11,11420addi 11,11,321421stvx 28,10,11422addi 10,10,321423stvx 29,11,11424addi 11,11,321425stvx 30,10,11426stvx 31,11,11427stw 6,252(1)1428li 7, -11429std 0, 272(1)1430or 7,7,714311432srwi 9, 4, 51433addi 9, 9, 61434stw 9, 240(5)14351436slwi 9, 9, 41437add 5, 5, 914381439cmplwi 1, 4, 01440srwi 8, 4, 11441andi. 8, 8, 321442xori 8, 8, 321443bl _vpaes_schedule_core14441445ld 0, 272(1)1446li 10,631447li 11,791448or 6,6,61449mtlr 01450xor 3, 3, 31451lvx 20,10,11452addi 10,10,321453lvx 21,11,11454addi 11,11,321455lvx 22,10,11456addi 10,10,321457lvx 23,11,11458addi 11,11,321459lvx 24,10,11460addi 10,10,321461lvx 25,11,11462addi 11,11,321463lvx 26,10,11464addi 10,10,321465lvx 27,11,11466addi 11,11,321467lvx 28,10,11468addi 10,10,321469lvx 29,11,11470addi 11,11,321471lvx 30,10,11472lvx 31,11,11473addi 1,1,2561474blr1475.long 01476.byte 0,12,0x04,1,0x80,0,3,01477.long 01478.size vpaes_set_decrypt_key,.-vpaes_set_decrypt_key147914801481