1*3a608692SPiotr Kubaj/* $FreeBSD$ */ 2*3a608692SPiotr Kubaj/* Do not modify. This file is auto-generated from vpaes-ppc.pl. */ 3*3a608692SPiotr Kubaj.machine "any" 4*3a608692SPiotr Kubaj 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 stwu 1,-232(1) 237*3a608692SPiotr Kubaj li 10,39 238*3a608692SPiotr Kubaj li 11,55 239*3a608692SPiotr Kubaj mflr 6 240*3a608692SPiotr Kubaj mfspr 7,256 241*3a608692SPiotr Kubaj stvx 20,10,1 242*3a608692SPiotr Kubaj addi 10,10,32 243*3a608692SPiotr Kubaj stvx 21,11,1 244*3a608692SPiotr Kubaj addi 11,11,32 245*3a608692SPiotr Kubaj stvx 22,10,1 246*3a608692SPiotr Kubaj addi 10,10,32 247*3a608692SPiotr Kubaj stvx 23,11,1 248*3a608692SPiotr Kubaj addi 11,11,32 249*3a608692SPiotr Kubaj stvx 24,10,1 250*3a608692SPiotr Kubaj addi 10,10,32 251*3a608692SPiotr Kubaj stvx 25,11,1 252*3a608692SPiotr Kubaj addi 11,11,32 253*3a608692SPiotr Kubaj stvx 26,10,1 254*3a608692SPiotr Kubaj addi 10,10,32 255*3a608692SPiotr Kubaj stvx 27,11,1 256*3a608692SPiotr Kubaj addi 11,11,32 257*3a608692SPiotr Kubaj stvx 28,10,1 258*3a608692SPiotr Kubaj addi 10,10,32 259*3a608692SPiotr Kubaj stvx 29,11,1 260*3a608692SPiotr Kubaj addi 11,11,32 261*3a608692SPiotr Kubaj stvx 30,10,1 262*3a608692SPiotr Kubaj stvx 31,11,1 263*3a608692SPiotr Kubaj stw 7,228(1) 264*3a608692SPiotr Kubaj li 0, -1 265*3a608692SPiotr Kubaj stw 6,236(1) 266*3a608692SPiotr Kubaj mtspr 256,0 267*3a608692SPiotr Kubaj 268*3a608692SPiotr Kubaj bl _vpaes_encrypt_preheat 269*3a608692SPiotr Kubaj 270*3a608692SPiotr Kubaj lvsl 27, 0, 3 271*3a608692SPiotr Kubaj lvx 0, 0, 3 272*3a608692SPiotr Kubaj addi 3, 3, 15 273*3a608692SPiotr Kubaj lvsr 29, 0, 4 274*3a608692SPiotr Kubaj lvsl 31, 0, 5 275*3a608692SPiotr Kubaj lvx 26, 0, 3 276*3a608692SPiotr Kubaj vperm 0, 0, 26, 27 277*3a608692SPiotr Kubaj 278*3a608692SPiotr Kubaj bl _vpaes_encrypt_core 279*3a608692SPiotr Kubaj 280*3a608692SPiotr Kubaj andi. 8, 4, 15 281*3a608692SPiotr Kubaj li 9, 16 282*3a608692SPiotr Kubaj beq .Lenc_out_aligned 283*3a608692SPiotr Kubaj 284*3a608692SPiotr Kubaj vperm 0, 0, 0, 29 285*3a608692SPiotr Kubaj mtctr 9 286*3a608692SPiotr Kubaj.Lenc_out_unaligned: 287*3a608692SPiotr Kubaj stvebx 0, 0, 4 288*3a608692SPiotr Kubaj addi 4, 4, 1 289*3a608692SPiotr Kubaj bdnz .Lenc_out_unaligned 290*3a608692SPiotr Kubaj b .Lenc_done 291*3a608692SPiotr Kubaj 292*3a608692SPiotr Kubaj.align 4 293*3a608692SPiotr Kubaj.Lenc_out_aligned: 294*3a608692SPiotr Kubaj stvx 0, 0, 4 295*3a608692SPiotr Kubaj.Lenc_done: 296*3a608692SPiotr Kubaj 297*3a608692SPiotr Kubaj li 10,39 298*3a608692SPiotr Kubaj li 11,55 299*3a608692SPiotr Kubaj mtlr 6 300*3a608692SPiotr Kubaj mtspr 256,7 301*3a608692SPiotr Kubaj lvx 20,10,1 302*3a608692SPiotr Kubaj addi 10,10,32 303*3a608692SPiotr Kubaj lvx 21,11,1 304*3a608692SPiotr Kubaj addi 11,11,32 305*3a608692SPiotr Kubaj lvx 22,10,1 306*3a608692SPiotr Kubaj addi 10,10,32 307*3a608692SPiotr Kubaj lvx 23,11,1 308*3a608692SPiotr Kubaj addi 11,11,32 309*3a608692SPiotr Kubaj lvx 24,10,1 310*3a608692SPiotr Kubaj addi 10,10,32 311*3a608692SPiotr Kubaj lvx 25,11,1 312*3a608692SPiotr Kubaj addi 11,11,32 313*3a608692SPiotr Kubaj lvx 26,10,1 314*3a608692SPiotr Kubaj addi 10,10,32 315*3a608692SPiotr Kubaj lvx 27,11,1 316*3a608692SPiotr Kubaj addi 11,11,32 317*3a608692SPiotr Kubaj lvx 28,10,1 318*3a608692SPiotr Kubaj addi 10,10,32 319*3a608692SPiotr Kubaj lvx 29,11,1 320*3a608692SPiotr Kubaj addi 11,11,32 321*3a608692SPiotr Kubaj lvx 30,10,1 322*3a608692SPiotr Kubaj lvx 31,11,1 323*3a608692SPiotr Kubaj addi 1,1,232 324*3a608692SPiotr Kubaj blr 325*3a608692SPiotr Kubaj.long 0 326*3a608692SPiotr Kubaj.byte 0,12,0x04,1,0x80,0,3,0 327*3a608692SPiotr Kubaj.long 0 328*3a608692SPiotr Kubaj.size vpaes_encrypt,.-vpaes_encrypt 329*3a608692SPiotr Kubaj 330*3a608692SPiotr Kubaj.align 4 331*3a608692SPiotr Kubaj_vpaes_decrypt_preheat: 332*3a608692SPiotr Kubaj mflr 8 333*3a608692SPiotr Kubaj bl .Lconsts 334*3a608692SPiotr Kubaj mtlr 8 335*3a608692SPiotr Kubaj li 11, 0xc0 336*3a608692SPiotr Kubaj li 10, 0xd0 337*3a608692SPiotr Kubaj li 9, 0x160 338*3a608692SPiotr Kubaj li 8, 0x170 339*3a608692SPiotr Kubaj vxor 7, 7, 7 340*3a608692SPiotr Kubaj vspltisb 8,4 341*3a608692SPiotr Kubaj vspltisb 9,0x0f 342*3a608692SPiotr Kubaj lvx 10, 12, 11 343*3a608692SPiotr Kubaj li 11, 0x180 344*3a608692SPiotr Kubaj lvx 11, 12, 10 345*3a608692SPiotr Kubaj li 10, 0x190 346*3a608692SPiotr Kubaj lvx 12, 12, 9 347*3a608692SPiotr Kubaj li 9, 0x1a0 348*3a608692SPiotr Kubaj lvx 13, 12, 8 349*3a608692SPiotr Kubaj li 8, 0x1b0 350*3a608692SPiotr Kubaj lvx 14, 12, 11 351*3a608692SPiotr Kubaj li 11, 0x1c0 352*3a608692SPiotr Kubaj lvx 15, 12, 10 353*3a608692SPiotr Kubaj li 10, 0x1d0 354*3a608692SPiotr Kubaj lvx 16, 12, 9 355*3a608692SPiotr Kubaj li 9, 0x1e0 356*3a608692SPiotr Kubaj lvx 17, 12, 8 357*3a608692SPiotr Kubaj li 8, 0x1f0 358*3a608692SPiotr Kubaj lvx 18, 12, 11 359*3a608692SPiotr Kubaj li 11, 0x200 360*3a608692SPiotr Kubaj lvx 19, 12, 10 361*3a608692SPiotr Kubaj li 10, 0x210 362*3a608692SPiotr Kubaj lvx 20, 12, 9 363*3a608692SPiotr Kubaj lvx 21, 12, 8 364*3a608692SPiotr Kubaj lvx 22, 12, 11 365*3a608692SPiotr Kubaj lvx 23, 12, 10 366*3a608692SPiotr Kubaj blr 367*3a608692SPiotr Kubaj.long 0 368*3a608692SPiotr Kubaj.byte 0,12,0x14,0,0,0,0,0 369*3a608692SPiotr Kubaj 370*3a608692SPiotr Kubaj 371*3a608692SPiotr Kubaj 372*3a608692SPiotr Kubaj 373*3a608692SPiotr Kubaj 374*3a608692SPiotr Kubaj 375*3a608692SPiotr Kubaj.align 4 376*3a608692SPiotr Kubaj_vpaes_decrypt_core: 377*3a608692SPiotr Kubaj lwz 8, 240(5) 378*3a608692SPiotr Kubaj li 9, 16 379*3a608692SPiotr Kubaj lvx 5, 0, 5 380*3a608692SPiotr Kubaj li 11, 0x30 381*3a608692SPiotr Kubaj lvx 6, 9, 5 382*3a608692SPiotr Kubaj addi 9, 9, 16 383*3a608692SPiotr Kubaj vperm 5, 5, 6, 31 384*3a608692SPiotr Kubaj vsrb 1, 0, 8 385*3a608692SPiotr Kubaj vperm 0, 12, 12, 0 386*3a608692SPiotr Kubaj vperm 1, 13, 13, 1 387*3a608692SPiotr Kubaj vxor 0, 0, 5 388*3a608692SPiotr Kubaj vxor 0, 0, 1 389*3a608692SPiotr Kubaj mtctr 8 390*3a608692SPiotr Kubaj b .Ldec_entry 391*3a608692SPiotr Kubaj 392*3a608692SPiotr Kubaj.align 4 393*3a608692SPiotr Kubaj.Ldec_loop: 394*3a608692SPiotr Kubaj 395*3a608692SPiotr Kubaj 396*3a608692SPiotr Kubaj 397*3a608692SPiotr Kubaj lvx 0, 12, 11 398*3a608692SPiotr Kubaj 399*3a608692SPiotr Kubaj 400*3a608692SPiotr Kubaj vperm 4, 16, 7, 2 401*3a608692SPiotr Kubaj subi 11, 11, 16 402*3a608692SPiotr Kubaj vperm 1, 17, 7, 3 403*3a608692SPiotr Kubaj andi. 11, 11, 0x30 404*3a608692SPiotr Kubaj vxor 5, 5, 4 405*3a608692SPiotr Kubaj 406*3a608692SPiotr Kubaj vxor 5, 5, 1 407*3a608692SPiotr Kubaj 408*3a608692SPiotr Kubaj 409*3a608692SPiotr Kubaj vperm 4, 18, 7, 2 410*3a608692SPiotr Kubaj vperm 5, 5, 7, 0 411*3a608692SPiotr Kubaj vperm 1, 19, 7, 3 412*3a608692SPiotr Kubaj vxor 5, 5, 4 413*3a608692SPiotr Kubaj 414*3a608692SPiotr Kubaj vxor 5, 5, 1 415*3a608692SPiotr Kubaj 416*3a608692SPiotr Kubaj 417*3a608692SPiotr Kubaj vperm 4, 20, 7, 2 418*3a608692SPiotr Kubaj vperm 5, 5, 7, 0 419*3a608692SPiotr Kubaj vperm 1, 21, 7, 3 420*3a608692SPiotr Kubaj vxor 5, 5, 4 421*3a608692SPiotr Kubaj 422*3a608692SPiotr Kubaj vxor 5, 5, 1 423*3a608692SPiotr Kubaj 424*3a608692SPiotr Kubaj 425*3a608692SPiotr Kubaj vperm 4, 22, 7, 2 426*3a608692SPiotr Kubaj vperm 5, 5, 7, 0 427*3a608692SPiotr Kubaj vperm 1, 23, 7, 3 428*3a608692SPiotr Kubaj vxor 0, 5, 4 429*3a608692SPiotr Kubaj vxor 0, 0, 1 430*3a608692SPiotr Kubaj 431*3a608692SPiotr Kubaj.Ldec_entry: 432*3a608692SPiotr Kubaj 433*3a608692SPiotr Kubaj vsrb 1, 0, 8 434*3a608692SPiotr Kubaj vperm 2, 11, 11, 0 435*3a608692SPiotr Kubaj vxor 0, 0, 1 436*3a608692SPiotr Kubaj vperm 3, 10, 10, 1 437*3a608692SPiotr Kubaj vperm 4, 10, 10, 0 438*3a608692SPiotr Kubaj vand 0, 0, 9 439*3a608692SPiotr Kubaj vxor 3, 3, 2 440*3a608692SPiotr Kubaj vxor 4, 4, 2 441*3a608692SPiotr Kubaj vperm 2, 10, 7, 3 442*3a608692SPiotr Kubaj vor 5,6,6 443*3a608692SPiotr Kubaj lvx 6, 9, 5 444*3a608692SPiotr Kubaj vperm 3, 10, 7, 4 445*3a608692SPiotr Kubaj addi 9, 9, 16 446*3a608692SPiotr Kubaj vxor 2, 2, 0 447*3a608692SPiotr Kubaj vperm 5, 5, 6, 31 448*3a608692SPiotr Kubaj vxor 3, 3, 1 449*3a608692SPiotr Kubaj bdnz .Ldec_loop 450*3a608692SPiotr Kubaj 451*3a608692SPiotr Kubaj 452*3a608692SPiotr Kubaj addi 10, 11, 0x80 453*3a608692SPiotr Kubaj 454*3a608692SPiotr Kubaj vperm 4, 14, 7, 2 455*3a608692SPiotr Kubaj 456*3a608692SPiotr Kubaj lvx 2, 12, 10 457*3a608692SPiotr Kubaj vperm 1, 15, 7, 3 458*3a608692SPiotr Kubaj vxor 4, 4, 5 459*3a608692SPiotr Kubaj vxor 0, 1, 4 460*3a608692SPiotr Kubaj vperm 0, 0, 7, 2 461*3a608692SPiotr Kubaj blr 462*3a608692SPiotr Kubaj.long 0 463*3a608692SPiotr Kubaj.byte 0,12,0x14,0,0,0,0,0 464*3a608692SPiotr Kubaj 465*3a608692SPiotr Kubaj.globl vpaes_decrypt 466*3a608692SPiotr Kubaj.type vpaes_decrypt,@function 467*3a608692SPiotr Kubaj.align 5 468*3a608692SPiotr Kubajvpaes_decrypt: 469*3a608692SPiotr Kubaj stwu 1,-232(1) 470*3a608692SPiotr Kubaj li 10,39 471*3a608692SPiotr Kubaj li 11,55 472*3a608692SPiotr Kubaj mflr 6 473*3a608692SPiotr Kubaj mfspr 7,256 474*3a608692SPiotr Kubaj stvx 20,10,1 475*3a608692SPiotr Kubaj addi 10,10,32 476*3a608692SPiotr Kubaj stvx 21,11,1 477*3a608692SPiotr Kubaj addi 11,11,32 478*3a608692SPiotr Kubaj stvx 22,10,1 479*3a608692SPiotr Kubaj addi 10,10,32 480*3a608692SPiotr Kubaj stvx 23,11,1 481*3a608692SPiotr Kubaj addi 11,11,32 482*3a608692SPiotr Kubaj stvx 24,10,1 483*3a608692SPiotr Kubaj addi 10,10,32 484*3a608692SPiotr Kubaj stvx 25,11,1 485*3a608692SPiotr Kubaj addi 11,11,32 486*3a608692SPiotr Kubaj stvx 26,10,1 487*3a608692SPiotr Kubaj addi 10,10,32 488*3a608692SPiotr Kubaj stvx 27,11,1 489*3a608692SPiotr Kubaj addi 11,11,32 490*3a608692SPiotr Kubaj stvx 28,10,1 491*3a608692SPiotr Kubaj addi 10,10,32 492*3a608692SPiotr Kubaj stvx 29,11,1 493*3a608692SPiotr Kubaj addi 11,11,32 494*3a608692SPiotr Kubaj stvx 30,10,1 495*3a608692SPiotr Kubaj stvx 31,11,1 496*3a608692SPiotr Kubaj stw 7,228(1) 497*3a608692SPiotr Kubaj li 0, -1 498*3a608692SPiotr Kubaj stw 6,236(1) 499*3a608692SPiotr Kubaj mtspr 256,0 500*3a608692SPiotr Kubaj 501*3a608692SPiotr Kubaj bl _vpaes_decrypt_preheat 502*3a608692SPiotr Kubaj 503*3a608692SPiotr Kubaj lvsl 27, 0, 3 504*3a608692SPiotr Kubaj lvx 0, 0, 3 505*3a608692SPiotr Kubaj addi 3, 3, 15 506*3a608692SPiotr Kubaj lvsr 29, 0, 4 507*3a608692SPiotr Kubaj lvsl 31, 0, 5 508*3a608692SPiotr Kubaj lvx 26, 0, 3 509*3a608692SPiotr Kubaj vperm 0, 0, 26, 27 510*3a608692SPiotr Kubaj 511*3a608692SPiotr Kubaj bl _vpaes_decrypt_core 512*3a608692SPiotr Kubaj 513*3a608692SPiotr Kubaj andi. 8, 4, 15 514*3a608692SPiotr Kubaj li 9, 16 515*3a608692SPiotr Kubaj beq .Ldec_out_aligned 516*3a608692SPiotr Kubaj 517*3a608692SPiotr Kubaj vperm 0, 0, 0, 29 518*3a608692SPiotr Kubaj mtctr 9 519*3a608692SPiotr Kubaj.Ldec_out_unaligned: 520*3a608692SPiotr Kubaj stvebx 0, 0, 4 521*3a608692SPiotr Kubaj addi 4, 4, 1 522*3a608692SPiotr Kubaj bdnz .Ldec_out_unaligned 523*3a608692SPiotr Kubaj b .Ldec_done 524*3a608692SPiotr Kubaj 525*3a608692SPiotr Kubaj.align 4 526*3a608692SPiotr Kubaj.Ldec_out_aligned: 527*3a608692SPiotr Kubaj stvx 0, 0, 4 528*3a608692SPiotr Kubaj.Ldec_done: 529*3a608692SPiotr Kubaj 530*3a608692SPiotr Kubaj li 10,39 531*3a608692SPiotr Kubaj li 11,55 532*3a608692SPiotr Kubaj mtlr 6 533*3a608692SPiotr Kubaj mtspr 256,7 534*3a608692SPiotr Kubaj lvx 20,10,1 535*3a608692SPiotr Kubaj addi 10,10,32 536*3a608692SPiotr Kubaj lvx 21,11,1 537*3a608692SPiotr Kubaj addi 11,11,32 538*3a608692SPiotr Kubaj lvx 22,10,1 539*3a608692SPiotr Kubaj addi 10,10,32 540*3a608692SPiotr Kubaj lvx 23,11,1 541*3a608692SPiotr Kubaj addi 11,11,32 542*3a608692SPiotr Kubaj lvx 24,10,1 543*3a608692SPiotr Kubaj addi 10,10,32 544*3a608692SPiotr Kubaj lvx 25,11,1 545*3a608692SPiotr Kubaj addi 11,11,32 546*3a608692SPiotr Kubaj lvx 26,10,1 547*3a608692SPiotr Kubaj addi 10,10,32 548*3a608692SPiotr Kubaj lvx 27,11,1 549*3a608692SPiotr Kubaj addi 11,11,32 550*3a608692SPiotr Kubaj lvx 28,10,1 551*3a608692SPiotr Kubaj addi 10,10,32 552*3a608692SPiotr Kubaj lvx 29,11,1 553*3a608692SPiotr Kubaj addi 11,11,32 554*3a608692SPiotr Kubaj lvx 30,10,1 555*3a608692SPiotr Kubaj lvx 31,11,1 556*3a608692SPiotr Kubaj addi 1,1,232 557*3a608692SPiotr Kubaj blr 558*3a608692SPiotr Kubaj.long 0 559*3a608692SPiotr Kubaj.byte 0,12,0x04,1,0x80,0,3,0 560*3a608692SPiotr Kubaj.long 0 561*3a608692SPiotr Kubaj.size vpaes_decrypt,.-vpaes_decrypt 562*3a608692SPiotr Kubaj 563*3a608692SPiotr Kubaj.globl vpaes_cbc_encrypt 564*3a608692SPiotr Kubaj.type vpaes_cbc_encrypt,@function 565*3a608692SPiotr Kubaj.align 5 566*3a608692SPiotr Kubajvpaes_cbc_encrypt: 567*3a608692SPiotr Kubaj cmplwi 5,16 568*3a608692SPiotr Kubaj .long 0x4dc00020 569*3a608692SPiotr Kubaj 570*3a608692SPiotr Kubaj stwu 1,-240(1) 571*3a608692SPiotr Kubaj mflr 0 572*3a608692SPiotr Kubaj li 10,39 573*3a608692SPiotr Kubaj li 11,55 574*3a608692SPiotr Kubaj mfspr 12,256 575*3a608692SPiotr Kubaj stvx 20,10,1 576*3a608692SPiotr Kubaj addi 10,10,32 577*3a608692SPiotr Kubaj stvx 21,11,1 578*3a608692SPiotr Kubaj addi 11,11,32 579*3a608692SPiotr Kubaj stvx 22,10,1 580*3a608692SPiotr Kubaj addi 10,10,32 581*3a608692SPiotr Kubaj stvx 23,11,1 582*3a608692SPiotr Kubaj addi 11,11,32 583*3a608692SPiotr Kubaj stvx 24,10,1 584*3a608692SPiotr Kubaj addi 10,10,32 585*3a608692SPiotr Kubaj stvx 25,11,1 586*3a608692SPiotr Kubaj addi 11,11,32 587*3a608692SPiotr Kubaj stvx 26,10,1 588*3a608692SPiotr Kubaj addi 10,10,32 589*3a608692SPiotr Kubaj stvx 27,11,1 590*3a608692SPiotr Kubaj addi 11,11,32 591*3a608692SPiotr Kubaj stvx 28,10,1 592*3a608692SPiotr Kubaj addi 10,10,32 593*3a608692SPiotr Kubaj stvx 29,11,1 594*3a608692SPiotr Kubaj addi 11,11,32 595*3a608692SPiotr Kubaj stvx 30,10,1 596*3a608692SPiotr Kubaj stvx 31,11,1 597*3a608692SPiotr Kubaj stw 12,228(1) 598*3a608692SPiotr Kubaj stw 30,232(1) 599*3a608692SPiotr Kubaj stw 31,236(1) 600*3a608692SPiotr Kubaj li 9, -16 601*3a608692SPiotr Kubaj stw 0, 244(1) 602*3a608692SPiotr Kubaj 603*3a608692SPiotr Kubaj and 30, 5, 9 604*3a608692SPiotr Kubaj andi. 9, 4, 15 605*3a608692SPiotr Kubaj mr 5, 6 606*3a608692SPiotr Kubaj mr 31, 7 607*3a608692SPiotr Kubaj li 6, -1 608*3a608692SPiotr Kubaj mcrf 1, 0 609*3a608692SPiotr Kubaj mr 7, 12 610*3a608692SPiotr Kubaj mtspr 256,6 611*3a608692SPiotr Kubaj 612*3a608692SPiotr Kubaj lvx 24, 0, 31 613*3a608692SPiotr Kubaj li 9, 15 614*3a608692SPiotr Kubaj lvsl 27, 0, 31 615*3a608692SPiotr Kubaj lvx 25, 9, 31 616*3a608692SPiotr Kubaj vperm 24, 24, 25, 27 617*3a608692SPiotr Kubaj 618*3a608692SPiotr Kubaj cmpwi 8, 0 619*3a608692SPiotr Kubaj neg 8, 3 620*3a608692SPiotr Kubaj vxor 7, 7, 7 621*3a608692SPiotr Kubaj lvsl 31, 0, 5 622*3a608692SPiotr Kubaj lvsr 29, 0, 4 623*3a608692SPiotr Kubaj lvsr 27, 0, 8 624*3a608692SPiotr Kubaj vnor 30, 7, 7 625*3a608692SPiotr Kubaj lvx 26, 0, 3 626*3a608692SPiotr Kubaj vperm 30, 7, 30, 29 627*3a608692SPiotr Kubaj addi 3, 3, 15 628*3a608692SPiotr Kubaj 629*3a608692SPiotr Kubaj beq .Lcbc_decrypt 630*3a608692SPiotr Kubaj 631*3a608692SPiotr Kubaj bl _vpaes_encrypt_preheat 632*3a608692SPiotr Kubaj li 0, 16 633*3a608692SPiotr Kubaj 634*3a608692SPiotr Kubaj beq 1, .Lcbc_enc_loop 635*3a608692SPiotr Kubaj 636*3a608692SPiotr Kubaj vor 0,26,26 637*3a608692SPiotr Kubaj lvx 26, 0, 3 638*3a608692SPiotr Kubaj addi 3, 3, 16 639*3a608692SPiotr Kubaj vperm 0, 0, 26, 27 640*3a608692SPiotr Kubaj vxor 0, 0, 24 641*3a608692SPiotr Kubaj 642*3a608692SPiotr Kubaj bl _vpaes_encrypt_core 643*3a608692SPiotr Kubaj 644*3a608692SPiotr Kubaj andi. 8, 4, 15 645*3a608692SPiotr Kubaj vor 24,0,0 646*3a608692SPiotr Kubaj sub 9, 4, 8 647*3a608692SPiotr Kubaj vperm 28, 0, 0, 29 648*3a608692SPiotr Kubaj 649*3a608692SPiotr Kubaj.Lcbc_enc_head: 650*3a608692SPiotr Kubaj stvebx 28, 8, 9 651*3a608692SPiotr Kubaj cmpwi 8, 15 652*3a608692SPiotr Kubaj addi 8, 8, 1 653*3a608692SPiotr Kubaj bne .Lcbc_enc_head 654*3a608692SPiotr Kubaj 655*3a608692SPiotr Kubaj sub. 30, 30, 0 656*3a608692SPiotr Kubaj addi 4, 4, 16 657*3a608692SPiotr Kubaj beq .Lcbc_unaligned_done 658*3a608692SPiotr Kubaj 659*3a608692SPiotr Kubaj.Lcbc_enc_loop: 660*3a608692SPiotr Kubaj vor 0,26,26 661*3a608692SPiotr Kubaj lvx 26, 0, 3 662*3a608692SPiotr Kubaj addi 3, 3, 16 663*3a608692SPiotr Kubaj vperm 0, 0, 26, 27 664*3a608692SPiotr Kubaj vxor 0, 0, 24 665*3a608692SPiotr Kubaj 666*3a608692SPiotr Kubaj bl _vpaes_encrypt_core 667*3a608692SPiotr Kubaj 668*3a608692SPiotr Kubaj vor 24,0,0 669*3a608692SPiotr Kubaj sub. 30, 30, 0 670*3a608692SPiotr Kubaj vperm 0, 0, 0, 29 671*3a608692SPiotr Kubaj vsel 1, 28, 0, 30 672*3a608692SPiotr Kubaj vor 28,0,0 673*3a608692SPiotr Kubaj stvx 1, 0, 4 674*3a608692SPiotr Kubaj addi 4, 4, 16 675*3a608692SPiotr Kubaj bne .Lcbc_enc_loop 676*3a608692SPiotr Kubaj 677*3a608692SPiotr Kubaj b .Lcbc_done 678*3a608692SPiotr Kubaj 679*3a608692SPiotr Kubaj.align 5 680*3a608692SPiotr Kubaj.Lcbc_decrypt: 681*3a608692SPiotr Kubaj bl _vpaes_decrypt_preheat 682*3a608692SPiotr Kubaj li 0, 16 683*3a608692SPiotr Kubaj 684*3a608692SPiotr Kubaj beq 1, .Lcbc_dec_loop 685*3a608692SPiotr Kubaj 686*3a608692SPiotr Kubaj vor 0,26,26 687*3a608692SPiotr Kubaj lvx 26, 0, 3 688*3a608692SPiotr Kubaj addi 3, 3, 16 689*3a608692SPiotr Kubaj vperm 0, 0, 26, 27 690*3a608692SPiotr Kubaj vor 25,0,0 691*3a608692SPiotr Kubaj 692*3a608692SPiotr Kubaj bl _vpaes_decrypt_core 693*3a608692SPiotr Kubaj 694*3a608692SPiotr Kubaj andi. 8, 4, 15 695*3a608692SPiotr Kubaj vxor 0, 0, 24 696*3a608692SPiotr Kubaj vor 24,25,25 697*3a608692SPiotr Kubaj sub 9, 4, 8 698*3a608692SPiotr Kubaj vperm 28, 0, 0, 29 699*3a608692SPiotr Kubaj 700*3a608692SPiotr Kubaj.Lcbc_dec_head: 701*3a608692SPiotr Kubaj stvebx 28, 8, 9 702*3a608692SPiotr Kubaj cmpwi 8, 15 703*3a608692SPiotr Kubaj addi 8, 8, 1 704*3a608692SPiotr Kubaj bne .Lcbc_dec_head 705*3a608692SPiotr Kubaj 706*3a608692SPiotr Kubaj sub. 30, 30, 0 707*3a608692SPiotr Kubaj addi 4, 4, 16 708*3a608692SPiotr Kubaj beq .Lcbc_unaligned_done 709*3a608692SPiotr Kubaj 710*3a608692SPiotr Kubaj.Lcbc_dec_loop: 711*3a608692SPiotr Kubaj vor 0,26,26 712*3a608692SPiotr Kubaj lvx 26, 0, 3 713*3a608692SPiotr Kubaj addi 3, 3, 16 714*3a608692SPiotr Kubaj vperm 0, 0, 26, 27 715*3a608692SPiotr Kubaj vor 25,0,0 716*3a608692SPiotr Kubaj 717*3a608692SPiotr Kubaj bl _vpaes_decrypt_core 718*3a608692SPiotr Kubaj 719*3a608692SPiotr Kubaj vxor 0, 0, 24 720*3a608692SPiotr Kubaj vor 24,25,25 721*3a608692SPiotr Kubaj sub. 30, 30, 0 722*3a608692SPiotr Kubaj vperm 0, 0, 0, 29 723*3a608692SPiotr Kubaj vsel 1, 28, 0, 30 724*3a608692SPiotr Kubaj vor 28,0,0 725*3a608692SPiotr Kubaj stvx 1, 0, 4 726*3a608692SPiotr Kubaj addi 4, 4, 16 727*3a608692SPiotr Kubaj bne .Lcbc_dec_loop 728*3a608692SPiotr Kubaj 729*3a608692SPiotr Kubaj.Lcbc_done: 730*3a608692SPiotr Kubaj beq 1, .Lcbc_write_iv 731*3a608692SPiotr Kubaj 732*3a608692SPiotr Kubaj.Lcbc_unaligned_done: 733*3a608692SPiotr Kubaj andi. 8, 4, 15 734*3a608692SPiotr Kubaj sub 4, 4, 8 735*3a608692SPiotr Kubaj li 9, 0 736*3a608692SPiotr Kubaj.Lcbc_tail: 737*3a608692SPiotr Kubaj stvebx 28, 9, 4 738*3a608692SPiotr Kubaj addi 9, 9, 1 739*3a608692SPiotr Kubaj cmpw 9, 8 740*3a608692SPiotr Kubaj bne .Lcbc_tail 741*3a608692SPiotr Kubaj 742*3a608692SPiotr Kubaj.Lcbc_write_iv: 743*3a608692SPiotr Kubaj neg 8, 31 744*3a608692SPiotr Kubaj li 10, 4 745*3a608692SPiotr Kubaj lvsl 29, 0, 8 746*3a608692SPiotr Kubaj li 11, 8 747*3a608692SPiotr Kubaj li 12, 12 748*3a608692SPiotr Kubaj vperm 24, 24, 24, 29 749*3a608692SPiotr Kubaj stvewx 24, 0, 31 750*3a608692SPiotr Kubaj stvewx 24, 10, 31 751*3a608692SPiotr Kubaj stvewx 24, 11, 31 752*3a608692SPiotr Kubaj stvewx 24, 12, 31 753*3a608692SPiotr Kubaj 754*3a608692SPiotr Kubaj mtspr 256,7 755*3a608692SPiotr Kubaj li 10,39 756*3a608692SPiotr Kubaj li 11,55 757*3a608692SPiotr Kubaj lvx 20,10,1 758*3a608692SPiotr Kubaj addi 10,10,32 759*3a608692SPiotr Kubaj lvx 21,11,1 760*3a608692SPiotr Kubaj addi 11,11,32 761*3a608692SPiotr Kubaj lvx 22,10,1 762*3a608692SPiotr Kubaj addi 10,10,32 763*3a608692SPiotr Kubaj lvx 23,11,1 764*3a608692SPiotr Kubaj addi 11,11,32 765*3a608692SPiotr Kubaj lvx 24,10,1 766*3a608692SPiotr Kubaj addi 10,10,32 767*3a608692SPiotr Kubaj lvx 25,11,1 768*3a608692SPiotr Kubaj addi 11,11,32 769*3a608692SPiotr Kubaj lvx 26,10,1 770*3a608692SPiotr Kubaj addi 10,10,32 771*3a608692SPiotr Kubaj lvx 27,11,1 772*3a608692SPiotr Kubaj addi 11,11,32 773*3a608692SPiotr Kubaj lvx 28,10,1 774*3a608692SPiotr Kubaj addi 10,10,32 775*3a608692SPiotr Kubaj lvx 29,11,1 776*3a608692SPiotr Kubaj addi 11,11,32 777*3a608692SPiotr Kubaj lvx 30,10,1 778*3a608692SPiotr Kubaj lvx 31,11,1 779*3a608692SPiotr Kubaj.Lcbc_abort: 780*3a608692SPiotr Kubaj lwz 0, 244(1) 781*3a608692SPiotr Kubaj lwz 30,232(1) 782*3a608692SPiotr Kubaj lwz 31,236(1) 783*3a608692SPiotr Kubaj mtlr 0 784*3a608692SPiotr Kubaj addi 1,1,240 785*3a608692SPiotr Kubaj blr 786*3a608692SPiotr Kubaj.long 0 787*3a608692SPiotr Kubaj.byte 0,12,0x04,1,0x80,2,6,0 788*3a608692SPiotr Kubaj.long 0 789*3a608692SPiotr Kubaj.size vpaes_cbc_encrypt,.-vpaes_cbc_encrypt 790*3a608692SPiotr Kubaj 791*3a608692SPiotr Kubaj 792*3a608692SPiotr Kubaj 793*3a608692SPiotr Kubaj 794*3a608692SPiotr Kubaj 795*3a608692SPiotr Kubaj.align 4 796*3a608692SPiotr Kubaj_vpaes_key_preheat: 797*3a608692SPiotr Kubaj mflr 8 798*3a608692SPiotr Kubaj bl .Lconsts 799*3a608692SPiotr Kubaj mtlr 8 800*3a608692SPiotr Kubaj li 11, 0xc0 801*3a608692SPiotr Kubaj li 10, 0xd0 802*3a608692SPiotr Kubaj li 9, 0xe0 803*3a608692SPiotr Kubaj li 8, 0xf0 804*3a608692SPiotr Kubaj 805*3a608692SPiotr Kubaj vspltisb 8,4 806*3a608692SPiotr Kubaj vxor 9,9,9 807*3a608692SPiotr Kubaj lvx 10, 12, 11 808*3a608692SPiotr Kubaj li 11, 0x120 809*3a608692SPiotr Kubaj lvx 11, 12, 10 810*3a608692SPiotr Kubaj li 10, 0x130 811*3a608692SPiotr Kubaj lvx 12, 12, 9 812*3a608692SPiotr Kubaj li 9, 0x220 813*3a608692SPiotr Kubaj lvx 13, 12, 8 814*3a608692SPiotr Kubaj li 8, 0x230 815*3a608692SPiotr Kubaj 816*3a608692SPiotr Kubaj lvx 14, 12, 11 817*3a608692SPiotr Kubaj li 11, 0x240 818*3a608692SPiotr Kubaj lvx 15, 12, 10 819*3a608692SPiotr Kubaj li 10, 0x250 820*3a608692SPiotr Kubaj 821*3a608692SPiotr Kubaj lvx 16, 12, 9 822*3a608692SPiotr Kubaj li 9, 0x260 823*3a608692SPiotr Kubaj lvx 17, 12, 8 824*3a608692SPiotr Kubaj li 8, 0x270 825*3a608692SPiotr Kubaj lvx 18, 12, 11 826*3a608692SPiotr Kubaj li 11, 0x280 827*3a608692SPiotr Kubaj lvx 19, 12, 10 828*3a608692SPiotr Kubaj li 10, 0x290 829*3a608692SPiotr Kubaj lvx 20, 12, 9 830*3a608692SPiotr Kubaj li 9, 0x2a0 831*3a608692SPiotr Kubaj lvx 21, 12, 8 832*3a608692SPiotr Kubaj li 8, 0x2b0 833*3a608692SPiotr Kubaj lvx 22, 12, 11 834*3a608692SPiotr Kubaj lvx 23, 12, 10 835*3a608692SPiotr Kubaj 836*3a608692SPiotr Kubaj lvx 24, 12, 9 837*3a608692SPiotr Kubaj lvx 25, 0, 12 838*3a608692SPiotr Kubaj lvx 26, 12, 8 839*3a608692SPiotr Kubaj blr 840*3a608692SPiotr Kubaj.long 0 841*3a608692SPiotr Kubaj.byte 0,12,0x14,0,0,0,0,0 842*3a608692SPiotr Kubaj 843*3a608692SPiotr Kubaj.align 4 844*3a608692SPiotr Kubaj_vpaes_schedule_core: 845*3a608692SPiotr Kubaj mflr 7 846*3a608692SPiotr Kubaj 847*3a608692SPiotr Kubaj bl _vpaes_key_preheat 848*3a608692SPiotr Kubaj 849*3a608692SPiotr Kubaj 850*3a608692SPiotr Kubaj neg 8, 3 851*3a608692SPiotr Kubaj lvx 0, 0, 3 852*3a608692SPiotr Kubaj addi 3, 3, 15 853*3a608692SPiotr Kubaj lvsr 27, 0, 8 854*3a608692SPiotr Kubaj lvx 6, 0, 3 855*3a608692SPiotr Kubaj addi 3, 3, 8 856*3a608692SPiotr Kubaj vperm 0, 0, 6, 27 857*3a608692SPiotr Kubaj 858*3a608692SPiotr Kubaj 859*3a608692SPiotr Kubaj vor 3,0,0 860*3a608692SPiotr Kubaj bl _vpaes_schedule_transform 861*3a608692SPiotr Kubaj vor 7,0,0 862*3a608692SPiotr Kubaj 863*3a608692SPiotr Kubaj bne 1, .Lschedule_am_decrypting 864*3a608692SPiotr Kubaj 865*3a608692SPiotr Kubaj 866*3a608692SPiotr Kubaj li 8, 0x30 867*3a608692SPiotr Kubaj li 9, 4 868*3a608692SPiotr Kubaj li 10, 8 869*3a608692SPiotr Kubaj li 11, 12 870*3a608692SPiotr Kubaj 871*3a608692SPiotr Kubaj lvsr 29, 0, 5 872*3a608692SPiotr Kubaj vnor 30, 9, 9 873*3a608692SPiotr Kubaj vperm 30, 9, 30, 29 874*3a608692SPiotr Kubaj 875*3a608692SPiotr Kubaj 876*3a608692SPiotr Kubaj vperm 28, 0, 0, 29 877*3a608692SPiotr Kubaj stvewx 28, 0, 5 878*3a608692SPiotr Kubaj stvewx 28, 9, 5 879*3a608692SPiotr Kubaj stvewx 28, 10, 5 880*3a608692SPiotr Kubaj addi 10, 12, 0x80 881*3a608692SPiotr Kubaj stvewx 28, 11, 5 882*3a608692SPiotr Kubaj b .Lschedule_go 883*3a608692SPiotr Kubaj 884*3a608692SPiotr Kubaj.Lschedule_am_decrypting: 885*3a608692SPiotr Kubaj srwi 8, 4, 1 886*3a608692SPiotr Kubaj andi. 8, 8, 32 887*3a608692SPiotr Kubaj xori 8, 8, 32 888*3a608692SPiotr Kubaj addi 10, 12, 0x80 889*3a608692SPiotr Kubaj 890*3a608692SPiotr Kubaj lvx 1, 8, 10 891*3a608692SPiotr Kubaj li 9, 4 892*3a608692SPiotr Kubaj li 10, 8 893*3a608692SPiotr Kubaj li 11, 12 894*3a608692SPiotr Kubaj vperm 4, 3, 3, 1 895*3a608692SPiotr Kubaj 896*3a608692SPiotr Kubaj neg 0, 5 897*3a608692SPiotr Kubaj lvsl 29, 0, 0 898*3a608692SPiotr Kubaj vnor 30, 9, 9 899*3a608692SPiotr Kubaj vperm 30, 30, 9, 29 900*3a608692SPiotr Kubaj 901*3a608692SPiotr Kubaj 902*3a608692SPiotr Kubaj vperm 28, 4, 4, 29 903*3a608692SPiotr Kubaj stvewx 28, 0, 5 904*3a608692SPiotr Kubaj stvewx 28, 9, 5 905*3a608692SPiotr Kubaj stvewx 28, 10, 5 906*3a608692SPiotr Kubaj addi 10, 12, 0x80 907*3a608692SPiotr Kubaj stvewx 28, 11, 5 908*3a608692SPiotr Kubaj addi 5, 5, 15 909*3a608692SPiotr Kubaj xori 8, 8, 0x30 910*3a608692SPiotr Kubaj 911*3a608692SPiotr Kubaj.Lschedule_go: 912*3a608692SPiotr Kubaj cmplwi 4, 192 913*3a608692SPiotr Kubaj bgt .Lschedule_256 914*3a608692SPiotr Kubaj beq .Lschedule_192 915*3a608692SPiotr Kubaj 916*3a608692SPiotr Kubaj 917*3a608692SPiotr Kubaj 918*3a608692SPiotr Kubaj 919*3a608692SPiotr Kubaj 920*3a608692SPiotr Kubaj 921*3a608692SPiotr Kubaj 922*3a608692SPiotr Kubaj 923*3a608692SPiotr Kubaj 924*3a608692SPiotr Kubaj 925*3a608692SPiotr Kubaj.Lschedule_128: 926*3a608692SPiotr Kubaj li 0, 10 927*3a608692SPiotr Kubaj mtctr 0 928*3a608692SPiotr Kubaj 929*3a608692SPiotr Kubaj.Loop_schedule_128: 930*3a608692SPiotr Kubaj bl _vpaes_schedule_round 931*3a608692SPiotr Kubaj bdz .Lschedule_mangle_last 932*3a608692SPiotr Kubaj bl _vpaes_schedule_mangle 933*3a608692SPiotr Kubaj b .Loop_schedule_128 934*3a608692SPiotr Kubaj 935*3a608692SPiotr Kubaj 936*3a608692SPiotr Kubaj 937*3a608692SPiotr Kubaj 938*3a608692SPiotr Kubaj 939*3a608692SPiotr Kubaj 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.align 4 951*3a608692SPiotr Kubaj.Lschedule_192: 952*3a608692SPiotr Kubaj li 0, 4 953*3a608692SPiotr Kubaj lvx 0, 0, 3 954*3a608692SPiotr Kubaj vperm 0, 6, 0, 27 955*3a608692SPiotr Kubaj vsldoi 0, 3, 0, 8 956*3a608692SPiotr Kubaj bl _vpaes_schedule_transform 957*3a608692SPiotr Kubaj vsldoi 6, 0, 9, 8 958*3a608692SPiotr Kubaj vsldoi 6, 9, 6, 8 959*3a608692SPiotr Kubaj mtctr 0 960*3a608692SPiotr Kubaj 961*3a608692SPiotr Kubaj.Loop_schedule_192: 962*3a608692SPiotr Kubaj bl _vpaes_schedule_round 963*3a608692SPiotr Kubaj vsldoi 0, 6, 0, 8 964*3a608692SPiotr Kubaj bl _vpaes_schedule_mangle 965*3a608692SPiotr Kubaj bl _vpaes_schedule_192_smear 966*3a608692SPiotr Kubaj bl _vpaes_schedule_mangle 967*3a608692SPiotr Kubaj bl _vpaes_schedule_round 968*3a608692SPiotr Kubaj bdz .Lschedule_mangle_last 969*3a608692SPiotr Kubaj bl _vpaes_schedule_mangle 970*3a608692SPiotr Kubaj bl _vpaes_schedule_192_smear 971*3a608692SPiotr Kubaj b .Loop_schedule_192 972*3a608692SPiotr Kubaj 973*3a608692SPiotr Kubaj 974*3a608692SPiotr Kubaj 975*3a608692SPiotr Kubaj 976*3a608692SPiotr Kubaj 977*3a608692SPiotr Kubaj 978*3a608692SPiotr Kubaj 979*3a608692SPiotr Kubaj 980*3a608692SPiotr Kubaj 981*3a608692SPiotr Kubaj 982*3a608692SPiotr Kubaj 983*3a608692SPiotr Kubaj.align 4 984*3a608692SPiotr Kubaj.Lschedule_256: 985*3a608692SPiotr Kubaj li 0, 7 986*3a608692SPiotr Kubaj addi 3, 3, 8 987*3a608692SPiotr Kubaj lvx 0, 0, 3 988*3a608692SPiotr Kubaj vperm 0, 6, 0, 27 989*3a608692SPiotr Kubaj bl _vpaes_schedule_transform 990*3a608692SPiotr Kubaj mtctr 0 991*3a608692SPiotr Kubaj 992*3a608692SPiotr Kubaj.Loop_schedule_256: 993*3a608692SPiotr Kubaj bl _vpaes_schedule_mangle 994*3a608692SPiotr Kubaj vor 6,0,0 995*3a608692SPiotr Kubaj 996*3a608692SPiotr Kubaj 997*3a608692SPiotr Kubaj bl _vpaes_schedule_round 998*3a608692SPiotr Kubaj bdz .Lschedule_mangle_last 999*3a608692SPiotr Kubaj bl _vpaes_schedule_mangle 1000*3a608692SPiotr Kubaj 1001*3a608692SPiotr Kubaj 1002*3a608692SPiotr Kubaj vspltw 0, 0, 3 1003*3a608692SPiotr Kubaj vor 5,7,7 1004*3a608692SPiotr Kubaj vor 7,6,6 1005*3a608692SPiotr Kubaj bl _vpaes_schedule_low_round 1006*3a608692SPiotr Kubaj vor 7,5,5 1007*3a608692SPiotr Kubaj 1008*3a608692SPiotr Kubaj b .Loop_schedule_256 1009*3a608692SPiotr Kubaj 1010*3a608692SPiotr Kubaj 1011*3a608692SPiotr Kubaj 1012*3a608692SPiotr Kubaj 1013*3a608692SPiotr Kubaj 1014*3a608692SPiotr Kubaj 1015*3a608692SPiotr Kubaj 1016*3a608692SPiotr Kubaj 1017*3a608692SPiotr Kubaj 1018*3a608692SPiotr Kubaj 1019*3a608692SPiotr Kubaj.align 4 1020*3a608692SPiotr Kubaj.Lschedule_mangle_last: 1021*3a608692SPiotr Kubaj 1022*3a608692SPiotr Kubaj li 11, 0x2e0 1023*3a608692SPiotr Kubaj li 9, 0x2f0 1024*3a608692SPiotr Kubaj bne 1, .Lschedule_mangle_last_dec 1025*3a608692SPiotr Kubaj 1026*3a608692SPiotr Kubaj 1027*3a608692SPiotr Kubaj lvx 1, 8, 10 1028*3a608692SPiotr Kubaj li 11, 0x2c0 1029*3a608692SPiotr Kubaj li 9, 0x2d0 1030*3a608692SPiotr Kubaj vperm 0, 0, 0, 1 1031*3a608692SPiotr Kubaj 1032*3a608692SPiotr Kubaj lvx 12, 11, 12 1033*3a608692SPiotr Kubaj lvx 13, 9, 12 1034*3a608692SPiotr Kubaj addi 5, 5, 16 1035*3a608692SPiotr Kubaj vxor 0, 0, 26 1036*3a608692SPiotr Kubaj bl _vpaes_schedule_transform 1037*3a608692SPiotr Kubaj 1038*3a608692SPiotr Kubaj 1039*3a608692SPiotr Kubaj vperm 0, 0, 0, 29 1040*3a608692SPiotr Kubaj li 10, 4 1041*3a608692SPiotr Kubaj vsel 2, 28, 0, 30 1042*3a608692SPiotr Kubaj li 11, 8 1043*3a608692SPiotr Kubaj stvx 2, 0, 5 1044*3a608692SPiotr Kubaj li 12, 12 1045*3a608692SPiotr Kubaj stvewx 0, 0, 5 1046*3a608692SPiotr Kubaj stvewx 0, 10, 5 1047*3a608692SPiotr Kubaj stvewx 0, 11, 5 1048*3a608692SPiotr Kubaj stvewx 0, 12, 5 1049*3a608692SPiotr Kubaj b .Lschedule_mangle_done 1050*3a608692SPiotr Kubaj 1051*3a608692SPiotr Kubaj.align 4 1052*3a608692SPiotr Kubaj.Lschedule_mangle_last_dec: 1053*3a608692SPiotr Kubaj lvx 12, 11, 12 1054*3a608692SPiotr Kubaj lvx 13, 9, 12 1055*3a608692SPiotr Kubaj addi 5, 5, -16 1056*3a608692SPiotr Kubaj vxor 0, 0, 26 1057*3a608692SPiotr Kubaj bl _vpaes_schedule_transform 1058*3a608692SPiotr Kubaj 1059*3a608692SPiotr Kubaj 1060*3a608692SPiotr Kubaj addi 9, 5, -15 1061*3a608692SPiotr Kubaj vperm 0, 0, 0, 29 1062*3a608692SPiotr Kubaj li 10, 4 1063*3a608692SPiotr Kubaj vsel 2, 28, 0, 30 1064*3a608692SPiotr Kubaj li 11, 8 1065*3a608692SPiotr Kubaj stvx 2, 0, 5 1066*3a608692SPiotr Kubaj li 12, 12 1067*3a608692SPiotr Kubaj stvewx 0, 0, 9 1068*3a608692SPiotr Kubaj stvewx 0, 10, 9 1069*3a608692SPiotr Kubaj stvewx 0, 11, 9 1070*3a608692SPiotr Kubaj stvewx 0, 12, 9 1071*3a608692SPiotr Kubaj 1072*3a608692SPiotr Kubaj 1073*3a608692SPiotr Kubaj.Lschedule_mangle_done: 1074*3a608692SPiotr Kubaj mtlr 7 1075*3a608692SPiotr Kubaj 1076*3a608692SPiotr Kubaj vxor 0, 0, 0 1077*3a608692SPiotr Kubaj vxor 1, 1, 1 1078*3a608692SPiotr Kubaj vxor 2, 2, 2 1079*3a608692SPiotr Kubaj vxor 3, 3, 3 1080*3a608692SPiotr Kubaj vxor 4, 4, 4 1081*3a608692SPiotr Kubaj vxor 5, 5, 5 1082*3a608692SPiotr Kubaj vxor 6, 6, 6 1083*3a608692SPiotr Kubaj vxor 7, 7, 7 1084*3a608692SPiotr Kubaj 1085*3a608692SPiotr Kubaj blr 1086*3a608692SPiotr Kubaj.long 0 1087*3a608692SPiotr Kubaj.byte 0,12,0x14,0,0,0,0,0 1088*3a608692SPiotr Kubaj 1089*3a608692SPiotr Kubaj 1090*3a608692SPiotr Kubaj 1091*3a608692SPiotr Kubaj 1092*3a608692SPiotr Kubaj 1093*3a608692SPiotr Kubaj 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.align 4 1104*3a608692SPiotr Kubaj_vpaes_schedule_192_smear: 1105*3a608692SPiotr Kubaj vspltw 0, 7, 3 1106*3a608692SPiotr Kubaj vsldoi 1, 9, 6, 12 1107*3a608692SPiotr Kubaj vsldoi 0, 7, 0, 8 1108*3a608692SPiotr Kubaj vxor 6, 6, 1 1109*3a608692SPiotr Kubaj vxor 6, 6, 0 1110*3a608692SPiotr Kubaj vor 0,6,6 1111*3a608692SPiotr Kubaj vsldoi 6, 6, 9, 8 1112*3a608692SPiotr Kubaj vsldoi 6, 9, 6, 8 1113*3a608692SPiotr Kubaj blr 1114*3a608692SPiotr Kubaj.long 0 1115*3a608692SPiotr Kubaj.byte 0,12,0x14,0,0,0,0,0 1116*3a608692SPiotr Kubaj 1117*3a608692SPiotr Kubaj 1118*3a608692SPiotr Kubaj 1119*3a608692SPiotr Kubaj 1120*3a608692SPiotr Kubaj 1121*3a608692SPiotr Kubaj 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.align 4 1136*3a608692SPiotr Kubaj_vpaes_schedule_round: 1137*3a608692SPiotr Kubaj 1138*3a608692SPiotr Kubaj 1139*3a608692SPiotr Kubaj vsldoi 1, 24, 9, 15 1140*3a608692SPiotr Kubaj vsldoi 24, 24, 24, 15 1141*3a608692SPiotr Kubaj vxor 7, 7, 1 1142*3a608692SPiotr Kubaj 1143*3a608692SPiotr Kubaj 1144*3a608692SPiotr Kubaj vspltw 0, 0, 3 1145*3a608692SPiotr Kubaj vsldoi 0, 0, 0, 1 1146*3a608692SPiotr Kubaj 1147*3a608692SPiotr Kubaj 1148*3a608692SPiotr Kubaj 1149*3a608692SPiotr Kubaj 1150*3a608692SPiotr Kubaj_vpaes_schedule_low_round: 1151*3a608692SPiotr Kubaj 1152*3a608692SPiotr Kubaj vsldoi 1, 9, 7, 12 1153*3a608692SPiotr Kubaj vxor 7, 7, 1 1154*3a608692SPiotr Kubaj vspltisb 1, 0x0f 1155*3a608692SPiotr Kubaj vsldoi 4, 9, 7, 8 1156*3a608692SPiotr Kubaj 1157*3a608692SPiotr Kubaj 1158*3a608692SPiotr Kubaj vand 1, 1, 0 1159*3a608692SPiotr Kubaj vsrb 0, 0, 8 1160*3a608692SPiotr Kubaj vxor 7, 7, 4 1161*3a608692SPiotr Kubaj vperm 2, 11, 9, 1 1162*3a608692SPiotr Kubaj vxor 1, 1, 0 1163*3a608692SPiotr Kubaj vperm 3, 10, 9, 0 1164*3a608692SPiotr Kubaj vxor 3, 3, 2 1165*3a608692SPiotr Kubaj vperm 4, 10, 9, 1 1166*3a608692SPiotr Kubaj vxor 7, 7, 26 1167*3a608692SPiotr Kubaj vperm 3, 10, 9, 3 1168*3a608692SPiotr Kubaj vxor 4, 4, 2 1169*3a608692SPiotr Kubaj vperm 2, 10, 9, 4 1170*3a608692SPiotr Kubaj vxor 3, 3, 1 1171*3a608692SPiotr Kubaj vxor 2, 2, 0 1172*3a608692SPiotr Kubaj vperm 4, 15, 9, 3 1173*3a608692SPiotr Kubaj vperm 1, 14, 9, 2 1174*3a608692SPiotr Kubaj vxor 1, 1, 4 1175*3a608692SPiotr Kubaj 1176*3a608692SPiotr Kubaj 1177*3a608692SPiotr Kubaj vxor 0, 1, 7 1178*3a608692SPiotr Kubaj vxor 7, 1, 7 1179*3a608692SPiotr Kubaj blr 1180*3a608692SPiotr Kubaj.long 0 1181*3a608692SPiotr Kubaj.byte 0,12,0x14,0,0,0,0,0 1182*3a608692SPiotr Kubaj 1183*3a608692SPiotr Kubaj 1184*3a608692SPiotr Kubaj 1185*3a608692SPiotr Kubaj 1186*3a608692SPiotr Kubaj 1187*3a608692SPiotr Kubaj 1188*3a608692SPiotr Kubaj 1189*3a608692SPiotr Kubaj 1190*3a608692SPiotr Kubaj 1191*3a608692SPiotr Kubaj 1192*3a608692SPiotr Kubaj.align 4 1193*3a608692SPiotr Kubaj_vpaes_schedule_transform: 1194*3a608692SPiotr Kubaj 1195*3a608692SPiotr Kubaj vsrb 2, 0, 8 1196*3a608692SPiotr Kubaj 1197*3a608692SPiotr Kubaj vperm 0, 12, 12, 0 1198*3a608692SPiotr Kubaj 1199*3a608692SPiotr Kubaj vperm 2, 13, 13, 2 1200*3a608692SPiotr Kubaj vxor 0, 0, 2 1201*3a608692SPiotr Kubaj blr 1202*3a608692SPiotr Kubaj.long 0 1203*3a608692SPiotr Kubaj.byte 0,12,0x14,0,0,0,0,0 1204*3a608692SPiotr Kubaj 1205*3a608692SPiotr Kubaj 1206*3a608692SPiotr Kubaj 1207*3a608692SPiotr Kubaj 1208*3a608692SPiotr Kubaj 1209*3a608692SPiotr Kubaj 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.align 4 1229*3a608692SPiotr Kubaj_vpaes_schedule_mangle: 1230*3a608692SPiotr Kubaj 1231*3a608692SPiotr Kubaj 1232*3a608692SPiotr Kubaj bne 1, .Lschedule_mangle_dec 1233*3a608692SPiotr Kubaj 1234*3a608692SPiotr Kubaj 1235*3a608692SPiotr Kubaj vxor 4, 0, 26 1236*3a608692SPiotr Kubaj addi 5, 5, 16 1237*3a608692SPiotr Kubaj vperm 4, 4, 4, 25 1238*3a608692SPiotr Kubaj vperm 1, 4, 4, 25 1239*3a608692SPiotr Kubaj vperm 3, 1, 1, 25 1240*3a608692SPiotr Kubaj vxor 4, 4, 1 1241*3a608692SPiotr Kubaj lvx 1, 8, 10 1242*3a608692SPiotr Kubaj vxor 3, 3, 4 1243*3a608692SPiotr Kubaj 1244*3a608692SPiotr Kubaj vperm 3, 3, 3, 1 1245*3a608692SPiotr Kubaj addi 8, 8, -16 1246*3a608692SPiotr Kubaj andi. 8, 8, 0x30 1247*3a608692SPiotr Kubaj 1248*3a608692SPiotr Kubaj 1249*3a608692SPiotr Kubaj vperm 1, 3, 3, 29 1250*3a608692SPiotr Kubaj vsel 2, 28, 1, 30 1251*3a608692SPiotr Kubaj vor 28,1,1 1252*3a608692SPiotr Kubaj stvx 2, 0, 5 1253*3a608692SPiotr Kubaj blr 1254*3a608692SPiotr Kubaj 1255*3a608692SPiotr Kubaj.align 4 1256*3a608692SPiotr Kubaj.Lschedule_mangle_dec: 1257*3a608692SPiotr Kubaj 1258*3a608692SPiotr Kubaj 1259*3a608692SPiotr Kubaj vsrb 1, 0, 8 1260*3a608692SPiotr Kubaj 1261*3a608692SPiotr Kubaj 1262*3a608692SPiotr Kubaj 1263*3a608692SPiotr Kubaj vperm 2, 16, 16, 0 1264*3a608692SPiotr Kubaj 1265*3a608692SPiotr Kubaj vperm 3, 17, 17, 1 1266*3a608692SPiotr Kubaj vxor 3, 3, 2 1267*3a608692SPiotr Kubaj vperm 3, 3, 9, 25 1268*3a608692SPiotr Kubaj 1269*3a608692SPiotr Kubaj 1270*3a608692SPiotr Kubaj vperm 2, 18, 18, 0 1271*3a608692SPiotr Kubaj vxor 2, 2, 3 1272*3a608692SPiotr Kubaj 1273*3a608692SPiotr Kubaj vperm 3, 19, 19, 1 1274*3a608692SPiotr Kubaj vxor 3, 3, 2 1275*3a608692SPiotr Kubaj vperm 3, 3, 9, 25 1276*3a608692SPiotr Kubaj 1277*3a608692SPiotr Kubaj 1278*3a608692SPiotr Kubaj vperm 2, 20, 20, 0 1279*3a608692SPiotr Kubaj vxor 2, 2, 3 1280*3a608692SPiotr Kubaj 1281*3a608692SPiotr Kubaj vperm 3, 21, 21, 1 1282*3a608692SPiotr Kubaj vxor 3, 3, 2 1283*3a608692SPiotr Kubaj 1284*3a608692SPiotr Kubaj 1285*3a608692SPiotr Kubaj vperm 2, 22, 22, 0 1286*3a608692SPiotr Kubaj vperm 3, 3, 9, 25 1287*3a608692SPiotr Kubaj 1288*3a608692SPiotr Kubaj vperm 4, 23, 23, 1 1289*3a608692SPiotr Kubaj lvx 1, 8, 10 1290*3a608692SPiotr Kubaj vxor 2, 2, 3 1291*3a608692SPiotr Kubaj vxor 3, 4, 2 1292*3a608692SPiotr Kubaj 1293*3a608692SPiotr Kubaj addi 5, 5, -16 1294*3a608692SPiotr Kubaj 1295*3a608692SPiotr Kubaj vperm 3, 3, 3, 1 1296*3a608692SPiotr Kubaj addi 8, 8, -16 1297*3a608692SPiotr Kubaj andi. 8, 8, 0x30 1298*3a608692SPiotr Kubaj 1299*3a608692SPiotr Kubaj 1300*3a608692SPiotr Kubaj vperm 1, 3, 3, 29 1301*3a608692SPiotr Kubaj vsel 2, 28, 1, 30 1302*3a608692SPiotr Kubaj vor 28,1,1 1303*3a608692SPiotr Kubaj stvx 2, 0, 5 1304*3a608692SPiotr Kubaj blr 1305*3a608692SPiotr Kubaj.long 0 1306*3a608692SPiotr Kubaj.byte 0,12,0x14,0,0,0,0,0 1307*3a608692SPiotr Kubaj 1308*3a608692SPiotr Kubaj.globl vpaes_set_encrypt_key 1309*3a608692SPiotr Kubaj.type vpaes_set_encrypt_key,@function 1310*3a608692SPiotr Kubaj.align 5 1311*3a608692SPiotr Kubajvpaes_set_encrypt_key: 1312*3a608692SPiotr Kubaj stwu 1,-232(1) 1313*3a608692SPiotr Kubaj li 10,39 1314*3a608692SPiotr Kubaj li 11,55 1315*3a608692SPiotr Kubaj mflr 0 1316*3a608692SPiotr Kubaj mfspr 6,256 1317*3a608692SPiotr Kubaj stvx 20,10,1 1318*3a608692SPiotr Kubaj addi 10,10,32 1319*3a608692SPiotr Kubaj stvx 21,11,1 1320*3a608692SPiotr Kubaj addi 11,11,32 1321*3a608692SPiotr Kubaj stvx 22,10,1 1322*3a608692SPiotr Kubaj addi 10,10,32 1323*3a608692SPiotr Kubaj stvx 23,11,1 1324*3a608692SPiotr Kubaj addi 11,11,32 1325*3a608692SPiotr Kubaj stvx 24,10,1 1326*3a608692SPiotr Kubaj addi 10,10,32 1327*3a608692SPiotr Kubaj stvx 25,11,1 1328*3a608692SPiotr Kubaj addi 11,11,32 1329*3a608692SPiotr Kubaj stvx 26,10,1 1330*3a608692SPiotr Kubaj addi 10,10,32 1331*3a608692SPiotr Kubaj stvx 27,11,1 1332*3a608692SPiotr Kubaj addi 11,11,32 1333*3a608692SPiotr Kubaj stvx 28,10,1 1334*3a608692SPiotr Kubaj addi 10,10,32 1335*3a608692SPiotr Kubaj stvx 29,11,1 1336*3a608692SPiotr Kubaj addi 11,11,32 1337*3a608692SPiotr Kubaj stvx 30,10,1 1338*3a608692SPiotr Kubaj stvx 31,11,1 1339*3a608692SPiotr Kubaj stw 6,228(1) 1340*3a608692SPiotr Kubaj li 7, -1 1341*3a608692SPiotr Kubaj stw 0, 236(1) 1342*3a608692SPiotr Kubaj mtspr 256,7 1343*3a608692SPiotr Kubaj 1344*3a608692SPiotr Kubaj srwi 9, 4, 5 1345*3a608692SPiotr Kubaj addi 9, 9, 6 1346*3a608692SPiotr Kubaj stw 9, 240(5) 1347*3a608692SPiotr Kubaj 1348*3a608692SPiotr Kubaj .long 0x7c842040 1349*3a608692SPiotr Kubaj li 8, 0x30 1350*3a608692SPiotr Kubaj bl _vpaes_schedule_core 1351*3a608692SPiotr Kubaj 1352*3a608692SPiotr Kubaj lwz 0, 236(1) 1353*3a608692SPiotr Kubaj li 10,39 1354*3a608692SPiotr Kubaj li 11,55 1355*3a608692SPiotr Kubaj mtspr 256,6 1356*3a608692SPiotr Kubaj mtlr 0 1357*3a608692SPiotr Kubaj xor 3, 3, 3 1358*3a608692SPiotr Kubaj lvx 20,10,1 1359*3a608692SPiotr Kubaj addi 10,10,32 1360*3a608692SPiotr Kubaj lvx 21,11,1 1361*3a608692SPiotr Kubaj addi 11,11,32 1362*3a608692SPiotr Kubaj lvx 22,10,1 1363*3a608692SPiotr Kubaj addi 10,10,32 1364*3a608692SPiotr Kubaj lvx 23,11,1 1365*3a608692SPiotr Kubaj addi 11,11,32 1366*3a608692SPiotr Kubaj lvx 24,10,1 1367*3a608692SPiotr Kubaj addi 10,10,32 1368*3a608692SPiotr Kubaj lvx 25,11,1 1369*3a608692SPiotr Kubaj addi 11,11,32 1370*3a608692SPiotr Kubaj lvx 26,10,1 1371*3a608692SPiotr Kubaj addi 10,10,32 1372*3a608692SPiotr Kubaj lvx 27,11,1 1373*3a608692SPiotr Kubaj addi 11,11,32 1374*3a608692SPiotr Kubaj lvx 28,10,1 1375*3a608692SPiotr Kubaj addi 10,10,32 1376*3a608692SPiotr Kubaj lvx 29,11,1 1377*3a608692SPiotr Kubaj addi 11,11,32 1378*3a608692SPiotr Kubaj lvx 30,10,1 1379*3a608692SPiotr Kubaj lvx 31,11,1 1380*3a608692SPiotr Kubaj addi 1,1,232 1381*3a608692SPiotr Kubaj blr 1382*3a608692SPiotr Kubaj.long 0 1383*3a608692SPiotr Kubaj.byte 0,12,0x04,1,0x80,0,3,0 1384*3a608692SPiotr Kubaj.long 0 1385*3a608692SPiotr Kubaj.size vpaes_set_encrypt_key,.-vpaes_set_encrypt_key 1386*3a608692SPiotr Kubaj 1387*3a608692SPiotr Kubaj.globl vpaes_set_decrypt_key 1388*3a608692SPiotr Kubaj.type vpaes_set_decrypt_key,@function 1389*3a608692SPiotr Kubaj.align 4 1390*3a608692SPiotr Kubajvpaes_set_decrypt_key: 1391*3a608692SPiotr Kubaj stwu 1,-232(1) 1392*3a608692SPiotr Kubaj li 10,39 1393*3a608692SPiotr Kubaj li 11,55 1394*3a608692SPiotr Kubaj mflr 0 1395*3a608692SPiotr Kubaj mfspr 6,256 1396*3a608692SPiotr Kubaj stvx 20,10,1 1397*3a608692SPiotr Kubaj addi 10,10,32 1398*3a608692SPiotr Kubaj stvx 21,11,1 1399*3a608692SPiotr Kubaj addi 11,11,32 1400*3a608692SPiotr Kubaj stvx 22,10,1 1401*3a608692SPiotr Kubaj addi 10,10,32 1402*3a608692SPiotr Kubaj stvx 23,11,1 1403*3a608692SPiotr Kubaj addi 11,11,32 1404*3a608692SPiotr Kubaj stvx 24,10,1 1405*3a608692SPiotr Kubaj addi 10,10,32 1406*3a608692SPiotr Kubaj stvx 25,11,1 1407*3a608692SPiotr Kubaj addi 11,11,32 1408*3a608692SPiotr Kubaj stvx 26,10,1 1409*3a608692SPiotr Kubaj addi 10,10,32 1410*3a608692SPiotr Kubaj stvx 27,11,1 1411*3a608692SPiotr Kubaj addi 11,11,32 1412*3a608692SPiotr Kubaj stvx 28,10,1 1413*3a608692SPiotr Kubaj addi 10,10,32 1414*3a608692SPiotr Kubaj stvx 29,11,1 1415*3a608692SPiotr Kubaj addi 11,11,32 1416*3a608692SPiotr Kubaj stvx 30,10,1 1417*3a608692SPiotr Kubaj stvx 31,11,1 1418*3a608692SPiotr Kubaj stw 6,228(1) 1419*3a608692SPiotr Kubaj li 7, -1 1420*3a608692SPiotr Kubaj stw 0, 236(1) 1421*3a608692SPiotr Kubaj mtspr 256,7 1422*3a608692SPiotr Kubaj 1423*3a608692SPiotr Kubaj srwi 9, 4, 5 1424*3a608692SPiotr Kubaj addi 9, 9, 6 1425*3a608692SPiotr Kubaj stw 9, 240(5) 1426*3a608692SPiotr Kubaj 1427*3a608692SPiotr Kubaj slwi 9, 9, 4 1428*3a608692SPiotr Kubaj add 5, 5, 9 1429*3a608692SPiotr Kubaj 1430*3a608692SPiotr Kubaj cmplwi 1, 4, 0 1431*3a608692SPiotr Kubaj srwi 8, 4, 1 1432*3a608692SPiotr Kubaj andi. 8, 8, 32 1433*3a608692SPiotr Kubaj xori 8, 8, 32 1434*3a608692SPiotr Kubaj bl _vpaes_schedule_core 1435*3a608692SPiotr Kubaj 1436*3a608692SPiotr Kubaj lwz 0, 236(1) 1437*3a608692SPiotr Kubaj li 10,39 1438*3a608692SPiotr Kubaj li 11,55 1439*3a608692SPiotr Kubaj mtspr 256,6 1440*3a608692SPiotr Kubaj mtlr 0 1441*3a608692SPiotr Kubaj xor 3, 3, 3 1442*3a608692SPiotr Kubaj lvx 20,10,1 1443*3a608692SPiotr Kubaj addi 10,10,32 1444*3a608692SPiotr Kubaj lvx 21,11,1 1445*3a608692SPiotr Kubaj addi 11,11,32 1446*3a608692SPiotr Kubaj lvx 22,10,1 1447*3a608692SPiotr Kubaj addi 10,10,32 1448*3a608692SPiotr Kubaj lvx 23,11,1 1449*3a608692SPiotr Kubaj addi 11,11,32 1450*3a608692SPiotr Kubaj lvx 24,10,1 1451*3a608692SPiotr Kubaj addi 10,10,32 1452*3a608692SPiotr Kubaj lvx 25,11,1 1453*3a608692SPiotr Kubaj addi 11,11,32 1454*3a608692SPiotr Kubaj lvx 26,10,1 1455*3a608692SPiotr Kubaj addi 10,10,32 1456*3a608692SPiotr Kubaj lvx 27,11,1 1457*3a608692SPiotr Kubaj addi 11,11,32 1458*3a608692SPiotr Kubaj lvx 28,10,1 1459*3a608692SPiotr Kubaj addi 10,10,32 1460*3a608692SPiotr Kubaj lvx 29,11,1 1461*3a608692SPiotr Kubaj addi 11,11,32 1462*3a608692SPiotr Kubaj lvx 30,10,1 1463*3a608692SPiotr Kubaj lvx 31,11,1 1464*3a608692SPiotr Kubaj addi 1,1,232 1465*3a608692SPiotr Kubaj blr 1466*3a608692SPiotr Kubaj.long 0 1467*3a608692SPiotr Kubaj.byte 0,12,0x04,1,0x80,0,3,0 1468*3a608692SPiotr Kubaj.long 0 1469*3a608692SPiotr Kubaj.size vpaes_set_decrypt_key,.-vpaes_set_decrypt_key 1470