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