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