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