xref: /freebsd/sys/crypto/openssl/powerpc/vpaes-ppc.S (revision 3a60869237b8b315fe66497cf5299ec08b688533)
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