1*3a608692SPiotr Kubaj/* Do not modify. This file is auto-generated from vpaes-ppc.pl. */ 2*3a608692SPiotr Kubaj.machine "any" 3*3a608692SPiotr Kubaj 4*3a608692SPiotr Kubaj.abiversion 2 5*3a608692SPiotr Kubaj.text 6*3a608692SPiotr Kubaj 7*3a608692SPiotr Kubaj.align 7 8*3a608692SPiotr Kubaj_vpaes_consts: 9*3a608692SPiotr Kubaj.Lk_mc_forward: 10*3a608692SPiotr Kubaj.byte 0x01,0x02,0x03,0x00,0x05,0x06,0x07,0x04,0x09,0x0a,0x0b,0x08,0x0d,0x0e,0x0f,0x0c 11*3a608692SPiotr Kubaj.byte 0x05,0x06,0x07,0x04,0x09,0x0a,0x0b,0x08,0x0d,0x0e,0x0f,0x0c,0x01,0x02,0x03,0x00 12*3a608692SPiotr Kubaj.byte 0x09,0x0a,0x0b,0x08,0x0d,0x0e,0x0f,0x0c,0x01,0x02,0x03,0x00,0x05,0x06,0x07,0x04 13*3a608692SPiotr Kubaj.byte 0x0d,0x0e,0x0f,0x0c,0x01,0x02,0x03,0x00,0x05,0x06,0x07,0x04,0x09,0x0a,0x0b,0x08 14*3a608692SPiotr Kubaj.Lk_mc_backward: 15*3a608692SPiotr Kubaj.byte 0x03,0x00,0x01,0x02,0x07,0x04,0x05,0x06,0x0b,0x08,0x09,0x0a,0x0f,0x0c,0x0d,0x0e 16*3a608692SPiotr Kubaj.byte 0x0f,0x0c,0x0d,0x0e,0x03,0x00,0x01,0x02,0x07,0x04,0x05,0x06,0x0b,0x08,0x09,0x0a 17*3a608692SPiotr Kubaj.byte 0x0b,0x08,0x09,0x0a,0x0f,0x0c,0x0d,0x0e,0x03,0x00,0x01,0x02,0x07,0x04,0x05,0x06 18*3a608692SPiotr Kubaj.byte 0x07,0x04,0x05,0x06,0x0b,0x08,0x09,0x0a,0x0f,0x0c,0x0d,0x0e,0x03,0x00,0x01,0x02 19*3a608692SPiotr Kubaj.Lk_sr: 20*3a608692SPiotr Kubaj.byte 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f 21*3a608692SPiotr Kubaj.byte 0x00,0x05,0x0a,0x0f,0x04,0x09,0x0e,0x03,0x08,0x0d,0x02,0x07,0x0c,0x01,0x06,0x0b 22*3a608692SPiotr Kubaj.byte 0x00,0x09,0x02,0x0b,0x04,0x0d,0x06,0x0f,0x08,0x01,0x0a,0x03,0x0c,0x05,0x0e,0x07 23*3a608692SPiotr Kubaj.byte 0x00,0x0d,0x0a,0x07,0x04,0x01,0x0e,0x0b,0x08,0x05,0x02,0x0f,0x0c,0x09,0x06,0x03 24*3a608692SPiotr Kubaj 25*3a608692SPiotr Kubaj 26*3a608692SPiotr Kubaj 27*3a608692SPiotr Kubaj 28*3a608692SPiotr Kubaj.Lk_inv: 29*3a608692SPiotr Kubaj.byte 0xf0,0x01,0x08,0x0d,0x0f,0x06,0x05,0x0e,0x02,0x0c,0x0b,0x0a,0x09,0x03,0x07,0x04 30*3a608692SPiotr Kubaj.byte 0xf0,0x07,0x0b,0x0f,0x06,0x0a,0x04,0x01,0x09,0x08,0x05,0x02,0x0c,0x0e,0x0d,0x03 31*3a608692SPiotr Kubaj.Lk_ipt: 32*3a608692SPiotr Kubaj.byte 0x00,0x70,0x2a,0x5a,0x98,0xe8,0xb2,0xc2,0x08,0x78,0x22,0x52,0x90,0xe0,0xba,0xca 33*3a608692SPiotr Kubaj.byte 0x00,0x4d,0x7c,0x31,0x7d,0x30,0x01,0x4c,0x81,0xcc,0xfd,0xb0,0xfc,0xb1,0x80,0xcd 34*3a608692SPiotr Kubaj.Lk_sbo: 35*3a608692SPiotr Kubaj.byte 0x00,0xc7,0xbd,0x6f,0x17,0x6d,0xd2,0xd0,0x78,0xa8,0x02,0xc5,0x7a,0xbf,0xaa,0x15 36*3a608692SPiotr Kubaj.byte 0x00,0x6a,0xbb,0x5f,0xa5,0x74,0xe4,0xcf,0xfa,0x35,0x2b,0x41,0xd1,0x90,0x1e,0x8e 37*3a608692SPiotr Kubaj.Lk_sb1: 38*3a608692SPiotr Kubaj.byte 0x00,0x23,0xe2,0xfa,0x15,0xd4,0x18,0x36,0xef,0xd9,0x2e,0x0d,0xc1,0xcc,0xf7,0x3b 39*3a608692SPiotr Kubaj.byte 0x00,0x3e,0x50,0xcb,0x8f,0xe1,0x9b,0xb1,0x44,0xf5,0x2a,0x14,0x6e,0x7a,0xdf,0xa5 40*3a608692SPiotr Kubaj.Lk_sb2: 41*3a608692SPiotr Kubaj.byte 0x00,0x29,0xe1,0x0a,0x40,0x88,0xeb,0x69,0x4a,0x23,0x82,0xab,0xc8,0x63,0xa1,0xc2 42*3a608692SPiotr Kubaj.byte 0x00,0x24,0x71,0x0b,0xc6,0x93,0x7a,0xe2,0xcd,0x2f,0x98,0xbc,0x55,0xe9,0xb7,0x5e 43*3a608692SPiotr Kubaj 44*3a608692SPiotr Kubaj 45*3a608692SPiotr Kubaj 46*3a608692SPiotr Kubaj 47*3a608692SPiotr Kubaj.Lk_dipt: 48*3a608692SPiotr Kubaj.byte 0x00,0x5f,0x54,0x0b,0x04,0x5b,0x50,0x0f,0x1a,0x45,0x4e,0x11,0x1e,0x41,0x4a,0x15 49*3a608692SPiotr Kubaj.byte 0x00,0x65,0x05,0x60,0xe6,0x83,0xe3,0x86,0x94,0xf1,0x91,0xf4,0x72,0x17,0x77,0x12 50*3a608692SPiotr Kubaj.Lk_dsbo: 51*3a608692SPiotr Kubaj.byte 0x00,0x40,0xf9,0x7e,0x53,0xea,0x87,0x13,0x2d,0x3e,0x94,0xd4,0xb9,0x6d,0xaa,0xc7 52*3a608692SPiotr Kubaj.byte 0x00,0x1d,0x44,0x93,0x0f,0x56,0xd7,0x12,0x9c,0x8e,0xc5,0xd8,0x59,0x81,0x4b,0xca 53*3a608692SPiotr Kubaj.Lk_dsb9: 54*3a608692SPiotr Kubaj.byte 0x00,0xd6,0x86,0x9a,0x53,0x03,0x1c,0x85,0xc9,0x4c,0x99,0x4f,0x50,0x1f,0xd5,0xca 55*3a608692SPiotr Kubaj.byte 0x00,0x49,0xd7,0xec,0x89,0x17,0x3b,0xc0,0x65,0xa5,0xfb,0xb2,0x9e,0x2c,0x5e,0x72 56*3a608692SPiotr Kubaj.Lk_dsbd: 57*3a608692SPiotr Kubaj.byte 0x00,0xa2,0xb1,0xe6,0xdf,0xcc,0x57,0x7d,0x39,0x44,0x2a,0x88,0x13,0x9b,0x6e,0xf5 58*3a608692SPiotr Kubaj.byte 0x00,0xcb,0xc6,0x24,0xf7,0xfa,0xe2,0x3c,0xd3,0xef,0xde,0x15,0x0d,0x18,0x31,0x29 59*3a608692SPiotr Kubaj.Lk_dsbb: 60*3a608692SPiotr Kubaj.byte 0x00,0x42,0xb4,0x96,0x92,0x64,0x22,0xd0,0x04,0xd4,0xf2,0xb0,0xf6,0x46,0x26,0x60 61*3a608692SPiotr Kubaj.byte 0x00,0x67,0x59,0xcd,0xa6,0x98,0x94,0xc1,0x6b,0xaa,0x55,0x32,0x3e,0x0c,0xff,0xf3 62*3a608692SPiotr Kubaj.Lk_dsbe: 63*3a608692SPiotr Kubaj.byte 0x00,0xd0,0xd4,0x26,0x96,0x92,0xf2,0x46,0xb0,0xf6,0xb4,0x64,0x04,0x60,0x42,0x22 64*3a608692SPiotr Kubaj.byte 0x00,0xc1,0xaa,0xff,0xcd,0xa6,0x55,0x0c,0x32,0x3e,0x59,0x98,0x6b,0xf3,0x67,0x94 65*3a608692SPiotr Kubaj 66*3a608692SPiotr Kubaj 67*3a608692SPiotr Kubaj 68*3a608692SPiotr Kubaj 69*3a608692SPiotr Kubaj.Lk_dksd: 70*3a608692SPiotr Kubaj.byte 0x00,0x47,0xe4,0xa3,0x5d,0x1a,0xb9,0xfe,0xf9,0xbe,0x1d,0x5a,0xa4,0xe3,0x40,0x07 71*3a608692SPiotr Kubaj.byte 0x00,0x83,0x36,0xb5,0xf4,0x77,0xc2,0x41,0x1e,0x9d,0x28,0xab,0xea,0x69,0xdc,0x5f 72*3a608692SPiotr Kubaj.Lk_dksb: 73*3a608692SPiotr Kubaj.byte 0x00,0xd5,0x50,0x85,0x1f,0xca,0x4f,0x9a,0x99,0x4c,0xc9,0x1c,0x86,0x53,0xd6,0x03 74*3a608692SPiotr Kubaj.byte 0x00,0x4a,0xfc,0xb6,0xa7,0xed,0x5b,0x11,0xc8,0x82,0x34,0x7e,0x6f,0x25,0x93,0xd9 75*3a608692SPiotr Kubaj.Lk_dkse: 76*3a608692SPiotr Kubaj.byte 0x00,0xd6,0xc9,0x1f,0xca,0x1c,0x03,0xd5,0x86,0x50,0x4f,0x99,0x4c,0x9a,0x85,0x53 77*3a608692SPiotr Kubaj.byte 0xe8,0x7b,0xdc,0x4f,0x05,0x96,0x31,0xa2,0x87,0x14,0xb3,0x20,0x6a,0xf9,0x5e,0xcd 78*3a608692SPiotr Kubaj.Lk_dks9: 79*3a608692SPiotr Kubaj.byte 0x00,0xa7,0xd9,0x7e,0xc8,0x6f,0x11,0xb6,0xfc,0x5b,0x25,0x82,0x34,0x93,0xed,0x4a 80*3a608692SPiotr Kubaj.byte 0x00,0x33,0x14,0x27,0x62,0x51,0x76,0x45,0xce,0xfd,0xda,0xe9,0xac,0x9f,0xb8,0x8b 81*3a608692SPiotr Kubaj 82*3a608692SPiotr Kubaj.Lk_rcon: 83*3a608692SPiotr Kubaj.byte 0xb6,0xee,0x9d,0xaf,0xb9,0x91,0x83,0x1f,0x81,0x7d,0x7c,0x4d,0x08,0x98,0x2a,0x70 84*3a608692SPiotr Kubaj.Lk_s63: 85*3a608692SPiotr Kubaj.byte 0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b 86*3a608692SPiotr Kubaj 87*3a608692SPiotr Kubaj.Lk_opt: 88*3a608692SPiotr Kubaj.byte 0x00,0x60,0xb6,0xd6,0x29,0x49,0x9f,0xff,0x08,0x68,0xbe,0xde,0x21,0x41,0x97,0xf7 89*3a608692SPiotr Kubaj.byte 0x00,0xec,0xbc,0x50,0x51,0xbd,0xed,0x01,0xe0,0x0c,0x5c,0xb0,0xb1,0x5d,0x0d,0xe1 90*3a608692SPiotr Kubaj.Lk_deskew: 91*3a608692SPiotr Kubaj.byte 0x00,0xe3,0xa4,0x47,0x40,0xa3,0xe4,0x07,0x1a,0xf9,0xbe,0x5d,0x5a,0xb9,0xfe,0x1d 92*3a608692SPiotr Kubaj.byte 0x00,0x69,0xea,0x83,0xdc,0xb5,0x36,0x5f,0x77,0x1e,0x9d,0xf4,0xab,0xc2,0x41,0x28 93*3a608692SPiotr Kubaj.align 5 94*3a608692SPiotr Kubaj.Lconsts: 95*3a608692SPiotr Kubaj mflr 0 96*3a608692SPiotr Kubaj bcl 20,31,$+4 97*3a608692SPiotr Kubaj mflr 12 98*3a608692SPiotr Kubaj addi 12,12,-0x308 99*3a608692SPiotr Kubaj mtlr 0 100*3a608692SPiotr Kubaj blr 101*3a608692SPiotr Kubaj.long 0 102*3a608692SPiotr Kubaj.byte 0,12,0x14,0,0,0,0,0 103*3a608692SPiotr Kubaj.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,0 104*3a608692SPiotr Kubaj.align 2 105*3a608692SPiotr Kubaj.align 6 106*3a608692SPiotr Kubaj 107*3a608692SPiotr Kubaj 108*3a608692SPiotr Kubaj 109*3a608692SPiotr Kubaj 110*3a608692SPiotr Kubaj 111*3a608692SPiotr Kubaj 112*3a608692SPiotr Kubaj.align 4 113*3a608692SPiotr Kubaj_vpaes_encrypt_preheat: 114*3a608692SPiotr Kubaj mflr 8 115*3a608692SPiotr Kubaj bl .Lconsts 116*3a608692SPiotr Kubaj mtlr 8 117*3a608692SPiotr Kubaj li 11, 0xc0 118*3a608692SPiotr Kubaj li 10, 0xd0 119*3a608692SPiotr Kubaj li 9, 0xe0 120*3a608692SPiotr Kubaj li 8, 0xf0 121*3a608692SPiotr Kubaj vxor 7, 7, 7 122*3a608692SPiotr Kubaj vspltisb 8,4 123*3a608692SPiotr Kubaj vspltisb 9,0x0f 124*3a608692SPiotr Kubaj lvx 10, 12, 11 125*3a608692SPiotr Kubaj li 11, 0x100 126*3a608692SPiotr Kubaj lvx 11, 12, 10 127*3a608692SPiotr Kubaj li 10, 0x110 128*3a608692SPiotr Kubaj lvx 12, 12, 9 129*3a608692SPiotr Kubaj li 9, 0x120 130*3a608692SPiotr Kubaj lvx 13, 12, 8 131*3a608692SPiotr Kubaj li 8, 0x130 132*3a608692SPiotr Kubaj lvx 14, 12, 11 133*3a608692SPiotr Kubaj li 11, 0x140 134*3a608692SPiotr Kubaj lvx 15, 12, 10 135*3a608692SPiotr Kubaj li 10, 0x150 136*3a608692SPiotr Kubaj lvx 16, 12, 9 137*3a608692SPiotr Kubaj lvx 17, 12, 8 138*3a608692SPiotr Kubaj lvx 18, 12, 11 139*3a608692SPiotr Kubaj lvx 19, 12, 10 140*3a608692SPiotr Kubaj blr 141*3a608692SPiotr Kubaj.long 0 142*3a608692SPiotr Kubaj.byte 0,12,0x14,0,0,0,0,0 143*3a608692SPiotr Kubaj 144*3a608692SPiotr Kubaj 145*3a608692SPiotr Kubaj 146*3a608692SPiotr Kubaj 147*3a608692SPiotr Kubaj 148*3a608692SPiotr Kubaj 149*3a608692SPiotr Kubaj 150*3a608692SPiotr Kubaj 151*3a608692SPiotr Kubaj 152*3a608692SPiotr Kubaj 153*3a608692SPiotr Kubaj 154*3a608692SPiotr Kubaj 155*3a608692SPiotr Kubaj 156*3a608692SPiotr Kubaj 157*3a608692SPiotr Kubaj 158*3a608692SPiotr Kubaj.align 5 159*3a608692SPiotr Kubaj_vpaes_encrypt_core: 160*3a608692SPiotr Kubaj lwz 8, 240(5) 161*3a608692SPiotr Kubaj li 9, 16 162*3a608692SPiotr Kubaj lvx 5, 0, 5 163*3a608692SPiotr Kubaj li 11, 0x10 164*3a608692SPiotr Kubaj lvx 6, 9, 5 165*3a608692SPiotr Kubaj addi 9, 9, 16 166*3a608692SPiotr Kubaj vperm 5, 5, 6, 31 167*3a608692SPiotr Kubaj addi 10, 11, 0x40 168*3a608692SPiotr Kubaj vsrb 1, 0, 8 169*3a608692SPiotr Kubaj vperm 0, 12, 12, 0 170*3a608692SPiotr Kubaj vperm 1, 13, 13, 1 171*3a608692SPiotr Kubaj vxor 0, 0, 5 172*3a608692SPiotr Kubaj vxor 0, 0, 1 173*3a608692SPiotr Kubaj mtctr 8 174*3a608692SPiotr Kubaj b .Lenc_entry 175*3a608692SPiotr Kubaj 176*3a608692SPiotr Kubaj.align 4 177*3a608692SPiotr Kubaj.Lenc_loop: 178*3a608692SPiotr Kubaj 179*3a608692SPiotr Kubaj vperm 4, 17, 7, 2 180*3a608692SPiotr Kubaj lvx 1, 12, 11 181*3a608692SPiotr Kubaj addi 11, 11, 16 182*3a608692SPiotr Kubaj vperm 0, 16, 7, 3 183*3a608692SPiotr Kubaj vxor 4, 4, 5 184*3a608692SPiotr Kubaj andi. 11, 11, 0x30 185*3a608692SPiotr Kubaj vperm 5, 19, 7, 2 186*3a608692SPiotr Kubaj vxor 0, 0, 4 187*3a608692SPiotr Kubaj vperm 2, 18, 7, 3 188*3a608692SPiotr Kubaj lvx 4, 12, 10 189*3a608692SPiotr Kubaj addi 10, 11, 0x40 190*3a608692SPiotr Kubaj vperm 3, 0, 7, 1 191*3a608692SPiotr Kubaj vxor 2, 2, 5 192*3a608692SPiotr Kubaj vperm 0, 0, 7, 4 193*3a608692SPiotr Kubaj vxor 3, 3, 2 194*3a608692SPiotr Kubaj vperm 4, 3, 7, 1 195*3a608692SPiotr Kubaj vxor 0, 0, 3 196*3a608692SPiotr Kubaj vxor 0, 0, 4 197*3a608692SPiotr Kubaj 198*3a608692SPiotr Kubaj.Lenc_entry: 199*3a608692SPiotr Kubaj 200*3a608692SPiotr Kubaj vsrb 1, 0, 8 201*3a608692SPiotr Kubaj vperm 5, 11, 11, 0 202*3a608692SPiotr Kubaj vxor 0, 0, 1 203*3a608692SPiotr Kubaj vperm 3, 10, 10, 1 204*3a608692SPiotr Kubaj vperm 4, 10, 10, 0 205*3a608692SPiotr Kubaj vand 0, 0, 9 206*3a608692SPiotr Kubaj vxor 3, 3, 5 207*3a608692SPiotr Kubaj vxor 4, 4, 5 208*3a608692SPiotr Kubaj vperm 2, 10, 7, 3 209*3a608692SPiotr Kubaj vor 5,6,6 210*3a608692SPiotr Kubaj lvx 6, 9, 5 211*3a608692SPiotr Kubaj vperm 3, 10, 7, 4 212*3a608692SPiotr Kubaj addi 9, 9, 16 213*3a608692SPiotr Kubaj vxor 2, 2, 0 214*3a608692SPiotr Kubaj vperm 5, 5, 6, 31 215*3a608692SPiotr Kubaj vxor 3, 3, 1 216*3a608692SPiotr Kubaj bdnz .Lenc_loop 217*3a608692SPiotr Kubaj 218*3a608692SPiotr Kubaj 219*3a608692SPiotr Kubaj addi 10, 11, 0x80 220*3a608692SPiotr Kubaj 221*3a608692SPiotr Kubaj 222*3a608692SPiotr Kubaj vperm 4, 14, 7, 2 223*3a608692SPiotr Kubaj lvx 1, 12, 10 224*3a608692SPiotr Kubaj vperm 0, 15, 7, 3 225*3a608692SPiotr Kubaj vxor 4, 4, 5 226*3a608692SPiotr Kubaj vxor 0, 0, 4 227*3a608692SPiotr Kubaj vperm 0, 0, 7, 1 228*3a608692SPiotr Kubaj blr 229*3a608692SPiotr Kubaj.long 0 230*3a608692SPiotr Kubaj.byte 0,12,0x14,0,0,0,0,0 231*3a608692SPiotr Kubaj 232*3a608692SPiotr Kubaj.globl vpaes_encrypt 233*3a608692SPiotr Kubaj.type vpaes_encrypt,@function 234*3a608692SPiotr Kubaj.align 5 235*3a608692SPiotr Kubajvpaes_encrypt: 236*3a608692SPiotr Kubaj.localentry vpaes_encrypt,0 237*3a608692SPiotr Kubaj 238*3a608692SPiotr Kubaj stdu 1,-256(1) 239*3a608692SPiotr Kubaj li 10,63 240*3a608692SPiotr Kubaj li 11,79 241*3a608692SPiotr Kubaj mflr 6 242*3a608692SPiotr Kubaj li 7,-1 243*3a608692SPiotr Kubaj stvx 20,10,1 244*3a608692SPiotr Kubaj addi 10,10,32 245*3a608692SPiotr Kubaj stvx 21,11,1 246*3a608692SPiotr Kubaj addi 11,11,32 247*3a608692SPiotr Kubaj stvx 22,10,1 248*3a608692SPiotr Kubaj addi 10,10,32 249*3a608692SPiotr Kubaj stvx 23,11,1 250*3a608692SPiotr Kubaj addi 11,11,32 251*3a608692SPiotr Kubaj stvx 24,10,1 252*3a608692SPiotr Kubaj addi 10,10,32 253*3a608692SPiotr Kubaj stvx 25,11,1 254*3a608692SPiotr Kubaj addi 11,11,32 255*3a608692SPiotr Kubaj stvx 26,10,1 256*3a608692SPiotr Kubaj addi 10,10,32 257*3a608692SPiotr Kubaj stvx 27,11,1 258*3a608692SPiotr Kubaj addi 11,11,32 259*3a608692SPiotr Kubaj stvx 28,10,1 260*3a608692SPiotr Kubaj addi 10,10,32 261*3a608692SPiotr Kubaj stvx 29,11,1 262*3a608692SPiotr Kubaj addi 11,11,32 263*3a608692SPiotr Kubaj stvx 30,10,1 264*3a608692SPiotr Kubaj stvx 31,11,1 265*3a608692SPiotr Kubaj stw 7,252(1) 266*3a608692SPiotr Kubaj li 0, -1 267*3a608692SPiotr Kubaj std 6,272(1) 268*3a608692SPiotr Kubaj or 0,0,0 269*3a608692SPiotr Kubaj 270*3a608692SPiotr Kubaj bl _vpaes_encrypt_preheat 271*3a608692SPiotr Kubaj 272*3a608692SPiotr Kubaj lvsl 27, 0, 3 273*3a608692SPiotr Kubaj lvx 0, 0, 3 274*3a608692SPiotr Kubaj addi 3, 3, 15 275*3a608692SPiotr Kubaj lvsr 29, 0, 4 276*3a608692SPiotr Kubaj lvsl 31, 0, 5 277*3a608692SPiotr Kubaj lvx 26, 0, 3 278*3a608692SPiotr Kubaj vperm 0, 0, 26, 27 279*3a608692SPiotr Kubaj 280*3a608692SPiotr Kubaj bl _vpaes_encrypt_core 281*3a608692SPiotr Kubaj 282*3a608692SPiotr Kubaj andi. 8, 4, 15 283*3a608692SPiotr Kubaj li 9, 16 284*3a608692SPiotr Kubaj beq .Lenc_out_aligned 285*3a608692SPiotr Kubaj 286*3a608692SPiotr Kubaj vperm 0, 0, 0, 29 287*3a608692SPiotr Kubaj mtctr 9 288*3a608692SPiotr Kubaj.Lenc_out_unaligned: 289*3a608692SPiotr Kubaj stvebx 0, 0, 4 290*3a608692SPiotr Kubaj addi 4, 4, 1 291*3a608692SPiotr Kubaj bdnz .Lenc_out_unaligned 292*3a608692SPiotr Kubaj b .Lenc_done 293*3a608692SPiotr Kubaj 294*3a608692SPiotr Kubaj.align 4 295*3a608692SPiotr Kubaj.Lenc_out_aligned: 296*3a608692SPiotr Kubaj stvx 0, 0, 4 297*3a608692SPiotr Kubaj.Lenc_done: 298*3a608692SPiotr Kubaj 299*3a608692SPiotr Kubaj li 10,63 300*3a608692SPiotr Kubaj li 11,79 301*3a608692SPiotr Kubaj mtlr 6 302*3a608692SPiotr Kubaj or 7,7,7 303*3a608692SPiotr Kubaj lvx 20,10,1 304*3a608692SPiotr Kubaj addi 10,10,32 305*3a608692SPiotr Kubaj lvx 21,11,1 306*3a608692SPiotr Kubaj addi 11,11,32 307*3a608692SPiotr Kubaj lvx 22,10,1 308*3a608692SPiotr Kubaj addi 10,10,32 309*3a608692SPiotr Kubaj lvx 23,11,1 310*3a608692SPiotr Kubaj addi 11,11,32 311*3a608692SPiotr Kubaj lvx 24,10,1 312*3a608692SPiotr Kubaj addi 10,10,32 313*3a608692SPiotr Kubaj lvx 25,11,1 314*3a608692SPiotr Kubaj addi 11,11,32 315*3a608692SPiotr Kubaj lvx 26,10,1 316*3a608692SPiotr Kubaj addi 10,10,32 317*3a608692SPiotr Kubaj lvx 27,11,1 318*3a608692SPiotr Kubaj addi 11,11,32 319*3a608692SPiotr Kubaj lvx 28,10,1 320*3a608692SPiotr Kubaj addi 10,10,32 321*3a608692SPiotr Kubaj lvx 29,11,1 322*3a608692SPiotr Kubaj addi 11,11,32 323*3a608692SPiotr Kubaj lvx 30,10,1 324*3a608692SPiotr Kubaj lvx 31,11,1 325*3a608692SPiotr Kubaj addi 1,1,256 326*3a608692SPiotr Kubaj blr 327*3a608692SPiotr Kubaj.long 0 328*3a608692SPiotr Kubaj.byte 0,12,0x04,1,0x80,0,3,0 329*3a608692SPiotr Kubaj.long 0 330*3a608692SPiotr Kubaj.size vpaes_encrypt,.-vpaes_encrypt 331*3a608692SPiotr Kubaj 332*3a608692SPiotr Kubaj.align 4 333*3a608692SPiotr Kubaj_vpaes_decrypt_preheat: 334*3a608692SPiotr Kubaj mflr 8 335*3a608692SPiotr Kubaj bl .Lconsts 336*3a608692SPiotr Kubaj mtlr 8 337*3a608692SPiotr Kubaj li 11, 0xc0 338*3a608692SPiotr Kubaj li 10, 0xd0 339*3a608692SPiotr Kubaj li 9, 0x160 340*3a608692SPiotr Kubaj li 8, 0x170 341*3a608692SPiotr Kubaj vxor 7, 7, 7 342*3a608692SPiotr Kubaj vspltisb 8,4 343*3a608692SPiotr Kubaj vspltisb 9,0x0f 344*3a608692SPiotr Kubaj lvx 10, 12, 11 345*3a608692SPiotr Kubaj li 11, 0x180 346*3a608692SPiotr Kubaj lvx 11, 12, 10 347*3a608692SPiotr Kubaj li 10, 0x190 348*3a608692SPiotr Kubaj lvx 12, 12, 9 349*3a608692SPiotr Kubaj li 9, 0x1a0 350*3a608692SPiotr Kubaj lvx 13, 12, 8 351*3a608692SPiotr Kubaj li 8, 0x1b0 352*3a608692SPiotr Kubaj lvx 14, 12, 11 353*3a608692SPiotr Kubaj li 11, 0x1c0 354*3a608692SPiotr Kubaj lvx 15, 12, 10 355*3a608692SPiotr Kubaj li 10, 0x1d0 356*3a608692SPiotr Kubaj lvx 16, 12, 9 357*3a608692SPiotr Kubaj li 9, 0x1e0 358*3a608692SPiotr Kubaj lvx 17, 12, 8 359*3a608692SPiotr Kubaj li 8, 0x1f0 360*3a608692SPiotr Kubaj lvx 18, 12, 11 361*3a608692SPiotr Kubaj li 11, 0x200 362*3a608692SPiotr Kubaj lvx 19, 12, 10 363*3a608692SPiotr Kubaj li 10, 0x210 364*3a608692SPiotr Kubaj lvx 20, 12, 9 365*3a608692SPiotr Kubaj lvx 21, 12, 8 366*3a608692SPiotr Kubaj lvx 22, 12, 11 367*3a608692SPiotr Kubaj lvx 23, 12, 10 368*3a608692SPiotr Kubaj blr 369*3a608692SPiotr Kubaj.long 0 370*3a608692SPiotr Kubaj.byte 0,12,0x14,0,0,0,0,0 371*3a608692SPiotr Kubaj 372*3a608692SPiotr Kubaj 373*3a608692SPiotr Kubaj 374*3a608692SPiotr Kubaj 375*3a608692SPiotr Kubaj 376*3a608692SPiotr Kubaj 377*3a608692SPiotr Kubaj.align 4 378*3a608692SPiotr Kubaj_vpaes_decrypt_core: 379*3a608692SPiotr Kubaj lwz 8, 240(5) 380*3a608692SPiotr Kubaj li 9, 16 381*3a608692SPiotr Kubaj lvx 5, 0, 5 382*3a608692SPiotr Kubaj li 11, 0x30 383*3a608692SPiotr Kubaj lvx 6, 9, 5 384*3a608692SPiotr Kubaj addi 9, 9, 16 385*3a608692SPiotr Kubaj vperm 5, 5, 6, 31 386*3a608692SPiotr Kubaj vsrb 1, 0, 8 387*3a608692SPiotr Kubaj vperm 0, 12, 12, 0 388*3a608692SPiotr Kubaj vperm 1, 13, 13, 1 389*3a608692SPiotr Kubaj vxor 0, 0, 5 390*3a608692SPiotr Kubaj vxor 0, 0, 1 391*3a608692SPiotr Kubaj mtctr 8 392*3a608692SPiotr Kubaj b .Ldec_entry 393*3a608692SPiotr Kubaj 394*3a608692SPiotr Kubaj.align 4 395*3a608692SPiotr Kubaj.Ldec_loop: 396*3a608692SPiotr Kubaj 397*3a608692SPiotr Kubaj 398*3a608692SPiotr Kubaj 399*3a608692SPiotr Kubaj lvx 0, 12, 11 400*3a608692SPiotr Kubaj 401*3a608692SPiotr Kubaj 402*3a608692SPiotr Kubaj vperm 4, 16, 7, 2 403*3a608692SPiotr Kubaj subi 11, 11, 16 404*3a608692SPiotr Kubaj vperm 1, 17, 7, 3 405*3a608692SPiotr Kubaj andi. 11, 11, 0x30 406*3a608692SPiotr Kubaj vxor 5, 5, 4 407*3a608692SPiotr Kubaj 408*3a608692SPiotr Kubaj vxor 5, 5, 1 409*3a608692SPiotr Kubaj 410*3a608692SPiotr Kubaj 411*3a608692SPiotr Kubaj vperm 4, 18, 7, 2 412*3a608692SPiotr Kubaj vperm 5, 5, 7, 0 413*3a608692SPiotr Kubaj vperm 1, 19, 7, 3 414*3a608692SPiotr Kubaj vxor 5, 5, 4 415*3a608692SPiotr Kubaj 416*3a608692SPiotr Kubaj vxor 5, 5, 1 417*3a608692SPiotr Kubaj 418*3a608692SPiotr Kubaj 419*3a608692SPiotr Kubaj vperm 4, 20, 7, 2 420*3a608692SPiotr Kubaj vperm 5, 5, 7, 0 421*3a608692SPiotr Kubaj vperm 1, 21, 7, 3 422*3a608692SPiotr Kubaj vxor 5, 5, 4 423*3a608692SPiotr Kubaj 424*3a608692SPiotr Kubaj vxor 5, 5, 1 425*3a608692SPiotr Kubaj 426*3a608692SPiotr Kubaj 427*3a608692SPiotr Kubaj vperm 4, 22, 7, 2 428*3a608692SPiotr Kubaj vperm 5, 5, 7, 0 429*3a608692SPiotr Kubaj vperm 1, 23, 7, 3 430*3a608692SPiotr Kubaj vxor 0, 5, 4 431*3a608692SPiotr Kubaj vxor 0, 0, 1 432*3a608692SPiotr Kubaj 433*3a608692SPiotr Kubaj.Ldec_entry: 434*3a608692SPiotr Kubaj 435*3a608692SPiotr Kubaj vsrb 1, 0, 8 436*3a608692SPiotr Kubaj vperm 2, 11, 11, 0 437*3a608692SPiotr Kubaj vxor 0, 0, 1 438*3a608692SPiotr Kubaj vperm 3, 10, 10, 1 439*3a608692SPiotr Kubaj vperm 4, 10, 10, 0 440*3a608692SPiotr Kubaj vand 0, 0, 9 441*3a608692SPiotr Kubaj vxor 3, 3, 2 442*3a608692SPiotr Kubaj vxor 4, 4, 2 443*3a608692SPiotr Kubaj vperm 2, 10, 7, 3 444*3a608692SPiotr Kubaj vor 5,6,6 445*3a608692SPiotr Kubaj lvx 6, 9, 5 446*3a608692SPiotr Kubaj vperm 3, 10, 7, 4 447*3a608692SPiotr Kubaj addi 9, 9, 16 448*3a608692SPiotr Kubaj vxor 2, 2, 0 449*3a608692SPiotr Kubaj vperm 5, 5, 6, 31 450*3a608692SPiotr Kubaj vxor 3, 3, 1 451*3a608692SPiotr Kubaj bdnz .Ldec_loop 452*3a608692SPiotr Kubaj 453*3a608692SPiotr Kubaj 454*3a608692SPiotr Kubaj addi 10, 11, 0x80 455*3a608692SPiotr Kubaj 456*3a608692SPiotr Kubaj vperm 4, 14, 7, 2 457*3a608692SPiotr Kubaj 458*3a608692SPiotr Kubaj lvx 2, 12, 10 459*3a608692SPiotr Kubaj vperm 1, 15, 7, 3 460*3a608692SPiotr Kubaj vxor 4, 4, 5 461*3a608692SPiotr Kubaj vxor 0, 1, 4 462*3a608692SPiotr Kubaj vperm 0, 0, 7, 2 463*3a608692SPiotr Kubaj blr 464*3a608692SPiotr Kubaj.long 0 465*3a608692SPiotr Kubaj.byte 0,12,0x14,0,0,0,0,0 466*3a608692SPiotr Kubaj 467*3a608692SPiotr Kubaj.globl vpaes_decrypt 468*3a608692SPiotr Kubaj.type vpaes_decrypt,@function 469*3a608692SPiotr Kubaj.align 5 470*3a608692SPiotr Kubajvpaes_decrypt: 471*3a608692SPiotr Kubaj.localentry vpaes_decrypt,0 472*3a608692SPiotr Kubaj 473*3a608692SPiotr Kubaj stdu 1,-256(1) 474*3a608692SPiotr Kubaj li 10,63 475*3a608692SPiotr Kubaj li 11,79 476*3a608692SPiotr Kubaj mflr 6 477*3a608692SPiotr Kubaj li 7,-1 478*3a608692SPiotr Kubaj stvx 20,10,1 479*3a608692SPiotr Kubaj addi 10,10,32 480*3a608692SPiotr Kubaj stvx 21,11,1 481*3a608692SPiotr Kubaj addi 11,11,32 482*3a608692SPiotr Kubaj stvx 22,10,1 483*3a608692SPiotr Kubaj addi 10,10,32 484*3a608692SPiotr Kubaj stvx 23,11,1 485*3a608692SPiotr Kubaj addi 11,11,32 486*3a608692SPiotr Kubaj stvx 24,10,1 487*3a608692SPiotr Kubaj addi 10,10,32 488*3a608692SPiotr Kubaj stvx 25,11,1 489*3a608692SPiotr Kubaj addi 11,11,32 490*3a608692SPiotr Kubaj stvx 26,10,1 491*3a608692SPiotr Kubaj addi 10,10,32 492*3a608692SPiotr Kubaj stvx 27,11,1 493*3a608692SPiotr Kubaj addi 11,11,32 494*3a608692SPiotr Kubaj stvx 28,10,1 495*3a608692SPiotr Kubaj addi 10,10,32 496*3a608692SPiotr Kubaj stvx 29,11,1 497*3a608692SPiotr Kubaj addi 11,11,32 498*3a608692SPiotr Kubaj stvx 30,10,1 499*3a608692SPiotr Kubaj stvx 31,11,1 500*3a608692SPiotr Kubaj stw 7,252(1) 501*3a608692SPiotr Kubaj li 0, -1 502*3a608692SPiotr Kubaj std 6,272(1) 503*3a608692SPiotr Kubaj or 0,0,0 504*3a608692SPiotr Kubaj 505*3a608692SPiotr Kubaj bl _vpaes_decrypt_preheat 506*3a608692SPiotr Kubaj 507*3a608692SPiotr Kubaj lvsl 27, 0, 3 508*3a608692SPiotr Kubaj lvx 0, 0, 3 509*3a608692SPiotr Kubaj addi 3, 3, 15 510*3a608692SPiotr Kubaj lvsr 29, 0, 4 511*3a608692SPiotr Kubaj lvsl 31, 0, 5 512*3a608692SPiotr Kubaj lvx 26, 0, 3 513*3a608692SPiotr Kubaj vperm 0, 0, 26, 27 514*3a608692SPiotr Kubaj 515*3a608692SPiotr Kubaj bl _vpaes_decrypt_core 516*3a608692SPiotr Kubaj 517*3a608692SPiotr Kubaj andi. 8, 4, 15 518*3a608692SPiotr Kubaj li 9, 16 519*3a608692SPiotr Kubaj beq .Ldec_out_aligned 520*3a608692SPiotr Kubaj 521*3a608692SPiotr Kubaj vperm 0, 0, 0, 29 522*3a608692SPiotr Kubaj mtctr 9 523*3a608692SPiotr Kubaj.Ldec_out_unaligned: 524*3a608692SPiotr Kubaj stvebx 0, 0, 4 525*3a608692SPiotr Kubaj addi 4, 4, 1 526*3a608692SPiotr Kubaj bdnz .Ldec_out_unaligned 527*3a608692SPiotr Kubaj b .Ldec_done 528*3a608692SPiotr Kubaj 529*3a608692SPiotr Kubaj.align 4 530*3a608692SPiotr Kubaj.Ldec_out_aligned: 531*3a608692SPiotr Kubaj stvx 0, 0, 4 532*3a608692SPiotr Kubaj.Ldec_done: 533*3a608692SPiotr Kubaj 534*3a608692SPiotr Kubaj li 10,63 535*3a608692SPiotr Kubaj li 11,79 536*3a608692SPiotr Kubaj mtlr 6 537*3a608692SPiotr Kubaj or 7,7,7 538*3a608692SPiotr Kubaj lvx 20,10,1 539*3a608692SPiotr Kubaj addi 10,10,32 540*3a608692SPiotr Kubaj lvx 21,11,1 541*3a608692SPiotr Kubaj addi 11,11,32 542*3a608692SPiotr Kubaj lvx 22,10,1 543*3a608692SPiotr Kubaj addi 10,10,32 544*3a608692SPiotr Kubaj lvx 23,11,1 545*3a608692SPiotr Kubaj addi 11,11,32 546*3a608692SPiotr Kubaj lvx 24,10,1 547*3a608692SPiotr Kubaj addi 10,10,32 548*3a608692SPiotr Kubaj lvx 25,11,1 549*3a608692SPiotr Kubaj addi 11,11,32 550*3a608692SPiotr Kubaj lvx 26,10,1 551*3a608692SPiotr Kubaj addi 10,10,32 552*3a608692SPiotr Kubaj lvx 27,11,1 553*3a608692SPiotr Kubaj addi 11,11,32 554*3a608692SPiotr Kubaj lvx 28,10,1 555*3a608692SPiotr Kubaj addi 10,10,32 556*3a608692SPiotr Kubaj lvx 29,11,1 557*3a608692SPiotr Kubaj addi 11,11,32 558*3a608692SPiotr Kubaj lvx 30,10,1 559*3a608692SPiotr Kubaj lvx 31,11,1 560*3a608692SPiotr Kubaj addi 1,1,256 561*3a608692SPiotr Kubaj blr 562*3a608692SPiotr Kubaj.long 0 563*3a608692SPiotr Kubaj.byte 0,12,0x04,1,0x80,0,3,0 564*3a608692SPiotr Kubaj.long 0 565*3a608692SPiotr Kubaj.size vpaes_decrypt,.-vpaes_decrypt 566*3a608692SPiotr Kubaj 567*3a608692SPiotr Kubaj.globl vpaes_cbc_encrypt 568*3a608692SPiotr Kubaj.type vpaes_cbc_encrypt,@function 569*3a608692SPiotr Kubaj.align 5 570*3a608692SPiotr Kubajvpaes_cbc_encrypt: 571*3a608692SPiotr Kubaj.localentry vpaes_cbc_encrypt,0 572*3a608692SPiotr Kubaj 573*3a608692SPiotr Kubaj cmpldi 5,16 574*3a608692SPiotr Kubaj .long 0x4dc00020 575*3a608692SPiotr Kubaj 576*3a608692SPiotr Kubaj stdu 1,-272(1) 577*3a608692SPiotr Kubaj mflr 0 578*3a608692SPiotr Kubaj li 10,63 579*3a608692SPiotr Kubaj li 11,79 580*3a608692SPiotr Kubaj li 12,-1 581*3a608692SPiotr Kubaj stvx 20,10,1 582*3a608692SPiotr Kubaj addi 10,10,32 583*3a608692SPiotr Kubaj stvx 21,11,1 584*3a608692SPiotr Kubaj addi 11,11,32 585*3a608692SPiotr Kubaj stvx 22,10,1 586*3a608692SPiotr Kubaj addi 10,10,32 587*3a608692SPiotr Kubaj stvx 23,11,1 588*3a608692SPiotr Kubaj addi 11,11,32 589*3a608692SPiotr Kubaj stvx 24,10,1 590*3a608692SPiotr Kubaj addi 10,10,32 591*3a608692SPiotr Kubaj stvx 25,11,1 592*3a608692SPiotr Kubaj addi 11,11,32 593*3a608692SPiotr Kubaj stvx 26,10,1 594*3a608692SPiotr Kubaj addi 10,10,32 595*3a608692SPiotr Kubaj stvx 27,11,1 596*3a608692SPiotr Kubaj addi 11,11,32 597*3a608692SPiotr Kubaj stvx 28,10,1 598*3a608692SPiotr Kubaj addi 10,10,32 599*3a608692SPiotr Kubaj stvx 29,11,1 600*3a608692SPiotr Kubaj addi 11,11,32 601*3a608692SPiotr Kubaj stvx 30,10,1 602*3a608692SPiotr Kubaj stvx 31,11,1 603*3a608692SPiotr Kubaj stw 12,252(1) 604*3a608692SPiotr Kubaj std 30,256(1) 605*3a608692SPiotr Kubaj std 31,264(1) 606*3a608692SPiotr Kubaj li 9, -16 607*3a608692SPiotr Kubaj std 0, 288(1) 608*3a608692SPiotr Kubaj 609*3a608692SPiotr Kubaj and 30, 5, 9 610*3a608692SPiotr Kubaj andi. 9, 4, 15 611*3a608692SPiotr Kubaj mr 5, 6 612*3a608692SPiotr Kubaj mr 31, 7 613*3a608692SPiotr Kubaj li 6, -1 614*3a608692SPiotr Kubaj mcrf 1, 0 615*3a608692SPiotr Kubaj mr 7, 12 616*3a608692SPiotr Kubaj or 6,6,6 617*3a608692SPiotr Kubaj 618*3a608692SPiotr Kubaj lvx 24, 0, 31 619*3a608692SPiotr Kubaj li 9, 15 620*3a608692SPiotr Kubaj lvsl 27, 0, 31 621*3a608692SPiotr Kubaj lvx 25, 9, 31 622*3a608692SPiotr Kubaj vperm 24, 24, 25, 27 623*3a608692SPiotr Kubaj 624*3a608692SPiotr Kubaj cmpwi 8, 0 625*3a608692SPiotr Kubaj neg 8, 3 626*3a608692SPiotr Kubaj vxor 7, 7, 7 627*3a608692SPiotr Kubaj lvsl 31, 0, 5 628*3a608692SPiotr Kubaj lvsr 29, 0, 4 629*3a608692SPiotr Kubaj lvsr 27, 0, 8 630*3a608692SPiotr Kubaj vnor 30, 7, 7 631*3a608692SPiotr Kubaj lvx 26, 0, 3 632*3a608692SPiotr Kubaj vperm 30, 7, 30, 29 633*3a608692SPiotr Kubaj addi 3, 3, 15 634*3a608692SPiotr Kubaj 635*3a608692SPiotr Kubaj beq .Lcbc_decrypt 636*3a608692SPiotr Kubaj 637*3a608692SPiotr Kubaj bl _vpaes_encrypt_preheat 638*3a608692SPiotr Kubaj li 0, 16 639*3a608692SPiotr Kubaj 640*3a608692SPiotr Kubaj beq 1, .Lcbc_enc_loop 641*3a608692SPiotr Kubaj 642*3a608692SPiotr Kubaj vor 0,26,26 643*3a608692SPiotr Kubaj lvx 26, 0, 3 644*3a608692SPiotr Kubaj addi 3, 3, 16 645*3a608692SPiotr Kubaj vperm 0, 0, 26, 27 646*3a608692SPiotr Kubaj vxor 0, 0, 24 647*3a608692SPiotr Kubaj 648*3a608692SPiotr Kubaj bl _vpaes_encrypt_core 649*3a608692SPiotr Kubaj 650*3a608692SPiotr Kubaj andi. 8, 4, 15 651*3a608692SPiotr Kubaj vor 24,0,0 652*3a608692SPiotr Kubaj sub 9, 4, 8 653*3a608692SPiotr Kubaj vperm 28, 0, 0, 29 654*3a608692SPiotr Kubaj 655*3a608692SPiotr Kubaj.Lcbc_enc_head: 656*3a608692SPiotr Kubaj stvebx 28, 8, 9 657*3a608692SPiotr Kubaj cmpwi 8, 15 658*3a608692SPiotr Kubaj addi 8, 8, 1 659*3a608692SPiotr Kubaj bne .Lcbc_enc_head 660*3a608692SPiotr Kubaj 661*3a608692SPiotr Kubaj sub. 30, 30, 0 662*3a608692SPiotr Kubaj addi 4, 4, 16 663*3a608692SPiotr Kubaj beq .Lcbc_unaligned_done 664*3a608692SPiotr Kubaj 665*3a608692SPiotr Kubaj.Lcbc_enc_loop: 666*3a608692SPiotr Kubaj vor 0,26,26 667*3a608692SPiotr Kubaj lvx 26, 0, 3 668*3a608692SPiotr Kubaj addi 3, 3, 16 669*3a608692SPiotr Kubaj vperm 0, 0, 26, 27 670*3a608692SPiotr Kubaj vxor 0, 0, 24 671*3a608692SPiotr Kubaj 672*3a608692SPiotr Kubaj bl _vpaes_encrypt_core 673*3a608692SPiotr Kubaj 674*3a608692SPiotr Kubaj vor 24,0,0 675*3a608692SPiotr Kubaj sub. 30, 30, 0 676*3a608692SPiotr Kubaj vperm 0, 0, 0, 29 677*3a608692SPiotr Kubaj vsel 1,28,0,30 678*3a608692SPiotr Kubaj vor 28,0,0 679*3a608692SPiotr Kubaj stvx 1, 0, 4 680*3a608692SPiotr Kubaj addi 4, 4, 16 681*3a608692SPiotr Kubaj bne .Lcbc_enc_loop 682*3a608692SPiotr Kubaj 683*3a608692SPiotr Kubaj b .Lcbc_done 684*3a608692SPiotr Kubaj 685*3a608692SPiotr Kubaj.align 5 686*3a608692SPiotr Kubaj.Lcbc_decrypt: 687*3a608692SPiotr Kubaj bl _vpaes_decrypt_preheat 688*3a608692SPiotr Kubaj li 0, 16 689*3a608692SPiotr Kubaj 690*3a608692SPiotr Kubaj beq 1, .Lcbc_dec_loop 691*3a608692SPiotr Kubaj 692*3a608692SPiotr Kubaj vor 0,26,26 693*3a608692SPiotr Kubaj lvx 26, 0, 3 694*3a608692SPiotr Kubaj addi 3, 3, 16 695*3a608692SPiotr Kubaj vperm 0, 0, 26, 27 696*3a608692SPiotr Kubaj vor 25,0,0 697*3a608692SPiotr Kubaj 698*3a608692SPiotr Kubaj bl _vpaes_decrypt_core 699*3a608692SPiotr Kubaj 700*3a608692SPiotr Kubaj andi. 8, 4, 15 701*3a608692SPiotr Kubaj vxor 0, 0, 24 702*3a608692SPiotr Kubaj vor 24,25,25 703*3a608692SPiotr Kubaj sub 9, 4, 8 704*3a608692SPiotr Kubaj vperm 28, 0, 0, 29 705*3a608692SPiotr Kubaj 706*3a608692SPiotr Kubaj.Lcbc_dec_head: 707*3a608692SPiotr Kubaj stvebx 28, 8, 9 708*3a608692SPiotr Kubaj cmpwi 8, 15 709*3a608692SPiotr Kubaj addi 8, 8, 1 710*3a608692SPiotr Kubaj bne .Lcbc_dec_head 711*3a608692SPiotr Kubaj 712*3a608692SPiotr Kubaj sub. 30, 30, 0 713*3a608692SPiotr Kubaj addi 4, 4, 16 714*3a608692SPiotr Kubaj beq .Lcbc_unaligned_done 715*3a608692SPiotr Kubaj 716*3a608692SPiotr Kubaj.Lcbc_dec_loop: 717*3a608692SPiotr Kubaj vor 0,26,26 718*3a608692SPiotr Kubaj lvx 26, 0, 3 719*3a608692SPiotr Kubaj addi 3, 3, 16 720*3a608692SPiotr Kubaj vperm 0, 0, 26, 27 721*3a608692SPiotr Kubaj vor 25,0,0 722*3a608692SPiotr Kubaj 723*3a608692SPiotr Kubaj bl _vpaes_decrypt_core 724*3a608692SPiotr Kubaj 725*3a608692SPiotr Kubaj vxor 0, 0, 24 726*3a608692SPiotr Kubaj vor 24,25,25 727*3a608692SPiotr Kubaj sub. 30, 30, 0 728*3a608692SPiotr Kubaj vperm 0, 0, 0, 29 729*3a608692SPiotr Kubaj vsel 1,28,0,30 730*3a608692SPiotr Kubaj vor 28,0,0 731*3a608692SPiotr Kubaj stvx 1, 0, 4 732*3a608692SPiotr Kubaj addi 4, 4, 16 733*3a608692SPiotr Kubaj bne .Lcbc_dec_loop 734*3a608692SPiotr Kubaj 735*3a608692SPiotr Kubaj.Lcbc_done: 736*3a608692SPiotr Kubaj beq 1, .Lcbc_write_iv 737*3a608692SPiotr Kubaj 738*3a608692SPiotr Kubaj.Lcbc_unaligned_done: 739*3a608692SPiotr Kubaj andi. 8, 4, 15 740*3a608692SPiotr Kubaj sub 4, 4, 8 741*3a608692SPiotr Kubaj li 9, 0 742*3a608692SPiotr Kubaj.Lcbc_tail: 743*3a608692SPiotr Kubaj stvebx 28, 9, 4 744*3a608692SPiotr Kubaj addi 9, 9, 1 745*3a608692SPiotr Kubaj cmpw 9, 8 746*3a608692SPiotr Kubaj bne .Lcbc_tail 747*3a608692SPiotr Kubaj 748*3a608692SPiotr Kubaj.Lcbc_write_iv: 749*3a608692SPiotr Kubaj neg 8, 31 750*3a608692SPiotr Kubaj li 10, 4 751*3a608692SPiotr Kubaj lvsl 29, 0, 8 752*3a608692SPiotr Kubaj li 11, 8 753*3a608692SPiotr Kubaj li 12, 12 754*3a608692SPiotr Kubaj vperm 24, 24, 24, 29 755*3a608692SPiotr Kubaj stvewx 24, 0, 31 756*3a608692SPiotr Kubaj stvewx 24, 10, 31 757*3a608692SPiotr Kubaj stvewx 24, 11, 31 758*3a608692SPiotr Kubaj stvewx 24, 12, 31 759*3a608692SPiotr Kubaj 760*3a608692SPiotr Kubaj or 7,7,7 761*3a608692SPiotr Kubaj li 10,63 762*3a608692SPiotr Kubaj li 11,79 763*3a608692SPiotr Kubaj lvx 20,10,1 764*3a608692SPiotr Kubaj addi 10,10,32 765*3a608692SPiotr Kubaj lvx 21,11,1 766*3a608692SPiotr Kubaj addi 11,11,32 767*3a608692SPiotr Kubaj lvx 22,10,1 768*3a608692SPiotr Kubaj addi 10,10,32 769*3a608692SPiotr Kubaj lvx 23,11,1 770*3a608692SPiotr Kubaj addi 11,11,32 771*3a608692SPiotr Kubaj lvx 24,10,1 772*3a608692SPiotr Kubaj addi 10,10,32 773*3a608692SPiotr Kubaj lvx 25,11,1 774*3a608692SPiotr Kubaj addi 11,11,32 775*3a608692SPiotr Kubaj lvx 26,10,1 776*3a608692SPiotr Kubaj addi 10,10,32 777*3a608692SPiotr Kubaj lvx 27,11,1 778*3a608692SPiotr Kubaj addi 11,11,32 779*3a608692SPiotr Kubaj lvx 28,10,1 780*3a608692SPiotr Kubaj addi 10,10,32 781*3a608692SPiotr Kubaj lvx 29,11,1 782*3a608692SPiotr Kubaj addi 11,11,32 783*3a608692SPiotr Kubaj lvx 30,10,1 784*3a608692SPiotr Kubaj lvx 31,11,1 785*3a608692SPiotr Kubaj.Lcbc_abort: 786*3a608692SPiotr Kubaj ld 0, 288(1) 787*3a608692SPiotr Kubaj ld 30,256(1) 788*3a608692SPiotr Kubaj ld 31,264(1) 789*3a608692SPiotr Kubaj mtlr 0 790*3a608692SPiotr Kubaj addi 1,1,272 791*3a608692SPiotr Kubaj blr 792*3a608692SPiotr Kubaj.long 0 793*3a608692SPiotr Kubaj.byte 0,12,0x04,1,0x80,2,6,0 794*3a608692SPiotr Kubaj.long 0 795*3a608692SPiotr Kubaj.size vpaes_cbc_encrypt,.-vpaes_cbc_encrypt 796*3a608692SPiotr Kubaj 797*3a608692SPiotr Kubaj 798*3a608692SPiotr Kubaj 799*3a608692SPiotr Kubaj 800*3a608692SPiotr Kubaj 801*3a608692SPiotr Kubaj.align 4 802*3a608692SPiotr Kubaj_vpaes_key_preheat: 803*3a608692SPiotr Kubaj mflr 8 804*3a608692SPiotr Kubaj bl .Lconsts 805*3a608692SPiotr Kubaj mtlr 8 806*3a608692SPiotr Kubaj li 11, 0xc0 807*3a608692SPiotr Kubaj li 10, 0xd0 808*3a608692SPiotr Kubaj li 9, 0xe0 809*3a608692SPiotr Kubaj li 8, 0xf0 810*3a608692SPiotr Kubaj 811*3a608692SPiotr Kubaj vspltisb 8,4 812*3a608692SPiotr Kubaj vxor 9,9,9 813*3a608692SPiotr Kubaj lvx 10, 12, 11 814*3a608692SPiotr Kubaj li 11, 0x120 815*3a608692SPiotr Kubaj lvx 11, 12, 10 816*3a608692SPiotr Kubaj li 10, 0x130 817*3a608692SPiotr Kubaj lvx 12, 12, 9 818*3a608692SPiotr Kubaj li 9, 0x220 819*3a608692SPiotr Kubaj lvx 13, 12, 8 820*3a608692SPiotr Kubaj li 8, 0x230 821*3a608692SPiotr Kubaj 822*3a608692SPiotr Kubaj lvx 14, 12, 11 823*3a608692SPiotr Kubaj li 11, 0x240 824*3a608692SPiotr Kubaj lvx 15, 12, 10 825*3a608692SPiotr Kubaj li 10, 0x250 826*3a608692SPiotr Kubaj 827*3a608692SPiotr Kubaj lvx 16, 12, 9 828*3a608692SPiotr Kubaj li 9, 0x260 829*3a608692SPiotr Kubaj lvx 17, 12, 8 830*3a608692SPiotr Kubaj li 8, 0x270 831*3a608692SPiotr Kubaj lvx 18, 12, 11 832*3a608692SPiotr Kubaj li 11, 0x280 833*3a608692SPiotr Kubaj lvx 19, 12, 10 834*3a608692SPiotr Kubaj li 10, 0x290 835*3a608692SPiotr Kubaj lvx 20, 12, 9 836*3a608692SPiotr Kubaj li 9, 0x2a0 837*3a608692SPiotr Kubaj lvx 21, 12, 8 838*3a608692SPiotr Kubaj li 8, 0x2b0 839*3a608692SPiotr Kubaj lvx 22, 12, 11 840*3a608692SPiotr Kubaj lvx 23, 12, 10 841*3a608692SPiotr Kubaj 842*3a608692SPiotr Kubaj lvx 24, 12, 9 843*3a608692SPiotr Kubaj lvx 25, 0, 12 844*3a608692SPiotr Kubaj lvx 26, 12, 8 845*3a608692SPiotr Kubaj blr 846*3a608692SPiotr Kubaj.long 0 847*3a608692SPiotr Kubaj.byte 0,12,0x14,0,0,0,0,0 848*3a608692SPiotr Kubaj 849*3a608692SPiotr Kubaj.align 4 850*3a608692SPiotr Kubaj_vpaes_schedule_core: 851*3a608692SPiotr Kubaj mflr 7 852*3a608692SPiotr Kubaj 853*3a608692SPiotr Kubaj bl _vpaes_key_preheat 854*3a608692SPiotr Kubaj 855*3a608692SPiotr Kubaj 856*3a608692SPiotr Kubaj neg 8, 3 857*3a608692SPiotr Kubaj lvx 0, 0, 3 858*3a608692SPiotr Kubaj addi 3, 3, 15 859*3a608692SPiotr Kubaj lvsr 27, 0, 8 860*3a608692SPiotr Kubaj lvx 6, 0, 3 861*3a608692SPiotr Kubaj addi 3, 3, 8 862*3a608692SPiotr Kubaj vperm 0, 0, 6, 27 863*3a608692SPiotr Kubaj 864*3a608692SPiotr Kubaj 865*3a608692SPiotr Kubaj vor 3,0,0 866*3a608692SPiotr Kubaj bl _vpaes_schedule_transform 867*3a608692SPiotr Kubaj vor 7,0,0 868*3a608692SPiotr Kubaj 869*3a608692SPiotr Kubaj bne 1, .Lschedule_am_decrypting 870*3a608692SPiotr Kubaj 871*3a608692SPiotr Kubaj 872*3a608692SPiotr Kubaj li 8, 0x30 873*3a608692SPiotr Kubaj li 9, 4 874*3a608692SPiotr Kubaj li 10, 8 875*3a608692SPiotr Kubaj li 11, 12 876*3a608692SPiotr Kubaj 877*3a608692SPiotr Kubaj lvsr 29, 0, 5 878*3a608692SPiotr Kubaj vnor 30, 9, 9 879*3a608692SPiotr Kubaj vperm 30, 9, 30, 29 880*3a608692SPiotr Kubaj 881*3a608692SPiotr Kubaj 882*3a608692SPiotr Kubaj vperm 28, 0, 0, 29 883*3a608692SPiotr Kubaj stvewx 28, 0, 5 884*3a608692SPiotr Kubaj stvewx 28, 9, 5 885*3a608692SPiotr Kubaj stvewx 28, 10, 5 886*3a608692SPiotr Kubaj addi 10, 12, 0x80 887*3a608692SPiotr Kubaj stvewx 28, 11, 5 888*3a608692SPiotr Kubaj b .Lschedule_go 889*3a608692SPiotr Kubaj 890*3a608692SPiotr Kubaj.Lschedule_am_decrypting: 891*3a608692SPiotr Kubaj srwi 8, 4, 1 892*3a608692SPiotr Kubaj andi. 8, 8, 32 893*3a608692SPiotr Kubaj xori 8, 8, 32 894*3a608692SPiotr Kubaj addi 10, 12, 0x80 895*3a608692SPiotr Kubaj 896*3a608692SPiotr Kubaj lvx 1, 8, 10 897*3a608692SPiotr Kubaj li 9, 4 898*3a608692SPiotr Kubaj li 10, 8 899*3a608692SPiotr Kubaj li 11, 12 900*3a608692SPiotr Kubaj vperm 4, 3, 3, 1 901*3a608692SPiotr Kubaj 902*3a608692SPiotr Kubaj neg 0, 5 903*3a608692SPiotr Kubaj lvsl 29, 0, 0 904*3a608692SPiotr Kubaj vnor 30, 9, 9 905*3a608692SPiotr Kubaj vperm 30, 30, 9, 29 906*3a608692SPiotr Kubaj 907*3a608692SPiotr Kubaj 908*3a608692SPiotr Kubaj vperm 28, 4, 4, 29 909*3a608692SPiotr Kubaj stvewx 28, 0, 5 910*3a608692SPiotr Kubaj stvewx 28, 9, 5 911*3a608692SPiotr Kubaj stvewx 28, 10, 5 912*3a608692SPiotr Kubaj addi 10, 12, 0x80 913*3a608692SPiotr Kubaj stvewx 28, 11, 5 914*3a608692SPiotr Kubaj addi 5, 5, 15 915*3a608692SPiotr Kubaj xori 8, 8, 0x30 916*3a608692SPiotr Kubaj 917*3a608692SPiotr Kubaj.Lschedule_go: 918*3a608692SPiotr Kubaj cmplwi 4, 192 919*3a608692SPiotr Kubaj bgt .Lschedule_256 920*3a608692SPiotr Kubaj beq .Lschedule_192 921*3a608692SPiotr Kubaj 922*3a608692SPiotr Kubaj 923*3a608692SPiotr Kubaj 924*3a608692SPiotr Kubaj 925*3a608692SPiotr Kubaj 926*3a608692SPiotr Kubaj 927*3a608692SPiotr Kubaj 928*3a608692SPiotr Kubaj 929*3a608692SPiotr Kubaj 930*3a608692SPiotr Kubaj 931*3a608692SPiotr Kubaj.Lschedule_128: 932*3a608692SPiotr Kubaj li 0, 10 933*3a608692SPiotr Kubaj mtctr 0 934*3a608692SPiotr Kubaj 935*3a608692SPiotr Kubaj.Loop_schedule_128: 936*3a608692SPiotr Kubaj bl _vpaes_schedule_round 937*3a608692SPiotr Kubaj bdz .Lschedule_mangle_last 938*3a608692SPiotr Kubaj bl _vpaes_schedule_mangle 939*3a608692SPiotr Kubaj b .Loop_schedule_128 940*3a608692SPiotr Kubaj 941*3a608692SPiotr Kubaj 942*3a608692SPiotr Kubaj 943*3a608692SPiotr Kubaj 944*3a608692SPiotr Kubaj 945*3a608692SPiotr Kubaj 946*3a608692SPiotr Kubaj 947*3a608692SPiotr Kubaj 948*3a608692SPiotr Kubaj 949*3a608692SPiotr Kubaj 950*3a608692SPiotr Kubaj 951*3a608692SPiotr Kubaj 952*3a608692SPiotr Kubaj 953*3a608692SPiotr Kubaj 954*3a608692SPiotr Kubaj 955*3a608692SPiotr Kubaj 956*3a608692SPiotr Kubaj.align 4 957*3a608692SPiotr Kubaj.Lschedule_192: 958*3a608692SPiotr Kubaj li 0, 4 959*3a608692SPiotr Kubaj lvx 0, 0, 3 960*3a608692SPiotr Kubaj vperm 0, 6, 0, 27 961*3a608692SPiotr Kubaj vsldoi 0, 3, 0, 8 962*3a608692SPiotr Kubaj bl _vpaes_schedule_transform 963*3a608692SPiotr Kubaj vsldoi 6, 0, 9, 8 964*3a608692SPiotr Kubaj vsldoi 6, 9, 6, 8 965*3a608692SPiotr Kubaj mtctr 0 966*3a608692SPiotr Kubaj 967*3a608692SPiotr Kubaj.Loop_schedule_192: 968*3a608692SPiotr Kubaj bl _vpaes_schedule_round 969*3a608692SPiotr Kubaj vsldoi 0, 6, 0, 8 970*3a608692SPiotr Kubaj bl _vpaes_schedule_mangle 971*3a608692SPiotr Kubaj bl _vpaes_schedule_192_smear 972*3a608692SPiotr Kubaj bl _vpaes_schedule_mangle 973*3a608692SPiotr Kubaj bl _vpaes_schedule_round 974*3a608692SPiotr Kubaj bdz .Lschedule_mangle_last 975*3a608692SPiotr Kubaj bl _vpaes_schedule_mangle 976*3a608692SPiotr Kubaj bl _vpaes_schedule_192_smear 977*3a608692SPiotr Kubaj b .Loop_schedule_192 978*3a608692SPiotr Kubaj 979*3a608692SPiotr Kubaj 980*3a608692SPiotr Kubaj 981*3a608692SPiotr Kubaj 982*3a608692SPiotr Kubaj 983*3a608692SPiotr Kubaj 984*3a608692SPiotr Kubaj 985*3a608692SPiotr Kubaj 986*3a608692SPiotr Kubaj 987*3a608692SPiotr Kubaj 988*3a608692SPiotr Kubaj 989*3a608692SPiotr Kubaj.align 4 990*3a608692SPiotr Kubaj.Lschedule_256: 991*3a608692SPiotr Kubaj li 0, 7 992*3a608692SPiotr Kubaj addi 3, 3, 8 993*3a608692SPiotr Kubaj lvx 0, 0, 3 994*3a608692SPiotr Kubaj vperm 0, 6, 0, 27 995*3a608692SPiotr Kubaj bl _vpaes_schedule_transform 996*3a608692SPiotr Kubaj mtctr 0 997*3a608692SPiotr Kubaj 998*3a608692SPiotr Kubaj.Loop_schedule_256: 999*3a608692SPiotr Kubaj bl _vpaes_schedule_mangle 1000*3a608692SPiotr Kubaj vor 6,0,0 1001*3a608692SPiotr Kubaj 1002*3a608692SPiotr Kubaj 1003*3a608692SPiotr Kubaj bl _vpaes_schedule_round 1004*3a608692SPiotr Kubaj bdz .Lschedule_mangle_last 1005*3a608692SPiotr Kubaj bl _vpaes_schedule_mangle 1006*3a608692SPiotr Kubaj 1007*3a608692SPiotr Kubaj 1008*3a608692SPiotr Kubaj vspltw 0, 0, 3 1009*3a608692SPiotr Kubaj vor 5,7,7 1010*3a608692SPiotr Kubaj vor 7,6,6 1011*3a608692SPiotr Kubaj bl _vpaes_schedule_low_round 1012*3a608692SPiotr Kubaj vor 7,5,5 1013*3a608692SPiotr Kubaj 1014*3a608692SPiotr Kubaj b .Loop_schedule_256 1015*3a608692SPiotr Kubaj 1016*3a608692SPiotr Kubaj 1017*3a608692SPiotr Kubaj 1018*3a608692SPiotr Kubaj 1019*3a608692SPiotr Kubaj 1020*3a608692SPiotr Kubaj 1021*3a608692SPiotr Kubaj 1022*3a608692SPiotr Kubaj 1023*3a608692SPiotr Kubaj 1024*3a608692SPiotr Kubaj 1025*3a608692SPiotr Kubaj.align 4 1026*3a608692SPiotr Kubaj.Lschedule_mangle_last: 1027*3a608692SPiotr Kubaj 1028*3a608692SPiotr Kubaj li 11, 0x2e0 1029*3a608692SPiotr Kubaj li 9, 0x2f0 1030*3a608692SPiotr Kubaj bne 1, .Lschedule_mangle_last_dec 1031*3a608692SPiotr Kubaj 1032*3a608692SPiotr Kubaj 1033*3a608692SPiotr Kubaj lvx 1, 8, 10 1034*3a608692SPiotr Kubaj li 11, 0x2c0 1035*3a608692SPiotr Kubaj li 9, 0x2d0 1036*3a608692SPiotr Kubaj vperm 0, 0, 0, 1 1037*3a608692SPiotr Kubaj 1038*3a608692SPiotr Kubaj lvx 12, 11, 12 1039*3a608692SPiotr Kubaj lvx 13, 9, 12 1040*3a608692SPiotr Kubaj addi 5, 5, 16 1041*3a608692SPiotr Kubaj vxor 0, 0, 26 1042*3a608692SPiotr Kubaj bl _vpaes_schedule_transform 1043*3a608692SPiotr Kubaj 1044*3a608692SPiotr Kubaj 1045*3a608692SPiotr Kubaj vperm 0, 0, 0, 29 1046*3a608692SPiotr Kubaj li 10, 4 1047*3a608692SPiotr Kubaj vsel 2,28,0,30 1048*3a608692SPiotr Kubaj li 11, 8 1049*3a608692SPiotr Kubaj stvx 2, 0, 5 1050*3a608692SPiotr Kubaj li 12, 12 1051*3a608692SPiotr Kubaj stvewx 0, 0, 5 1052*3a608692SPiotr Kubaj stvewx 0, 10, 5 1053*3a608692SPiotr Kubaj stvewx 0, 11, 5 1054*3a608692SPiotr Kubaj stvewx 0, 12, 5 1055*3a608692SPiotr Kubaj b .Lschedule_mangle_done 1056*3a608692SPiotr Kubaj 1057*3a608692SPiotr Kubaj.align 4 1058*3a608692SPiotr Kubaj.Lschedule_mangle_last_dec: 1059*3a608692SPiotr Kubaj lvx 12, 11, 12 1060*3a608692SPiotr Kubaj lvx 13, 9, 12 1061*3a608692SPiotr Kubaj addi 5, 5, -16 1062*3a608692SPiotr Kubaj vxor 0, 0, 26 1063*3a608692SPiotr Kubaj bl _vpaes_schedule_transform 1064*3a608692SPiotr Kubaj 1065*3a608692SPiotr Kubaj 1066*3a608692SPiotr Kubaj addi 9, 5, -15 1067*3a608692SPiotr Kubaj vperm 0, 0, 0, 29 1068*3a608692SPiotr Kubaj li 10, 4 1069*3a608692SPiotr Kubaj vsel 2,28,0,30 1070*3a608692SPiotr Kubaj li 11, 8 1071*3a608692SPiotr Kubaj stvx 2, 0, 5 1072*3a608692SPiotr Kubaj li 12, 12 1073*3a608692SPiotr Kubaj stvewx 0, 0, 9 1074*3a608692SPiotr Kubaj stvewx 0, 10, 9 1075*3a608692SPiotr Kubaj stvewx 0, 11, 9 1076*3a608692SPiotr Kubaj stvewx 0, 12, 9 1077*3a608692SPiotr Kubaj 1078*3a608692SPiotr Kubaj 1079*3a608692SPiotr Kubaj.Lschedule_mangle_done: 1080*3a608692SPiotr Kubaj mtlr 7 1081*3a608692SPiotr Kubaj 1082*3a608692SPiotr Kubaj vxor 0, 0, 0 1083*3a608692SPiotr Kubaj vxor 1, 1, 1 1084*3a608692SPiotr Kubaj vxor 2, 2, 2 1085*3a608692SPiotr Kubaj vxor 3, 3, 3 1086*3a608692SPiotr Kubaj vxor 4, 4, 4 1087*3a608692SPiotr Kubaj vxor 5, 5, 5 1088*3a608692SPiotr Kubaj vxor 6, 6, 6 1089*3a608692SPiotr Kubaj vxor 7, 7, 7 1090*3a608692SPiotr Kubaj 1091*3a608692SPiotr Kubaj blr 1092*3a608692SPiotr Kubaj.long 0 1093*3a608692SPiotr Kubaj.byte 0,12,0x14,0,0,0,0,0 1094*3a608692SPiotr Kubaj 1095*3a608692SPiotr Kubaj 1096*3a608692SPiotr Kubaj 1097*3a608692SPiotr Kubaj 1098*3a608692SPiotr Kubaj 1099*3a608692SPiotr Kubaj 1100*3a608692SPiotr Kubaj 1101*3a608692SPiotr Kubaj 1102*3a608692SPiotr Kubaj 1103*3a608692SPiotr Kubaj 1104*3a608692SPiotr Kubaj 1105*3a608692SPiotr Kubaj 1106*3a608692SPiotr Kubaj 1107*3a608692SPiotr Kubaj 1108*3a608692SPiotr Kubaj 1109*3a608692SPiotr Kubaj.align 4 1110*3a608692SPiotr Kubaj_vpaes_schedule_192_smear: 1111*3a608692SPiotr Kubaj vspltw 0, 7, 3 1112*3a608692SPiotr Kubaj vsldoi 1, 9, 6, 12 1113*3a608692SPiotr Kubaj vsldoi 0, 7, 0, 8 1114*3a608692SPiotr Kubaj vxor 6, 6, 1 1115*3a608692SPiotr Kubaj vxor 6, 6, 0 1116*3a608692SPiotr Kubaj vor 0,6,6 1117*3a608692SPiotr Kubaj vsldoi 6, 6, 9, 8 1118*3a608692SPiotr Kubaj vsldoi 6, 9, 6, 8 1119*3a608692SPiotr Kubaj blr 1120*3a608692SPiotr Kubaj.long 0 1121*3a608692SPiotr Kubaj.byte 0,12,0x14,0,0,0,0,0 1122*3a608692SPiotr Kubaj 1123*3a608692SPiotr Kubaj 1124*3a608692SPiotr Kubaj 1125*3a608692SPiotr Kubaj 1126*3a608692SPiotr Kubaj 1127*3a608692SPiotr Kubaj 1128*3a608692SPiotr Kubaj 1129*3a608692SPiotr Kubaj 1130*3a608692SPiotr Kubaj 1131*3a608692SPiotr Kubaj 1132*3a608692SPiotr Kubaj 1133*3a608692SPiotr Kubaj 1134*3a608692SPiotr Kubaj 1135*3a608692SPiotr Kubaj 1136*3a608692SPiotr Kubaj 1137*3a608692SPiotr Kubaj 1138*3a608692SPiotr Kubaj 1139*3a608692SPiotr Kubaj 1140*3a608692SPiotr Kubaj 1141*3a608692SPiotr Kubaj.align 4 1142*3a608692SPiotr Kubaj_vpaes_schedule_round: 1143*3a608692SPiotr Kubaj 1144*3a608692SPiotr Kubaj 1145*3a608692SPiotr Kubaj vsldoi 1, 24, 9, 15 1146*3a608692SPiotr Kubaj vsldoi 24, 24, 24, 15 1147*3a608692SPiotr Kubaj vxor 7, 7, 1 1148*3a608692SPiotr Kubaj 1149*3a608692SPiotr Kubaj 1150*3a608692SPiotr Kubaj vspltw 0, 0, 3 1151*3a608692SPiotr Kubaj vsldoi 0, 0, 0, 1 1152*3a608692SPiotr Kubaj 1153*3a608692SPiotr Kubaj 1154*3a608692SPiotr Kubaj 1155*3a608692SPiotr Kubaj 1156*3a608692SPiotr Kubaj_vpaes_schedule_low_round: 1157*3a608692SPiotr Kubaj 1158*3a608692SPiotr Kubaj vsldoi 1, 9, 7, 12 1159*3a608692SPiotr Kubaj vxor 7, 7, 1 1160*3a608692SPiotr Kubaj vspltisb 1,0x0f 1161*3a608692SPiotr Kubaj vsldoi 4, 9, 7, 8 1162*3a608692SPiotr Kubaj 1163*3a608692SPiotr Kubaj 1164*3a608692SPiotr Kubaj vand 1, 1, 0 1165*3a608692SPiotr Kubaj vsrb 0, 0, 8 1166*3a608692SPiotr Kubaj vxor 7, 7, 4 1167*3a608692SPiotr Kubaj vperm 2, 11, 9, 1 1168*3a608692SPiotr Kubaj vxor 1, 1, 0 1169*3a608692SPiotr Kubaj vperm 3, 10, 9, 0 1170*3a608692SPiotr Kubaj vxor 3, 3, 2 1171*3a608692SPiotr Kubaj vperm 4, 10, 9, 1 1172*3a608692SPiotr Kubaj vxor 7, 7, 26 1173*3a608692SPiotr Kubaj vperm 3, 10, 9, 3 1174*3a608692SPiotr Kubaj vxor 4, 4, 2 1175*3a608692SPiotr Kubaj vperm 2, 10, 9, 4 1176*3a608692SPiotr Kubaj vxor 3, 3, 1 1177*3a608692SPiotr Kubaj vxor 2, 2, 0 1178*3a608692SPiotr Kubaj vperm 4, 15, 9, 3 1179*3a608692SPiotr Kubaj vperm 1, 14, 9, 2 1180*3a608692SPiotr Kubaj vxor 1, 1, 4 1181*3a608692SPiotr Kubaj 1182*3a608692SPiotr Kubaj 1183*3a608692SPiotr Kubaj vxor 0, 1, 7 1184*3a608692SPiotr Kubaj vxor 7, 1, 7 1185*3a608692SPiotr Kubaj blr 1186*3a608692SPiotr Kubaj.long 0 1187*3a608692SPiotr Kubaj.byte 0,12,0x14,0,0,0,0,0 1188*3a608692SPiotr Kubaj 1189*3a608692SPiotr Kubaj 1190*3a608692SPiotr Kubaj 1191*3a608692SPiotr Kubaj 1192*3a608692SPiotr Kubaj 1193*3a608692SPiotr Kubaj 1194*3a608692SPiotr Kubaj 1195*3a608692SPiotr Kubaj 1196*3a608692SPiotr Kubaj 1197*3a608692SPiotr Kubaj 1198*3a608692SPiotr Kubaj.align 4 1199*3a608692SPiotr Kubaj_vpaes_schedule_transform: 1200*3a608692SPiotr Kubaj 1201*3a608692SPiotr Kubaj vsrb 2, 0, 8 1202*3a608692SPiotr Kubaj 1203*3a608692SPiotr Kubaj vperm 0, 12, 12, 0 1204*3a608692SPiotr Kubaj 1205*3a608692SPiotr Kubaj vperm 2, 13, 13, 2 1206*3a608692SPiotr Kubaj vxor 0, 0, 2 1207*3a608692SPiotr Kubaj blr 1208*3a608692SPiotr Kubaj.long 0 1209*3a608692SPiotr Kubaj.byte 0,12,0x14,0,0,0,0,0 1210*3a608692SPiotr Kubaj 1211*3a608692SPiotr Kubaj 1212*3a608692SPiotr Kubaj 1213*3a608692SPiotr Kubaj 1214*3a608692SPiotr Kubaj 1215*3a608692SPiotr Kubaj 1216*3a608692SPiotr Kubaj 1217*3a608692SPiotr Kubaj 1218*3a608692SPiotr Kubaj 1219*3a608692SPiotr Kubaj 1220*3a608692SPiotr Kubaj 1221*3a608692SPiotr Kubaj 1222*3a608692SPiotr Kubaj 1223*3a608692SPiotr Kubaj 1224*3a608692SPiotr Kubaj 1225*3a608692SPiotr Kubaj 1226*3a608692SPiotr Kubaj 1227*3a608692SPiotr Kubaj 1228*3a608692SPiotr Kubaj 1229*3a608692SPiotr Kubaj 1230*3a608692SPiotr Kubaj 1231*3a608692SPiotr Kubaj 1232*3a608692SPiotr Kubaj 1233*3a608692SPiotr Kubaj 1234*3a608692SPiotr Kubaj.align 4 1235*3a608692SPiotr Kubaj_vpaes_schedule_mangle: 1236*3a608692SPiotr Kubaj 1237*3a608692SPiotr Kubaj 1238*3a608692SPiotr Kubaj bne 1, .Lschedule_mangle_dec 1239*3a608692SPiotr Kubaj 1240*3a608692SPiotr Kubaj 1241*3a608692SPiotr Kubaj vxor 4, 0, 26 1242*3a608692SPiotr Kubaj addi 5, 5, 16 1243*3a608692SPiotr Kubaj vperm 4, 4, 4, 25 1244*3a608692SPiotr Kubaj vperm 1, 4, 4, 25 1245*3a608692SPiotr Kubaj vperm 3, 1, 1, 25 1246*3a608692SPiotr Kubaj vxor 4, 4, 1 1247*3a608692SPiotr Kubaj lvx 1, 8, 10 1248*3a608692SPiotr Kubaj vxor 3, 3, 4 1249*3a608692SPiotr Kubaj 1250*3a608692SPiotr Kubaj vperm 3, 3, 3, 1 1251*3a608692SPiotr Kubaj addi 8, 8, -16 1252*3a608692SPiotr Kubaj andi. 8, 8, 0x30 1253*3a608692SPiotr Kubaj 1254*3a608692SPiotr Kubaj 1255*3a608692SPiotr Kubaj vperm 1, 3, 3, 29 1256*3a608692SPiotr Kubaj vsel 2,28,1,30 1257*3a608692SPiotr Kubaj vor 28,1,1 1258*3a608692SPiotr Kubaj stvx 2, 0, 5 1259*3a608692SPiotr Kubaj blr 1260*3a608692SPiotr Kubaj 1261*3a608692SPiotr Kubaj.align 4 1262*3a608692SPiotr Kubaj.Lschedule_mangle_dec: 1263*3a608692SPiotr Kubaj 1264*3a608692SPiotr Kubaj 1265*3a608692SPiotr Kubaj vsrb 1, 0, 8 1266*3a608692SPiotr Kubaj 1267*3a608692SPiotr Kubaj 1268*3a608692SPiotr Kubaj 1269*3a608692SPiotr Kubaj vperm 2, 16, 16, 0 1270*3a608692SPiotr Kubaj 1271*3a608692SPiotr Kubaj vperm 3, 17, 17, 1 1272*3a608692SPiotr Kubaj vxor 3, 3, 2 1273*3a608692SPiotr Kubaj vperm 3, 3, 9, 25 1274*3a608692SPiotr Kubaj 1275*3a608692SPiotr Kubaj 1276*3a608692SPiotr Kubaj vperm 2, 18, 18, 0 1277*3a608692SPiotr Kubaj vxor 2, 2, 3 1278*3a608692SPiotr Kubaj 1279*3a608692SPiotr Kubaj vperm 3, 19, 19, 1 1280*3a608692SPiotr Kubaj vxor 3, 3, 2 1281*3a608692SPiotr Kubaj vperm 3, 3, 9, 25 1282*3a608692SPiotr Kubaj 1283*3a608692SPiotr Kubaj 1284*3a608692SPiotr Kubaj vperm 2, 20, 20, 0 1285*3a608692SPiotr Kubaj vxor 2, 2, 3 1286*3a608692SPiotr Kubaj 1287*3a608692SPiotr Kubaj vperm 3, 21, 21, 1 1288*3a608692SPiotr Kubaj vxor 3, 3, 2 1289*3a608692SPiotr Kubaj 1290*3a608692SPiotr Kubaj 1291*3a608692SPiotr Kubaj vperm 2, 22, 22, 0 1292*3a608692SPiotr Kubaj vperm 3, 3, 9, 25 1293*3a608692SPiotr Kubaj 1294*3a608692SPiotr Kubaj vperm 4, 23, 23, 1 1295*3a608692SPiotr Kubaj lvx 1, 8, 10 1296*3a608692SPiotr Kubaj vxor 2, 2, 3 1297*3a608692SPiotr Kubaj vxor 3, 4, 2 1298*3a608692SPiotr Kubaj 1299*3a608692SPiotr Kubaj addi 5, 5, -16 1300*3a608692SPiotr Kubaj 1301*3a608692SPiotr Kubaj vperm 3, 3, 3, 1 1302*3a608692SPiotr Kubaj addi 8, 8, -16 1303*3a608692SPiotr Kubaj andi. 8, 8, 0x30 1304*3a608692SPiotr Kubaj 1305*3a608692SPiotr Kubaj 1306*3a608692SPiotr Kubaj vperm 1, 3, 3, 29 1307*3a608692SPiotr Kubaj vsel 2,28,1,30 1308*3a608692SPiotr Kubaj vor 28,1,1 1309*3a608692SPiotr Kubaj stvx 2, 0, 5 1310*3a608692SPiotr Kubaj blr 1311*3a608692SPiotr Kubaj.long 0 1312*3a608692SPiotr Kubaj.byte 0,12,0x14,0,0,0,0,0 1313*3a608692SPiotr Kubaj 1314*3a608692SPiotr Kubaj.globl vpaes_set_encrypt_key 1315*3a608692SPiotr Kubaj.type vpaes_set_encrypt_key,@function 1316*3a608692SPiotr Kubaj.align 5 1317*3a608692SPiotr Kubajvpaes_set_encrypt_key: 1318*3a608692SPiotr Kubaj.localentry vpaes_set_encrypt_key,0 1319*3a608692SPiotr Kubaj 1320*3a608692SPiotr Kubaj stdu 1,-256(1) 1321*3a608692SPiotr Kubaj li 10,63 1322*3a608692SPiotr Kubaj li 11,79 1323*3a608692SPiotr Kubaj mflr 0 1324*3a608692SPiotr Kubaj li 6,-1 1325*3a608692SPiotr Kubaj stvx 20,10,1 1326*3a608692SPiotr Kubaj addi 10,10,32 1327*3a608692SPiotr Kubaj stvx 21,11,1 1328*3a608692SPiotr Kubaj addi 11,11,32 1329*3a608692SPiotr Kubaj stvx 22,10,1 1330*3a608692SPiotr Kubaj addi 10,10,32 1331*3a608692SPiotr Kubaj stvx 23,11,1 1332*3a608692SPiotr Kubaj addi 11,11,32 1333*3a608692SPiotr Kubaj stvx 24,10,1 1334*3a608692SPiotr Kubaj addi 10,10,32 1335*3a608692SPiotr Kubaj stvx 25,11,1 1336*3a608692SPiotr Kubaj addi 11,11,32 1337*3a608692SPiotr Kubaj stvx 26,10,1 1338*3a608692SPiotr Kubaj addi 10,10,32 1339*3a608692SPiotr Kubaj stvx 27,11,1 1340*3a608692SPiotr Kubaj addi 11,11,32 1341*3a608692SPiotr Kubaj stvx 28,10,1 1342*3a608692SPiotr Kubaj addi 10,10,32 1343*3a608692SPiotr Kubaj stvx 29,11,1 1344*3a608692SPiotr Kubaj addi 11,11,32 1345*3a608692SPiotr Kubaj stvx 30,10,1 1346*3a608692SPiotr Kubaj stvx 31,11,1 1347*3a608692SPiotr Kubaj stw 6,252(1) 1348*3a608692SPiotr Kubaj li 7, -1 1349*3a608692SPiotr Kubaj std 0, 272(1) 1350*3a608692SPiotr Kubaj or 7,7,7 1351*3a608692SPiotr Kubaj 1352*3a608692SPiotr Kubaj srwi 9, 4, 5 1353*3a608692SPiotr Kubaj addi 9, 9, 6 1354*3a608692SPiotr Kubaj stw 9, 240(5) 1355*3a608692SPiotr Kubaj 1356*3a608692SPiotr Kubaj cmplw 1,4,4 1357*3a608692SPiotr Kubaj li 8, 0x30 1358*3a608692SPiotr Kubaj bl _vpaes_schedule_core 1359*3a608692SPiotr Kubaj 1360*3a608692SPiotr Kubaj ld 0, 272(1) 1361*3a608692SPiotr Kubaj li 10,63 1362*3a608692SPiotr Kubaj li 11,79 1363*3a608692SPiotr Kubaj or 6,6,6 1364*3a608692SPiotr Kubaj mtlr 0 1365*3a608692SPiotr Kubaj xor 3, 3, 3 1366*3a608692SPiotr Kubaj lvx 20,10,1 1367*3a608692SPiotr Kubaj addi 10,10,32 1368*3a608692SPiotr Kubaj lvx 21,11,1 1369*3a608692SPiotr Kubaj addi 11,11,32 1370*3a608692SPiotr Kubaj lvx 22,10,1 1371*3a608692SPiotr Kubaj addi 10,10,32 1372*3a608692SPiotr Kubaj lvx 23,11,1 1373*3a608692SPiotr Kubaj addi 11,11,32 1374*3a608692SPiotr Kubaj lvx 24,10,1 1375*3a608692SPiotr Kubaj addi 10,10,32 1376*3a608692SPiotr Kubaj lvx 25,11,1 1377*3a608692SPiotr Kubaj addi 11,11,32 1378*3a608692SPiotr Kubaj lvx 26,10,1 1379*3a608692SPiotr Kubaj addi 10,10,32 1380*3a608692SPiotr Kubaj lvx 27,11,1 1381*3a608692SPiotr Kubaj addi 11,11,32 1382*3a608692SPiotr Kubaj lvx 28,10,1 1383*3a608692SPiotr Kubaj addi 10,10,32 1384*3a608692SPiotr Kubaj lvx 29,11,1 1385*3a608692SPiotr Kubaj addi 11,11,32 1386*3a608692SPiotr Kubaj lvx 30,10,1 1387*3a608692SPiotr Kubaj lvx 31,11,1 1388*3a608692SPiotr Kubaj addi 1,1,256 1389*3a608692SPiotr Kubaj blr 1390*3a608692SPiotr Kubaj.long 0 1391*3a608692SPiotr Kubaj.byte 0,12,0x04,1,0x80,0,3,0 1392*3a608692SPiotr Kubaj.long 0 1393*3a608692SPiotr Kubaj.size vpaes_set_encrypt_key,.-vpaes_set_encrypt_key 1394*3a608692SPiotr Kubaj 1395*3a608692SPiotr Kubaj.globl vpaes_set_decrypt_key 1396*3a608692SPiotr Kubaj.type vpaes_set_decrypt_key,@function 1397*3a608692SPiotr Kubaj.align 4 1398*3a608692SPiotr Kubajvpaes_set_decrypt_key: 1399*3a608692SPiotr Kubaj.localentry vpaes_set_decrypt_key,0 1400*3a608692SPiotr Kubaj 1401*3a608692SPiotr Kubaj stdu 1,-256(1) 1402*3a608692SPiotr Kubaj li 10,63 1403*3a608692SPiotr Kubaj li 11,79 1404*3a608692SPiotr Kubaj mflr 0 1405*3a608692SPiotr Kubaj li 6,-1 1406*3a608692SPiotr Kubaj stvx 20,10,1 1407*3a608692SPiotr Kubaj addi 10,10,32 1408*3a608692SPiotr Kubaj stvx 21,11,1 1409*3a608692SPiotr Kubaj addi 11,11,32 1410*3a608692SPiotr Kubaj stvx 22,10,1 1411*3a608692SPiotr Kubaj addi 10,10,32 1412*3a608692SPiotr Kubaj stvx 23,11,1 1413*3a608692SPiotr Kubaj addi 11,11,32 1414*3a608692SPiotr Kubaj stvx 24,10,1 1415*3a608692SPiotr Kubaj addi 10,10,32 1416*3a608692SPiotr Kubaj stvx 25,11,1 1417*3a608692SPiotr Kubaj addi 11,11,32 1418*3a608692SPiotr Kubaj stvx 26,10,1 1419*3a608692SPiotr Kubaj addi 10,10,32 1420*3a608692SPiotr Kubaj stvx 27,11,1 1421*3a608692SPiotr Kubaj addi 11,11,32 1422*3a608692SPiotr Kubaj stvx 28,10,1 1423*3a608692SPiotr Kubaj addi 10,10,32 1424*3a608692SPiotr Kubaj stvx 29,11,1 1425*3a608692SPiotr Kubaj addi 11,11,32 1426*3a608692SPiotr Kubaj stvx 30,10,1 1427*3a608692SPiotr Kubaj stvx 31,11,1 1428*3a608692SPiotr Kubaj stw 6,252(1) 1429*3a608692SPiotr Kubaj li 7, -1 1430*3a608692SPiotr Kubaj std 0, 272(1) 1431*3a608692SPiotr Kubaj or 7,7,7 1432*3a608692SPiotr Kubaj 1433*3a608692SPiotr Kubaj srwi 9, 4, 5 1434*3a608692SPiotr Kubaj addi 9, 9, 6 1435*3a608692SPiotr Kubaj stw 9, 240(5) 1436*3a608692SPiotr Kubaj 1437*3a608692SPiotr Kubaj slwi 9, 9, 4 1438*3a608692SPiotr Kubaj add 5, 5, 9 1439*3a608692SPiotr Kubaj 1440*3a608692SPiotr Kubaj cmplwi 1, 4, 0 1441*3a608692SPiotr Kubaj srwi 8, 4, 1 1442*3a608692SPiotr Kubaj andi. 8, 8, 32 1443*3a608692SPiotr Kubaj xori 8, 8, 32 1444*3a608692SPiotr Kubaj bl _vpaes_schedule_core 1445*3a608692SPiotr Kubaj 1446*3a608692SPiotr Kubaj ld 0, 272(1) 1447*3a608692SPiotr Kubaj li 10,63 1448*3a608692SPiotr Kubaj li 11,79 1449*3a608692SPiotr Kubaj or 6,6,6 1450*3a608692SPiotr Kubaj mtlr 0 1451*3a608692SPiotr Kubaj xor 3, 3, 3 1452*3a608692SPiotr Kubaj lvx 20,10,1 1453*3a608692SPiotr Kubaj addi 10,10,32 1454*3a608692SPiotr Kubaj lvx 21,11,1 1455*3a608692SPiotr Kubaj addi 11,11,32 1456*3a608692SPiotr Kubaj lvx 22,10,1 1457*3a608692SPiotr Kubaj addi 10,10,32 1458*3a608692SPiotr Kubaj lvx 23,11,1 1459*3a608692SPiotr Kubaj addi 11,11,32 1460*3a608692SPiotr Kubaj lvx 24,10,1 1461*3a608692SPiotr Kubaj addi 10,10,32 1462*3a608692SPiotr Kubaj lvx 25,11,1 1463*3a608692SPiotr Kubaj addi 11,11,32 1464*3a608692SPiotr Kubaj lvx 26,10,1 1465*3a608692SPiotr Kubaj addi 10,10,32 1466*3a608692SPiotr Kubaj lvx 27,11,1 1467*3a608692SPiotr Kubaj addi 11,11,32 1468*3a608692SPiotr Kubaj lvx 28,10,1 1469*3a608692SPiotr Kubaj addi 10,10,32 1470*3a608692SPiotr Kubaj lvx 29,11,1 1471*3a608692SPiotr Kubaj addi 11,11,32 1472*3a608692SPiotr Kubaj lvx 30,10,1 1473*3a608692SPiotr Kubaj lvx 31,11,1 1474*3a608692SPiotr Kubaj addi 1,1,256 1475*3a608692SPiotr Kubaj blr 1476*3a608692SPiotr Kubaj.long 0 1477*3a608692SPiotr Kubaj.byte 0,12,0x04,1,0x80,0,3,0 1478*3a608692SPiotr Kubaj.long 0 1479*3a608692SPiotr Kubaj.size vpaes_set_decrypt_key,.-vpaes_set_decrypt_key 1480