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