xref: /netbsd-src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/ppc64-mont.S (revision e0ea3921ea68e51b93ffc215f08ae1647c8e1796)
1.machine	"any"
2.text
3
4.globl	bn_mul_mont_fpu64
5.type	bn_mul_mont_fpu64,@function
6.section	".opd","aw"
7.align	3
8bn_mul_mont_fpu64:
9.quad	.bn_mul_mont_fpu64,.TOC.@tocbase,0
10.previous
11.align	5
12.bn_mul_mont_fpu64:
13	cmpwi	8,3
14	mr	9,3
15	li	3,0
16	bltlr
17	andi.	0,8,1
18	bnelr
19
20	slwi	8,8,3
21	li	12,-4096
22	slwi	10,8,2
23	add	10,10,8
24	addi	10,10,552
25	subf	10,10,1
26	and	10,10,12
27	subf	10,1,10
28	mr	12,1
29	stdux	1,1,10
30
31	std	19,-200(12)
32	std	20,-192(12)
33	std	21,-184(12)
34	std	22,-176(12)
35	std	23,-168(12)
36	std	24,-160(12)
37	std	25,-152(12)
38	std	26,-144(12)
39	std	27,-136(12)
40	std	28,-128(12)
41	std	29,-120(12)
42	std	30,-112(12)
43	std	31,-104(12)
44	stfd	20,-96(12)
45	stfd	21,-88(12)
46	stfd	22,-80(12)
47	stfd	23,-72(12)
48	stfd	24,-64(12)
49	stfd	25,-56(12)
50	stfd	26,-48(12)
51	stfd	27,-40(12)
52	stfd	28,-32(12)
53	stfd	29,-24(12)
54	stfd	30,-16(12)
55	stfd	31,-8(12)
56
57	addi	10,1,264
58	li	12,-64
59	add	22,10,8
60	and	22,22,12
61
62	addi	22,22,-8
63	srwi	11,8,4
64	addi	11,11,-1
65	addi	10,1,184
66	li	0,0
67	mtctr	11
68	ld	23,0(4)
69	ld	27,0(5)
70	ld	7,0(7)
71
72	mulld	31,23,27
73
74	rldicl	24,27,0,48
75	rldicl	25,27,48,48
76	rldicl	26,27,32,48
77	rldicl	27,27,16,48
78	std	24,64(1)
79	std	25,72(1)
80	std	26,80(1)
81	std	27,88(1)
82
83	mulld	31,31,7
84
85	rldicl	28,31,0,48
86	rldicl	29,31,48,48
87	rldicl	30,31,32,48
88	rldicl	31,31,16,48
89	std	28,96(1)
90	std	29,104(1)
91	std	30,112(1)
92	std	31,120(1)
93
94	rldicl	24,23,0,32
95	rldicl	25,23,32,32
96	lwz	26,12(4)
97	lwz	27,8(4)
98	lwz	28,4(6)
99	lwz	29,0(6)
100	lwz	30,12(6)
101	lwz	31,8(6)
102	lfd	0,64(1)
103	lfd	1,72(1)
104	lfd	2,80(1)
105	lfd	3,88(1)
106	lfd	4,96(1)
107	lfd	5,104(1)
108	lfd	6,112(1)
109	lfd	7,120(1)
110	std	24,128(1)
111	std	25,136(1)
112	std	26,144(1)
113	std	27,152(1)
114	std	28,160(1)
115	std	29,168(1)
116	std	30,176(1)
117	std	31,184(1)
118	fcfid	0,0
119	fcfid	1,1
120	fcfid	2,2
121	fcfid	3,3
122	fcfid	4,4
123	fcfid	5,5
124	fcfid	6,6
125	fcfid	7,7
126
127	lfd	10,128(1)
128	lfd	11,136(1)
129	lfd	12,144(1)
130	lfd	13,152(1)
131	lfd	20,160(1)
132	lfd	21,168(1)
133	lfd	22,176(1)
134	lfd	23,184(1)
135	fcfid	10,10
136	fcfid	11,11
137	fcfid	12,12
138	fcfid	13,13
139	fcfid	20,20
140	fcfid	21,21
141	fcfid	22,22
142	fcfid	23,23
143	addi	4,4,16
144	addi	6,6,16
145
146	fmul	26,11,0
147	fmul	27,11,1
148	stfd	10,8(22)
149	stfd	11,16(22)
150	fmul	28,12,0
151	fmul	29,12,1
152	stfd	12,24(22)
153	stfd	13,32(22)
154	fmul	30,13,0
155	fmul	31,13,1
156	stfd	20,40(22)
157	stfd	21,48(22)
158	fmul	24,10,0
159	fmul	25,10,1
160	stfd	22,56(22)
161	stfdu	23,64(22)
162
163	fmadd	26,10,2,26
164	fmadd	27,10,3,27
165	fmadd	28,11,2,28
166	fmadd	29,11,3,29
167	fmadd	30,12,2,30
168	fmadd	31,12,3,31
169	fmul	8,13,2
170	fmul	9,13,3
171
172	fmadd	26,21,4,26
173	fmadd	27,21,5,27
174	fmadd	28,22,4,28
175	fmadd	29,22,5,29
176	fmadd	30,23,4,30
177	fmadd	31,23,5,31
178	fmadd	24,20,4,24
179	fmadd	25,20,5,25
180
181	fmadd	26,20,6,26
182	fmadd	27,20,7,27
183	fmadd	28,21,6,28
184	fmadd	29,21,7,29
185	fmadd	30,22,6,30
186	fmadd	31,22,7,31
187	fmadd	8,23,6,8
188	fmadd	9,23,7,9
189
190	fctid	24,24
191	fctid	25,25
192	fctid	26,26
193	fctid	27,27
194	fctid	28,28
195	fctid	29,29
196	fctid	30,30
197	fctid	31,31
198
199	stfd	24,64(1)
200	stfd	25,72(1)
201	stfd	26,80(1)
202	stfd	27,88(1)
203	stfd	28,96(1)
204	stfd	29,104(1)
205	stfd	30,112(1)
206	stfd	31,120(1)
207
208.align	5
209.L1st:
210	lwz	24,4(4)
211	lwz	25,0(4)
212	lwz	26,12(4)
213	lwz	27,8(4)
214	lwz	28,4(6)
215	lwz	29,0(6)
216	lwz	30,12(6)
217	lwz	31,8(6)
218	std	24,128(1)
219	std	25,136(1)
220	std	26,144(1)
221	std	27,152(1)
222	std	28,160(1)
223	std	29,168(1)
224	std	30,176(1)
225	std	31,184(1)
226	ld	24,64(1)
227	ld	25,72(1)
228	ld	26,80(1)
229	ld	27,88(1)
230	ld	28,96(1)
231	ld	29,104(1)
232	ld	30,112(1)
233	ld	31,120(1)
234	lfd	10,128(1)
235	lfd	11,136(1)
236	lfd	12,144(1)
237	lfd	13,152(1)
238	lfd	20,160(1)
239	lfd	21,168(1)
240	lfd	22,176(1)
241	lfd	23,184(1)
242	fcfid	10,10
243	fcfid	11,11
244	fcfid	12,12
245	fcfid	13,13
246	fcfid	20,20
247	fcfid	21,21
248	fcfid	22,22
249	fcfid	23,23
250	addi	4,4,16
251	addi	6,6,16
252
253	fmul	26,11,0
254	fmul	27,11,1
255	fmul	28,12,0
256	fmul	29,12,1
257	stfd	10,8(22)
258	stfd	11,16(22)
259	fmul	30,13,0
260	fmul	31,13,1
261	fmadd	24,10,0,8
262	fmadd	25,10,1,9
263	stfd	12,24(22)
264	stfd	13,32(22)
265	fmadd	26,10,2,26
266	fmadd	27,10,3,27
267	fmadd	28,11,2,28
268	fmadd	29,11,3,29
269	stfd	20,40(22)
270	stfd	21,48(22)
271	fmadd	30,12,2,30
272	fmadd	31,12,3,31
273	add	24,24,0
274	fmul	8,13,2
275	fmul	9,13,3
276	stfd	22,56(22)
277	stfdu	23,64(22)
278	srdi	0,24,16
279	add	25,25,0
280	srdi	0,25,16
281
282	fmadd	26,21,4,26
283	fmadd	27,21,5,27
284	insrdi	24,25,16,32
285	fmadd	28,22,4,28
286	fmadd	29,22,5,29
287	add	26,26,0
288	fmadd	30,23,4,30
289	fmadd	31,23,5,31
290	srdi	0,26,16
291	fmadd	24,20,4,24
292	fmadd	25,20,5,25
293	insrdi	24,26,16,16
294	add	27,27,0
295	srdi	0,27,16
296
297	fmadd	26,20,6,26
298	fmadd	27,20,7,27
299	insrdi	24,27,16,0
300	fmadd	28,21,6,28
301	fmadd	29,21,7,29
302	add	28,28,0
303	fmadd	30,22,6,30
304	fmadd	31,22,7,31
305	srdi	0,28,16
306	fmadd	8,23,6,8
307	fmadd	9,23,7,9
308	add	29,29,0
309	srdi	0,29,16
310	insrdi	28,29,16,32
311
312	fctid	24,24
313	fctid	25,25
314	add	30,30,0
315	fctid	26,26
316	fctid	27,27
317	srdi	0,30,16
318	fctid	28,28
319	fctid	29,29
320	insrdi	28,30,16,16
321	fctid	30,30
322	fctid	31,31
323	add	31,31,0
324	insrdi	28,31,16,0
325	srdi	0,31,16
326
327	stfd	24,64(1)
328	stfd	25,72(1)
329	stfd	26,80(1)
330	stfd	27,88(1)
331	stfd	28,96(1)
332	stfd	29,104(1)
333	stfd	30,112(1)
334	stfd	31,120(1)
335	std	24,8(10)
336	stdu	28,16(10)
337	bc	16,0,.L1st
338
339	fctid	8,8
340	fctid	9,9
341	ld	24,64(1)
342	ld	25,72(1)
343	ld	26,80(1)
344	ld	27,88(1)
345	ld	28,96(1)
346	ld	29,104(1)
347	ld	30,112(1)
348	ld	31,120(1)
349	stfd	8,128(1)
350	stfd	9,136(1)
351
352	add	24,24,0
353	srdi	0,24,16
354	add	25,25,0
355	srdi	0,25,16
356	insrdi	24,25,16,32
357	add	26,26,0
358	srdi	0,26,16
359	insrdi	24,26,16,16
360	add	27,27,0
361	srdi	0,27,16
362	insrdi	24,27,16,0
363	add	28,28,0
364	srdi	0,28,16
365	add	29,29,0
366	srdi	0,29,16
367	insrdi	28,29,16,32
368	add	30,30,0
369	srdi	0,30,16
370	insrdi	28,30,16,16
371	add	31,31,0
372	insrdi	28,31,16,0
373	srdi	0,31,16
374	ld	30,128(1)
375	ld	31,136(1)
376
377	std	24,8(10)
378	stdu	28,16(10)
379
380	add	30,30,0
381	srdi	0,30,16
382	add	31,31,0
383	insrdi	30,31,48,0
384	srdi	3,31,48
385	std	30,8(10)
386	slwi	31,8,2
387	subf	22,31,22
388
389	li	12,8
390.align	5
391.Louter:
392	addi	10,1,192
393	li	0,0
394	mtctr	11
395	ldx	27,5,12
396
397	ld	30,200(1)
398	mulld	31,23,27
399	add	31,31,30
400
401	rldicl	24,27,0,48
402	rldicl	25,27,48,48
403	rldicl	26,27,32,48
404	rldicl	27,27,16,48
405	std	24,64(1)
406	std	25,72(1)
407	std	26,80(1)
408	std	27,88(1)
409
410	mulld	31,31,7
411
412	rldicl	28,31,0,48
413	rldicl	29,31,48,48
414	rldicl	30,31,32,48
415	rldicl	31,31,16,48
416	std	28,96(1)
417	std	29,104(1)
418	std	30,112(1)
419	std	31,120(1)
420	lfd	10,8(22)
421	lfd	11,16(22)
422	lfd	12,24(22)
423	lfd	13,32(22)
424	lfd	20,40(22)
425	lfd	21,48(22)
426	lfd	22,56(22)
427	lfdu	23,64(22)
428
429	lfd	0,64(1)
430	lfd	1,72(1)
431	lfd	2,80(1)
432	lfd	3,88(1)
433	lfd	4,96(1)
434	lfd	5,104(1)
435	lfd	6,112(1)
436	lfd	7,120(1)
437
438	fcfid	0,0
439	fcfid	1,1
440	fcfid	2,2
441	fcfid	3,3
442	fcfid	4,4
443	fcfid	5,5
444	fcfid	6,6
445	fcfid	7,7
446
447	fmul	26,11,0
448	fmul	27,11,1
449	fmul	28,12,0
450	fmul	29,12,1
451	fmul	30,13,0
452	fmul	31,13,1
453	fmul	24,10,0
454	fmul	25,10,1
455
456	fmadd	26,10,2,26
457	fmadd	27,10,3,27
458	fmadd	28,11,2,28
459	fmadd	29,11,3,29
460	fmadd	30,12,2,30
461	fmadd	31,12,3,31
462	fmul	8,13,2
463	fmul	9,13,3
464
465	fmadd	26,21,4,26
466	fmadd	27,21,5,27
467	lfd	10,8(22)
468	lfd	11,16(22)
469	fmadd	28,22,4,28
470	fmadd	29,22,5,29
471	lfd	12,24(22)
472	lfd	13,32(22)
473	fmadd	30,23,4,30
474	fmadd	31,23,5,31
475	fmadd	24,20,4,24
476	fmadd	25,20,5,25
477
478	fmadd	26,20,6,26
479	fmadd	27,20,7,27
480	fmadd	28,21,6,28
481	fmadd	29,21,7,29
482	fmadd	30,22,6,30
483	fmadd	31,22,7,31
484	fmadd	8,23,6,8
485	fmadd	9,23,7,9
486
487	fctid	24,24
488	fctid	25,25
489	fctid	26,26
490	fctid	27,27
491	fctid	28,28
492	fctid	29,29
493	fctid	30,30
494	fctid	31,31
495
496	stfd	24,64(1)
497	stfd	25,72(1)
498	stfd	26,80(1)
499	stfd	27,88(1)
500	stfd	28,96(1)
501	stfd	29,104(1)
502	stfd	30,112(1)
503	stfd	31,120(1)
504
505.align	5
506.Linner:
507	fmul	26,11,0
508	fmul	27,11,1
509	fmul	28,12,0
510	fmul	29,12,1
511	lfd	20,40(22)
512	lfd	21,48(22)
513	fmul	30,13,0
514	fmul	31,13,1
515	fmadd	24,10,0,8
516	fmadd	25,10,1,9
517	lfd	22,56(22)
518	lfdu	23,64(22)
519
520	fmadd	26,10,2,26
521	fmadd	27,10,3,27
522	fmadd	28,11,2,28
523	fmadd	29,11,3,29
524	lfd	10,8(22)
525	lfd	11,16(22)
526	fmadd	30,12,2,30
527	fmadd	31,12,3,31
528	fmul	8,13,2
529	fmul	9,13,3
530	lfd	12,24(22)
531	lfd	13,32(22)
532	fmadd	26,21,4,26
533	fmadd	27,21,5,27
534	ld	24,64(1)
535	ld	25,72(1)
536	fmadd	28,22,4,28
537	fmadd	29,22,5,29
538	ld	26,80(1)
539	ld	27,88(1)
540	fmadd	30,23,4,30
541	fmadd	31,23,5,31
542	add	24,24,0
543	ld	28,96(1)
544	ld	29,104(1)
545	fmadd	24,20,4,24
546	fmadd	25,20,5,25
547	srdi	0,24,16
548	add	25,25,0
549	srdi	0,25,16
550	ld	30,112(1)
551	ld	31,120(1)
552
553	fmadd	26,20,6,26
554	fmadd	27,20,7,27
555	insrdi	24,25,16,32
556	ld	25,8(10)
557	fmadd	28,21,6,28
558	fmadd	29,21,7,29
559	add	26,26,0
560	fmadd	30,22,6,30
561	fmadd	31,22,7,31
562	srdi	0,26,16
563	insrdi	24,26,16,16
564	fmadd	8,23,6,8
565	fmadd	9,23,7,9
566	add	27,27,0
567	ldu	26,16(10)
568	srdi	0,27,16
569	insrdi	24,27,16,0
570	add	28,28,0
571
572	fctid	24,24
573	fctid	25,25
574	srdi	0,28,16
575	fctid	26,26
576	fctid	27,27
577	add	29,29,0
578	fctid	28,28
579	fctid	29,29
580	srdi	0,29,16
581	insrdi	28,29,16,32
582	fctid	30,30
583	fctid	31,31
584	add	30,30,0
585	srdi	0,30,16
586	insrdi	28,30,16,16
587
588	stfd	24,64(1)
589	stfd	25,72(1)
590	add	31,31,0
591	addc	27,24,25
592	stfd	26,80(1)
593	stfd	27,88(1)
594	insrdi	28,31,16,0
595	srdi	0,31,16
596	stfd	28,96(1)
597	stfd	29,104(1)
598	adde	29,28,26
599	stfd	30,112(1)
600	stfd	31,120(1)
601	addze	0,0
602	std	27,-16(10)
603	std	29,-8(10)
604	bc	16,0,.Linner
605
606	fctid	8,8
607	fctid	9,9
608	ld	24,64(1)
609	ld	25,72(1)
610	ld	26,80(1)
611	ld	27,88(1)
612	ld	28,96(1)
613	ld	29,104(1)
614	ld	30,112(1)
615	ld	31,120(1)
616	stfd	8,128(1)
617	stfd	9,136(1)
618
619	add	24,24,0
620	srdi	0,24,16
621	add	25,25,0
622	srdi	0,25,16
623	insrdi	24,25,16,32
624	add	26,26,0
625	ld	25,8(10)
626	srdi	0,26,16
627	insrdi	24,26,16,16
628	add	27,27,0
629	ldu	26,16(10)
630	srdi	0,27,16
631	insrdi	24,27,16,0
632	add	28,28,0
633	srdi	0,28,16
634	add	29,29,0
635	srdi	0,29,16
636	insrdi	28,29,16,32
637	add	30,30,0
638	srdi	0,30,16
639	insrdi	28,30,16,16
640	add	31,31,0
641	insrdi	28,31,16,0
642	srdi	0,31,16
643	ld	30,128(1)
644	ld	31,136(1)
645
646	addc	27,24,25
647	adde	29,28,26
648	addze	0,0
649
650	std	27,-16(10)
651	std	29,-8(10)
652
653	add	0,0,3
654	add	30,30,0
655	srdi	0,30,16
656	add	31,31,0
657	insrdi	30,31,48,0
658	srdi	3,31,48
659	std	30,0(10)
660	slwi	31,8,2
661	addi	12,12,8
662	subf	22,31,22
663	cmpw	12,8
664	blt-	.Louter
665	subf	6,8,6
666	addi	11,11,1
667	subfc	12,12,12
668	addi	10,1,200
669	addi	28,1,208
670	addi	29,6,8
671	addi	30,9,8
672	mtctr	11
673
674.align	4
675.Lsub:	ldx	24,10,12
676	ldx	25,6,12
677	ldx	26,28,12
678	ldx	27,29,12
679	subfe	24,25,24
680	subfe	26,27,26
681	stdx	24,9,12
682	stdx	26,30,12
683	addi	12,12,16
684	bc	16,0,.Lsub
685
686	li	12,0
687	subfe	3,12,3
688	mtctr	11
689
690.align	4
691.Lcopy:
692	ldx	24,10,12
693	ldx	25,28,12
694	ldx	26,9,12
695	ldx	27,30,12
696	std	12,8(22)
697	std	12,16(22)
698	std	12,24(22)
699	std	12,32(22)
700	std	12,40(22)
701	std	12,48(22)
702	std	12,56(22)
703	stdu	12,64(22)
704	and	24,24,3
705	and	25,25,3
706	andc	26,26,3
707	andc	27,27,3
708	or	24,24,26
709	or	25,25,27
710	stdx	24,9,12
711	stdx	25,30,12
712	stdx	12,10,12
713	stdx	12,28,12
714	addi	12,12,16
715	bc	16,0,.Lcopy
716	ld	12,0(1)
717	li	3,1
718	ld	19,-200(12)
719	ld	20,-192(12)
720	ld	21,-184(12)
721	ld	22,-176(12)
722	ld	23,-168(12)
723	ld	24,-160(12)
724	ld	25,-152(12)
725	ld	26,-144(12)
726	ld	27,-136(12)
727	ld	28,-128(12)
728	ld	29,-120(12)
729	ld	30,-112(12)
730	ld	31,-104(12)
731	lfd	20,-96(12)
732	lfd	21,-88(12)
733	lfd	22,-80(12)
734	lfd	23,-72(12)
735	lfd	24,-64(12)
736	lfd	25,-56(12)
737	lfd	26,-48(12)
738	lfd	27,-40(12)
739	lfd	28,-32(12)
740	lfd	29,-24(12)
741	lfd	30,-16(12)
742	lfd	31,-8(12)
743	mr	1,12
744	blr
745.long	0
746.byte	0,12,4,0,0x8c,13,6,0
747.long	0
748
749
750.byte	77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,80,80,67,54,52,44,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
751.align	2
752