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