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