xref: /freebsd/sys/crypto/openssl/powerpc64le/chacha-ppc.S (revision 71625ec9ad2a9bc8c09784fbd23b759830e0ee5f)
1*3a608692SPiotr Kubaj/* Do not modify. This file is auto-generated from chacha-ppc.pl. */
2*3a608692SPiotr Kubaj.machine	"any"
3*3a608692SPiotr Kubaj.abiversion	2
4*3a608692SPiotr Kubaj.text
5*3a608692SPiotr Kubaj
6*3a608692SPiotr Kubaj.globl	ChaCha20_ctr32_int
7*3a608692SPiotr Kubaj.type	ChaCha20_ctr32_int,@function
8*3a608692SPiotr Kubaj.align	5
9*3a608692SPiotr KubajChaCha20_ctr32_int:
10*3a608692SPiotr Kubaj.localentry	ChaCha20_ctr32_int,0
11*3a608692SPiotr Kubaj
12*3a608692SPiotr Kubaj__ChaCha20_ctr32_int:
13*3a608692SPiotr Kubaj	cmpldi	5,0
14*3a608692SPiotr Kubaj	.long	0x4DC20020
15*3a608692SPiotr Kubaj
16*3a608692SPiotr Kubaj	stdu	1,-256(1)
17*3a608692SPiotr Kubaj	mflr	0
18*3a608692SPiotr Kubaj
19*3a608692SPiotr Kubaj	std	14,112(1)
20*3a608692SPiotr Kubaj	std	15,120(1)
21*3a608692SPiotr Kubaj	std	16,128(1)
22*3a608692SPiotr Kubaj	std	17,136(1)
23*3a608692SPiotr Kubaj	std	18,144(1)
24*3a608692SPiotr Kubaj	std	19,152(1)
25*3a608692SPiotr Kubaj	std	20,160(1)
26*3a608692SPiotr Kubaj	std	21,168(1)
27*3a608692SPiotr Kubaj	std	22,176(1)
28*3a608692SPiotr Kubaj	std	23,184(1)
29*3a608692SPiotr Kubaj	std	24,192(1)
30*3a608692SPiotr Kubaj	std	25,200(1)
31*3a608692SPiotr Kubaj	std	26,208(1)
32*3a608692SPiotr Kubaj	std	27,216(1)
33*3a608692SPiotr Kubaj	std	28,224(1)
34*3a608692SPiotr Kubaj	std	29,232(1)
35*3a608692SPiotr Kubaj	std	30,240(1)
36*3a608692SPiotr Kubaj	std	31,248(1)
37*3a608692SPiotr Kubaj	std	0,272(1)
38*3a608692SPiotr Kubaj
39*3a608692SPiotr Kubaj	lwz	11,0(7)
40*3a608692SPiotr Kubaj	lwz	12,4(7)
41*3a608692SPiotr Kubaj	lwz	14,8(7)
42*3a608692SPiotr Kubaj	lwz	15,12(7)
43*3a608692SPiotr Kubaj
44*3a608692SPiotr Kubaj	bl	__ChaCha20_1x
45*3a608692SPiotr Kubaj
46*3a608692SPiotr Kubaj	ld	0,272(1)
47*3a608692SPiotr Kubaj	ld	14,112(1)
48*3a608692SPiotr Kubaj	ld	15,120(1)
49*3a608692SPiotr Kubaj	ld	16,128(1)
50*3a608692SPiotr Kubaj	ld	17,136(1)
51*3a608692SPiotr Kubaj	ld	18,144(1)
52*3a608692SPiotr Kubaj	ld	19,152(1)
53*3a608692SPiotr Kubaj	ld	20,160(1)
54*3a608692SPiotr Kubaj	ld	21,168(1)
55*3a608692SPiotr Kubaj	ld	22,176(1)
56*3a608692SPiotr Kubaj	ld	23,184(1)
57*3a608692SPiotr Kubaj	ld	24,192(1)
58*3a608692SPiotr Kubaj	ld	25,200(1)
59*3a608692SPiotr Kubaj	ld	26,208(1)
60*3a608692SPiotr Kubaj	ld	27,216(1)
61*3a608692SPiotr Kubaj	ld	28,224(1)
62*3a608692SPiotr Kubaj	ld	29,232(1)
63*3a608692SPiotr Kubaj	ld	30,240(1)
64*3a608692SPiotr Kubaj	ld	31,248(1)
65*3a608692SPiotr Kubaj	mtlr	0
66*3a608692SPiotr Kubaj	addi	1,1,256
67*3a608692SPiotr Kubaj	blr
68*3a608692SPiotr Kubaj.long	0
69*3a608692SPiotr Kubaj.byte	0,12,4,1,0x80,18,5,0
70*3a608692SPiotr Kubaj.long	0
71*3a608692SPiotr Kubaj.size	ChaCha20_ctr32_int,.-ChaCha20_ctr32_int
72*3a608692SPiotr Kubaj
73*3a608692SPiotr Kubaj.align	5
74*3a608692SPiotr Kubaj__ChaCha20_1x:
75*3a608692SPiotr Kubaj.Loop_outer:
76*3a608692SPiotr Kubaj	lis	16,0x6170
77*3a608692SPiotr Kubaj	lis	17,0x3320
78*3a608692SPiotr Kubaj	lis	18,0x7962
79*3a608692SPiotr Kubaj	lis	19,0x6b20
80*3a608692SPiotr Kubaj	ori	16,16,0x7865
81*3a608692SPiotr Kubaj	ori	17,17,0x646e
82*3a608692SPiotr Kubaj	ori	18,18,0x2d32
83*3a608692SPiotr Kubaj	ori	19,19,0x6574
84*3a608692SPiotr Kubaj
85*3a608692SPiotr Kubaj	li	0,10
86*3a608692SPiotr Kubaj	lwz	20,0(6)
87*3a608692SPiotr Kubaj	lwz	21,4(6)
88*3a608692SPiotr Kubaj	lwz	22,8(6)
89*3a608692SPiotr Kubaj	lwz	23,12(6)
90*3a608692SPiotr Kubaj	lwz	24,16(6)
91*3a608692SPiotr Kubaj	mr	28,11
92*3a608692SPiotr Kubaj	lwz	25,20(6)
93*3a608692SPiotr Kubaj	mr	29,12
94*3a608692SPiotr Kubaj	lwz	26,24(6)
95*3a608692SPiotr Kubaj	mr	30,14
96*3a608692SPiotr Kubaj	lwz	27,28(6)
97*3a608692SPiotr Kubaj	mr	31,15
98*3a608692SPiotr Kubaj
99*3a608692SPiotr Kubaj	mr	7,20
100*3a608692SPiotr Kubaj	mr	8,21
101*3a608692SPiotr Kubaj	mr	9,22
102*3a608692SPiotr Kubaj	mr	10,23
103*3a608692SPiotr Kubaj
104*3a608692SPiotr Kubaj	mtctr	0
105*3a608692SPiotr Kubaj.Loop:
106*3a608692SPiotr Kubaj	add	16,16,20
107*3a608692SPiotr Kubaj	add	17,17,21
108*3a608692SPiotr Kubaj	add	18,18,22
109*3a608692SPiotr Kubaj	add	19,19,23
110*3a608692SPiotr Kubaj	xor	28,28,16
111*3a608692SPiotr Kubaj	xor	29,29,17
112*3a608692SPiotr Kubaj	xor	30,30,18
113*3a608692SPiotr Kubaj	xor	31,31,19
114*3a608692SPiotr Kubaj	rotlwi	28,28,16
115*3a608692SPiotr Kubaj	rotlwi	29,29,16
116*3a608692SPiotr Kubaj	rotlwi	30,30,16
117*3a608692SPiotr Kubaj	rotlwi	31,31,16
118*3a608692SPiotr Kubaj	add	24,24,28
119*3a608692SPiotr Kubaj	add	25,25,29
120*3a608692SPiotr Kubaj	add	26,26,30
121*3a608692SPiotr Kubaj	add	27,27,31
122*3a608692SPiotr Kubaj	xor	20,20,24
123*3a608692SPiotr Kubaj	xor	21,21,25
124*3a608692SPiotr Kubaj	xor	22,22,26
125*3a608692SPiotr Kubaj	xor	23,23,27
126*3a608692SPiotr Kubaj	rotlwi	20,20,12
127*3a608692SPiotr Kubaj	rotlwi	21,21,12
128*3a608692SPiotr Kubaj	rotlwi	22,22,12
129*3a608692SPiotr Kubaj	rotlwi	23,23,12
130*3a608692SPiotr Kubaj	add	16,16,20
131*3a608692SPiotr Kubaj	add	17,17,21
132*3a608692SPiotr Kubaj	add	18,18,22
133*3a608692SPiotr Kubaj	add	19,19,23
134*3a608692SPiotr Kubaj	xor	28,28,16
135*3a608692SPiotr Kubaj	xor	29,29,17
136*3a608692SPiotr Kubaj	xor	30,30,18
137*3a608692SPiotr Kubaj	xor	31,31,19
138*3a608692SPiotr Kubaj	rotlwi	28,28,8
139*3a608692SPiotr Kubaj	rotlwi	29,29,8
140*3a608692SPiotr Kubaj	rotlwi	30,30,8
141*3a608692SPiotr Kubaj	rotlwi	31,31,8
142*3a608692SPiotr Kubaj	add	24,24,28
143*3a608692SPiotr Kubaj	add	25,25,29
144*3a608692SPiotr Kubaj	add	26,26,30
145*3a608692SPiotr Kubaj	add	27,27,31
146*3a608692SPiotr Kubaj	xor	20,20,24
147*3a608692SPiotr Kubaj	xor	21,21,25
148*3a608692SPiotr Kubaj	xor	22,22,26
149*3a608692SPiotr Kubaj	xor	23,23,27
150*3a608692SPiotr Kubaj	rotlwi	20,20,7
151*3a608692SPiotr Kubaj	rotlwi	21,21,7
152*3a608692SPiotr Kubaj	rotlwi	22,22,7
153*3a608692SPiotr Kubaj	rotlwi	23,23,7
154*3a608692SPiotr Kubaj	add	16,16,21
155*3a608692SPiotr Kubaj	add	17,17,22
156*3a608692SPiotr Kubaj	add	18,18,23
157*3a608692SPiotr Kubaj	add	19,19,20
158*3a608692SPiotr Kubaj	xor	31,31,16
159*3a608692SPiotr Kubaj	xor	28,28,17
160*3a608692SPiotr Kubaj	xor	29,29,18
161*3a608692SPiotr Kubaj	xor	30,30,19
162*3a608692SPiotr Kubaj	rotlwi	31,31,16
163*3a608692SPiotr Kubaj	rotlwi	28,28,16
164*3a608692SPiotr Kubaj	rotlwi	29,29,16
165*3a608692SPiotr Kubaj	rotlwi	30,30,16
166*3a608692SPiotr Kubaj	add	26,26,31
167*3a608692SPiotr Kubaj	add	27,27,28
168*3a608692SPiotr Kubaj	add	24,24,29
169*3a608692SPiotr Kubaj	add	25,25,30
170*3a608692SPiotr Kubaj	xor	21,21,26
171*3a608692SPiotr Kubaj	xor	22,22,27
172*3a608692SPiotr Kubaj	xor	23,23,24
173*3a608692SPiotr Kubaj	xor	20,20,25
174*3a608692SPiotr Kubaj	rotlwi	21,21,12
175*3a608692SPiotr Kubaj	rotlwi	22,22,12
176*3a608692SPiotr Kubaj	rotlwi	23,23,12
177*3a608692SPiotr Kubaj	rotlwi	20,20,12
178*3a608692SPiotr Kubaj	add	16,16,21
179*3a608692SPiotr Kubaj	add	17,17,22
180*3a608692SPiotr Kubaj	add	18,18,23
181*3a608692SPiotr Kubaj	add	19,19,20
182*3a608692SPiotr Kubaj	xor	31,31,16
183*3a608692SPiotr Kubaj	xor	28,28,17
184*3a608692SPiotr Kubaj	xor	29,29,18
185*3a608692SPiotr Kubaj	xor	30,30,19
186*3a608692SPiotr Kubaj	rotlwi	31,31,8
187*3a608692SPiotr Kubaj	rotlwi	28,28,8
188*3a608692SPiotr Kubaj	rotlwi	29,29,8
189*3a608692SPiotr Kubaj	rotlwi	30,30,8
190*3a608692SPiotr Kubaj	add	26,26,31
191*3a608692SPiotr Kubaj	add	27,27,28
192*3a608692SPiotr Kubaj	add	24,24,29
193*3a608692SPiotr Kubaj	add	25,25,30
194*3a608692SPiotr Kubaj	xor	21,21,26
195*3a608692SPiotr Kubaj	xor	22,22,27
196*3a608692SPiotr Kubaj	xor	23,23,24
197*3a608692SPiotr Kubaj	xor	20,20,25
198*3a608692SPiotr Kubaj	rotlwi	21,21,7
199*3a608692SPiotr Kubaj	rotlwi	22,22,7
200*3a608692SPiotr Kubaj	rotlwi	23,23,7
201*3a608692SPiotr Kubaj	rotlwi	20,20,7
202*3a608692SPiotr Kubaj	bdnz	.Loop
203*3a608692SPiotr Kubaj
204*3a608692SPiotr Kubaj	subic	5,5,64
205*3a608692SPiotr Kubaj	addi	16,16,0x7865
206*3a608692SPiotr Kubaj	addi	17,17,0x646e
207*3a608692SPiotr Kubaj	addi	18,18,0x2d32
208*3a608692SPiotr Kubaj	addi	19,19,0x6574
209*3a608692SPiotr Kubaj	addis	16,16,0x6170
210*3a608692SPiotr Kubaj	addis	17,17,0x3320
211*3a608692SPiotr Kubaj	addis	18,18,0x7962
212*3a608692SPiotr Kubaj	addis	19,19,0x6b20
213*3a608692SPiotr Kubaj
214*3a608692SPiotr Kubaj	subfe.	0,0,0
215*3a608692SPiotr Kubaj	add	20,20,7
216*3a608692SPiotr Kubaj	lwz	7,16(6)
217*3a608692SPiotr Kubaj	add	21,21,8
218*3a608692SPiotr Kubaj	lwz	8,20(6)
219*3a608692SPiotr Kubaj	add	22,22,9
220*3a608692SPiotr Kubaj	lwz	9,24(6)
221*3a608692SPiotr Kubaj	add	23,23,10
222*3a608692SPiotr Kubaj	lwz	10,28(6)
223*3a608692SPiotr Kubaj	add	24,24,7
224*3a608692SPiotr Kubaj	add	25,25,8
225*3a608692SPiotr Kubaj	add	26,26,9
226*3a608692SPiotr Kubaj	add	27,27,10
227*3a608692SPiotr Kubaj
228*3a608692SPiotr Kubaj	add	28,28,11
229*3a608692SPiotr Kubaj	add	29,29,12
230*3a608692SPiotr Kubaj	add	30,30,14
231*3a608692SPiotr Kubaj	add	31,31,15
232*3a608692SPiotr Kubaj	addi	11,11,1
233*3a608692SPiotr Kubaj	bne	.Ltail
234*3a608692SPiotr Kubaj
235*3a608692SPiotr Kubaj	lwz	7,0(4)
236*3a608692SPiotr Kubaj	lwz	8,4(4)
237*3a608692SPiotr Kubaj	cmpldi	5,0
238*3a608692SPiotr Kubaj	lwz	9,8(4)
239*3a608692SPiotr Kubaj	lwz	10,12(4)
240*3a608692SPiotr Kubaj	xor	16,16,7
241*3a608692SPiotr Kubaj	lwz	7,16(4)
242*3a608692SPiotr Kubaj	xor	17,17,8
243*3a608692SPiotr Kubaj	lwz	8,20(4)
244*3a608692SPiotr Kubaj	xor	18,18,9
245*3a608692SPiotr Kubaj	lwz	9,24(4)
246*3a608692SPiotr Kubaj	xor	19,19,10
247*3a608692SPiotr Kubaj	lwz	10,28(4)
248*3a608692SPiotr Kubaj	xor	20,20,7
249*3a608692SPiotr Kubaj	lwz	7,32(4)
250*3a608692SPiotr Kubaj	xor	21,21,8
251*3a608692SPiotr Kubaj	lwz	8,36(4)
252*3a608692SPiotr Kubaj	xor	22,22,9
253*3a608692SPiotr Kubaj	lwz	9,40(4)
254*3a608692SPiotr Kubaj	xor	23,23,10
255*3a608692SPiotr Kubaj	lwz	10,44(4)
256*3a608692SPiotr Kubaj	xor	24,24,7
257*3a608692SPiotr Kubaj	lwz	7,48(4)
258*3a608692SPiotr Kubaj	xor	25,25,8
259*3a608692SPiotr Kubaj	lwz	8,52(4)
260*3a608692SPiotr Kubaj	xor	26,26,9
261*3a608692SPiotr Kubaj	lwz	9,56(4)
262*3a608692SPiotr Kubaj	xor	27,27,10
263*3a608692SPiotr Kubaj	lwz	10,60(4)
264*3a608692SPiotr Kubaj	xor	28,28,7
265*3a608692SPiotr Kubaj	stw	16,0(3)
266*3a608692SPiotr Kubaj	xor	29,29,8
267*3a608692SPiotr Kubaj	stw	17,4(3)
268*3a608692SPiotr Kubaj	xor	30,30,9
269*3a608692SPiotr Kubaj	stw	18,8(3)
270*3a608692SPiotr Kubaj	xor	31,31,10
271*3a608692SPiotr Kubaj	stw	19,12(3)
272*3a608692SPiotr Kubaj	stw	20,16(3)
273*3a608692SPiotr Kubaj	stw	21,20(3)
274*3a608692SPiotr Kubaj	stw	22,24(3)
275*3a608692SPiotr Kubaj	stw	23,28(3)
276*3a608692SPiotr Kubaj	stw	24,32(3)
277*3a608692SPiotr Kubaj	stw	25,36(3)
278*3a608692SPiotr Kubaj	stw	26,40(3)
279*3a608692SPiotr Kubaj	stw	27,44(3)
280*3a608692SPiotr Kubaj	stw	28,48(3)
281*3a608692SPiotr Kubaj	stw	29,52(3)
282*3a608692SPiotr Kubaj	stw	30,56(3)
283*3a608692SPiotr Kubaj	addi	4,4,64
284*3a608692SPiotr Kubaj	stw	31,60(3)
285*3a608692SPiotr Kubaj	addi	3,3,64
286*3a608692SPiotr Kubaj
287*3a608692SPiotr Kubaj	bne	.Loop_outer
288*3a608692SPiotr Kubaj
289*3a608692SPiotr Kubaj	blr
290*3a608692SPiotr Kubaj
291*3a608692SPiotr Kubaj.align	4
292*3a608692SPiotr Kubaj.Ltail:
293*3a608692SPiotr Kubaj	addi	5,5,64
294*3a608692SPiotr Kubaj	subi	4,4,1
295*3a608692SPiotr Kubaj	subi	3,3,1
296*3a608692SPiotr Kubaj	addi	7,1,48-1
297*3a608692SPiotr Kubaj	mtctr	5
298*3a608692SPiotr Kubaj
299*3a608692SPiotr Kubaj	stw	16,48(1)
300*3a608692SPiotr Kubaj	stw	17,52(1)
301*3a608692SPiotr Kubaj	stw	18,56(1)
302*3a608692SPiotr Kubaj	stw	19,60(1)
303*3a608692SPiotr Kubaj	stw	20,64(1)
304*3a608692SPiotr Kubaj	stw	21,68(1)
305*3a608692SPiotr Kubaj	stw	22,72(1)
306*3a608692SPiotr Kubaj	stw	23,76(1)
307*3a608692SPiotr Kubaj	stw	24,80(1)
308*3a608692SPiotr Kubaj	stw	25,84(1)
309*3a608692SPiotr Kubaj	stw	26,88(1)
310*3a608692SPiotr Kubaj	stw	27,92(1)
311*3a608692SPiotr Kubaj	stw	28,96(1)
312*3a608692SPiotr Kubaj	stw	29,100(1)
313*3a608692SPiotr Kubaj	stw	30,104(1)
314*3a608692SPiotr Kubaj	stw	31,108(1)
315*3a608692SPiotr Kubaj
316*3a608692SPiotr Kubaj.Loop_tail:
317*3a608692SPiotr Kubaj	lbzu	11,1(4)
318*3a608692SPiotr Kubaj	lbzu	16,1(7)
319*3a608692SPiotr Kubaj	xor	12,11,16
320*3a608692SPiotr Kubaj	stbu	12,1(3)
321*3a608692SPiotr Kubaj	bdnz	.Loop_tail
322*3a608692SPiotr Kubaj
323*3a608692SPiotr Kubaj	stw	1,48(1)
324*3a608692SPiotr Kubaj	stw	1,52(1)
325*3a608692SPiotr Kubaj	stw	1,56(1)
326*3a608692SPiotr Kubaj	stw	1,60(1)
327*3a608692SPiotr Kubaj	stw	1,64(1)
328*3a608692SPiotr Kubaj	stw	1,68(1)
329*3a608692SPiotr Kubaj	stw	1,72(1)
330*3a608692SPiotr Kubaj	stw	1,76(1)
331*3a608692SPiotr Kubaj	stw	1,80(1)
332*3a608692SPiotr Kubaj	stw	1,84(1)
333*3a608692SPiotr Kubaj	stw	1,88(1)
334*3a608692SPiotr Kubaj	stw	1,92(1)
335*3a608692SPiotr Kubaj	stw	1,96(1)
336*3a608692SPiotr Kubaj	stw	1,100(1)
337*3a608692SPiotr Kubaj	stw	1,104(1)
338*3a608692SPiotr Kubaj	stw	1,108(1)
339*3a608692SPiotr Kubaj
340*3a608692SPiotr Kubaj	blr
341*3a608692SPiotr Kubaj.long	0
342*3a608692SPiotr Kubaj.byte	0,12,0x14,0,0,0,0,0
343*3a608692SPiotr Kubaj
344*3a608692SPiotr Kubaj.globl	ChaCha20_ctr32_vmx
345*3a608692SPiotr Kubaj.type	ChaCha20_ctr32_vmx,@function
346*3a608692SPiotr Kubaj.align	5
347*3a608692SPiotr KubajChaCha20_ctr32_vmx:
348*3a608692SPiotr Kubaj.localentry	ChaCha20_ctr32_vmx,0
349*3a608692SPiotr Kubaj
350*3a608692SPiotr Kubaj	cmpldi	5,256
351*3a608692SPiotr Kubaj	blt	__ChaCha20_ctr32_int
352*3a608692SPiotr Kubaj
353*3a608692SPiotr Kubaj	stdu	1,-416(1)
354*3a608692SPiotr Kubaj	mflr	0
355*3a608692SPiotr Kubaj	li	10,127
356*3a608692SPiotr Kubaj	li	11,143
357*3a608692SPiotr Kubaj	li	12,-1
358*3a608692SPiotr Kubaj	stvx	23,10,1
359*3a608692SPiotr Kubaj	addi	10,10,32
360*3a608692SPiotr Kubaj	stvx	24,11,1
361*3a608692SPiotr Kubaj	addi	11,11,32
362*3a608692SPiotr Kubaj	stvx	25,10,1
363*3a608692SPiotr Kubaj	addi	10,10,32
364*3a608692SPiotr Kubaj	stvx	26,11,1
365*3a608692SPiotr Kubaj	addi	11,11,32
366*3a608692SPiotr Kubaj	stvx	27,10,1
367*3a608692SPiotr Kubaj	addi	10,10,32
368*3a608692SPiotr Kubaj	stvx	28,11,1
369*3a608692SPiotr Kubaj	addi	11,11,32
370*3a608692SPiotr Kubaj	stvx	29,10,1
371*3a608692SPiotr Kubaj	addi	10,10,32
372*3a608692SPiotr Kubaj	stvx	30,11,1
373*3a608692SPiotr Kubaj	stvx	31,10,1
374*3a608692SPiotr Kubaj	stw	12,268(1)
375*3a608692SPiotr Kubaj	std	14,272(1)
376*3a608692SPiotr Kubaj	std	15,280(1)
377*3a608692SPiotr Kubaj	std	16,288(1)
378*3a608692SPiotr Kubaj	std	17,296(1)
379*3a608692SPiotr Kubaj	std	18,304(1)
380*3a608692SPiotr Kubaj	std	19,312(1)
381*3a608692SPiotr Kubaj	std	20,320(1)
382*3a608692SPiotr Kubaj	std	21,328(1)
383*3a608692SPiotr Kubaj	std	22,336(1)
384*3a608692SPiotr Kubaj	std	23,344(1)
385*3a608692SPiotr Kubaj	std	24,352(1)
386*3a608692SPiotr Kubaj	std	25,360(1)
387*3a608692SPiotr Kubaj	std	26,368(1)
388*3a608692SPiotr Kubaj	std	27,376(1)
389*3a608692SPiotr Kubaj	std	28,384(1)
390*3a608692SPiotr Kubaj	std	29,392(1)
391*3a608692SPiotr Kubaj	std	30,400(1)
392*3a608692SPiotr Kubaj	std	31,408(1)
393*3a608692SPiotr Kubaj	li	12,-4096+511
394*3a608692SPiotr Kubaj	std	0, 432(1)
395*3a608692SPiotr Kubaj	or	12,12,12
396*3a608692SPiotr Kubaj
397*3a608692SPiotr Kubaj	bl	.Lconsts
398*3a608692SPiotr Kubaj	li	16,16
399*3a608692SPiotr Kubaj	li	17,32
400*3a608692SPiotr Kubaj	li	18,48
401*3a608692SPiotr Kubaj	li	19,64
402*3a608692SPiotr Kubaj	li	20,31
403*3a608692SPiotr Kubaj	li	21,15
404*3a608692SPiotr Kubaj
405*3a608692SPiotr Kubaj	lvx	13,0,6
406*3a608692SPiotr Kubaj	lvsr	29,0,6
407*3a608692SPiotr Kubaj	lvx	14,16,6
408*3a608692SPiotr Kubaj	lvx	27,20,6
409*3a608692SPiotr Kubaj
410*3a608692SPiotr Kubaj	lvx	15,0,7
411*3a608692SPiotr Kubaj	lvsr	30,0,7
412*3a608692SPiotr Kubaj	lvx	28,21,7
413*3a608692SPiotr Kubaj
414*3a608692SPiotr Kubaj	lvx	12,0,12
415*3a608692SPiotr Kubaj	lvx	17,16,12
416*3a608692SPiotr Kubaj	lvx	18,17,12
417*3a608692SPiotr Kubaj	lvx	19,18,12
418*3a608692SPiotr Kubaj	lvx	23,19,12
419*3a608692SPiotr Kubaj
420*3a608692SPiotr Kubaj	vperm	13,14,13,29
421*3a608692SPiotr Kubaj	vperm	14,27,14,29
422*3a608692SPiotr Kubaj	vperm	15,28,15,30
423*3a608692SPiotr Kubaj
424*3a608692SPiotr Kubaj	lwz	11,0(7)
425*3a608692SPiotr Kubaj	lwz	12,4(7)
426*3a608692SPiotr Kubaj	vadduwm	15,15,17
427*3a608692SPiotr Kubaj	lwz	14,8(7)
428*3a608692SPiotr Kubaj	vadduwm	16,15,17
429*3a608692SPiotr Kubaj	lwz	15,12(7)
430*3a608692SPiotr Kubaj	vadduwm	17,16,17
431*3a608692SPiotr Kubaj
432*3a608692SPiotr Kubaj	vxor	29,29,29
433*3a608692SPiotr Kubaj	vspltisw	26,-1
434*3a608692SPiotr Kubaj	lvsr	24,0,4
435*3a608692SPiotr Kubaj	lvsl	25,0,3
436*3a608692SPiotr Kubaj	vperm	26,26,29,25
437*3a608692SPiotr Kubaj
438*3a608692SPiotr Kubaj
439*3a608692SPiotr Kubaj
440*3a608692SPiotr Kubaj
441*3a608692SPiotr Kubaj
442*3a608692SPiotr Kubaj
443*3a608692SPiotr Kubaj
444*3a608692SPiotr Kubaj	li	0,10
445*3a608692SPiotr Kubaj	b	.Loop_outer_vmx
446*3a608692SPiotr Kubaj
447*3a608692SPiotr Kubaj.align	4
448*3a608692SPiotr Kubaj.Loop_outer_vmx:
449*3a608692SPiotr Kubaj	lis	16,0x6170
450*3a608692SPiotr Kubaj	lis	17,0x3320
451*3a608692SPiotr Kubaj	vor	0,12,12
452*3a608692SPiotr Kubaj	lis	18,0x7962
453*3a608692SPiotr Kubaj	lis	19,0x6b20
454*3a608692SPiotr Kubaj	vor	4,12,12
455*3a608692SPiotr Kubaj	ori	16,16,0x7865
456*3a608692SPiotr Kubaj	ori	17,17,0x646e
457*3a608692SPiotr Kubaj	vor	8,12,12
458*3a608692SPiotr Kubaj	ori	18,18,0x2d32
459*3a608692SPiotr Kubaj	ori	19,19,0x6574
460*3a608692SPiotr Kubaj	vor	1,13,13
461*3a608692SPiotr Kubaj
462*3a608692SPiotr Kubaj	lwz	20,0(6)
463*3a608692SPiotr Kubaj	vor	5,13,13
464*3a608692SPiotr Kubaj	lwz	21,4(6)
465*3a608692SPiotr Kubaj	vor	9,13,13
466*3a608692SPiotr Kubaj	lwz	22,8(6)
467*3a608692SPiotr Kubaj	vor	2,14,14
468*3a608692SPiotr Kubaj	lwz	23,12(6)
469*3a608692SPiotr Kubaj	vor	6,14,14
470*3a608692SPiotr Kubaj	lwz	24,16(6)
471*3a608692SPiotr Kubaj	vor	10,14,14
472*3a608692SPiotr Kubaj	mr	28,11
473*3a608692SPiotr Kubaj	lwz	25,20(6)
474*3a608692SPiotr Kubaj	vor	3,15,15
475*3a608692SPiotr Kubaj	mr	29,12
476*3a608692SPiotr Kubaj	lwz	26,24(6)
477*3a608692SPiotr Kubaj	vor	7,16,16
478*3a608692SPiotr Kubaj	mr	30,14
479*3a608692SPiotr Kubaj	lwz	27,28(6)
480*3a608692SPiotr Kubaj	vor	11,17,17
481*3a608692SPiotr Kubaj	mr	31,15
482*3a608692SPiotr Kubaj
483*3a608692SPiotr Kubaj	mr	7,20
484*3a608692SPiotr Kubaj	mr	8,21
485*3a608692SPiotr Kubaj	mr	9,22
486*3a608692SPiotr Kubaj	mr	10,23
487*3a608692SPiotr Kubaj
488*3a608692SPiotr Kubaj	vspltisw	27,12
489*3a608692SPiotr Kubaj	vspltisw	28,7
490*3a608692SPiotr Kubaj
491*3a608692SPiotr Kubaj	mtctr	0
492*3a608692SPiotr Kubaj	nop
493*3a608692SPiotr Kubaj.Loop_vmx:
494*3a608692SPiotr Kubaj	vadduwm	0,0,1
495*3a608692SPiotr Kubaj	vadduwm	4,4,5
496*3a608692SPiotr Kubaj	vadduwm	8,8,9
497*3a608692SPiotr Kubaj	add	16,16,20
498*3a608692SPiotr Kubaj	add	17,17,21
499*3a608692SPiotr Kubaj	add	18,18,22
500*3a608692SPiotr Kubaj	vxor	3,3,0
501*3a608692SPiotr Kubaj	vxor	7,7,4
502*3a608692SPiotr Kubaj	vxor	11,11,8
503*3a608692SPiotr Kubaj	add	19,19,23
504*3a608692SPiotr Kubaj	xor	28,28,16
505*3a608692SPiotr Kubaj	xor	29,29,17
506*3a608692SPiotr Kubaj	vperm	3,3,3,19
507*3a608692SPiotr Kubaj	vperm	7,7,7,19
508*3a608692SPiotr Kubaj	vperm	11,11,11,19
509*3a608692SPiotr Kubaj	xor	30,30,18
510*3a608692SPiotr Kubaj	xor	31,31,19
511*3a608692SPiotr Kubaj	rotlwi	28,28,16
512*3a608692SPiotr Kubaj	vadduwm	2,2,3
513*3a608692SPiotr Kubaj	vadduwm	6,6,7
514*3a608692SPiotr Kubaj	vadduwm	10,10,11
515*3a608692SPiotr Kubaj	rotlwi	29,29,16
516*3a608692SPiotr Kubaj	rotlwi	30,30,16
517*3a608692SPiotr Kubaj	rotlwi	31,31,16
518*3a608692SPiotr Kubaj	vxor	1,1,2
519*3a608692SPiotr Kubaj	vxor	5,5,6
520*3a608692SPiotr Kubaj	vxor	9,9,10
521*3a608692SPiotr Kubaj	add	24,24,28
522*3a608692SPiotr Kubaj	add	25,25,29
523*3a608692SPiotr Kubaj	add	26,26,30
524*3a608692SPiotr Kubaj	vrlw	1,1,27
525*3a608692SPiotr Kubaj	vrlw	5,5,27
526*3a608692SPiotr Kubaj	vrlw	9,9,27
527*3a608692SPiotr Kubaj	add	27,27,31
528*3a608692SPiotr Kubaj	xor	20,20,24
529*3a608692SPiotr Kubaj	xor	21,21,25
530*3a608692SPiotr Kubaj	vadduwm	0,0,1
531*3a608692SPiotr Kubaj	vadduwm	4,4,5
532*3a608692SPiotr Kubaj	vadduwm	8,8,9
533*3a608692SPiotr Kubaj	xor	22,22,26
534*3a608692SPiotr Kubaj	xor	23,23,27
535*3a608692SPiotr Kubaj	rotlwi	20,20,12
536*3a608692SPiotr Kubaj	vxor	3,3,0
537*3a608692SPiotr Kubaj	vxor	7,7,4
538*3a608692SPiotr Kubaj	vxor	11,11,8
539*3a608692SPiotr Kubaj	rotlwi	21,21,12
540*3a608692SPiotr Kubaj	rotlwi	22,22,12
541*3a608692SPiotr Kubaj	rotlwi	23,23,12
542*3a608692SPiotr Kubaj	vperm	3,3,3,23
543*3a608692SPiotr Kubaj	vperm	7,7,7,23
544*3a608692SPiotr Kubaj	vperm	11,11,11,23
545*3a608692SPiotr Kubaj	add	16,16,20
546*3a608692SPiotr Kubaj	add	17,17,21
547*3a608692SPiotr Kubaj	add	18,18,22
548*3a608692SPiotr Kubaj	vadduwm	2,2,3
549*3a608692SPiotr Kubaj	vadduwm	6,6,7
550*3a608692SPiotr Kubaj	vadduwm	10,10,11
551*3a608692SPiotr Kubaj	add	19,19,23
552*3a608692SPiotr Kubaj	xor	28,28,16
553*3a608692SPiotr Kubaj	xor	29,29,17
554*3a608692SPiotr Kubaj	vxor	1,1,2
555*3a608692SPiotr Kubaj	vxor	5,5,6
556*3a608692SPiotr Kubaj	vxor	9,9,10
557*3a608692SPiotr Kubaj	xor	30,30,18
558*3a608692SPiotr Kubaj	xor	31,31,19
559*3a608692SPiotr Kubaj	rotlwi	28,28,8
560*3a608692SPiotr Kubaj	vrlw	1,1,28
561*3a608692SPiotr Kubaj	vrlw	5,5,28
562*3a608692SPiotr Kubaj	vrlw	9,9,28
563*3a608692SPiotr Kubaj	rotlwi	29,29,8
564*3a608692SPiotr Kubaj	rotlwi	30,30,8
565*3a608692SPiotr Kubaj	rotlwi	31,31,8
566*3a608692SPiotr Kubaj	vsldoi	2,2,2, 8
567*3a608692SPiotr Kubaj	vsldoi	6,6,6, 8
568*3a608692SPiotr Kubaj	vsldoi	10,10,10, 8
569*3a608692SPiotr Kubaj	add	24,24,28
570*3a608692SPiotr Kubaj	add	25,25,29
571*3a608692SPiotr Kubaj	add	26,26,30
572*3a608692SPiotr Kubaj	vsldoi	1,1,1, 12
573*3a608692SPiotr Kubaj	vsldoi	5,5,5, 12
574*3a608692SPiotr Kubaj	vsldoi	9,9,9, 12
575*3a608692SPiotr Kubaj	add	27,27,31
576*3a608692SPiotr Kubaj	xor	20,20,24
577*3a608692SPiotr Kubaj	xor	21,21,25
578*3a608692SPiotr Kubaj	vsldoi	3,3,3, 4
579*3a608692SPiotr Kubaj	vsldoi	7,7,7, 4
580*3a608692SPiotr Kubaj	vsldoi	11,11,11, 4
581*3a608692SPiotr Kubaj	xor	22,22,26
582*3a608692SPiotr Kubaj	xor	23,23,27
583*3a608692SPiotr Kubaj	rotlwi	20,20,7
584*3a608692SPiotr Kubaj	rotlwi	21,21,7
585*3a608692SPiotr Kubaj	rotlwi	22,22,7
586*3a608692SPiotr Kubaj	rotlwi	23,23,7
587*3a608692SPiotr Kubaj	vadduwm	0,0,1
588*3a608692SPiotr Kubaj	vadduwm	4,4,5
589*3a608692SPiotr Kubaj	vadduwm	8,8,9
590*3a608692SPiotr Kubaj	add	16,16,21
591*3a608692SPiotr Kubaj	add	17,17,22
592*3a608692SPiotr Kubaj	add	18,18,23
593*3a608692SPiotr Kubaj	vxor	3,3,0
594*3a608692SPiotr Kubaj	vxor	7,7,4
595*3a608692SPiotr Kubaj	vxor	11,11,8
596*3a608692SPiotr Kubaj	add	19,19,20
597*3a608692SPiotr Kubaj	xor	31,31,16
598*3a608692SPiotr Kubaj	xor	28,28,17
599*3a608692SPiotr Kubaj	vperm	3,3,3,19
600*3a608692SPiotr Kubaj	vperm	7,7,7,19
601*3a608692SPiotr Kubaj	vperm	11,11,11,19
602*3a608692SPiotr Kubaj	xor	29,29,18
603*3a608692SPiotr Kubaj	xor	30,30,19
604*3a608692SPiotr Kubaj	rotlwi	31,31,16
605*3a608692SPiotr Kubaj	vadduwm	2,2,3
606*3a608692SPiotr Kubaj	vadduwm	6,6,7
607*3a608692SPiotr Kubaj	vadduwm	10,10,11
608*3a608692SPiotr Kubaj	rotlwi	28,28,16
609*3a608692SPiotr Kubaj	rotlwi	29,29,16
610*3a608692SPiotr Kubaj	rotlwi	30,30,16
611*3a608692SPiotr Kubaj	vxor	1,1,2
612*3a608692SPiotr Kubaj	vxor	5,5,6
613*3a608692SPiotr Kubaj	vxor	9,9,10
614*3a608692SPiotr Kubaj	add	26,26,31
615*3a608692SPiotr Kubaj	add	27,27,28
616*3a608692SPiotr Kubaj	add	24,24,29
617*3a608692SPiotr Kubaj	vrlw	1,1,27
618*3a608692SPiotr Kubaj	vrlw	5,5,27
619*3a608692SPiotr Kubaj	vrlw	9,9,27
620*3a608692SPiotr Kubaj	add	25,25,30
621*3a608692SPiotr Kubaj	xor	21,21,26
622*3a608692SPiotr Kubaj	xor	22,22,27
623*3a608692SPiotr Kubaj	vadduwm	0,0,1
624*3a608692SPiotr Kubaj	vadduwm	4,4,5
625*3a608692SPiotr Kubaj	vadduwm	8,8,9
626*3a608692SPiotr Kubaj	xor	23,23,24
627*3a608692SPiotr Kubaj	xor	20,20,25
628*3a608692SPiotr Kubaj	rotlwi	21,21,12
629*3a608692SPiotr Kubaj	vxor	3,3,0
630*3a608692SPiotr Kubaj	vxor	7,7,4
631*3a608692SPiotr Kubaj	vxor	11,11,8
632*3a608692SPiotr Kubaj	rotlwi	22,22,12
633*3a608692SPiotr Kubaj	rotlwi	23,23,12
634*3a608692SPiotr Kubaj	rotlwi	20,20,12
635*3a608692SPiotr Kubaj	vperm	3,3,3,23
636*3a608692SPiotr Kubaj	vperm	7,7,7,23
637*3a608692SPiotr Kubaj	vperm	11,11,11,23
638*3a608692SPiotr Kubaj	add	16,16,21
639*3a608692SPiotr Kubaj	add	17,17,22
640*3a608692SPiotr Kubaj	add	18,18,23
641*3a608692SPiotr Kubaj	vadduwm	2,2,3
642*3a608692SPiotr Kubaj	vadduwm	6,6,7
643*3a608692SPiotr Kubaj	vadduwm	10,10,11
644*3a608692SPiotr Kubaj	add	19,19,20
645*3a608692SPiotr Kubaj	xor	31,31,16
646*3a608692SPiotr Kubaj	xor	28,28,17
647*3a608692SPiotr Kubaj	vxor	1,1,2
648*3a608692SPiotr Kubaj	vxor	5,5,6
649*3a608692SPiotr Kubaj	vxor	9,9,10
650*3a608692SPiotr Kubaj	xor	29,29,18
651*3a608692SPiotr Kubaj	xor	30,30,19
652*3a608692SPiotr Kubaj	rotlwi	31,31,8
653*3a608692SPiotr Kubaj	vrlw	1,1,28
654*3a608692SPiotr Kubaj	vrlw	5,5,28
655*3a608692SPiotr Kubaj	vrlw	9,9,28
656*3a608692SPiotr Kubaj	rotlwi	28,28,8
657*3a608692SPiotr Kubaj	rotlwi	29,29,8
658*3a608692SPiotr Kubaj	rotlwi	30,30,8
659*3a608692SPiotr Kubaj	vsldoi	2,2,2, 8
660*3a608692SPiotr Kubaj	vsldoi	6,6,6, 8
661*3a608692SPiotr Kubaj	vsldoi	10,10,10, 8
662*3a608692SPiotr Kubaj	add	26,26,31
663*3a608692SPiotr Kubaj	add	27,27,28
664*3a608692SPiotr Kubaj	add	24,24,29
665*3a608692SPiotr Kubaj	vsldoi	1,1,1, 4
666*3a608692SPiotr Kubaj	vsldoi	5,5,5, 4
667*3a608692SPiotr Kubaj	vsldoi	9,9,9, 4
668*3a608692SPiotr Kubaj	add	25,25,30
669*3a608692SPiotr Kubaj	xor	21,21,26
670*3a608692SPiotr Kubaj	xor	22,22,27
671*3a608692SPiotr Kubaj	vsldoi	3,3,3, 12
672*3a608692SPiotr Kubaj	vsldoi	7,7,7, 12
673*3a608692SPiotr Kubaj	vsldoi	11,11,11, 12
674*3a608692SPiotr Kubaj	xor	23,23,24
675*3a608692SPiotr Kubaj	xor	20,20,25
676*3a608692SPiotr Kubaj	rotlwi	21,21,7
677*3a608692SPiotr Kubaj	rotlwi	22,22,7
678*3a608692SPiotr Kubaj	rotlwi	23,23,7
679*3a608692SPiotr Kubaj	rotlwi	20,20,7
680*3a608692SPiotr Kubaj	bdnz	.Loop_vmx
681*3a608692SPiotr Kubaj
682*3a608692SPiotr Kubaj	subi	5,5,256
683*3a608692SPiotr Kubaj	addi	16,16,0x7865
684*3a608692SPiotr Kubaj	addi	17,17,0x646e
685*3a608692SPiotr Kubaj	addi	18,18,0x2d32
686*3a608692SPiotr Kubaj	addi	19,19,0x6574
687*3a608692SPiotr Kubaj	addis	16,16,0x6170
688*3a608692SPiotr Kubaj	addis	17,17,0x3320
689*3a608692SPiotr Kubaj	addis	18,18,0x7962
690*3a608692SPiotr Kubaj	addis	19,19,0x6b20
691*3a608692SPiotr Kubaj	add	20,20,7
692*3a608692SPiotr Kubaj	lwz	7,16(6)
693*3a608692SPiotr Kubaj	add	21,21,8
694*3a608692SPiotr Kubaj	lwz	8,20(6)
695*3a608692SPiotr Kubaj	add	22,22,9
696*3a608692SPiotr Kubaj	lwz	9,24(6)
697*3a608692SPiotr Kubaj	add	23,23,10
698*3a608692SPiotr Kubaj	lwz	10,28(6)
699*3a608692SPiotr Kubaj	add	24,24,7
700*3a608692SPiotr Kubaj	add	25,25,8
701*3a608692SPiotr Kubaj	add	26,26,9
702*3a608692SPiotr Kubaj	add	27,27,10
703*3a608692SPiotr Kubaj	add	28,28,11
704*3a608692SPiotr Kubaj	add	29,29,12
705*3a608692SPiotr Kubaj	add	30,30,14
706*3a608692SPiotr Kubaj	add	31,31,15
707*3a608692SPiotr Kubaj
708*3a608692SPiotr Kubaj	vadduwm	0,0,12
709*3a608692SPiotr Kubaj	vadduwm	4,4,12
710*3a608692SPiotr Kubaj	vadduwm	8,8,12
711*3a608692SPiotr Kubaj	vadduwm	1,1,13
712*3a608692SPiotr Kubaj	vadduwm	5,5,13
713*3a608692SPiotr Kubaj	vadduwm	9,9,13
714*3a608692SPiotr Kubaj	vadduwm	2,2,14
715*3a608692SPiotr Kubaj	vadduwm	6,6,14
716*3a608692SPiotr Kubaj	vadduwm	10,10,14
717*3a608692SPiotr Kubaj	vadduwm	3,3,15
718*3a608692SPiotr Kubaj	vadduwm	7,7,16
719*3a608692SPiotr Kubaj	vadduwm	11,11,17
720*3a608692SPiotr Kubaj
721*3a608692SPiotr Kubaj	addi	11,11,4
722*3a608692SPiotr Kubaj	vadduwm	15,15,18
723*3a608692SPiotr Kubaj	vadduwm	16,16,18
724*3a608692SPiotr Kubaj	vadduwm	17,17,18
725*3a608692SPiotr Kubaj
726*3a608692SPiotr Kubaj	lwz	7,0(4)
727*3a608692SPiotr Kubaj	lwz	8,4(4)
728*3a608692SPiotr Kubaj	lwz	9,8(4)
729*3a608692SPiotr Kubaj	lwz	10,12(4)
730*3a608692SPiotr Kubaj	xor	16,16,7
731*3a608692SPiotr Kubaj	lwz	7,16(4)
732*3a608692SPiotr Kubaj	xor	17,17,8
733*3a608692SPiotr Kubaj	lwz	8,20(4)
734*3a608692SPiotr Kubaj	xor	18,18,9
735*3a608692SPiotr Kubaj	lwz	9,24(4)
736*3a608692SPiotr Kubaj	xor	19,19,10
737*3a608692SPiotr Kubaj	lwz	10,28(4)
738*3a608692SPiotr Kubaj	xor	20,20,7
739*3a608692SPiotr Kubaj	lwz	7,32(4)
740*3a608692SPiotr Kubaj	xor	21,21,8
741*3a608692SPiotr Kubaj	lwz	8,36(4)
742*3a608692SPiotr Kubaj	xor	22,22,9
743*3a608692SPiotr Kubaj	lwz	9,40(4)
744*3a608692SPiotr Kubaj	xor	23,23,10
745*3a608692SPiotr Kubaj	lwz	10,44(4)
746*3a608692SPiotr Kubaj	xor	24,24,7
747*3a608692SPiotr Kubaj	lwz	7,48(4)
748*3a608692SPiotr Kubaj	xor	25,25,8
749*3a608692SPiotr Kubaj	lwz	8,52(4)
750*3a608692SPiotr Kubaj	xor	26,26,9
751*3a608692SPiotr Kubaj	lwz	9,56(4)
752*3a608692SPiotr Kubaj	xor	27,27,10
753*3a608692SPiotr Kubaj	lwz	10,60(4)
754*3a608692SPiotr Kubaj	xor	28,28,7
755*3a608692SPiotr Kubaj	stw	16,0(3)
756*3a608692SPiotr Kubaj	xor	29,29,8
757*3a608692SPiotr Kubaj	stw	17,4(3)
758*3a608692SPiotr Kubaj	xor	30,30,9
759*3a608692SPiotr Kubaj	stw	18,8(3)
760*3a608692SPiotr Kubaj	xor	31,31,10
761*3a608692SPiotr Kubaj	stw	19,12(3)
762*3a608692SPiotr Kubaj	addi	4,4,64
763*3a608692SPiotr Kubaj	stw	20,16(3)
764*3a608692SPiotr Kubaj	li	7,16
765*3a608692SPiotr Kubaj	stw	21,20(3)
766*3a608692SPiotr Kubaj	li	8,32
767*3a608692SPiotr Kubaj	stw	22,24(3)
768*3a608692SPiotr Kubaj	li	9,48
769*3a608692SPiotr Kubaj	stw	23,28(3)
770*3a608692SPiotr Kubaj	li	10,64
771*3a608692SPiotr Kubaj	stw	24,32(3)
772*3a608692SPiotr Kubaj	stw	25,36(3)
773*3a608692SPiotr Kubaj	stw	26,40(3)
774*3a608692SPiotr Kubaj	stw	27,44(3)
775*3a608692SPiotr Kubaj	stw	28,48(3)
776*3a608692SPiotr Kubaj	stw	29,52(3)
777*3a608692SPiotr Kubaj	stw	30,56(3)
778*3a608692SPiotr Kubaj	stw	31,60(3)
779*3a608692SPiotr Kubaj	addi	3,3,64
780*3a608692SPiotr Kubaj
781*3a608692SPiotr Kubaj	lvx	27,0,4
782*3a608692SPiotr Kubaj	lvx	28,7,4
783*3a608692SPiotr Kubaj	lvx	29,8,4
784*3a608692SPiotr Kubaj	lvx	30,9,4
785*3a608692SPiotr Kubaj	lvx	31,10,4
786*3a608692SPiotr Kubaj	addi	4,4,64
787*3a608692SPiotr Kubaj
788*3a608692SPiotr Kubaj	vperm	27,28,27,24
789*3a608692SPiotr Kubaj	vperm	28,29,28,24
790*3a608692SPiotr Kubaj	vperm	29,30,29,24
791*3a608692SPiotr Kubaj	vperm	30,31,30,24
792*3a608692SPiotr Kubaj	vxor	0,0,27
793*3a608692SPiotr Kubaj	vxor	1,1,28
794*3a608692SPiotr Kubaj	lvx	28,7,4
795*3a608692SPiotr Kubaj	vxor	2,2,29
796*3a608692SPiotr Kubaj	lvx	29,8,4
797*3a608692SPiotr Kubaj	vxor	3,3,30
798*3a608692SPiotr Kubaj	lvx	30,9,4
799*3a608692SPiotr Kubaj	lvx	27,10,4
800*3a608692SPiotr Kubaj	addi	4,4,64
801*3a608692SPiotr Kubaj	li	10,63
802*3a608692SPiotr Kubaj	vperm	0,0,0,25
803*3a608692SPiotr Kubaj	vperm	1,1,1,25
804*3a608692SPiotr Kubaj	vperm	2,2,2,25
805*3a608692SPiotr Kubaj	vperm	3,3,3,25
806*3a608692SPiotr Kubaj
807*3a608692SPiotr Kubaj	vperm	31,28,31,24
808*3a608692SPiotr Kubaj	vperm	28,29,28,24
809*3a608692SPiotr Kubaj	vperm	29,30,29,24
810*3a608692SPiotr Kubaj	vperm	30,27,30,24
811*3a608692SPiotr Kubaj	vxor	4,4,31
812*3a608692SPiotr Kubaj	vxor	5,5,28
813*3a608692SPiotr Kubaj	lvx	28,7,4
814*3a608692SPiotr Kubaj	vxor	6,6,29
815*3a608692SPiotr Kubaj	lvx	29,8,4
816*3a608692SPiotr Kubaj	vxor	7,7,30
817*3a608692SPiotr Kubaj	lvx	30,9,4
818*3a608692SPiotr Kubaj	lvx	31,10,4
819*3a608692SPiotr Kubaj	addi	4,4,64
820*3a608692SPiotr Kubaj	vperm	4,4,4,25
821*3a608692SPiotr Kubaj	vperm	5,5,5,25
822*3a608692SPiotr Kubaj	vperm	6,6,6,25
823*3a608692SPiotr Kubaj	vperm	7,7,7,25
824*3a608692SPiotr Kubaj
825*3a608692SPiotr Kubaj	vperm	27,28,27,24
826*3a608692SPiotr Kubaj	vperm	28,29,28,24
827*3a608692SPiotr Kubaj	vperm	29,30,29,24
828*3a608692SPiotr Kubaj	vperm	30,31,30,24
829*3a608692SPiotr Kubaj	vxor	8,8,27
830*3a608692SPiotr Kubaj	vxor	9,9,28
831*3a608692SPiotr Kubaj	vxor	10,10,29
832*3a608692SPiotr Kubaj	vxor	11,11,30
833*3a608692SPiotr Kubaj	vperm	8,8,8,25
834*3a608692SPiotr Kubaj	vperm	9,9,9,25
835*3a608692SPiotr Kubaj	vperm	10,10,10,25
836*3a608692SPiotr Kubaj	vperm	11,11,11,25
837*3a608692SPiotr Kubaj
838*3a608692SPiotr Kubaj	andi.	17,3,15
839*3a608692SPiotr Kubaj	mr	16,3
840*3a608692SPiotr Kubaj
841*3a608692SPiotr Kubaj	vsel	27,0,1,26
842*3a608692SPiotr Kubaj	vsel	28,1,2,26
843*3a608692SPiotr Kubaj	vsel	29,2,3,26
844*3a608692SPiotr Kubaj	vsel	30,3,4,26
845*3a608692SPiotr Kubaj	vsel	1,4,5,26
846*3a608692SPiotr Kubaj	vsel	2,5,6,26
847*3a608692SPiotr Kubaj	vsel	3,6,7,26
848*3a608692SPiotr Kubaj	vsel	4,7,8,26
849*3a608692SPiotr Kubaj	vsel	5,8,9,26
850*3a608692SPiotr Kubaj	vsel	6,9,10,26
851*3a608692SPiotr Kubaj	vsel	7,10,11,26
852*3a608692SPiotr Kubaj
853*3a608692SPiotr Kubaj
854*3a608692SPiotr Kubaj	stvx	27,7,3
855*3a608692SPiotr Kubaj	stvx	28,8,3
856*3a608692SPiotr Kubaj	stvx	29,9,3
857*3a608692SPiotr Kubaj	addi	3,3,64
858*3a608692SPiotr Kubaj	stvx	30,0,3
859*3a608692SPiotr Kubaj	stvx	1,7,3
860*3a608692SPiotr Kubaj	stvx	2,8,3
861*3a608692SPiotr Kubaj	stvx	3,9,3
862*3a608692SPiotr Kubaj	addi	3,3,64
863*3a608692SPiotr Kubaj	stvx	4,0,3
864*3a608692SPiotr Kubaj	stvx	5,7,3
865*3a608692SPiotr Kubaj	stvx	6,8,3
866*3a608692SPiotr Kubaj	stvx	7,9,3
867*3a608692SPiotr Kubaj	addi	3,3,64
868*3a608692SPiotr Kubaj
869*3a608692SPiotr Kubaj	beq	.Laligned_vmx
870*3a608692SPiotr Kubaj
871*3a608692SPiotr Kubaj	sub	18,3,17
872*3a608692SPiotr Kubaj	li	19,0
873*3a608692SPiotr Kubaj.Lunaligned_tail_vmx:
874*3a608692SPiotr Kubaj	stvebx	11,19,18
875*3a608692SPiotr Kubaj	addi	19,19,1
876*3a608692SPiotr Kubaj	cmpw	19,17
877*3a608692SPiotr Kubaj	bne	.Lunaligned_tail_vmx
878*3a608692SPiotr Kubaj
879*3a608692SPiotr Kubaj	sub	18,16,17
880*3a608692SPiotr Kubaj.Lunaligned_head_vmx:
881*3a608692SPiotr Kubaj	stvebx	0,17,18
882*3a608692SPiotr Kubaj	cmpwi	17,15
883*3a608692SPiotr Kubaj	addi	17,17,1
884*3a608692SPiotr Kubaj	bne	.Lunaligned_head_vmx
885*3a608692SPiotr Kubaj
886*3a608692SPiotr Kubaj	cmpldi	5,255
887*3a608692SPiotr Kubaj	bgt	.Loop_outer_vmx
888*3a608692SPiotr Kubaj
889*3a608692SPiotr Kubaj	b	.Ldone_vmx
890*3a608692SPiotr Kubaj
891*3a608692SPiotr Kubaj.align	4
892*3a608692SPiotr Kubaj.Laligned_vmx:
893*3a608692SPiotr Kubaj	stvx	0,0,16
894*3a608692SPiotr Kubaj
895*3a608692SPiotr Kubaj	cmpldi	5,255
896*3a608692SPiotr Kubaj	bgt	.Loop_outer_vmx
897*3a608692SPiotr Kubaj	nop
898*3a608692SPiotr Kubaj
899*3a608692SPiotr Kubaj.Ldone_vmx:
900*3a608692SPiotr Kubaj	cmpldi	5,0
901*3a608692SPiotr Kubaj	bnel	__ChaCha20_1x
902*3a608692SPiotr Kubaj
903*3a608692SPiotr Kubaj	lwz	12,268(1)
904*3a608692SPiotr Kubaj	li	10,127
905*3a608692SPiotr Kubaj	li	11,143
906*3a608692SPiotr Kubaj	or	12,12,12
907*3a608692SPiotr Kubaj	lvx	23,10,1
908*3a608692SPiotr Kubaj	addi	10,10,32
909*3a608692SPiotr Kubaj	lvx	24,11,1
910*3a608692SPiotr Kubaj	addi	11,11,32
911*3a608692SPiotr Kubaj	lvx	25,10,1
912*3a608692SPiotr Kubaj	addi	10,10,32
913*3a608692SPiotr Kubaj	lvx	26,11,1
914*3a608692SPiotr Kubaj	addi	11,11,32
915*3a608692SPiotr Kubaj	lvx	27,10,1
916*3a608692SPiotr Kubaj	addi	10,10,32
917*3a608692SPiotr Kubaj	lvx	28,11,1
918*3a608692SPiotr Kubaj	addi	11,11,32
919*3a608692SPiotr Kubaj	lvx	29,10,1
920*3a608692SPiotr Kubaj	addi	10,10,32
921*3a608692SPiotr Kubaj	lvx	30,11,1
922*3a608692SPiotr Kubaj	lvx	31,10,1
923*3a608692SPiotr Kubaj	ld	0, 432(1)
924*3a608692SPiotr Kubaj	ld	14,272(1)
925*3a608692SPiotr Kubaj	ld	15,280(1)
926*3a608692SPiotr Kubaj	ld	16,288(1)
927*3a608692SPiotr Kubaj	ld	17,296(1)
928*3a608692SPiotr Kubaj	ld	18,304(1)
929*3a608692SPiotr Kubaj	ld	19,312(1)
930*3a608692SPiotr Kubaj	ld	20,320(1)
931*3a608692SPiotr Kubaj	ld	21,328(1)
932*3a608692SPiotr Kubaj	ld	22,336(1)
933*3a608692SPiotr Kubaj	ld	23,344(1)
934*3a608692SPiotr Kubaj	ld	24,352(1)
935*3a608692SPiotr Kubaj	ld	25,360(1)
936*3a608692SPiotr Kubaj	ld	26,368(1)
937*3a608692SPiotr Kubaj	ld	27,376(1)
938*3a608692SPiotr Kubaj	ld	28,384(1)
939*3a608692SPiotr Kubaj	ld	29,392(1)
940*3a608692SPiotr Kubaj	ld	30,400(1)
941*3a608692SPiotr Kubaj	ld	31,408(1)
942*3a608692SPiotr Kubaj	mtlr	0
943*3a608692SPiotr Kubaj	addi	1,1,416
944*3a608692SPiotr Kubaj	blr
945*3a608692SPiotr Kubaj.long	0
946*3a608692SPiotr Kubaj.byte	0,12,0x04,1,0x80,18,5,0
947*3a608692SPiotr Kubaj.long	0
948*3a608692SPiotr Kubaj.size	ChaCha20_ctr32_vmx,.-ChaCha20_ctr32_vmx
949*3a608692SPiotr Kubaj
950*3a608692SPiotr Kubaj.globl	ChaCha20_ctr32_vsx
951*3a608692SPiotr Kubaj.type	ChaCha20_ctr32_vsx,@function
952*3a608692SPiotr Kubaj.align	5
953*3a608692SPiotr KubajChaCha20_ctr32_vsx:
954*3a608692SPiotr Kubaj.localentry	ChaCha20_ctr32_vsx,0
955*3a608692SPiotr Kubaj
956*3a608692SPiotr Kubaj	stdu	1,-224(1)
957*3a608692SPiotr Kubaj	mflr	0
958*3a608692SPiotr Kubaj	li	10,127
959*3a608692SPiotr Kubaj	li	11,143
960*3a608692SPiotr Kubaj	li	12,-1
961*3a608692SPiotr Kubaj	stvx	26,10,1
962*3a608692SPiotr Kubaj	addi	10,10,32
963*3a608692SPiotr Kubaj	stvx	27,11,1
964*3a608692SPiotr Kubaj	addi	11,11,32
965*3a608692SPiotr Kubaj	stvx	28,10,1
966*3a608692SPiotr Kubaj	addi	10,10,32
967*3a608692SPiotr Kubaj	stvx	29,11,1
968*3a608692SPiotr Kubaj	addi	11,11,32
969*3a608692SPiotr Kubaj	stvx	30,10,1
970*3a608692SPiotr Kubaj	stvx	31,11,1
971*3a608692SPiotr Kubaj	stw	12,220(1)
972*3a608692SPiotr Kubaj	li	12,-4096+63
973*3a608692SPiotr Kubaj	std	0, 240(1)
974*3a608692SPiotr Kubaj	or	12,12,12
975*3a608692SPiotr Kubaj
976*3a608692SPiotr Kubaj	bl	.Lconsts
977*3a608692SPiotr Kubaj	.long	0x7E006619
978*3a608692SPiotr Kubaj	addi	12,12,0x50
979*3a608692SPiotr Kubaj	li	8,16
980*3a608692SPiotr Kubaj	li	9,32
981*3a608692SPiotr Kubaj	li	10,48
982*3a608692SPiotr Kubaj	li	11,64
983*3a608692SPiotr Kubaj
984*3a608692SPiotr Kubaj	.long	0x7E203619
985*3a608692SPiotr Kubaj	.long	0x7E483619
986*3a608692SPiotr Kubaj	.long	0x7E603E19
987*3a608692SPiotr Kubaj
988*3a608692SPiotr Kubaj	vxor	27,27,27
989*3a608692SPiotr Kubaj	.long	0x7F8B6619
990*3a608692SPiotr Kubaj	vspltw	26,19,0
991*3a608692SPiotr Kubaj	vsldoi	19,19,27,4
992*3a608692SPiotr Kubaj	vsldoi	19,27,19,12
993*3a608692SPiotr Kubaj	vadduwm	26,26,28
994*3a608692SPiotr Kubaj
995*3a608692SPiotr Kubaj
996*3a608692SPiotr Kubaj
997*3a608692SPiotr Kubaj
998*3a608692SPiotr Kubaj
999*3a608692SPiotr Kubaj	li	0,10
1000*3a608692SPiotr Kubaj	mtctr	0
1001*3a608692SPiotr Kubaj	b	.Loop_outer_vsx
1002*3a608692SPiotr Kubaj
1003*3a608692SPiotr Kubaj.align	5
1004*3a608692SPiotr Kubaj.Loop_outer_vsx:
1005*3a608692SPiotr Kubaj	lvx	0,0,12
1006*3a608692SPiotr Kubaj	lvx	1,8,12
1007*3a608692SPiotr Kubaj	lvx	2,9,12
1008*3a608692SPiotr Kubaj	lvx	3,10,12
1009*3a608692SPiotr Kubaj
1010*3a608692SPiotr Kubaj	vspltw	4,17,0
1011*3a608692SPiotr Kubaj	vspltw	5,17,1
1012*3a608692SPiotr Kubaj	vspltw	6,17,2
1013*3a608692SPiotr Kubaj	vspltw	7,17,3
1014*3a608692SPiotr Kubaj
1015*3a608692SPiotr Kubaj	vspltw	8,18,0
1016*3a608692SPiotr Kubaj	vspltw	9,18,1
1017*3a608692SPiotr Kubaj	vspltw	10,18,2
1018*3a608692SPiotr Kubaj	vspltw	11,18,3
1019*3a608692SPiotr Kubaj
1020*3a608692SPiotr Kubaj	vor	12,26,26
1021*3a608692SPiotr Kubaj	vspltw	13,19,1
1022*3a608692SPiotr Kubaj	vspltw	14,19,2
1023*3a608692SPiotr Kubaj	vspltw	15,19,3
1024*3a608692SPiotr Kubaj
1025*3a608692SPiotr Kubaj	vspltisw	27,-16
1026*3a608692SPiotr Kubaj	vspltisw	28,12
1027*3a608692SPiotr Kubaj	vspltisw	29,8
1028*3a608692SPiotr Kubaj	vspltisw	30,7
1029*3a608692SPiotr Kubaj
1030*3a608692SPiotr Kubaj.Loop_vsx:
1031*3a608692SPiotr Kubaj	vadduwm	0,0,4
1032*3a608692SPiotr Kubaj	vadduwm	1,1,5
1033*3a608692SPiotr Kubaj	vadduwm	2,2,6
1034*3a608692SPiotr Kubaj	vadduwm	3,3,7
1035*3a608692SPiotr Kubaj	vxor	12,12,0
1036*3a608692SPiotr Kubaj	vxor	13,13,1
1037*3a608692SPiotr Kubaj	vxor	14,14,2
1038*3a608692SPiotr Kubaj	vxor	15,15,3
1039*3a608692SPiotr Kubaj	vrlw	12,12,27
1040*3a608692SPiotr Kubaj	vrlw	13,13,27
1041*3a608692SPiotr Kubaj	vrlw	14,14,27
1042*3a608692SPiotr Kubaj	vrlw	15,15,27
1043*3a608692SPiotr Kubaj	vadduwm	8,8,12
1044*3a608692SPiotr Kubaj	vadduwm	9,9,13
1045*3a608692SPiotr Kubaj	vadduwm	10,10,14
1046*3a608692SPiotr Kubaj	vadduwm	11,11,15
1047*3a608692SPiotr Kubaj	vxor	4,4,8
1048*3a608692SPiotr Kubaj	vxor	5,5,9
1049*3a608692SPiotr Kubaj	vxor	6,6,10
1050*3a608692SPiotr Kubaj	vxor	7,7,11
1051*3a608692SPiotr Kubaj	vrlw	4,4,28
1052*3a608692SPiotr Kubaj	vrlw	5,5,28
1053*3a608692SPiotr Kubaj	vrlw	6,6,28
1054*3a608692SPiotr Kubaj	vrlw	7,7,28
1055*3a608692SPiotr Kubaj	vadduwm	0,0,4
1056*3a608692SPiotr Kubaj	vadduwm	1,1,5
1057*3a608692SPiotr Kubaj	vadduwm	2,2,6
1058*3a608692SPiotr Kubaj	vadduwm	3,3,7
1059*3a608692SPiotr Kubaj	vxor	12,12,0
1060*3a608692SPiotr Kubaj	vxor	13,13,1
1061*3a608692SPiotr Kubaj	vxor	14,14,2
1062*3a608692SPiotr Kubaj	vxor	15,15,3
1063*3a608692SPiotr Kubaj	vrlw	12,12,29
1064*3a608692SPiotr Kubaj	vrlw	13,13,29
1065*3a608692SPiotr Kubaj	vrlw	14,14,29
1066*3a608692SPiotr Kubaj	vrlw	15,15,29
1067*3a608692SPiotr Kubaj	vadduwm	8,8,12
1068*3a608692SPiotr Kubaj	vadduwm	9,9,13
1069*3a608692SPiotr Kubaj	vadduwm	10,10,14
1070*3a608692SPiotr Kubaj	vadduwm	11,11,15
1071*3a608692SPiotr Kubaj	vxor	4,4,8
1072*3a608692SPiotr Kubaj	vxor	5,5,9
1073*3a608692SPiotr Kubaj	vxor	6,6,10
1074*3a608692SPiotr Kubaj	vxor	7,7,11
1075*3a608692SPiotr Kubaj	vrlw	4,4,30
1076*3a608692SPiotr Kubaj	vrlw	5,5,30
1077*3a608692SPiotr Kubaj	vrlw	6,6,30
1078*3a608692SPiotr Kubaj	vrlw	7,7,30
1079*3a608692SPiotr Kubaj	vadduwm	0,0,5
1080*3a608692SPiotr Kubaj	vadduwm	1,1,6
1081*3a608692SPiotr Kubaj	vadduwm	2,2,7
1082*3a608692SPiotr Kubaj	vadduwm	3,3,4
1083*3a608692SPiotr Kubaj	vxor	15,15,0
1084*3a608692SPiotr Kubaj	vxor	12,12,1
1085*3a608692SPiotr Kubaj	vxor	13,13,2
1086*3a608692SPiotr Kubaj	vxor	14,14,3
1087*3a608692SPiotr Kubaj	vrlw	15,15,27
1088*3a608692SPiotr Kubaj	vrlw	12,12,27
1089*3a608692SPiotr Kubaj	vrlw	13,13,27
1090*3a608692SPiotr Kubaj	vrlw	14,14,27
1091*3a608692SPiotr Kubaj	vadduwm	10,10,15
1092*3a608692SPiotr Kubaj	vadduwm	11,11,12
1093*3a608692SPiotr Kubaj	vadduwm	8,8,13
1094*3a608692SPiotr Kubaj	vadduwm	9,9,14
1095*3a608692SPiotr Kubaj	vxor	5,5,10
1096*3a608692SPiotr Kubaj	vxor	6,6,11
1097*3a608692SPiotr Kubaj	vxor	7,7,8
1098*3a608692SPiotr Kubaj	vxor	4,4,9
1099*3a608692SPiotr Kubaj	vrlw	5,5,28
1100*3a608692SPiotr Kubaj	vrlw	6,6,28
1101*3a608692SPiotr Kubaj	vrlw	7,7,28
1102*3a608692SPiotr Kubaj	vrlw	4,4,28
1103*3a608692SPiotr Kubaj	vadduwm	0,0,5
1104*3a608692SPiotr Kubaj	vadduwm	1,1,6
1105*3a608692SPiotr Kubaj	vadduwm	2,2,7
1106*3a608692SPiotr Kubaj	vadduwm	3,3,4
1107*3a608692SPiotr Kubaj	vxor	15,15,0
1108*3a608692SPiotr Kubaj	vxor	12,12,1
1109*3a608692SPiotr Kubaj	vxor	13,13,2
1110*3a608692SPiotr Kubaj	vxor	14,14,3
1111*3a608692SPiotr Kubaj	vrlw	15,15,29
1112*3a608692SPiotr Kubaj	vrlw	12,12,29
1113*3a608692SPiotr Kubaj	vrlw	13,13,29
1114*3a608692SPiotr Kubaj	vrlw	14,14,29
1115*3a608692SPiotr Kubaj	vadduwm	10,10,15
1116*3a608692SPiotr Kubaj	vadduwm	11,11,12
1117*3a608692SPiotr Kubaj	vadduwm	8,8,13
1118*3a608692SPiotr Kubaj	vadduwm	9,9,14
1119*3a608692SPiotr Kubaj	vxor	5,5,10
1120*3a608692SPiotr Kubaj	vxor	6,6,11
1121*3a608692SPiotr Kubaj	vxor	7,7,8
1122*3a608692SPiotr Kubaj	vxor	4,4,9
1123*3a608692SPiotr Kubaj	vrlw	5,5,30
1124*3a608692SPiotr Kubaj	vrlw	6,6,30
1125*3a608692SPiotr Kubaj	vrlw	7,7,30
1126*3a608692SPiotr Kubaj	vrlw	4,4,30
1127*3a608692SPiotr Kubaj	bdnz	.Loop_vsx
1128*3a608692SPiotr Kubaj
1129*3a608692SPiotr Kubaj	vadduwm	12,12,26
1130*3a608692SPiotr Kubaj
1131*3a608692SPiotr Kubaj	.long	0x13600F8C
1132*3a608692SPiotr Kubaj	.long	0x13821F8C
1133*3a608692SPiotr Kubaj	.long	0x10000E8C
1134*3a608692SPiotr Kubaj	.long	0x10421E8C
1135*3a608692SPiotr Kubaj	.long	0x13A42F8C
1136*3a608692SPiotr Kubaj	.long	0x13C63F8C
1137*3a608692SPiotr Kubaj	.long	0xF0201057
1138*3a608692SPiotr Kubaj	.long	0xF0601357
1139*3a608692SPiotr Kubaj	.long	0xF01BE057
1140*3a608692SPiotr Kubaj	.long	0xF05BE357
1141*3a608692SPiotr Kubaj
1142*3a608692SPiotr Kubaj	.long	0x10842E8C
1143*3a608692SPiotr Kubaj	.long	0x10C63E8C
1144*3a608692SPiotr Kubaj	.long	0x13684F8C
1145*3a608692SPiotr Kubaj	.long	0x138A5F8C
1146*3a608692SPiotr Kubaj	.long	0xF0A43057
1147*3a608692SPiotr Kubaj	.long	0xF0E43357
1148*3a608692SPiotr Kubaj	.long	0xF09DF057
1149*3a608692SPiotr Kubaj	.long	0xF0DDF357
1150*3a608692SPiotr Kubaj
1151*3a608692SPiotr Kubaj	.long	0x11084E8C
1152*3a608692SPiotr Kubaj	.long	0x114A5E8C
1153*3a608692SPiotr Kubaj	.long	0x13AC6F8C
1154*3a608692SPiotr Kubaj	.long	0x13CE7F8C
1155*3a608692SPiotr Kubaj	.long	0xF1285057
1156*3a608692SPiotr Kubaj	.long	0xF1685357
1157*3a608692SPiotr Kubaj	.long	0xF11BE057
1158*3a608692SPiotr Kubaj	.long	0xF15BE357
1159*3a608692SPiotr Kubaj
1160*3a608692SPiotr Kubaj	.long	0x118C6E8C
1161*3a608692SPiotr Kubaj	.long	0x11CE7E8C
1162*3a608692SPiotr Kubaj	vspltisw	27,4
1163*3a608692SPiotr Kubaj	vadduwm	26,26,27
1164*3a608692SPiotr Kubaj	.long	0xF1AC7057
1165*3a608692SPiotr Kubaj	.long	0xF1EC7357
1166*3a608692SPiotr Kubaj	.long	0xF19DF057
1167*3a608692SPiotr Kubaj	.long	0xF1DDF357
1168*3a608692SPiotr Kubaj
1169*3a608692SPiotr Kubaj	vadduwm	0,0,16
1170*3a608692SPiotr Kubaj	vadduwm	4,4,17
1171*3a608692SPiotr Kubaj	vadduwm	8,8,18
1172*3a608692SPiotr Kubaj	vadduwm	12,12,19
1173*3a608692SPiotr Kubaj
1174*3a608692SPiotr Kubaj
1175*3a608692SPiotr Kubaj
1176*3a608692SPiotr Kubaj
1177*3a608692SPiotr Kubaj
1178*3a608692SPiotr Kubaj
1179*3a608692SPiotr Kubaj	cmpldi	5,0x40
1180*3a608692SPiotr Kubaj	blt	.Ltail_vsx
1181*3a608692SPiotr Kubaj
1182*3a608692SPiotr Kubaj	.long	0x7F602619
1183*3a608692SPiotr Kubaj	.long	0x7F882619
1184*3a608692SPiotr Kubaj	.long	0x7FA92619
1185*3a608692SPiotr Kubaj	.long	0x7FCA2619
1186*3a608692SPiotr Kubaj
1187*3a608692SPiotr Kubaj	vxor	27,27,0
1188*3a608692SPiotr Kubaj	vxor	28,28,4
1189*3a608692SPiotr Kubaj	vxor	29,29,8
1190*3a608692SPiotr Kubaj	vxor	30,30,12
1191*3a608692SPiotr Kubaj
1192*3a608692SPiotr Kubaj	.long	0x7F601F19
1193*3a608692SPiotr Kubaj	.long	0x7F881F19
1194*3a608692SPiotr Kubaj	addi	4,4,0x40
1195*3a608692SPiotr Kubaj	.long	0x7FA91F19
1196*3a608692SPiotr Kubaj	subi	5,5,0x40
1197*3a608692SPiotr Kubaj	.long	0x7FCA1F19
1198*3a608692SPiotr Kubaj	addi	3,3,0x40
1199*3a608692SPiotr Kubaj	beq	.Ldone_vsx
1200*3a608692SPiotr Kubaj
1201*3a608692SPiotr Kubaj	vadduwm	0,1,16
1202*3a608692SPiotr Kubaj	vadduwm	4,5,17
1203*3a608692SPiotr Kubaj	vadduwm	8,9,18
1204*3a608692SPiotr Kubaj	vadduwm	12,13,19
1205*3a608692SPiotr Kubaj
1206*3a608692SPiotr Kubaj
1207*3a608692SPiotr Kubaj
1208*3a608692SPiotr Kubaj
1209*3a608692SPiotr Kubaj
1210*3a608692SPiotr Kubaj
1211*3a608692SPiotr Kubaj	cmpldi	5,0x40
1212*3a608692SPiotr Kubaj	blt	.Ltail_vsx
1213*3a608692SPiotr Kubaj
1214*3a608692SPiotr Kubaj	.long	0x7F602619
1215*3a608692SPiotr Kubaj	.long	0x7F882619
1216*3a608692SPiotr Kubaj	.long	0x7FA92619
1217*3a608692SPiotr Kubaj	.long	0x7FCA2619
1218*3a608692SPiotr Kubaj
1219*3a608692SPiotr Kubaj	vxor	27,27,0
1220*3a608692SPiotr Kubaj	vxor	28,28,4
1221*3a608692SPiotr Kubaj	vxor	29,29,8
1222*3a608692SPiotr Kubaj	vxor	30,30,12
1223*3a608692SPiotr Kubaj
1224*3a608692SPiotr Kubaj	.long	0x7F601F19
1225*3a608692SPiotr Kubaj	.long	0x7F881F19
1226*3a608692SPiotr Kubaj	addi	4,4,0x40
1227*3a608692SPiotr Kubaj	.long	0x7FA91F19
1228*3a608692SPiotr Kubaj	subi	5,5,0x40
1229*3a608692SPiotr Kubaj	.long	0x7FCA1F19
1230*3a608692SPiotr Kubaj	addi	3,3,0x40
1231*3a608692SPiotr Kubaj	beq	.Ldone_vsx
1232*3a608692SPiotr Kubaj
1233*3a608692SPiotr Kubaj	vadduwm	0,2,16
1234*3a608692SPiotr Kubaj	vadduwm	4,6,17
1235*3a608692SPiotr Kubaj	vadduwm	8,10,18
1236*3a608692SPiotr Kubaj	vadduwm	12,14,19
1237*3a608692SPiotr Kubaj
1238*3a608692SPiotr Kubaj
1239*3a608692SPiotr Kubaj
1240*3a608692SPiotr Kubaj
1241*3a608692SPiotr Kubaj
1242*3a608692SPiotr Kubaj
1243*3a608692SPiotr Kubaj	cmpldi	5,0x40
1244*3a608692SPiotr Kubaj	blt	.Ltail_vsx
1245*3a608692SPiotr Kubaj
1246*3a608692SPiotr Kubaj	.long	0x7F602619
1247*3a608692SPiotr Kubaj	.long	0x7F882619
1248*3a608692SPiotr Kubaj	.long	0x7FA92619
1249*3a608692SPiotr Kubaj	.long	0x7FCA2619
1250*3a608692SPiotr Kubaj
1251*3a608692SPiotr Kubaj	vxor	27,27,0
1252*3a608692SPiotr Kubaj	vxor	28,28,4
1253*3a608692SPiotr Kubaj	vxor	29,29,8
1254*3a608692SPiotr Kubaj	vxor	30,30,12
1255*3a608692SPiotr Kubaj
1256*3a608692SPiotr Kubaj	.long	0x7F601F19
1257*3a608692SPiotr Kubaj	.long	0x7F881F19
1258*3a608692SPiotr Kubaj	addi	4,4,0x40
1259*3a608692SPiotr Kubaj	.long	0x7FA91F19
1260*3a608692SPiotr Kubaj	subi	5,5,0x40
1261*3a608692SPiotr Kubaj	.long	0x7FCA1F19
1262*3a608692SPiotr Kubaj	addi	3,3,0x40
1263*3a608692SPiotr Kubaj	beq	.Ldone_vsx
1264*3a608692SPiotr Kubaj
1265*3a608692SPiotr Kubaj	vadduwm	0,3,16
1266*3a608692SPiotr Kubaj	vadduwm	4,7,17
1267*3a608692SPiotr Kubaj	vadduwm	8,11,18
1268*3a608692SPiotr Kubaj	vadduwm	12,15,19
1269*3a608692SPiotr Kubaj
1270*3a608692SPiotr Kubaj
1271*3a608692SPiotr Kubaj
1272*3a608692SPiotr Kubaj
1273*3a608692SPiotr Kubaj
1274*3a608692SPiotr Kubaj
1275*3a608692SPiotr Kubaj	cmpldi	5,0x40
1276*3a608692SPiotr Kubaj	blt	.Ltail_vsx
1277*3a608692SPiotr Kubaj
1278*3a608692SPiotr Kubaj	.long	0x7F602619
1279*3a608692SPiotr Kubaj	.long	0x7F882619
1280*3a608692SPiotr Kubaj	.long	0x7FA92619
1281*3a608692SPiotr Kubaj	.long	0x7FCA2619
1282*3a608692SPiotr Kubaj
1283*3a608692SPiotr Kubaj	vxor	27,27,0
1284*3a608692SPiotr Kubaj	vxor	28,28,4
1285*3a608692SPiotr Kubaj	vxor	29,29,8
1286*3a608692SPiotr Kubaj	vxor	30,30,12
1287*3a608692SPiotr Kubaj
1288*3a608692SPiotr Kubaj	.long	0x7F601F19
1289*3a608692SPiotr Kubaj	.long	0x7F881F19
1290*3a608692SPiotr Kubaj	addi	4,4,0x40
1291*3a608692SPiotr Kubaj	.long	0x7FA91F19
1292*3a608692SPiotr Kubaj	subi	5,5,0x40
1293*3a608692SPiotr Kubaj	.long	0x7FCA1F19
1294*3a608692SPiotr Kubaj	addi	3,3,0x40
1295*3a608692SPiotr Kubaj	mtctr	0
1296*3a608692SPiotr Kubaj	bne	.Loop_outer_vsx
1297*3a608692SPiotr Kubaj
1298*3a608692SPiotr Kubaj.Ldone_vsx:
1299*3a608692SPiotr Kubaj	lwz	12,220(1)
1300*3a608692SPiotr Kubaj	li	10,127
1301*3a608692SPiotr Kubaj	li	11,143
1302*3a608692SPiotr Kubaj	ld	0, 240(1)
1303*3a608692SPiotr Kubaj	or	12,12,12
1304*3a608692SPiotr Kubaj	lvx	26,10,1
1305*3a608692SPiotr Kubaj	addi	10,10,32
1306*3a608692SPiotr Kubaj	lvx	27,11,1
1307*3a608692SPiotr Kubaj	addi	11,11,32
1308*3a608692SPiotr Kubaj	lvx	28,10,1
1309*3a608692SPiotr Kubaj	addi	10,10,32
1310*3a608692SPiotr Kubaj	lvx	29,11,1
1311*3a608692SPiotr Kubaj	addi	11,11,32
1312*3a608692SPiotr Kubaj	lvx	30,10,1
1313*3a608692SPiotr Kubaj	lvx	31,11,1
1314*3a608692SPiotr Kubaj	mtlr	0
1315*3a608692SPiotr Kubaj	addi	1,1,224
1316*3a608692SPiotr Kubaj	blr
1317*3a608692SPiotr Kubaj
1318*3a608692SPiotr Kubaj.align	4
1319*3a608692SPiotr Kubaj.Ltail_vsx:
1320*3a608692SPiotr Kubaj	addi	11,1,48
1321*3a608692SPiotr Kubaj	mtctr	5
1322*3a608692SPiotr Kubaj	.long	0x7C005F19
1323*3a608692SPiotr Kubaj	.long	0x7C885F19
1324*3a608692SPiotr Kubaj	.long	0x7D095F19
1325*3a608692SPiotr Kubaj	.long	0x7D8A5F19
1326*3a608692SPiotr Kubaj	subi	12,11,1
1327*3a608692SPiotr Kubaj	subi	4,4,1
1328*3a608692SPiotr Kubaj	subi	3,3,1
1329*3a608692SPiotr Kubaj
1330*3a608692SPiotr Kubaj.Loop_tail_vsx:
1331*3a608692SPiotr Kubaj	lbzu	6,1(12)
1332*3a608692SPiotr Kubaj	lbzu	7,1(4)
1333*3a608692SPiotr Kubaj	xor	6,6,7
1334*3a608692SPiotr Kubaj	stbu	6,1(3)
1335*3a608692SPiotr Kubaj	bdnz	.Loop_tail_vsx
1336*3a608692SPiotr Kubaj
1337*3a608692SPiotr Kubaj	.long	0x7E005F19
1338*3a608692SPiotr Kubaj	.long	0x7E085F19
1339*3a608692SPiotr Kubaj	.long	0x7E095F19
1340*3a608692SPiotr Kubaj	.long	0x7E0A5F19
1341*3a608692SPiotr Kubaj
1342*3a608692SPiotr Kubaj	b	.Ldone_vsx
1343*3a608692SPiotr Kubaj.long	0
1344*3a608692SPiotr Kubaj.byte	0,12,0x04,1,0x80,0,5,0
1345*3a608692SPiotr Kubaj.long	0
1346*3a608692SPiotr Kubaj.size	ChaCha20_ctr32_vsx,.-ChaCha20_ctr32_vsx
1347*3a608692SPiotr Kubaj.align	5
1348*3a608692SPiotr Kubaj.Lconsts:
1349*3a608692SPiotr Kubaj	mflr	0
1350*3a608692SPiotr Kubaj	bcl	20,31,$+4
1351*3a608692SPiotr Kubaj	mflr	12
1352*3a608692SPiotr Kubaj	addi	12,12,56
1353*3a608692SPiotr Kubaj	mtlr	0
1354*3a608692SPiotr Kubaj	blr
1355*3a608692SPiotr Kubaj.long	0
1356*3a608692SPiotr Kubaj.byte	0,12,0x14,0,0,0,0,0
1357*3a608692SPiotr Kubaj.space	28
1358*3a608692SPiotr Kubaj.Lsigma:
1359*3a608692SPiotr Kubaj.long	0x61707865,0x3320646e,0x79622d32,0x6b206574
1360*3a608692SPiotr Kubaj.long	1,0,0,0
1361*3a608692SPiotr Kubaj.long	4,0,0,0
1362*3a608692SPiotr Kubaj.long	0x0e0f0c0d,0x0a0b0809,0x06070405,0x02030001
1363*3a608692SPiotr Kubaj.long	0x0d0e0f0c,0x090a0b08,0x05060704,0x01020300
1364*3a608692SPiotr Kubaj.long	0x61707865,0x61707865,0x61707865,0x61707865
1365*3a608692SPiotr Kubaj.long	0x3320646e,0x3320646e,0x3320646e,0x3320646e
1366*3a608692SPiotr Kubaj.long	0x79622d32,0x79622d32,0x79622d32,0x79622d32
1367*3a608692SPiotr Kubaj.long	0x6b206574,0x6b206574,0x6b206574,0x6b206574
1368*3a608692SPiotr Kubaj.long	0,1,2,3
1369*3a608692SPiotr Kubaj.byte	67,104,97,67,104,97,50,48,32,102,111,114,32,80,111,119,101,114,80,67,47,65,108,116,105,86,101,99,44,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
1370*3a608692SPiotr Kubaj.align	2
1371*3a608692SPiotr Kubaj.align	2
1372