xref: /freebsd/sys/crypto/openssl/powerpc64/poly1305-ppc.S (revision c8e7f78a3d28ff6e6223ed136ada8e1e2f34965e)
1/* Do not modify. This file is auto-generated from poly1305-ppc.pl. */
2.machine	"any"
3.abiversion	2
4.text
5.globl	poly1305_init_int
6.type	poly1305_init_int,@function
7.align	4
8poly1305_init_int:
9.localentry	poly1305_init_int,0
10
11	xor	0,0,0
12	std	0,0(3)
13	std	0,8(3)
14	std	0,16(3)
15	stw	0,24(3)
16
17	cmpld	4,0
18	beq-	.Lno_key
19	li	7,4
20	lwbrx	10,0,4
21	li	11,8
22	lwbrx	7,7,4
23	li	8,12
24	lwbrx	11,11,4
25	lwbrx	8,8,4
26	insrdi	10,7,32,0
27	insrdi	11,8,32,0
28	lis	8,0xfff
29	ori	8,8,0xfffc
30	insrdi	8,8,32,0
31	ori	7,8,3
32
33	and	10,10,7
34	and	11,11,8
35
36	std	10,32(3)
37	std	11,40(3)
38
39.Lno_key:
40	xor	3,3,3
41	blr
42.long	0
43.byte	0,12,0x14,0,0,0,2,0
44.size	poly1305_init_int,.-poly1305_init_int
45
46.globl	poly1305_blocks
47.type	poly1305_blocks,@function
48.align	4
49poly1305_blocks:
50.localentry	poly1305_blocks,0
51
52.Lpoly1305_blocks:
53	srdi.	5,5,4
54	beq-	.Labort
55
56	stdu	1,-192(1)
57	mflr	0
58	std	27,152(1)
59	std	28,160(1)
60	std	29,168(1)
61	std	30,176(1)
62	std	31,184(1)
63	std	0,208(1)
64
65	ld	27,32(3)
66	ld	28,40(3)
67
68	ld	7,0(3)
69	ld	8,8(3)
70	ld	9,16(3)
71
72	srdi	29,28,2
73	mtctr	5
74	add	29,29,28
75	li	0,3
76	b	.Loop
77
78.align	4
79.Loop:
80	li	10,4
81	lwbrx	30,0,4
82	li	31,8
83	lwbrx	10,10,4
84	li	11,12
85	lwbrx	31,31,4
86	lwbrx	11,11,4
87	insrdi	30,10,32,0
88	insrdi	31,11,32,0
89	addi	4,4,16
90
91	addc	7,7,30
92	adde	8,8,31
93
94	mulld	10,7,27
95	mulhdu	11,7,27
96	adde	9,9,6
97
98	mulld	30,8,29
99	mulhdu	31,8,29
100	addc	10,10,30
101	adde	11,11,31
102
103	mulld	30,7,28
104	mulhdu	12,7,28
105	addc	11,11,30
106	addze	12,12
107
108	mulld	30,8,27
109	mulhdu	31,8,27
110	addc	11,11,30
111	adde	12,12,31
112
113	mulld	30,9,29
114	mulld	31,9,27
115	addc	11,11,30
116	adde	12,12,31
117
118	andc	30,12,0
119	and	9,12,0
120	srdi	31,30,2
121	add	30,30,31
122	addc	7,10,30
123	addze	8,11
124	addze	9,9
125
126	bdnz	.Loop
127
128	std	7,0(3)
129	std	8,8(3)
130	std	9,16(3)
131
132	ld	27,152(1)
133	ld	28,160(1)
134	ld	29,168(1)
135	ld	30,176(1)
136	ld	31,184(1)
137	addi	1,1,192
138.Labort:
139	blr
140.long	0
141.byte	0,12,4,1,0x80,5,4,0
142.size	poly1305_blocks,.-poly1305_blocks
143.globl	poly1305_emit
144.type	poly1305_emit,@function
145.align	5
146poly1305_emit:
147.localentry	poly1305_emit,0
148
149	lwz	7,0(3)
150	lwz	8,4(3)
151	lwz	9,8(3)
152	lwz	10,12(3)
153	lwz	11,16(3)
154	lwz	0,24(3)
155
156	sldi	8,8,26
157	sldi	12,9,52
158	srdi	9,9,12
159	sldi	10,10,14
160	add	7,7,8
161	addc	7,7,12
162	sldi	12,11,40
163	srdi	11,11,24
164	adde	8,9,10
165	addc	8,8,12
166	addze	9,11
167
168	ld	10,0(3)
169	ld	11,8(3)
170	ld	12,16(3)
171
172	neg	0,0
173	xor	7,7,10
174	xor	8,8,11
175	xor	9,9,12
176	and	7,7,0
177	and	8,8,0
178	and	9,9,0
179	xor	7,7,10
180	xor	8,8,11
181	xor	9,9,12
182
183	addic	10,7,5
184	addze	11,8
185	addze	12,9
186
187	srdi	12,12,2
188	neg	12,12
189
190	andc	7,7,12
191	and	10,10,12
192	andc	8,8,12
193	and	11,11,12
194	or	7,7,10
195	or	8,8,11
196
197	lwz	12,4(5)
198	lwz	9,12(5)
199	lwz	10,0(5)
200	lwz	11,8(5)
201
202	insrdi	10,12,32,0
203	insrdi	11,9,32,0
204
205	addc	7,7,10
206	adde	8,8,11
207
208	addi	3,4,-1
209	addi	4,4,7
210
211	stbu	7,1(3)
212	srdi	7,7,8
213	stbu	8,1(4)
214	srdi	8,8,8
215
216	stbu	7,1(3)
217	srdi	7,7,8
218	stbu	8,1(4)
219	srdi	8,8,8
220
221	stbu	7,1(3)
222	srdi	7,7,8
223	stbu	8,1(4)
224	srdi	8,8,8
225
226	stbu	7,1(3)
227	srdi	7,7,8
228	stbu	8,1(4)
229	srdi	8,8,8
230
231	stbu	7,1(3)
232	srdi	7,7,8
233	stbu	8,1(4)
234	srdi	8,8,8
235
236	stbu	7,1(3)
237	srdi	7,7,8
238	stbu	8,1(4)
239	srdi	8,8,8
240
241	stbu	7,1(3)
242	srdi	7,7,8
243	stbu	8,1(4)
244	srdi	8,8,8
245
246	stbu	7,1(3)
247	stbu	8,1(4)
248
249	blr
250.long	0
251.byte	0,12,0x14,0,0,0,3,0
252.size	poly1305_emit,.-poly1305_emit
253.globl	poly1305_blocks_vsx
254.type	poly1305_blocks_vsx,@function
255.align	5
256poly1305_blocks_vsx:
257.localentry	poly1305_blocks_vsx,0
258
259	lwz	7,24(3)
260	cmpldi	5,128
261	bge	__poly1305_blocks_vsx
262
263	neg	0,7
264	lwz	7,0(3)
265	lwz	8,4(3)
266	lwz	9,8(3)
267	lwz	10,12(3)
268	lwz	11,16(3)
269
270	sldi	8,8,26
271	sldi	12,9,52
272	add	7,7,8
273	srdi	9,9,12
274	sldi	10,10,14
275	addc	7,7,12
276	sldi	8,11,40
277	adde	9,9,10
278	srdi	11,11,24
279	addc	9,9,8
280	addze	11,11
281
282	ld	8,0(3)
283	ld	10,8(3)
284	ld	12,16(3)
285
286	xor	7,7,8
287	xor	9,9,10
288	xor	11,11,12
289	and	7,7,0
290	and	9,9,0
291	and	11,11,0
292	xor	7,7,8
293	xor	9,9,10
294	xor	11,11,12
295
296	li	0,0
297	std	7,0(3)
298	std	9,8(3)
299	std	11,16(3)
300	stw	0,24(3)
301
302	b	.Lpoly1305_blocks
303.long	0
304.byte	0,12,0x14,0,0,0,4,0
305.size	poly1305_blocks_vsx,.-poly1305_blocks_vsx
306
307.align	5
308__poly1305_mul:
309	mulld	9,6,27
310	mulhdu	10,6,27
311
312	mulld	30,7,29
313	mulhdu	31,7,29
314	addc	9,9,30
315	adde	10,10,31
316
317	mulld	30,6,28
318	mulhdu	11,6,28
319	addc	10,10,30
320	addze	11,11
321
322	mulld	30,7,27
323	mulhdu	31,7,27
324	addc	10,10,30
325	adde	11,11,31
326
327	mulld	30,8,29
328	mulld	31,8,27
329	addc	10,10,30
330	adde	11,11,31
331
332	andc	30,11,0
333	and	8,11,0
334	srdi	31,30,2
335	add	30,30,31
336	addc	6,9,30
337	addze	7,10
338	addze	8,8
339
340	blr
341.long	0
342.byte	0,12,0x14,0,0,0,0,0
343.size	__poly1305_mul,.-__poly1305_mul
344
345.align	5
346__poly1305_splat:
347	rldicl	9,6,0,38
348	rldicl	10,6,38,38
349	stw	9,0x00(31)
350
351	rldicl	11,6,12,52
352	slwi	9,10,2
353	stw	10,0x10(31)
354	add	9,9,10
355	stw	9,0x20(31)
356
357	insrdi	11,7,14,38
358	slwi	9,11,2
359	stw	11,0x30(31)
360	add	9,9,11
361	stw	9,0x40(31)
362
363	rldicl	10,7,50,38
364	rldicl	11,7,24,40
365	slwi	9,10,2
366	stw	10,0x50(31)
367	add	9,9,10
368	stw	9,0x60(31)
369
370	insrdi	11,8,3,37
371	slwi	9,11,2
372	stw	11,0x70(31)
373	add	9,9,11
374	stw	9,0x80(31)
375
376	blr
377.long	0
378.byte	0,12,0x14,0,0,0,0,0
379.size	__poly1305_splat,.-__poly1305_splat
380
381.align	5
382__poly1305_blocks_vsx:
383	stdu	1,-432(1)
384	mflr	0
385	li	10,191
386	li	11,207
387	li	12,-1
388	stvx	20,10,1
389	addi	10,10,32
390	stvx	21,11,1
391	addi	11,11,32
392	stvx	22,10,1
393	addi	10,10,32
394	stvx	23,10,1
395	addi	10,10,32
396	stvx	24,11,1
397	addi	11,11,32
398	stvx	25,10,1
399	addi	10,10,32
400	stvx	26,10,1
401	addi	10,10,32
402	stvx	27,11,1
403	addi	11,11,32
404	stvx	28,10,1
405	addi	10,10,32
406	stvx	29,11,1
407	addi	11,11,32
408	stvx	30,10,1
409	stvx	31,11,1
410	stw	12,388(1)
411	li	12,-1
412	or	12,12,12
413	std	27,392(1)
414	std	28,400(1)
415	std	29,408(1)
416	std	30,416(1)
417	std	31,424(1)
418	std	0,448(1)
419
420	bl	.LPICmeup
421
422	li	27,0x10
423	li	28,0x20
424	li	29,0x30
425	li	30,0x40
426	li	31,0x50
427	.long	0x7FA06699
428	.long	0x7F3B6699
429	.long	0x7F7C6699
430	.long	0x7FFD6699
431	.long	0x7FDE6699
432
433	cmplwi	7,0
434	bne	.Lskip_init_vsx
435
436	ld	27,32(3)
437	ld	28,40(3)
438	srdi	29,28,2
439	li	0,3
440	add	29,29,28
441
442	mr	6,27
443	mr	7,28
444	li	8,0
445	addi	31,3,56
446	bl	__poly1305_splat
447
448	bl	__poly1305_mul
449	addi	31,3,48
450	bl	__poly1305_splat
451
452	bl	__poly1305_mul
453	addi	31,3,60
454	bl	__poly1305_splat
455
456	bl	__poly1305_mul
457	addi	31,3,52
458	bl	__poly1305_splat
459
460	ld	6,0(3)
461	ld	7,8(3)
462	ld	8,16(3)
463
464	rldicl	9,6,0,38
465	rldicl	10,6,38,38
466	rldicl	11,6,12,52
467	.long	0x7C0901E7
468	insrdi	11,7,14,38
469	.long	0x7C2A01E7
470	rldicl	10,7,50,38
471	.long	0x7C4B01E7
472	rldicl	11,7,24,40
473	.long	0x7C6A01E7
474	insrdi	11,8,3,37
475	.long	0x7C8B01E7
476	li	0,1
477	stw	0,24(3)
478	b	.Loaded_vsx
479
480.align	4
481.Lskip_init_vsx:
482	li	27,4
483	li	28,8
484	li	29,12
485	li	30,16
486	.long	0x7C001819
487	.long	0x7C3B1819
488	.long	0x7C5C1819
489	.long	0x7C7D1819
490	.long	0x7C9E1819
491
492.Loaded_vsx:
493	li	27,0x10
494	li	28,0x20
495	li	29,0x30
496	li	30,0x40
497	li	31,0x50
498	li	7,0x60
499	li	8,0x70
500	addi	10,3,64
501	addi	11,1,63
502
503	vxor	20,20,20
504	.long	0xF000A057
505	.long	0xF021A057
506	.long	0xF042A057
507	.long	0xF063A057
508	.long	0xF084A057
509
510	.long	0x7F5F6699
511	.long	0x7EA02699
512	.long	0x7EDB2699
513	.long	0x7EFC2699
514	.long	0x7F1D2699
515	vperm	21,21,21,26
516	vperm	22,22,22,26
517	vperm	23,23,23,26
518	vperm	24,24,24,26
519
520	.long	0xF0B5B057
521	vspltisb	26,4
522	vperm	7,21,22,31
523	vspltisb	28,14
524	.long	0xF115B357
525
526	.long	0x10C5CEC4
527	.long	0x10E7D6C4
528	.long	0x1128DEC4
529	.long	0x1108E6C4
530	vand	5,5,29
531	vand	6,6,29
532	vand	7,7,29
533	vand	8,8,29
534
535	.long	0xF2B7C057
536	vperm	22,23,24,31
537	.long	0xF2F7C357
538
539	.long	0x1295CEC4
540	.long	0x12D6D6C4
541	.long	0x1317DEC4
542	.long	0x12F7E6C4
543	vand	21,21,29
544	vand	20,20,29
545	vand	22,22,29
546	vand	23,23,29
547
548
549	.long	0x11384E8C
550	.long	0x10B52E8C
551	.long	0x10D4368C
552	.long	0x10F63E8C
553	.long	0x1117468C
554	vor	9,9,30
555
556	.long	0x7D5D1A99
557	.long	0x7D605299
558	.long	0x7D9B5299
559	.long	0x7DBC5299
560	.long	0x7DDD5299
561	.long	0x7EBE5299
562	.long	0x7EDF5299
563	.long	0x7EE75299
564	.long	0x7F085299
565	stvx	11,0,11
566	stvx	12,27,11
567	stvx	13,28,11
568	stvx	14,29,11
569	stvx	21,30,11
570	stvx	22,31,11
571	stvx	23,7,11
572	stvx	24,8,11
573
574	addi	4,4,0x40
575	addi	12,12,0x50
576	addi	0,5,-64
577	srdi	0,0,6
578	mtctr	0
579	b	.Loop_vsx
580
581.align	4
582.Loop_vsx:
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597	.long	0x11E55288
598	.long	0x12055A88
599	.long	0x12256A88
600	.long	0x12466A88
601
602	.long	0x12865288
603	.long	0x1210A0C0
604	.long	0x12865A88
605	.long	0x1231A0C0
606	.long	0x12676A88
607	.long	0x12896288
608	.long	0x11EFA0C0
609	.long	0x12875A88
610	.long	0x1252A0C0
611	lvx	12,31,11
612	.long	0x12885A88
613	.long	0x1273A0C0
614	lvx	11,30,11
615
616	.long	0x104238C0
617	.long	0x100028C0
618	.long	0x106340C0
619	.long	0x102130C0
620	.long	0x108448C0
621
622	.long	0x12887288
623	.long	0x11EFA0C0
624	.long	0x12897288
625	.long	0x1210A0C0
626	.long	0x12875288
627	.long	0x1231A0C0
628	.long	0x12885288
629	.long	0x1252A0C0
630	lvx	14,8,11
631	.long	0x12895288
632	.long	0x1273A0C0
633	lvx	13,7,11
634
635	.long	0x12876288
636	.long	0x11EFA0C0
637	.long	0x12886288
638	.long	0x1210A0C0
639	.long	0x12896288
640	.long	0x1231A0C0
641	.long	0x12855A88
642	.long	0x1252A0C0
643	.long	0x12865A88
644	.long	0x1273A0C0
645
646	.long	0x7F406699
647	.long	0x7EA02699
648	.long	0x7EDB2699
649	.long	0x7EFC2699
650	.long	0x7F1D2699
651	vperm	21,21,21,26
652	vperm	22,22,22,26
653	vperm	23,23,23,26
654	vperm	24,24,24,26
655
656	.long	0x12867288
657	.long	0x11EFA0C0
658	.long	0x12877288
659	.long	0x1210A0C0
660	.long	0x12887288
661	.long	0x1231A0C0
662	.long	0x12897288
663	.long	0x1252A0C0
664	.long	0x12856A88
665	.long	0x1273A0C0
666
667	.long	0xF0B5B057
668	vspltisb	26,4
669	vperm	7,21,22,31
670	.long	0xF115B357
671
672
673	.long	0x12805088
674	.long	0x11EFA0C0
675	.long	0x12815088
676	.long	0x1210A0C0
677	.long	0x12825088
678	.long	0x1231A0C0
679	.long	0x12835088
680	.long	0x1252A0C0
681	.long	0x12845088
682	.long	0x1273A0C0
683
684	.long	0xF2B7C057
685	vperm	22,23,24,31
686	.long	0xF2F7C357
687
688	.long	0x12826088
689	.long	0x11EFA0C0
690	.long	0x12836088
691	.long	0x1210A0C0
692	.long	0x12846088
693	.long	0x1231A0C0
694	.long	0x12805888
695	.long	0x1252A0C0
696	lvx	12,27,11
697	.long	0x12815888
698	.long	0x1273A0C0
699	lvx	11,0,11
700
701	.long	0x10C5CEC4
702	.long	0x10E7D6C4
703	.long	0x1128DEC4
704	.long	0x1108E6C4
705
706	.long	0x12817088
707	.long	0x11EFA0C0
708	.long	0x12827088
709	.long	0x1210A0C0
710	.long	0x12837088
711	.long	0x1231A0C0
712	.long	0x12847088
713	.long	0x1252A0C0
714	lvx	14,29,11
715	.long	0x12806888
716	.long	0x1273A0C0
717	lvx	13,28,11
718
719	vand	5,5,29
720	vand	6,6,29
721	vand	7,7,29
722	vand	8,8,29
723
724	.long	0x12846088
725	.long	0x11EFA0C0
726	.long	0x12805888
727	.long	0x1210A0C0
728	.long	0x12815888
729	.long	0x1231A0C0
730	.long	0x12825888
731	.long	0x1252A0C0
732	.long	0x12835888
733	.long	0x1273A0C0
734
735	.long	0x12D6D6C4
736	.long	0x1355CEC4
737	.long	0x1317DEC4
738	.long	0x12F7E6C4
739
740	.long	0x12837088
741	.long	0x11EFA0C0
742	.long	0x12847088
743	.long	0x1210A0C0
744	.long	0x12806888
745	.long	0x1231A0C0
746	.long	0x12816888
747	.long	0x1252A0C0
748	.long	0x12826888
749	.long	0x1273A0C0
750
751	vand	21,21,29
752	vand	26,26,29
753	vand	22,22,29
754	vand	23,23,29
755
756
757
758
759
760	vspltisb	20,2
761	.long	0x1092CEC4
762	.long	0x102FCEC4
763	vand	3,18,29
764	vand	0,15,29
765	.long	0x108498C0
766	.long	0x102180C0
767
768	.long	0x11384E8C
769	.long	0x10B52E8C
770	.long	0x10DA368C
771	.long	0x10F63E8C
772	.long	0x1117468C
773	vor	9,9,30
774
775	.long	0x1264CEC4
776	.long	0x1201CEC4
777	vand	4,4,29
778	vand	1,1,29
779	.long	0x100098C0
780	.long	0x105180C0
781
782	.long	0x1273A5C4
783	.long	0x1222CEC4
784	vand	2,2,29
785	.long	0x100098C0
786	.long	0x106388C0
787
788	.long	0x11E0CEC4
789	.long	0x1243CEC4
790	vand	0,0,29
791	vand	3,3,29
792	.long	0x102178C0
793	.long	0x108490C0
794
795	addi	4,4,0x40
796	bdnz	.Loop_vsx
797
798	neg	5,5
799	andi.	5,5,0x30
800	sub	4,4,5
801
802	.long	0x7D5D1E99
803	.long	0x7D605699
804	.long	0x7D9B5699
805	.long	0x7DBC5699
806	.long	0x7DDD5699
807
808.Last_vsx:
809	.long	0x11E55288
810	.long	0x12065288
811	.long	0x12275288
812	.long	0x12485288
813	.long	0x12695288
814
815	.long	0x12896288
816	.long	0x11EFA0C0
817	.long	0x12855A88
818	.long	0x1210A0C0
819	.long	0x12865A88
820	.long	0x1231A0C0
821	.long	0x12875A88
822	.long	0x1252A0C0
823	.long	0x7D9F5699
824	.long	0x12885A88
825	.long	0x1273A0C0
826	.long	0x7D7E5699
827
828	.long	0x104238C0
829	.long	0x100028C0
830	.long	0x106340C0
831	.long	0x102130C0
832	.long	0x108448C0
833
834	.long	0x12887288
835	.long	0x11EFA0C0
836	.long	0x12897288
837	.long	0x1210A0C0
838	.long	0x12856A88
839	.long	0x1231A0C0
840	.long	0x12866A88
841	.long	0x1252A0C0
842	.long	0x7DC85699
843	.long	0x12876A88
844	.long	0x1273A0C0
845	.long	0x7DA75699
846
847	.long	0x12876288
848	.long	0x11EFA0C0
849	.long	0x12886288
850	.long	0x1210A0C0
851	.long	0x12896288
852	.long	0x1231A0C0
853	.long	0x12855A88
854	.long	0x1252A0C0
855	.long	0x12865A88
856	.long	0x1273A0C0
857
858	.long	0x12867288
859	.long	0x11EFA0C0
860	.long	0x12877288
861	.long	0x1210A0C0
862	.long	0x12887288
863	.long	0x1231A0C0
864	.long	0x12897288
865	.long	0x1252A0C0
866	.long	0x12856A88
867	.long	0x1273A0C0
868
869
870	.long	0x12805088
871	.long	0x11EFA0C0
872	.long	0x12815088
873	.long	0x1210A0C0
874	.long	0x12825088
875	.long	0x1231A0C0
876	.long	0x12835088
877	.long	0x1252A0C0
878	.long	0x12845088
879	.long	0x1273A0C0
880
881	.long	0x12826088
882	.long	0x11EFA0C0
883	.long	0x12836088
884	.long	0x1210A0C0
885	.long	0x12846088
886	.long	0x1231A0C0
887	.long	0x12805888
888	.long	0x1252A0C0
889	.long	0x7D9B5699
890	.long	0x12815888
891	.long	0x1273A0C0
892	.long	0x7D605699
893
894	.long	0x12817088
895	.long	0x11EFA0C0
896	.long	0x12827088
897	.long	0x1210A0C0
898	.long	0x12837088
899	.long	0x1231A0C0
900	.long	0x12847088
901	.long	0x1252A0C0
902	.long	0x7DDD5699
903	.long	0x12806888
904	.long	0x1273A0C0
905	.long	0x7DBC5699
906
907	.long	0x12846088
908	.long	0x11EFA0C0
909	.long	0x12805888
910	.long	0x1210A0C0
911	.long	0x12815888
912	.long	0x1231A0C0
913	.long	0x12825888
914	.long	0x1252A0C0
915	.long	0x12835888
916	.long	0x1273A0C0
917
918	.long	0x12837088
919	.long	0x11EFA0C0
920	.long	0x12847088
921	.long	0x1210A0C0
922	.long	0x12806888
923	.long	0x1231A0C0
924	.long	0x12816888
925	.long	0x1252A0C0
926	.long	0x12826888
927	.long	0x1273A0C0
928
929
930
931
932	.long	0xF00F7A57
933	.long	0xF0308257
934	.long	0xF0518A57
935	.long	0xF0729257
936	.long	0xF0939A57
937	.long	0x11EF00C0
938	.long	0x121008C0
939	.long	0x123110C0
940	.long	0x125218C0
941	.long	0x127320C0
942
943
944
945
946	vspltisb	20,2
947	.long	0x1092CEC4
948	.long	0x102FCEC4
949	vand	3,18,29
950	vand	0,15,29
951	.long	0x108498C0
952	.long	0x102180C0
953
954	.long	0x1264CEC4
955	.long	0x1201CEC4
956	vand	4,4,29
957	vand	1,1,29
958	.long	0x100098C0
959	.long	0x105180C0
960
961	.long	0x1273A5C4
962	.long	0x1222CEC4
963	vand	2,2,29
964	.long	0x100098C0
965	.long	0x106388C0
966
967	.long	0x11E0CEC4
968	.long	0x1243CEC4
969	vand	0,0,29
970	vand	3,3,29
971	.long	0x102178C0
972	.long	0x108490C0
973
974	beq	.Ldone_vsx
975
976	add	6,12,5
977
978	.long	0x7F406699
979	.long	0x7EA02699
980	.long	0x7EDB2699
981	.long	0x7EFC2699
982	.long	0x7F1D2699
983	vperm	21,21,21,26
984	vperm	22,22,22,26
985	vperm	23,23,23,26
986	vperm	24,24,24,26
987
988	.long	0xF0B5B057
989	vspltisb	26,4
990	vperm	7,21,22,31
991	.long	0xF115B357
992
993	.long	0x10C5CEC4
994	.long	0x10E7D6C4
995	.long	0x1128DEC4
996	.long	0x1108E6C4
997	vand	5,5,29
998	vand	6,6,29
999	vand	7,7,29
1000	vand	8,8,29
1001
1002	.long	0xF297C057
1003	vperm	21,23,24,31
1004	.long	0xF2D7C357
1005
1006	.long	0x7DE03699
1007	.long	0x7E1D3699
1008
1009	.long	0x12F4CEC4
1010	.long	0x12B5D6C4
1011	.long	0x1316DEC4
1012	.long	0x12D6E6C4
1013	vand	20,20,29
1014	vand	23,23,29
1015	vand	21,21,29
1016	vand	22,22,29
1017
1018
1019	.long	0x11384E8C
1020	.long	0x10B42E8C
1021	.long	0x10D7368C
1022	.long	0x10F53E8C
1023	.long	0x1116468C
1024	vor	9,9,30
1025
1026	vperm	0,0,0,15
1027	vand	5,5,    16
1028	vperm	1,1,1,15
1029	vand	6,6,    16
1030	vperm	2,2,2,15
1031	vand	7,7,    16
1032	vperm	3,3,3,15
1033	vand	8,8,    16
1034	vperm	4,4,4,15
1035	vand	9,9,    16
1036
1037	.long	0x10A500C0
1038	vxor	0,0,0
1039	.long	0x10C608C0
1040	vxor	1,1,1
1041	.long	0x10E710C0
1042	vxor	2,2,2
1043	.long	0x110818C0
1044	vxor	3,3,3
1045	.long	0x112920C0
1046	vxor	4,4,4
1047
1048	xor.	5,5,5
1049	b	.Last_vsx
1050
1051.align	4
1052.Ldone_vsx:
1053	ld	0,448(1)
1054	li	27,4
1055	li	28,8
1056	li	29,12
1057	li	30,16
1058	.long	0x7C001919
1059	.long	0x7C3B1919
1060	.long	0x7C5C1919
1061	.long	0x7C7D1919
1062	.long	0x7C9E1919
1063
1064	lwz	12,388(1)
1065	mtlr	0
1066	li	10,191
1067	li	11,207
1068	or	12,12,12
1069	lvx	20,10,1
1070	addi	10,10,32
1071	lvx	21,10,1
1072	addi	10,10,32
1073	lvx	22,11,1
1074	addi	11,11,32
1075	lvx	23,10,1
1076	addi	10,10,32
1077	lvx	24,11,1
1078	addi	11,11,32
1079	lvx	25,10,1
1080	addi	10,10,32
1081	lvx	26,11,1
1082	addi	11,11,32
1083	lvx	27,10,1
1084	addi	10,10,32
1085	lvx	28,11,1
1086	addi	11,11,32
1087	lvx	29,10,1
1088	addi	10,10,32
1089	lvx	30,11,1
1090	lvx	31,10,1
1091	ld	27,392(1)
1092	ld	28,400(1)
1093	ld	29,408(1)
1094	ld	30,416(1)
1095	ld	31,424(1)
1096	addi	1,1,432
1097	blr
1098.long	0
1099.byte	0,12,0x04,1,0x80,5,4,0
1100.long	0
1101.size	__poly1305_blocks_vsx,.-__poly1305_blocks_vsx
1102
1103.align	6
1104.LPICmeup:
1105	mflr	0
1106	bcl	20,31,$+4
1107	mflr	12
1108	addi	12,12,56
1109	mtlr	0
1110	blr
1111.long	0
1112.byte	0,12,0x14,0,0,0,0,0
1113.space	28
1114
1115.long	0x00000000,0x03ffffff
1116.long	0x00000000,0x03ffffff
1117.long	0x00000000,0x0000001a
1118.long	0x00000000,0x0000001a
1119.long	0x00000000,0x00000028
1120.long	0x00000000,0x00000028
1121.long	0x00000000,0x0e0f0001
1122.long	0x00000000,0x1e1f1011
1123.long	0x01000000,0x01000000
1124.long	0x01000000,0x01000000
1125.long	0x07060504,0x03020100
1126.long	0x0f0e0d0c,0x0b0a0908
1127
1128.long	0x00000000,0x00000000
1129.long	0x00000000,0x04050607
1130.long	0x04050607,0x00000000
1131.long	0x00000000,0x00000000
1132.long	0x00000000,0x00000000
1133.long	0x04050607,0x00000000
1134
1135.long	0xffffffff,0x00000000
1136.long	0xffffffff,0xffffffff
1137.long	0xffffffff,0x00000000
1138.long	0xffffffff,0x00000000
1139.long	0x00000000,0x00000000
1140.long	0xffffffff,0x00000000
1141.byte	80,111,108,121,49,51,48,53,32,102,111,114,32,80,80,67,44,67,82,89,80,84,79,71,65,77,83,32,98,121,32,64,100,111,116,45,97,115,109,0
1142.align	2
1143