xref: /freebsd/sys/crypto/openssl/powerpc64le/ppc.S (revision 5956d97f4b3204318ceb6aa9c77bd0bc6ea87a41)
1/* $FreeBSD$ */
2/* Do not modify. This file is auto-generated from ppc.pl. */
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85.globl	bn_sqr_comba4
86.type	bn_sqr_comba4,@function
87.globl	bn_sqr_comba8
88.type	bn_sqr_comba8,@function
89.globl	bn_mul_comba4
90.type	bn_mul_comba4,@function
91.globl	bn_mul_comba8
92.type	bn_mul_comba8,@function
93.globl	bn_sub_words
94.type	bn_sub_words,@function
95.globl	bn_add_words
96.type	bn_add_words,@function
97.globl	bn_div_words
98.type	bn_div_words,@function
99.globl	bn_sqr_words
100.type	bn_sqr_words,@function
101.globl	bn_mul_words
102.type	bn_mul_words,@function
103.globl	bn_mul_add_words
104.type	bn_mul_add_words,@function
105
106
107
108.machine	"any"
109.abiversion	2
110.text
111
112
113
114
115
116
117
118
119.align	4
120bn_sqr_comba4:
121.localentry	bn_sqr_comba4,0
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138	xor	0,0,0
139
140
141
142	ld	5,0(4)
143	mulld	9,5,5
144	mulhdu	10,5,5
145
146
147
148
149	std	9,0(3)
150
151	ld	6,8(4)
152	mulld	7,5,6
153	mulhdu	8,5,6
154
155	addc	7,7,7
156	adde	8,8,8
157	addze	9,0
158
159
160	addc	10,7,10
161	addze	11,8
162	addze	9,9
163
164	std	10,8(3)
165
166	mulld	7,6,6
167	mulhdu	8,6,6
168	addc	11,7,11
169	adde	9,8,9
170	addze	10,0
171
172	ld	6,16(4)
173	mulld	7,5,6
174	mulhdu	8,5,6
175
176	addc	7,7,7
177	adde	8,8,8
178	addze	10,10
179
180	addc	11,7,11
181	adde	9,8,9
182	addze	10,10
183	std	11,16(3)
184
185	ld	6,24(4)
186	mulld	7,5,6
187	mulhdu	8,5,6
188	addc	7,7,7
189	adde	8,8,8
190	addze	11,0
191
192	addc	9,7,9
193	adde	10,8,10
194	addze	11,11
195
196	ld	5,8(4)
197	ld	6,16(4)
198	mulld	7,5,6
199	mulhdu	8,5,6
200
201	addc	7,7,7
202	adde	8,8,8
203	addze	11,11
204	addc	9,7,9
205	adde	10,8,10
206	addze	11,11
207	std	9,24(3)
208
209	mulld	7,6,6
210	mulhdu	8,6,6
211	addc	10,7,10
212	adde	11,8,11
213	addze	9,0
214
215	ld	6,24(4)
216	mulld	7,5,6
217	mulhdu	8,5,6
218	addc	7,7,7
219	adde	8,8,8
220	addze	9,9
221
222	addc	10,7,10
223	adde	11,8,11
224	addze	9,9
225	std	10,32(3)
226
227	ld	5,16(4)
228	mulld	7,5,6
229	mulhdu	8,5,6
230	addc	7,7,7
231	adde	8,8,8
232	addze	10,0
233
234	addc	11,7,11
235	adde	9,8,9
236	addze	10,10
237	std	11,40(3)
238
239	mulld	7,6,6
240	mulhdu	8,6,6
241	addc	9,7,9
242	adde	10,8,10
243
244	std	9,48(3)
245	std	10,56(3)
246	blr
247.long	0
248.byte	0,12,0x14,0,0,0,2,0
249.long	0
250.size	bn_sqr_comba4,.-bn_sqr_comba4
251
252
253
254
255
256
257
258
259.align	4
260bn_sqr_comba8:
261.localentry	bn_sqr_comba8,0
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282	xor	0,0,0
283
284
285
286	ld	5,0(4)
287	mulld	9,5,5
288	mulhdu	10,5,5
289	std	9,0(3)
290
291	ld	6,8(4)
292	mulld	7,5,6
293	mulhdu	8,5,6
294
295	addc	10,7,10
296	adde	11,8,0
297	addze	9,0
298
299	addc	10,7,10
300	adde	11,8,11
301	addze	9,9
302
303	std	10,8(3)
304
305
306	mulld	7,6,6
307	mulhdu	8,6,6
308	addc	11,7,11
309	adde	9,8,9
310	addze	10,0
311
312	ld	6,16(4)
313	mulld	7,5,6
314	mulhdu	8,5,6
315
316	addc	11,7,11
317	adde	9,8,9
318	addze	10,10
319
320	addc	11,7,11
321	adde	9,8,9
322	addze	10,10
323
324	std	11,16(3)
325
326	ld	6,24(4)
327	mulld	7,5,6
328	mulhdu	8,5,6
329
330	addc	9,7,9
331	adde	10,8,10
332	addze	11,0
333
334	addc	9,7,9
335	adde	10,8,10
336	addze	11,11
337
338	ld	5,8(4)
339	ld	6,16(4)
340	mulld	7,5,6
341	mulhdu	8,5,6
342
343	addc	9,7,9
344	adde	10,8,10
345	addze	11,11
346
347	addc	9,7,9
348	adde	10,8,10
349	addze	11,11
350
351	std	9,24(3)
352
353	mulld	7,6,6
354	mulhdu	8,6,6
355
356	addc	10,7,10
357	adde	11,8,11
358	addze	9,0
359
360	ld	6,24(4)
361	mulld	7,5,6
362	mulhdu	8,5,6
363
364	addc	10,7,10
365	adde	11,8,11
366	addze	9,9
367
368	addc	10,7,10
369	adde	11,8,11
370	addze	9,9
371
372	ld	5,0(4)
373	ld	6,32(4)
374	mulld	7,5,6
375	mulhdu	8,5,6
376
377	addc	10,7,10
378	adde	11,8,11
379	addze	9,9
380
381	addc	10,7,10
382	adde	11,8,11
383	addze	9,9
384	std	10,32(3)
385
386	ld	6,40(4)
387	mulld	7,5,6
388	mulhdu	8,5,6
389
390	addc	11,7,11
391	adde	9,8,9
392	addze	10,0
393
394	addc	11,7,11
395	adde	9,8,9
396	addze	10,10
397
398	ld	5,8(4)
399	ld	6,32(4)
400	mulld	7,5,6
401	mulhdu	8,5,6
402
403	addc	11,7,11
404	adde	9,8,9
405	addze	10,10
406
407	addc	11,7,11
408	adde	9,8,9
409	addze	10,10
410
411	ld	5,16(4)
412	ld	6,24(4)
413	mulld	7,5,6
414	mulhdu	8,5,6
415
416	addc	11,7,11
417	adde	9,8,9
418	addze	10,10
419
420	addc	11,7,11
421	adde	9,8,9
422	addze	10,10
423	std	11,40(3)
424
425	mulld	7,6,6
426	mulhdu	8,6,6
427	addc	9,7,9
428	adde	10,8,10
429	addze	11,0
430
431	ld	6,32(4)
432	mulld	7,5,6
433	mulhdu	8,5,6
434
435	addc	9,7,9
436	adde	10,8,10
437	addze	11,11
438
439	addc	9,7,9
440	adde	10,8,10
441	addze	11,11
442
443	ld	5,8(4)
444	ld	6,40(4)
445	mulld	7,5,6
446	mulhdu	8,5,6
447
448	addc	9,7,9
449	adde	10,8,10
450	addze	11,11
451
452	addc	9,7,9
453	adde	10,8,10
454	addze	11,11
455
456	ld	5,0(4)
457	ld	6,48(4)
458	mulld	7,5,6
459	mulhdu	8,5,6
460	addc	9,7,9
461	adde	10,8,10
462	addze	11,11
463	addc	9,7,9
464	adde	10,8,10
465	addze	11,11
466	std	9,48(3)
467
468	ld	6,56(4)
469	mulld	7,5,6
470	mulhdu	8,5,6
471
472	addc	10,7,10
473	adde	11,8,11
474	addze	9,0
475	addc	10,7,10
476	adde	11,8,11
477	addze	9,9
478
479	ld	5,8(4)
480	ld	6,48(4)
481	mulld	7,5,6
482	mulhdu	8,5,6
483
484	addc	10,7,10
485	adde	11,8,11
486	addze	9,9
487	addc	10,7,10
488	adde	11,8,11
489	addze	9,9
490
491	ld	5,16(4)
492	ld	6,40(4)
493	mulld	7,5,6
494	mulhdu	8,5,6
495	addc	10,7,10
496	adde	11,8,11
497	addze	9,9
498	addc	10,7,10
499	adde	11,8,11
500	addze	9,9
501
502	ld	5,24(4)
503	ld	6,32(4)
504	mulld	7,5,6
505	mulhdu	8,5,6
506
507	addc	10,7,10
508	adde	11,8,11
509	addze	9,9
510	addc	10,7,10
511	adde	11,8,11
512	addze	9,9
513	std	10,56(3)
514
515	mulld	7,6,6
516	mulhdu	8,6,6
517	addc	11,7,11
518	adde	9,8,9
519	addze	10,0
520
521	ld	6,40(4)
522	mulld	7,5,6
523	mulhdu	8,5,6
524	addc	11,7,11
525	adde	9,8,9
526	addze	10,10
527	addc	11,7,11
528	adde	9,8,9
529	addze	10,10
530
531	ld	5,16(4)
532	ld	6,48(4)
533	mulld	7,5,6
534	mulhdu	8,5,6
535	addc	11,7,11
536	adde	9,8,9
537	addze	10,10
538
539	addc	11,7,11
540	adde	9,8,9
541	addze	10,10
542
543	ld	5,8(4)
544	ld	6,56(4)
545	mulld	7,5,6
546	mulhdu	8,5,6
547	addc	11,7,11
548	adde	9,8,9
549	addze	10,10
550	addc	11,7,11
551	adde	9,8,9
552	addze	10,10
553	std	11,64(3)
554
555	ld	5,16(4)
556	mulld	7,5,6
557	mulhdu	8,5,6
558
559	addc	9,7,9
560	adde	10,8,10
561	addze	11,0
562	addc	9,7,9
563	adde	10,8,10
564	addze	11,11
565
566	ld	5,24(4)
567	ld	6,48(4)
568	mulld	7,5,6
569	mulhdu	8,5,6
570	addc	9,7,9
571	adde	10,8,10
572	addze	11,11
573	addc	9,7,9
574	adde	10,8,10
575	addze	11,11
576
577	ld	5,32(4)
578	ld	6,40(4)
579	mulld	7,5,6
580	mulhdu	8,5,6
581	addc	9,7,9
582	adde	10,8,10
583	addze	11,11
584	addc	9,7,9
585	adde	10,8,10
586	addze	11,11
587	std	9,72(3)
588
589	mulld	7,6,6
590	mulhdu	8,6,6
591	addc	10,7,10
592	adde	11,8,11
593	addze	9,0
594
595	ld	6,48(4)
596	mulld	7,5,6
597	mulhdu	8,5,6
598	addc	10,7,10
599	adde	11,8,11
600	addze	9,9
601	addc	10,7,10
602	adde	11,8,11
603	addze	9,9
604
605	ld	5,24(4)
606	ld	6,56(4)
607	mulld	7,5,6
608	mulhdu	8,5,6
609	addc	10,7,10
610	adde	11,8,11
611	addze	9,9
612	addc	10,7,10
613	adde	11,8,11
614	addze	9,9
615	std	10,80(3)
616
617	ld	5,32(4)
618	mulld	7,5,6
619	mulhdu	8,5,6
620	addc	11,7,11
621	adde	9,8,9
622	addze	10,0
623	addc	11,7,11
624	adde	9,8,9
625	addze	10,10
626
627	ld	5,40(4)
628	ld	6,48(4)
629	mulld	7,5,6
630	mulhdu	8,5,6
631	addc	11,7,11
632	adde	9,8,9
633	addze	10,10
634	addc	11,7,11
635	adde	9,8,9
636	addze	10,10
637	std	11,88(3)
638
639	mulld	7,6,6
640	mulhdu	8,6,6
641	addc	9,7,9
642	adde	10,8,10
643	addze	11,0
644
645	ld	6,56(4)
646	mulld	7,5,6
647	mulhdu	8,5,6
648	addc	9,7,9
649	adde	10,8,10
650	addze	11,11
651	addc	9,7,9
652	adde	10,8,10
653	addze	11,11
654	std	9,96(3)
655
656
657	ld	5,48(4)
658	mulld	7,5,6
659	mulhdu	8,5,6
660	addc	10,7,10
661	adde	11,8,11
662	addze	9,0
663	addc	10,7,10
664	adde	11,8,11
665	addze	9,9
666	std	10,104(3)
667
668	mulld	7,6,6
669	mulhdu	8,6,6
670	addc	11,7,11
671	adde	9,8,9
672	std	11,112(3)
673	std	9, 120(3)
674
675
676	blr
677.long	0
678.byte	0,12,0x14,0,0,0,2,0
679.long	0
680.size	bn_sqr_comba8,.-bn_sqr_comba8
681
682
683
684
685
686
687
688
689.align	4
690bn_mul_comba4:
691.localentry	bn_mul_comba4,0
692
693
694
695
696
697
698
699
700
701
702
703
704	xor	0,0,0
705
706	ld	6,0(4)
707	ld	7,0(5)
708	mulld	10,6,7
709	mulhdu	11,6,7
710	std	10,0(3)
711
712	ld	7,8(5)
713	mulld	8,6,7
714	mulhdu	9,6,7
715	addc	11,8,11
716	adde	12,9,0
717	addze	10,0
718
719	ld	6, 8(4)
720	ld	7, 0(5)
721	mulld	8,6,7
722	mulhdu	9,6,7
723	addc	11,8,11
724	adde	12,9,12
725	addze	10,10
726	std	11,8(3)
727
728	ld	6,16(4)
729	mulld	8,6,7
730	mulhdu	9,6,7
731	addc	12,8,12
732	adde	10,9,10
733	addze	11,0
734
735	ld	6,8(4)
736	ld	7,8(5)
737	mulld	8,6,7
738	mulhdu	9,6,7
739	addc	12,8,12
740	adde	10,9,10
741	addze	11,11
742
743	ld	6,0(4)
744	ld	7,16(5)
745	mulld	8,6,7
746	mulhdu	9,6,7
747	addc	12,8,12
748	adde	10,9,10
749	addze	11,11
750	std	12,16(3)
751
752	ld	7,24(5)
753	mulld	8,6,7
754	mulhdu	9,6,7
755	addc	10,8,10
756	adde	11,9,11
757	addze	12,0
758
759	ld	6,8(4)
760	ld	7,16(5)
761	mulld	8,6,7
762	mulhdu	9,6,7
763	addc	10,8,10
764	adde	11,9,11
765	addze	12,12
766
767	ld	6,16(4)
768	ld	7,8(5)
769	mulld	8,6,7
770	mulhdu	9,6,7
771	addc	10,8,10
772	adde	11,9,11
773	addze	12,12
774
775	ld	6,24(4)
776	ld	7,0(5)
777	mulld	8,6,7
778	mulhdu	9,6,7
779	addc	10,8,10
780	adde	11,9,11
781	addze	12,12
782	std	10,24(3)
783
784	ld	7,8(5)
785	mulld	8,6,7
786	mulhdu	9,6,7
787	addc	11,8,11
788	adde	12,9,12
789	addze	10,0
790
791	ld	6,16(4)
792	ld	7,16(5)
793	mulld	8,6,7
794	mulhdu	9,6,7
795	addc	11,8,11
796	adde	12,9,12
797	addze	10,10
798
799	ld	6,8(4)
800	ld	7,24(5)
801	mulld	8,6,7
802	mulhdu	9,6,7
803	addc	11,8,11
804	adde	12,9,12
805	addze	10,10
806	std	11,32(3)
807
808	ld	6,16(4)
809	mulld	8,6,7
810	mulhdu	9,6,7
811	addc	12,8,12
812	adde	10,9,10
813	addze	11,0
814
815	ld	6,24(4)
816	ld	7,16(5)
817	mulld	8,6,7
818	mulhdu	9,6,7
819	addc	12,8,12
820	adde	10,9,10
821	addze	11,11
822	std	12,40(3)
823
824	ld	7,24(5)
825	mulld	8,6,7
826	mulhdu	9,6,7
827	addc	10,8,10
828	adde	11,9,11
829
830	std	10,48(3)
831	std	11,56(3)
832	blr
833.long	0
834.byte	0,12,0x14,0,0,0,3,0
835.long	0
836.size	bn_mul_comba4,.-bn_mul_comba4
837
838
839
840
841
842
843
844
845.align	4
846bn_mul_comba8:
847.localentry	bn_mul_comba8,0
848
849
850
851
852
853
854
855
856
857
858
859
860	xor	0,0,0
861
862
863	ld	6,0(4)
864	ld	7,0(5)
865	mulld	10,6,7
866	mulhdu	11,6,7
867	std	10,0(3)
868
869	ld	7,8(5)
870	mulld	8,6,7
871	mulhdu	9,6,7
872	addc	11,11,8
873	addze	12,9
874	addze	10,0
875
876	ld	6,8(4)
877	ld	7,0(5)
878	mulld	8,6,7
879	mulhdu	9,6,7
880	addc	11,11,8
881	adde	12,12,9
882	addze	10,10
883	std	11,8(3)
884
885	ld	6,16(4)
886	mulld	8,6,7
887	mulhdu	9,6,7
888	addc	12,12,8
889	adde	10,10,9
890	addze	11,0
891
892	ld	6,8(4)
893	ld	7,8(5)
894	mulld	8,6,7
895	mulhdu	9,6,7
896	addc	12,12,8
897	adde	10,10,9
898	addze	11,11
899
900	ld	6,0(4)
901	ld	7,16(5)
902	mulld	8,6,7
903	mulhdu	9,6,7
904	addc	12,12,8
905	adde	10,10,9
906	addze	11,11
907	std	12,16(3)
908
909	ld	7,24(5)
910	mulld	8,6,7
911	mulhdu	9,6,7
912	addc	10,10,8
913	adde	11,11,9
914	addze	12,0
915
916	ld	6,8(4)
917	ld	7,16(5)
918	mulld	8,6,7
919	mulhdu	9,6,7
920	addc	10,10,8
921	adde	11,11,9
922	addze	12,12
923
924
925	ld	6,16(4)
926	ld	7,8(5)
927	mulld	8,6,7
928	mulhdu	9,6,7
929	addc	10,10,8
930	adde	11,11,9
931	addze	12,12
932
933	ld	6,24(4)
934	ld	7,0(5)
935	mulld	8,6,7
936	mulhdu	9,6,7
937	addc	10,10,8
938	adde	11,11,9
939	addze	12,12
940	std	10,24(3)
941
942	ld	6,32(4)
943	mulld	8,6,7
944	mulhdu	9,6,7
945	addc	11,11,8
946	adde	12,12,9
947	addze	10,0
948
949	ld	6,24(4)
950	ld	7,8(5)
951	mulld	8,6,7
952	mulhdu	9,6,7
953	addc	11,11,8
954	adde	12,12,9
955	addze	10,10
956
957	ld	6,16(4)
958	ld	7,16(5)
959	mulld	8,6,7
960	mulhdu	9,6,7
961	addc	11,11,8
962	adde	12,12,9
963	addze	10,10
964
965	ld	6,8(4)
966	ld	7,24(5)
967	mulld	8,6,7
968	mulhdu	9,6,7
969	addc	11,11,8
970	adde	12,12,9
971	addze	10,10
972
973	ld	6,0(4)
974	ld	7,32(5)
975	mulld	8,6,7
976	mulhdu	9,6,7
977	addc	11,11,8
978	adde	12,12,9
979	addze	10,10
980	std	11,32(3)
981
982	ld	7,40(5)
983	mulld	8,6,7
984	mulhdu	9,6,7
985	addc	12,12,8
986	adde	10,10,9
987	addze	11,0
988
989	ld	6,8(4)
990	ld	7,32(5)
991	mulld	8,6,7
992	mulhdu	9,6,7
993	addc	12,12,8
994	adde	10,10,9
995	addze	11,11
996
997	ld	6,16(4)
998	ld	7,24(5)
999	mulld	8,6,7
1000	mulhdu	9,6,7
1001	addc	12,12,8
1002	adde	10,10,9
1003	addze	11,11
1004
1005	ld	6,24(4)
1006	ld	7,16(5)
1007	mulld	8,6,7
1008	mulhdu	9,6,7
1009	addc	12,12,8
1010	adde	10,10,9
1011	addze	11,11
1012
1013	ld	6,32(4)
1014	ld	7,8(5)
1015	mulld	8,6,7
1016	mulhdu	9,6,7
1017	addc	12,12,8
1018	adde	10,10,9
1019	addze	11,11
1020
1021	ld	6,40(4)
1022	ld	7,0(5)
1023	mulld	8,6,7
1024	mulhdu	9,6,7
1025	addc	12,12,8
1026	adde	10,10,9
1027	addze	11,11
1028	std	12,40(3)
1029
1030	ld	6,48(4)
1031	mulld	8,6,7
1032	mulhdu	9,6,7
1033	addc	10,10,8
1034	adde	11,11,9
1035	addze	12,0
1036
1037	ld	6,40(4)
1038	ld	7,8(5)
1039	mulld	8,6,7
1040	mulhdu	9,6,7
1041	addc	10,10,8
1042	adde	11,11,9
1043	addze	12,12
1044
1045	ld	6,32(4)
1046	ld	7,16(5)
1047	mulld	8,6,7
1048	mulhdu	9,6,7
1049	addc	10,10,8
1050	adde	11,11,9
1051	addze	12,12
1052
1053	ld	6,24(4)
1054	ld	7,24(5)
1055	mulld	8,6,7
1056	mulhdu	9,6,7
1057	addc	10,10,8
1058	adde	11,11,9
1059	addze	12,12
1060
1061	ld	6,16(4)
1062	ld	7,32(5)
1063	mulld	8,6,7
1064	mulhdu	9,6,7
1065	addc	10,10,8
1066	adde	11,11,9
1067	addze	12,12
1068
1069	ld	6,8(4)
1070	ld	7,40(5)
1071	mulld	8,6,7
1072	mulhdu	9,6,7
1073	addc	10,10,8
1074	adde	11,11,9
1075	addze	12,12
1076
1077	ld	6,0(4)
1078	ld	7,48(5)
1079	mulld	8,6,7
1080	mulhdu	9,6,7
1081	addc	10,10,8
1082	adde	11,11,9
1083	addze	12,12
1084	std	10,48(3)
1085
1086	ld	7,56(5)
1087	mulld	8,6,7
1088	mulhdu	9,6,7
1089	addc	11,11,8
1090	adde	12,12,9
1091	addze	10,0
1092
1093	ld	6,8(4)
1094	ld	7,48(5)
1095	mulld	8,6,7
1096	mulhdu	9,6,7
1097	addc	11,11,8
1098	adde	12,12,9
1099	addze	10,10
1100
1101	ld	6,16(4)
1102	ld	7,40(5)
1103	mulld	8,6,7
1104	mulhdu	9,6,7
1105	addc	11,11,8
1106	adde	12,12,9
1107	addze	10,10
1108
1109	ld	6,24(4)
1110	ld	7,32(5)
1111	mulld	8,6,7
1112	mulhdu	9,6,7
1113	addc	11,11,8
1114	adde	12,12,9
1115	addze	10,10
1116
1117	ld	6,32(4)
1118	ld	7,24(5)
1119	mulld	8,6,7
1120	mulhdu	9,6,7
1121	addc	11,11,8
1122	adde	12,12,9
1123	addze	10,10
1124
1125	ld	6,40(4)
1126	ld	7,16(5)
1127	mulld	8,6,7
1128	mulhdu	9,6,7
1129	addc	11,11,8
1130	adde	12,12,9
1131	addze	10,10
1132
1133	ld	6,48(4)
1134	ld	7,8(5)
1135	mulld	8,6,7
1136	mulhdu	9,6,7
1137	addc	11,11,8
1138	adde	12,12,9
1139	addze	10,10
1140
1141	ld	6,56(4)
1142	ld	7,0(5)
1143	mulld	8,6,7
1144	mulhdu	9,6,7
1145	addc	11,11,8
1146	adde	12,12,9
1147	addze	10,10
1148	std	11,56(3)
1149
1150	ld	7,8(5)
1151	mulld	8,6,7
1152	mulhdu	9,6,7
1153	addc	12,12,8
1154	adde	10,10,9
1155	addze	11,0
1156
1157	ld	6,48(4)
1158	ld	7,16(5)
1159	mulld	8,6,7
1160	mulhdu	9,6,7
1161	addc	12,12,8
1162	adde	10,10,9
1163	addze	11,11
1164
1165	ld	6,40(4)
1166	ld	7,24(5)
1167	mulld	8,6,7
1168	mulhdu	9,6,7
1169	addc	12,12,8
1170	adde	10,10,9
1171	addze	11,11
1172
1173	ld	6,32(4)
1174	ld	7,32(5)
1175	mulld	8,6,7
1176	mulhdu	9,6,7
1177	addc	12,12,8
1178	adde	10,10,9
1179	addze	11,11
1180
1181	ld	6,24(4)
1182	ld	7,40(5)
1183	mulld	8,6,7
1184	mulhdu	9,6,7
1185	addc	12,12,8
1186	adde	10,10,9
1187	addze	11,11
1188
1189	ld	6,16(4)
1190	ld	7,48(5)
1191	mulld	8,6,7
1192	mulhdu	9,6,7
1193	addc	12,12,8
1194	adde	10,10,9
1195	addze	11,11
1196
1197	ld	6,8(4)
1198	ld	7,56(5)
1199	mulld	8,6,7
1200	mulhdu	9,6,7
1201	addc	12,12,8
1202	adde	10,10,9
1203	addze	11,11
1204	std	12,64(3)
1205
1206	ld	6,16(4)
1207	mulld	8,6,7
1208	mulhdu	9,6,7
1209	addc	10,10,8
1210	adde	11,11,9
1211	addze	12,0
1212
1213	ld	6,24(4)
1214	ld	7,48(5)
1215	mulld	8,6,7
1216	mulhdu	9,6,7
1217	addc	10,10,8
1218	adde	11,11,9
1219	addze	12,12
1220
1221	ld	6,32(4)
1222	ld	7,40(5)
1223	mulld	8,6,7
1224	mulhdu	9,6,7
1225	addc	10,10,8
1226	adde	11,11,9
1227	addze	12,12
1228
1229	ld	6,40(4)
1230	ld	7,32(5)
1231	mulld	8,6,7
1232	mulhdu	9,6,7
1233	addc	10,10,8
1234	adde	11,11,9
1235	addze	12,12
1236
1237	ld	6,48(4)
1238	ld	7,24(5)
1239	mulld	8,6,7
1240	mulhdu	9,6,7
1241	addc	10,10,8
1242	adde	11,11,9
1243	addze	12,12
1244
1245	ld	6,56(4)
1246	ld	7,16(5)
1247	mulld	8,6,7
1248	mulhdu	9,6,7
1249	addc	10,10,8
1250	adde	11,11,9
1251	addze	12,12
1252	std	10,72(3)
1253
1254	ld	7,24(5)
1255	mulld	8,6,7
1256	mulhdu	9,6,7
1257	addc	11,11,8
1258	adde	12,12,9
1259	addze	10,0
1260
1261	ld	6,48(4)
1262	ld	7,32(5)
1263	mulld	8,6,7
1264	mulhdu	9,6,7
1265	addc	11,11,8
1266	adde	12,12,9
1267	addze	10,10
1268
1269	ld	6,40(4)
1270	ld	7,40(5)
1271	mulld	8,6,7
1272	mulhdu	9,6,7
1273	addc	11,11,8
1274	adde	12,12,9
1275	addze	10,10
1276
1277	ld	6,32(4)
1278	ld	7,48(5)
1279	mulld	8,6,7
1280	mulhdu	9,6,7
1281	addc	11,11,8
1282	adde	12,12,9
1283	addze	10,10
1284
1285	ld	6,24(4)
1286	ld	7,56(5)
1287	mulld	8,6,7
1288	mulhdu	9,6,7
1289	addc	11,11,8
1290	adde	12,12,9
1291	addze	10,10
1292	std	11,80(3)
1293
1294	ld	6,32(4)
1295	mulld	8,6,7
1296	mulhdu	9,6,7
1297	addc	12,12,8
1298	adde	10,10,9
1299	addze	11,0
1300
1301	ld	6,40(4)
1302	ld	7,48(5)
1303	mulld	8,6,7
1304	mulhdu	9,6,7
1305	addc	12,12,8
1306	adde	10,10,9
1307	addze	11,11
1308
1309	ld	6,48(4)
1310	ld	7,40(5)
1311	mulld	8,6,7
1312	mulhdu	9,6,7
1313	addc	12,12,8
1314	adde	10,10,9
1315	addze	11,11
1316
1317	ld	6,56(4)
1318	ld	7,32(5)
1319	mulld	8,6,7
1320	mulhdu	9,6,7
1321	addc	12,12,8
1322	adde	10,10,9
1323	addze	11,11
1324	std	12,88(3)
1325
1326	ld	7,40(5)
1327	mulld	8,6,7
1328	mulhdu	9,6,7
1329	addc	10,10,8
1330	adde	11,11,9
1331	addze	12,0
1332
1333	ld	6,48(4)
1334	ld	7,48(5)
1335	mulld	8,6,7
1336	mulhdu	9,6,7
1337	addc	10,10,8
1338	adde	11,11,9
1339	addze	12,12
1340
1341	ld	6,40(4)
1342	ld	7,56(5)
1343	mulld	8,6,7
1344	mulhdu	9,6,7
1345	addc	10,10,8
1346	adde	11,11,9
1347	addze	12,12
1348	std	10,96(3)
1349
1350	ld	6,48(4)
1351	mulld	8,6,7
1352	mulhdu	9,6,7
1353	addc	11,11,8
1354	adde	12,12,9
1355	addze	10,0
1356
1357	ld	6,56(4)
1358	ld	7,48(5)
1359	mulld	8,6,7
1360	mulhdu	9,6,7
1361	addc	11,11,8
1362	adde	12,12,9
1363	addze	10,10
1364	std	11,104(3)
1365
1366	ld	7,56(5)
1367	mulld	8,6,7
1368	mulhdu	9,6,7
1369	addc	12,12,8
1370	adde	10,10,9
1371	std	12,112(3)
1372	std	10,120(3)
1373	blr
1374.long	0
1375.byte	0,12,0x14,0,0,0,3,0
1376.long	0
1377.size	bn_mul_comba8,.-bn_mul_comba8
1378
1379
1380
1381
1382
1383
1384
1385
1386.align	4
1387bn_sub_words:
1388.localentry	bn_sub_words,0
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403	xor	0,0,0
1404
1405
1406
1407	subfc.	7,0,6
1408
1409
1410	beq	.Lppcasm_sub_adios
1411	addi	4,4,-8
1412	addi	3,3,-8
1413	addi	5,5,-8
1414	mtctr	6
1415.Lppcasm_sub_mainloop:
1416	ldu	7,8(4)
1417	ldu	8,8(5)
1418	subfe	6,8,7
1419
1420
1421	stdu	6,8(3)
1422	bdnz	.Lppcasm_sub_mainloop
1423.Lppcasm_sub_adios:
1424	subfze	3,0
1425	andi.	3,3,1
1426	blr
1427.long	0
1428.byte	0,12,0x14,0,0,0,4,0
1429.long	0
1430.size	bn_sub_words,.-bn_sub_words
1431
1432
1433
1434
1435
1436
1437
1438
1439.align	4
1440bn_add_words:
1441.localentry	bn_add_words,0
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456	xor	0,0,0
1457
1458
1459
1460	addic.	6,6,0
1461	beq	.Lppcasm_add_adios
1462	addi	4,4,-8
1463	addi	3,3,-8
1464	addi	5,5,-8
1465	mtctr	6
1466.Lppcasm_add_mainloop:
1467	ldu	7,8(4)
1468	ldu	8,8(5)
1469	adde	8,7,8
1470	stdu	8,8(3)
1471	bdnz	.Lppcasm_add_mainloop
1472.Lppcasm_add_adios:
1473	addze	3,0
1474	blr
1475.long	0
1476.byte	0,12,0x14,0,0,0,4,0
1477.long	0
1478.size	bn_add_words,.-bn_add_words
1479
1480
1481
1482
1483
1484
1485
1486
1487.align	4
1488bn_div_words:
1489.localentry	bn_div_words,0
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502	cmpldi	0,5,0
1503	bne	.Lppcasm_div1
1504	li	3,-1
1505	blr
1506.Lppcasm_div1:
1507	xor	0,0,0
1508	li	8,64
1509	cntlzd.	7,5
1510	beq	.Lppcasm_div2
1511	subf	8,7,8
1512	srd.	9,3,8
1513	td	16,9,0
1514.Lppcasm_div2:
1515	cmpld	0,3,5
1516	blt	.Lppcasm_div3
1517	subf	3,5,3
1518.Lppcasm_div3:
1519	cmpi	0,0,7,0
1520	beq	.Lppcasm_div4
1521	sld	3,3,7
1522	srd	8,4,8
1523	sld	5,5,7
1524	or	3,3,8
1525	sld	4,4,7
1526.Lppcasm_div4:
1527	srdi	9,5,32
1528
1529
1530	li	6,2
1531	mtctr	6
1532.Lppcasm_divouterloop:
1533	srdi	8,3,32
1534	srdi	11,4,32
1535
1536	cmpld	0,8,9
1537	bne	.Lppcasm_div5
1538
1539	li	8,-1
1540	clrldi	8,8,32
1541	b	.Lppcasm_div6
1542.Lppcasm_div5:
1543	divdu	8,3,9
1544.Lppcasm_div6:
1545	mulld	12,9,8
1546	clrldi	10,5,32
1547	mulld	6,8,10
1548
1549.Lppcasm_divinnerloop:
1550	subf	10,12,3
1551	srdi	7,10,32
1552	addic.	7,7,0
1553
1554
1555
1556	sldi	7,10,32
1557	or	7,7,11
1558	cmpld	1,6,7
1559	bne	.Lppcasm_divinnerexit
1560	ble	1,.Lppcasm_divinnerexit
1561	addi	8,8,-1
1562	subf	12,9,12
1563	clrldi	10,5,32
1564	subf	6,10,6
1565	b	.Lppcasm_divinnerloop
1566.Lppcasm_divinnerexit:
1567	srdi	10,6,32
1568	sldi	11,6,32
1569	cmpld	1,4,11
1570	add	12,12,10
1571	bge	1,.Lppcasm_div7
1572	addi	12,12,1
1573.Lppcasm_div7:
1574	subf	11,11,4
1575	cmpld	1,3,12
1576	bge	1,.Lppcasm_div8
1577	addi	8,8,-1
1578	add	3,5,3
1579.Lppcasm_div8:
1580	subf	12,12,3
1581	sldi	4,11,32
1582
1583
1584
1585	insrdi	11,12,32,32
1586	rotldi	3,11,32
1587	bdz	.Lppcasm_div9
1588	sldi	0,8,32
1589	b	.Lppcasm_divouterloop
1590.Lppcasm_div9:
1591	or	3,8,0
1592	blr
1593.long	0
1594.byte	0,12,0x14,0,0,0,3,0
1595.long	0
1596.size	bn_div_words,.-bn_div_words
1597
1598
1599
1600
1601
1602
1603
1604.align	4
1605bn_sqr_words:
1606.localentry	bn_sqr_words,0
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622	addic.	5,5,0
1623	beq	.Lppcasm_sqr_adios
1624	addi	4,4,-8
1625	addi	3,3,-8
1626	mtctr	5
1627.Lppcasm_sqr_mainloop:
1628
1629	ldu	6,8(4)
1630	mulld	7,6,6
1631	mulhdu	8,6,6
1632	stdu	7,8(3)
1633	stdu	8,8(3)
1634	bdnz	.Lppcasm_sqr_mainloop
1635.Lppcasm_sqr_adios:
1636	blr
1637.long	0
1638.byte	0,12,0x14,0,0,0,3,0
1639.long	0
1640.size	bn_sqr_words,.-bn_sqr_words
1641
1642
1643
1644
1645
1646
1647
1648
1649.align	4
1650bn_mul_words:
1651.localentry	bn_mul_words,0
1652
1653
1654
1655
1656
1657
1658
1659
1660	xor	0,0,0
1661	xor	12,12,12
1662	rlwinm.	7,5,30,2,31
1663	beq	.Lppcasm_mw_REM
1664	mtctr	7
1665.Lppcasm_mw_LOOP:
1666
1667	ld	8,0(4)
1668	mulld	9,6,8
1669	mulhdu	10,6,8
1670	addc	9,9,12
1671
1672
1673
1674
1675	std	9,0(3)
1676
1677	ld	8,8(4)
1678	mulld	11,6,8
1679	mulhdu	12,6,8
1680	adde	11,11,10
1681
1682	std	11,8(3)
1683
1684	ld	8,16(4)
1685	mulld	9,6,8
1686	mulhdu	10,6,8
1687	adde	9,9,12
1688
1689	std	9,16(3)
1690
1691	ld	8,24(4)
1692	mulld	11,6,8
1693	mulhdu	12,6,8
1694	adde	11,11,10
1695	addze	12,12
1696
1697	std	11,24(3)
1698
1699	addi	3,3,32
1700	addi	4,4,32
1701	bdnz	.Lppcasm_mw_LOOP
1702
1703.Lppcasm_mw_REM:
1704	andi.	5,5,0x3
1705	beq	.Lppcasm_mw_OVER
1706
1707	ld	8,0(4)
1708	mulld	9,6,8
1709	mulhdu	10,6,8
1710	addc	9,9,12
1711	addze	10,10
1712	std	9,0(3)
1713	addi	12,10,0
1714
1715	addi	5,5,-1
1716	cmpli	0,0,5,0
1717	beq	.Lppcasm_mw_OVER
1718
1719
1720
1721	ld	8,8(4)
1722	mulld	9,6,8
1723	mulhdu	10,6,8
1724	addc	9,9,12
1725	addze	10,10
1726	std	9,8(3)
1727	addi	12,10,0
1728
1729	addi	5,5,-1
1730	cmpli	0,0,5,0
1731	beq	.Lppcasm_mw_OVER
1732
1733
1734	ld	8,16(4)
1735	mulld	9,6,8
1736	mulhdu	10,6,8
1737	addc	9,9,12
1738	addze	10,10
1739	std	9,16(3)
1740	addi	12,10,0
1741
1742.Lppcasm_mw_OVER:
1743	addi	3,12,0
1744	blr
1745.long	0
1746.byte	0,12,0x14,0,0,0,4,0
1747.long	0
1748.size	bn_mul_words,.-bn_mul_words
1749
1750
1751
1752
1753
1754
1755
1756
1757.align	4
1758bn_mul_add_words:
1759.localentry	bn_mul_add_words,0
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771	xor	0,0,0
1772	xor	12,12,12
1773	rlwinm.	7,5,30,2,31
1774	beq	.Lppcasm_maw_leftover
1775	mtctr	7
1776.Lppcasm_maw_mainloop:
1777
1778	ld	8,0(4)
1779	ld	11,0(3)
1780	mulld	9,6,8
1781	mulhdu	10,6,8
1782	addc	9,9,12
1783	addze	10,10
1784	addc	9,9,11
1785
1786
1787
1788
1789
1790
1791	std	9,0(3)
1792
1793
1794	ld	8,8(4)
1795	ld	9,8(3)
1796	mulld	11,6,8
1797	mulhdu	12,6,8
1798	adde	11,11,10
1799	addze	12,12
1800	addc	11,11,9
1801
1802	std	11,8(3)
1803
1804
1805	ld	8,16(4)
1806	mulld	9,6,8
1807	ld	11,16(3)
1808	mulhdu	10,6,8
1809	adde	9,9,12
1810	addze	10,10
1811	addc	9,9,11
1812
1813	std	9,16(3)
1814
1815
1816	ld	8,24(4)
1817	mulld	11,6,8
1818	ld	9,24(3)
1819	mulhdu	12,6,8
1820	adde	11,11,10
1821	addze	12,12
1822	addc	11,11,9
1823	addze	12,12
1824	std	11,24(3)
1825	addi	3,3,32
1826	addi	4,4,32
1827	bdnz	.Lppcasm_maw_mainloop
1828
1829.Lppcasm_maw_leftover:
1830	andi.	5,5,0x3
1831	beq	.Lppcasm_maw_adios
1832	addi	3,3,-8
1833	addi	4,4,-8
1834
1835	mtctr	5
1836	ldu	8,8(4)
1837	mulld	9,6,8
1838	mulhdu	10,6,8
1839	ldu	11,8(3)
1840	addc	9,9,11
1841	addze	10,10
1842	addc	9,9,12
1843	addze	12,10
1844	std	9,0(3)
1845
1846	bdz	.Lppcasm_maw_adios
1847
1848	ldu	8,8(4)
1849	mulld	9,6,8
1850	mulhdu	10,6,8
1851	ldu	11,8(3)
1852	addc	9,9,11
1853	addze	10,10
1854	addc	9,9,12
1855	addze	12,10
1856	std	9,0(3)
1857
1858	bdz	.Lppcasm_maw_adios
1859
1860	ldu	8,8(4)
1861	mulld	9,6,8
1862	mulhdu	10,6,8
1863	ldu	11,8(3)
1864	addc	9,9,11
1865	addze	10,10
1866	addc	9,9,12
1867	addze	12,10
1868	std	9,0(3)
1869
1870.Lppcasm_maw_adios:
1871	addi	3,12,0
1872	blr
1873.long	0
1874.byte	0,12,0x14,0,0,0,4,0
1875.long	0
1876.size	bn_mul_add_words,.-bn_mul_add_words
1877.align	4
1878