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