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