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