Sync usage with man page.
[netbsd-mini2440.git] / crypto / external / bsd / openssl / lib / libcrypto / arch / powerpc / ppc.S
blob45ff51f8d1078b6b441cc4755067f658b470df9f
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
106 .machine        "ppc"
115 .align  4
116 bn_sqr_comba4:
132         xor     0,0,0
136         lwz     5,0(4)
137         mullw   9,5,5
138         mulhwu  10,5,5
143         stw     9,0(3)
145         lwz     6,4(4)
146         mullw   7,5,6
147         mulhwu  8,5,6
149         addc    7,7,7
150         adde    8,8,8
151         addze   9,0
154         addc    10,7,10
155         addze   11,8
156         addze   9,9
158         stw     10,4(3)
160         mullw   7,6,6
161         mulhwu  8,6,6
162         addc    11,7,11
163         adde    9,8,9
164         addze   10,0
166         lwz     6,8(4)
167         mullw   7,5,6
168         mulhwu  8,5,6
170         addc    7,7,7
171         adde    8,8,8
172         addze   10,10
174         addc    11,7,11
175         adde    9,8,9
176         addze   10,10
177         stw     11,8(3)
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
186         addc    9,7,9
187         adde    10,8,10
188         addze   11,11
190         lwz     5,4(4)
191         lwz     6,8(4)
192         mullw   7,5,6
193         mulhwu  8,5,6
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)
203         mullw   7,6,6
204         mulhwu  8,6,6
205         addc    10,7,10
206         adde    11,8,11
207         addze   9,0
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
216         addc    10,7,10
217         adde    11,8,11
218         addze   9,9
219         stw     10,16(3)
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
228         addc    11,7,11
229         adde    9,8,9
230         addze   10,10
231         stw     11,20(3)
233         mullw   7,6,6
234         mulhwu  8,6,6
235         addc    9,7,9
236         adde    10,8,10
238         stw     9,24(3)
239         stw     10,28(3)
240         blr     
241 .long   0x00000000
250 .align  4
251 bn_sqr_comba8:
271         xor     0,0,0
275         lwz     5,0(4)
276         mullw   9,5,5
277         mulhwu  10,5,5
278         stw     9,0(3)
280         lwz     6,4(4)
281         mullw   7,5,6
282         mulhwu  8,5,6
284         addc    10,7,10
285         adde    11,8,0
286         addze   9,0
288         addc    10,7,10
289         adde    11,8,11
290         addze   9,9
292         stw     10,4(3)
295         mullw   7,6,6
296         mulhwu  8,6,6
297         addc    11,7,11
298         adde    9,8,9
299         addze   10,0
301         lwz     6,8(4)
302         mullw   7,5,6
303         mulhwu  8,5,6
305         addc    11,7,11
306         adde    9,8,9
307         addze   10,10
309         addc    11,7,11
310         adde    9,8,9
311         addze   10,10
313         stw     11,8(3)
315         lwz     6,12(4)
316         mullw   7,5,6
317         mulhwu  8,5,6
319         addc    9,7,9
320         adde    10,8,10
321         addze   11,0
323         addc    9,7,9
324         adde    10,8,10
325         addze   11,11
327         lwz     5,4(4)
328         lwz     6,8(4)
329         mullw   7,5,6
330         mulhwu  8,5,6
332         addc    9,7,9
333         adde    10,8,10
334         addze   11,11
336         addc    9,7,9
337         adde    10,8,10
338         addze   11,11
340         stw     9,12(3)
342         mullw   7,6,6
343         mulhwu  8,6,6
345         addc    10,7,10
346         adde    11,8,11
347         addze   9,0
349         lwz     6,12(4)
350         mullw   7,5,6
351         mulhwu  8,5,6
353         addc    10,7,10
354         adde    11,8,11
355         addze   9,9
357         addc    10,7,10
358         adde    11,8,11
359         addze   9,9
361         lwz     5,0(4)
362         lwz     6,16(4)
363         mullw   7,5,6
364         mulhwu  8,5,6
366         addc    10,7,10
367         adde    11,8,11
368         addze   9,9
370         addc    10,7,10
371         adde    11,8,11
372         addze   9,9
373         stw     10,16(3)
375         lwz     6,20(4)
376         mullw   7,5,6
377         mulhwu  8,5,6
379         addc    11,7,11
380         adde    9,8,9
381         addze   10,0
383         addc    11,7,11
384         adde    9,8,9
385         addze   10,10
387         lwz     5,4(4)
388         lwz     6,16(4)
389         mullw   7,5,6
390         mulhwu  8,5,6
392         addc    11,7,11
393         adde    9,8,9
394         addze   10,10
396         addc    11,7,11
397         adde    9,8,9
398         addze   10,10
400         lwz     5,8(4)
401         lwz     6,12(4)
402         mullw   7,5,6
403         mulhwu  8,5,6
405         addc    11,7,11
406         adde    9,8,9
407         addze   10,10
409         addc    11,7,11
410         adde    9,8,9
411         addze   10,10
412         stw     11,20(3)
414         mullw   7,6,6
415         mulhwu  8,6,6
416         addc    9,7,9
417         adde    10,8,10
418         addze   11,0
420         lwz     6,16(4)
421         mullw   7,5,6
422         mulhwu  8,5,6
424         addc    9,7,9
425         adde    10,8,10
426         addze   11,11
428         addc    9,7,9
429         adde    10,8,10
430         addze   11,11
432         lwz     5,4(4)
433         lwz     6,20(4)
434         mullw   7,5,6
435         mulhwu  8,5,6
437         addc    9,7,9
438         adde    10,8,10
439         addze   11,11
441         addc    9,7,9
442         adde    10,8,10
443         addze   11,11
445         lwz     5,0(4)
446         lwz     6,24(4)
447         mullw   7,5,6
448         mulhwu  8,5,6
449         addc    9,7,9
450         adde    10,8,10
451         addze   11,11
452         addc    9,7,9
453         adde    10,8,10
454         addze   11,11
455         stw     9,24(3)
457         lwz     6,28(4)
458         mullw   7,5,6
459         mulhwu  8,5,6
461         addc    10,7,10
462         adde    11,8,11
463         addze   9,0
464         addc    10,7,10
465         adde    11,8,11
466         addze   9,9
468         lwz     5,4(4)
469         lwz     6,24(4)
470         mullw   7,5,6
471         mulhwu  8,5,6
473         addc    10,7,10
474         adde    11,8,11
475         addze   9,9
476         addc    10,7,10
477         adde    11,8,11
478         addze   9,9
480         lwz     5,8(4)
481         lwz     6,20(4)
482         mullw   7,5,6
483         mulhwu  8,5,6
484         addc    10,7,10
485         adde    11,8,11
486         addze   9,9
487         addc    10,7,10
488         adde    11,8,11
489         addze   9,9
491         lwz     5,12(4)
492         lwz     6,16(4)
493         mullw   7,5,6
494         mulhwu  8,5,6
496         addc    10,7,10
497         adde    11,8,11
498         addze   9,9
499         addc    10,7,10
500         adde    11,8,11
501         addze   9,9
502         stw     10,28(3)
504         mullw   7,6,6
505         mulhwu  8,6,6
506         addc    11,7,11
507         adde    9,8,9
508         addze   10,0
510         lwz     6,20(4)
511         mullw   7,5,6
512         mulhwu  8,5,6
513         addc    11,7,11
514         adde    9,8,9
515         addze   10,10
516         addc    11,7,11
517         adde    9,8,9
518         addze   10,10
520         lwz     5,8(4)
521         lwz     6,24(4)
522         mullw   7,5,6
523         mulhwu  8,5,6
524         addc    11,7,11
525         adde    9,8,9
526         addze   10,10
528         addc    11,7,11
529         adde    9,8,9
530         addze   10,10
532         lwz     5,4(4)
533         lwz     6,28(4)
534         mullw   7,5,6
535         mulhwu  8,5,6
536         addc    11,7,11
537         adde    9,8,9
538         addze   10,10
539         addc    11,7,11
540         adde    9,8,9
541         addze   10,10
542         stw     11,32(3)
544         lwz     5,8(4)
545         mullw   7,5,6
546         mulhwu  8,5,6
548         addc    9,7,9
549         adde    10,8,10
550         addze   11,0
551         addc    9,7,9
552         adde    10,8,10
553         addze   11,11
555         lwz     5,12(4)
556         lwz     6,24(4)
557         mullw   7,5,6
558         mulhwu  8,5,6
559         addc    9,7,9
560         adde    10,8,10
561         addze   11,11
562         addc    9,7,9
563         adde    10,8,10
564         addze   11,11
566         lwz     5,16(4)
567         lwz     6,20(4)
568         mullw   7,5,6
569         mulhwu  8,5,6
570         addc    9,7,9
571         adde    10,8,10
572         addze   11,11
573         addc    9,7,9
574         adde    10,8,10
575         addze   11,11
576         stw     9,36(3)
578         mullw   7,6,6
579         mulhwu  8,6,6
580         addc    10,7,10
581         adde    11,8,11
582         addze   9,0
584         lwz     6,24(4)
585         mullw   7,5,6
586         mulhwu  8,5,6
587         addc    10,7,10
588         adde    11,8,11
589         addze   9,9
590         addc    10,7,10
591         adde    11,8,11
592         addze   9,9
594         lwz     5,12(4)
595         lwz     6,28(4)
596         mullw   7,5,6
597         mulhwu  8,5,6
598         addc    10,7,10
599         adde    11,8,11
600         addze   9,9
601         addc    10,7,10
602         adde    11,8,11
603         addze   9,9
604         stw     10,40(3)
606         lwz     5,16(4)
607         mullw   7,5,6
608         mulhwu  8,5,6
609         addc    11,7,11
610         adde    9,8,9
611         addze   10,0
612         addc    11,7,11
613         adde    9,8,9
614         addze   10,10
616         lwz     5,20(4)
617         lwz     6,24(4)
618         mullw   7,5,6
619         mulhwu  8,5,6
620         addc    11,7,11
621         adde    9,8,9
622         addze   10,10
623         addc    11,7,11
624         adde    9,8,9
625         addze   10,10
626         stw     11,44(3)
628         mullw   7,6,6
629         mulhwu  8,6,6
630         addc    9,7,9
631         adde    10,8,10
632         addze   11,0
634         lwz     6,28(4)
635         mullw   7,5,6
636         mulhwu  8,5,6
637         addc    9,7,9
638         adde    10,8,10
639         addze   11,11
640         addc    9,7,9
641         adde    10,8,10
642         addze   11,11
643         stw     9,48(3)
646         lwz     5,24(4)
647         mullw   7,5,6
648         mulhwu  8,5,6
649         addc    10,7,10
650         adde    11,8,11
651         addze   9,0
652         addc    10,7,10
653         adde    11,8,11
654         addze   9,9
655         stw     10,52(3)
657         mullw   7,6,6
658         mulhwu  8,6,6
659         addc    11,7,11
660         adde    9,8,9
661         stw     11,56(3)
662         stw     9, 60(3)
665         blr     
667 .long   0x00000000
676 .align  4
677 bn_mul_comba4:
689         xor     0,0,0
691         lwz     6,0(4)
692         lwz     7,0(5)
693         mullw   10,6,7
694         mulhwu  11,6,7
695         stw     10,0(3)
697         lwz     7,4(5)
698         mullw   8,6,7
699         mulhwu  9,6,7
700         addc    11,8,11
701         adde    12,9,0
702         addze   10,0
704         lwz     6, 4(4)
705         lwz     7, 0(5)
706         mullw   8,6,7
707         mulhwu  9,6,7
708         addc    11,8,11
709         adde    12,9,12
710         addze   10,10
711         stw     11,4(3)
713         lwz     6,8(4)
714         mullw   8,6,7
715         mulhwu  9,6,7
716         addc    12,8,12
717         adde    10,9,10
718         addze   11,0
720         lwz     6,4(4)
721         lwz     7,4(5)
722         mullw   8,6,7
723         mulhwu  9,6,7
724         addc    12,8,12
725         adde    10,9,10
726         addze   11,11
728         lwz     6,0(4)
729         lwz     7,8(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         stw     12,8(3)
737         lwz     7,12(5)
738         mullw   8,6,7
739         mulhwu  9,6,7
740         addc    10,8,10
741         adde    11,9,11
742         addze   12,0
744         lwz     6,4(4)
745         lwz     7,8(5)
746         mullw   8,6,7
747         mulhwu  9,6,7
748         addc    10,8,10
749         adde    11,9,11
750         addze   12,12
752         lwz     6,8(4)
753         lwz     7,4(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
760         lwz     6,12(4)
761         lwz     7,0(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         stw     10,12(3)
769         lwz     7,4(5)
770         mullw   8,6,7
771         mulhwu  9,6,7
772         addc    11,8,11
773         adde    12,9,12
774         addze   10,0
776         lwz     6,8(4)
777         lwz     7,8(5)
778         mullw   8,6,7
779         mulhwu  9,6,7
780         addc    11,8,11
781         adde    12,9,12
782         addze   10,10
784         lwz     6,4(4)
785         lwz     7,12(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         stw     11,16(3)
793         lwz     6,8(4)
794         mullw   8,6,7
795         mulhwu  9,6,7
796         addc    12,8,12
797         adde    10,9,10
798         addze   11,0
800         lwz     6,12(4)
801         lwz     7,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,11
807         stw     12,20(3)
809         lwz     7,12(5)
810         mullw   8,6,7
811         mulhwu  9,6,7
812         addc    10,8,10
813         adde    11,9,11
815         stw     10,24(3)
816         stw     11,28(3)
817         blr     
818 .long   0x00000000
827 .align  4
828 bn_mul_comba8:
840         xor     0,0,0
843         lwz     6,0(4)
844         lwz     7,0(5)
845         mullw   10,6,7
846         mulhwu  11,6,7
847         stw     10,0(3)
849         lwz     7,4(5)
850         mullw   8,6,7
851         mulhwu  9,6,7
852         addc    11,11,8
853         addze   12,9
854         addze   10,0
856         lwz     6,4(4)
857         lwz     7,0(5)
858         mullw   8,6,7
859         mulhwu  9,6,7
860         addc    11,11,8
861         adde    12,12,9
862         addze   10,10
863         stw     11,4(3)
865         lwz     6,8(4)
866         mullw   8,6,7
867         mulhwu  9,6,7
868         addc    12,12,8
869         adde    10,10,9
870         addze   11,0
872         lwz     6,4(4)
873         lwz     7,4(5)
874         mullw   8,6,7
875         mulhwu  9,6,7
876         addc    12,12,8
877         adde    10,10,9
878         addze   11,11
880         lwz     6,0(4)
881         lwz     7,8(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         stw     12,8(3)
889         lwz     7,12(5)
890         mullw   8,6,7
891         mulhwu  9,6,7
892         addc    10,10,8
893         adde    11,11,9
894         addze   12,0
896         lwz     6,4(4)
897         lwz     7,8(5)
898         mullw   8,6,7
899         mulhwu  9,6,7
900         addc    10,10,8
901         adde    11,11,9
902         addze   12,12
905         lwz     6,8(4)
906         lwz     7,4(5)
907         mullw   8,6,7
908         mulhwu  9,6,7
909         addc    10,10,8
910         adde    11,11,9
911         addze   12,12
913         lwz     6,12(4)
914         lwz     7,0(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         stw     10,12(3)
922         lwz     6,16(4)
923         mullw   8,6,7
924         mulhwu  9,6,7
925         addc    11,11,8
926         adde    12,12,9
927         addze   10,0
929         lwz     6,12(4)
930         lwz     7,4(5)
931         mullw   8,6,7
932         mulhwu  9,6,7
933         addc    11,11,8
934         adde    12,12,9
935         addze   10,10
937         lwz     6,8(4)
938         lwz     7,8(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
945         lwz     6,4(4)
946         lwz     7,12(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
953         lwz     6,0(4)
954         lwz     7,16(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         stw     11,16(3)
962         lwz     7,20(5)
963         mullw   8,6,7
964         mulhwu  9,6,7
965         addc    12,12,8
966         adde    10,10,9
967         addze   11,0
969         lwz     6,4(4)
970         lwz     7,16(5)
971         mullw   8,6,7
972         mulhwu  9,6,7
973         addc    12,12,8
974         adde    10,10,9
975         addze   11,11
977         lwz     6,8(4)
978         lwz     7,12(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
985         lwz     6,12(4)
986         lwz     7,8(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
993         lwz     6,16(4)
994         lwz     7,4(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
1001         lwz     6,20(4)
1002         lwz     7,0(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         stw     12,20(3)
1010         lwz     6,24(4)
1011         mullw   8,6,7
1012         mulhwu  9,6,7
1013         addc    10,10,8
1014         adde    11,11,9
1015         addze   12,0
1017         lwz     6,20(4)
1018         lwz     7,4(5)
1019         mullw   8,6,7
1020         mulhwu  9,6,7
1021         addc    10,10,8
1022         adde    11,11,9
1023         addze   12,12
1025         lwz     6,16(4)
1026         lwz     7,8(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
1033         lwz     6,12(4)
1034         lwz     7,12(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
1041         lwz     6,8(4)
1042         lwz     7,16(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
1049         lwz     6,4(4)
1050         lwz     7,20(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
1057         lwz     6,0(4)
1058         lwz     7,24(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         stw     10,24(3)
1066         lwz     7,28(5)
1067         mullw   8,6,7
1068         mulhwu  9,6,7
1069         addc    11,11,8
1070         adde    12,12,9
1071         addze   10,0
1073         lwz     6,4(4)
1074         lwz     7,24(5)
1075         mullw   8,6,7
1076         mulhwu  9,6,7
1077         addc    11,11,8
1078         adde    12,12,9
1079         addze   10,10
1081         lwz     6,8(4)
1082         lwz     7,20(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
1089         lwz     6,12(4)
1090         lwz     7,16(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
1097         lwz     6,16(4)
1098         lwz     7,12(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
1105         lwz     6,20(4)
1106         lwz     7,8(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
1113         lwz     6,24(4)
1114         lwz     7,4(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
1121         lwz     6,28(4)
1122         lwz     7,0(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         stw     11,28(3)
1130         lwz     7,4(5)
1131         mullw   8,6,7
1132         mulhwu  9,6,7
1133         addc    12,12,8
1134         adde    10,10,9
1135         addze   11,0
1137         lwz     6,24(4)
1138         lwz     7,8(5)
1139         mullw   8,6,7
1140         mulhwu  9,6,7
1141         addc    12,12,8
1142         adde    10,10,9
1143         addze   11,11
1145         lwz     6,20(4)
1146         lwz     7,12(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
1153         lwz     6,16(4)
1154         lwz     7,16(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
1161         lwz     6,12(4)
1162         lwz     7,20(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
1169         lwz     6,8(4)
1170         lwz     7,24(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
1177         lwz     6,4(4)
1178         lwz     7,28(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         stw     12,32(3)
1186         lwz     6,8(4)
1187         mullw   8,6,7
1188         mulhwu  9,6,7
1189         addc    10,10,8
1190         adde    11,11,9
1191         addze   12,0
1193         lwz     6,12(4)
1194         lwz     7,24(5)
1195         mullw   8,6,7
1196         mulhwu  9,6,7
1197         addc    10,10,8
1198         adde    11,11,9
1199         addze   12,12
1201         lwz     6,16(4)
1202         lwz     7,20(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
1209         lwz     6,20(4)
1210         lwz     7,16(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
1217         lwz     6,24(4)
1218         lwz     7,12(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
1225         lwz     6,28(4)
1226         lwz     7,8(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         stw     10,36(3)
1234         lwz     7,12(5)
1235         mullw   8,6,7
1236         mulhwu  9,6,7
1237         addc    11,11,8
1238         adde    12,12,9
1239         addze   10,0
1241         lwz     6,24(4)
1242         lwz     7,16(5)
1243         mullw   8,6,7
1244         mulhwu  9,6,7
1245         addc    11,11,8
1246         adde    12,12,9
1247         addze   10,10
1249         lwz     6,20(4)
1250         lwz     7,20(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
1257         lwz     6,16(4)
1258         lwz     7,24(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
1265         lwz     6,12(4)
1266         lwz     7,28(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         stw     11,40(3)
1274         lwz     6,16(4)
1275         mullw   8,6,7
1276         mulhwu  9,6,7
1277         addc    12,12,8
1278         adde    10,10,9
1279         addze   11,0
1281         lwz     6,20(4)
1282         lwz     7,24(5)
1283         mullw   8,6,7
1284         mulhwu  9,6,7
1285         addc    12,12,8
1286         adde    10,10,9
1287         addze   11,11
1289         lwz     6,24(4)
1290         lwz     7,20(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
1297         lwz     6,28(4)
1298         lwz     7,16(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         stw     12,44(3)
1306         lwz     7,20(5)
1307         mullw   8,6,7
1308         mulhwu  9,6,7
1309         addc    10,10,8
1310         adde    11,11,9
1311         addze   12,0
1313         lwz     6,24(4)
1314         lwz     7,24(5)
1315         mullw   8,6,7
1316         mulhwu  9,6,7
1317         addc    10,10,8
1318         adde    11,11,9
1319         addze   12,12
1321         lwz     6,20(4)
1322         lwz     7,28(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         stw     10,48(3)
1330         lwz     6,24(4)
1331         mullw   8,6,7
1332         mulhwu  9,6,7
1333         addc    11,11,8
1334         adde    12,12,9
1335         addze   10,0
1337         lwz     6,28(4)
1338         lwz     7,24(5)
1339         mullw   8,6,7
1340         mulhwu  9,6,7
1341         addc    11,11,8
1342         adde    12,12,9
1343         addze   10,10
1344         stw     11,52(3)
1346         lwz     7,28(5)
1347         mullw   8,6,7
1348         mulhwu  9,6,7
1349         addc    12,12,8
1350         adde    10,10,9
1351         stw     12,56(3)
1352         stw     10,60(3)
1353         blr     
1354 .long   0x00000000
1363 .align  4
1364 bn_sub_words:
1378         xor     0,0,0
1382         subfc.  7,0,6
1385         beq     .Lppcasm_sub_adios
1386         addi    4,4,-4
1387         addi    3,3,-4
1388         addi    5,5,-4
1389         mtctr   6
1390 .Lppcasm_sub_mainloop:
1391         lwzu    7,4(4)
1392         lwzu    8,4(5)
1393         subfe   6,8,7
1396         stwu    6,4(3)
1397         bdnz+   .Lppcasm_sub_mainloop
1398 .Lppcasm_sub_adios:
1399         subfze  3,0
1400         andi.   3,3,1
1401         blr     
1402 .long   0x00000000
1412 .align  4
1413 bn_add_words:
1427         xor     0,0,0
1431         addic.  6,6,0
1432         beq     .Lppcasm_add_adios
1433         addi    4,4,-4
1434         addi    3,3,-4
1435         addi    5,5,-4
1436         mtctr   6
1437 .Lppcasm_add_mainloop:
1438         lwzu    7,4(4)
1439         lwzu    8,4(5)
1440         adde    8,7,8
1441         stwu    8,4(3)
1442         bdnz+   .Lppcasm_add_mainloop
1443 .Lppcasm_add_adios:
1444         addze   3,0
1445         blr     
1446 .long   0x00000000
1455 .align  4
1456 bn_div_words:
1468         cmplwi  0,5,0
1469         bne     .Lppcasm_div1
1470         li      3,-1
1471         blr     
1472 .Lppcasm_div1:
1473         xor     0,0,0
1474         li      8,32
1475         cntlzw. 7,5
1476         beq     .Lppcasm_div2
1477         subf    8,7,8
1478         srw.    9,3,8
1479         tw      16,9,0
1480 .Lppcasm_div2:
1481         .long   0x7c032840
1482         blt     .Lppcasm_div3
1483         subf    3,5,3
1484 .Lppcasm_div3:
1485         cmpi    0,0,7,0
1486         beq     .Lppcasm_div4
1487         slw     3,3,7
1488         srw     8,4,8
1489         slw     5,5,7
1490         or      3,3,8
1491         slw     4,4,7
1492 .Lppcasm_div4:
1493         srwi    9,5,16
1496         li      6,2
1497         mtctr   6
1498 .Lppcasm_divouterloop:
1499         srwi    8,3,16
1500         srwi    11,4,16
1502         .long   0x7c084840
1503         bne     .Lppcasm_div5
1505         li      8,-1
1506         clrlwi  8,8,16
1507         b       .Lppcasm_div6
1508 .Lppcasm_div5:
1509         divwu   8,3,9
1510 .Lppcasm_div6:
1511         mullw   12,9,8
1512         clrlwi  10,5,16
1513         mullw   6,8,10
1515 .Lppcasm_divinnerloop:
1516         subf    10,12,3
1517         srwi    7,10,16
1518         addic.  7,7,0
1522         slwi    7,10,16
1523         or      7,7,11
1524         .long   0x7c863840
1525         bne     .Lppcasm_divinnerexit
1526         ble     1,.Lppcasm_divinnerexit
1527         addi    8,8,-1
1528         subf    12,9,12
1529         clrlwi  10,5,16
1530         subf    6,10,6
1531         b       .Lppcasm_divinnerloop
1532 .Lppcasm_divinnerexit:
1533         srwi    10,6,16
1534         slwi    11,6,16
1535         .long   0x7c845840
1536         add     12,12,10
1537         bge     1,.Lppcasm_div7
1538         addi    12,12,1
1539 .Lppcasm_div7:
1540         subf    11,11,4
1541         .long   0x7c836040
1542         bge     1,.Lppcasm_div8
1543         addi    8,8,-1
1544         add     3,5,3
1545 .Lppcasm_div8:
1546         subf    12,12,3
1547         slwi    4,11,16
1551         insrwi  11,12,16,16
1552         rotlwi  3,11,16
1553         bdz     .Lppcasm_div9
1554         slwi    0,8,16
1555         b       .Lppcasm_divouterloop
1556 .Lppcasm_div9:
1557         or      3,8,0
1558         blr     
1559 .long   0x00000000
1567 .align  4
1568 bn_sqr_words:
1583         addic.  5,5,0
1584         beq     .Lppcasm_sqr_adios
1585         addi    4,4,-4
1586         addi    3,3,-4
1587         mtctr   5
1588 .Lppcasm_sqr_mainloop:
1590         lwzu    6,4(4)
1591         mullw   7,6,6
1592         mulhwu  8,6,6
1593         stwu    7,4(3)
1594         stwu    8,4(3)
1595         bdnz+   .Lppcasm_sqr_mainloop
1596 .Lppcasm_sqr_adios:
1597         blr     
1598 .long   0x00000000
1608 .align  4
1609 bn_mul_words:
1617         xor     0,0,0
1618         xor     12,12,12
1619         rlwinm. 7,5,30,2,31
1620         beq     .Lppcasm_mw_REM
1621         mtctr   7
1622 .Lppcasm_mw_LOOP:
1624         lwz     8,0(4)
1625         mullw   9,6,8
1626         mulhwu  10,6,8
1627         addc    9,9,12
1632         stw     9,0(3)
1634         lwz     8,4(4)
1635         mullw   11,6,8
1636         mulhwu  12,6,8
1637         adde    11,11,10
1639         stw     11,4(3)
1641         lwz     8,8(4)
1642         mullw   9,6,8
1643         mulhwu  10,6,8
1644         adde    9,9,12
1646         stw     9,8(3)
1648         lwz     8,12(4)
1649         mullw   11,6,8
1650         mulhwu  12,6,8
1651         adde    11,11,10
1652         addze   12,12
1654         stw     11,12(3)
1656         addi    3,3,16
1657         addi    4,4,16
1658         bdnz+   .Lppcasm_mw_LOOP
1660 .Lppcasm_mw_REM:
1661         andi.   5,5,0x3
1662         beq     .Lppcasm_mw_OVER
1664         lwz     8,0(4)
1665         mullw   9,6,8
1666         mulhwu  10,6,8
1667         addc    9,9,12
1668         addze   10,10
1669         stw     9,0(3)
1670         addi    12,10,0
1672         addi    5,5,-1
1673         cmpli   0,0,5,0
1674         beq     .Lppcasm_mw_OVER
1678         lwz     8,4(4)
1679         mullw   9,6,8
1680         mulhwu  10,6,8
1681         addc    9,9,12
1682         addze   10,10
1683         stw     9,4(3)
1684         addi    12,10,0
1686         addi    5,5,-1
1687         cmpli   0,0,5,0
1688         beq     .Lppcasm_mw_OVER
1691         lwz     8,8(4)
1692         mullw   9,6,8
1693         mulhwu  10,6,8
1694         addc    9,9,12
1695         addze   10,10
1696         stw     9,8(3)
1697         addi    12,10,0
1699 .Lppcasm_mw_OVER:
1700         addi    3,12,0
1701         blr     
1702 .long   0x00000000
1711 .align  4
1712 bn_mul_add_words:
1723         xor     0,0,0
1724         xor     12,12,12
1725         rlwinm. 7,5,30,2,31
1726         beq     .Lppcasm_maw_leftover
1727         mtctr   7
1728 .Lppcasm_maw_mainloop:
1730         lwz     8,0(4)
1731         lwz     11,0(3)
1732         mullw   9,6,8
1733         mulhwu  10,6,8
1734         addc    9,9,12
1735         addze   10,10
1736         addc    9,9,11
1743         stw     9,0(3)
1746         lwz     8,4(4)
1747         lwz     9,4(3)
1748         mullw   11,6,8
1749         mulhwu  12,6,8
1750         adde    11,11,10
1751         addze   12,12
1752         addc    11,11,9
1754         stw     11,4(3)
1757         lwz     8,8(4)
1758         mullw   9,6,8
1759         lwz     11,8(3)
1760         mulhwu  10,6,8
1761         adde    9,9,12
1762         addze   10,10
1763         addc    9,9,11
1765         stw     9,8(3)
1768         lwz     8,12(4)
1769         mullw   11,6,8
1770         lwz     9,12(3)
1771         mulhwu  12,6,8
1772         adde    11,11,10
1773         addze   12,12
1774         addc    11,11,9
1775         addze   12,12
1776         stw     11,12(3)
1777         addi    3,3,16
1778         addi    4,4,16
1779         bdnz+   .Lppcasm_maw_mainloop
1781 .Lppcasm_maw_leftover:
1782         andi.   5,5,0x3
1783         beq     .Lppcasm_maw_adios
1784         addi    3,3,-4
1785         addi    4,4,-4
1787         mtctr   5
1788         lwzu    8,4(4)
1789         mullw   9,6,8
1790         mulhwu  10,6,8
1791         lwzu    11,4(3)
1792         addc    9,9,11
1793         addze   10,10
1794         addc    9,9,12
1795         addze   12,10
1796         stw     9,0(3)
1798         bdz     .Lppcasm_maw_adios
1800         lwzu    8,4(4)
1801         mullw   9,6,8
1802         mulhwu  10,6,8
1803         lwzu    11,4(3)
1804         addc    9,9,11
1805         addze   10,10
1806         addc    9,9,12
1807         addze   12,10
1808         stw     9,0(3)
1810         bdz     .Lppcasm_maw_adios
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)
1822 .Lppcasm_maw_adios:
1823         addi    3,12,0
1824         blr     
1825 .long   0x00000000
1826 .align  4