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