xref: /src/sys/crypto/openssl/powerpc64le/ecp_nistp384-ppc64.S (revision fa3519d068d95f87e773d27f96e9f1e18f70075a)
1/* Do not modify. This file is auto-generated from ecp_nistp384-ppc64.pl. */
2.machine	"any"
3.abiversion	2
4.text
5
6.globl	p384_felem_mul
7.type	p384_felem_mul,@function
8.type	p384_felem_mul,@function
9.align	4
10p384_felem_mul:
11.localentry	p384_felem_mul,0
12
13
14	stdu	1, -176(1)
15	mflr	0
16	std	14, 56(1)
17	std	15, 64(1)
18	std	16, 72(1)
19	std	17, 80(1)
20	std	18, 88(1)
21	std	19, 96(1)
22	std	20, 104(1)
23	std	21, 112(1)
24	std	22, 120(1)
25
26	bl	_p384_felem_mul_core
27
28	mtlr	0
29	ld	14, 56(1)
30	ld	15, 64(1)
31	ld	16, 72(1)
32	ld	17, 80(1)
33	ld	18, 88(1)
34	ld	19, 96(1)
35	ld	20, 104(1)
36	ld	21, 112(1)
37	ld	22, 120(1)
38	addi	1, 1, 176
39	blr
40.size	p384_felem_mul,.-p384_felem_mul
41
42.globl	p384_felem_square
43.type	p384_felem_square,@function
44.type	p384_felem_square,@function
45.align	4
46p384_felem_square:
47.localentry	p384_felem_square,0
48
49
50	stdu	1, -176(1)
51	mflr	0
52	std	14, 56(1)
53	std	15, 64(1)
54	std	16, 72(1)
55	std	17, 80(1)
56
57	bl	_p384_felem_square_core
58
59	mtlr	0
60	ld	14, 56(1)
61	ld	15, 64(1)
62	ld	16, 72(1)
63	ld	17, 80(1)
64	addi	1, 1, 176
65	blr
66.size	p384_felem_square,.-p384_felem_square
67
68
69
70
71
72.type	_p384_felem_mul_core,@function
73.align	4
74_p384_felem_mul_core:
75.localentry	_p384_felem_mul_core,0
76
77
78	ld	6,0(4)
79	ld	14,0(5)
80	ld	7,8(4)
81	ld	15,8(5)
82	ld	8,16(4)
83	ld	16,16(5)
84	ld	9,24(4)
85	ld	17,24(5)
86	ld	10,32(4)
87	ld	18,32(5)
88	ld	11,40(4)
89	ld	19,40(5)
90	ld	12,48(4)
91	ld	20,48(5)
92
93
94	mulld	21, 14, 6
95	mulhdu	22, 14, 6
96	std	21, 0(3)
97	std	22, 8(3)
98
99	vxor	0, 0, 0
100
101
102	mtvsrdd	32+13, 14, 6
103	mtvsrdd	32+14, 7, 15
104	.long	0x102D7023
105
106
107	mtvsrdd	32+15, 15, 6
108	mtvsrdd	32+16, 7, 16
109	mtvsrdd	32+17, 0, 8
110	mtvsrdd	32+18, 0, 14
111	.long	0x126F8023
112	.long	0x105194E3
113
114
115	mtvsrdd	32+13, 16, 6
116	mtvsrdd	32+14, 7, 17
117	mtvsrdd	32+15, 14, 8
118	mtvsrdd	32+16, 9, 15
119	.long	0x126D7023
120	.long	0x106F84E3
121
122
123	mtvsrdd	32+13, 17, 6
124	mtvsrdd	32+14, 7, 18
125	mtvsrdd	32+15, 15, 8
126	mtvsrdd	32+16, 9, 16
127	mtvsrdd	32+17, 0, 10
128	mtvsrdd	32+18, 0, 14
129	.long	0x126D7023
130	.long	0x108F84E3
131	.long	0x10919123
132
133
134	mtvsrdd	32+13, 18, 6
135	mtvsrdd	32+14, 7, 19
136	mtvsrdd	32+15, 16, 8
137	mtvsrdd	32+16, 9, 17
138	mtvsrdd	32+17, 14, 10
139	mtvsrdd	32+18, 11, 15
140	.long	0x126D7023
141	.long	0x10AF84E3
142	.long	0x10B19163
143
144	stxv	32+1, 16(3)
145	stxv	32+2, 32(3)
146	stxv	32+3, 48(3)
147	stxv	32+4, 64(3)
148	stxv	32+5, 80(3)
149
150
151	mtvsrdd	32+13, 19, 6
152	mtvsrdd	32+14, 7, 20
153	mtvsrdd	32+15, 17, 8
154	mtvsrdd	32+16, 9, 18
155	mtvsrdd	32+17, 15, 10
156	mtvsrdd	32+18, 11, 16
157	.long	0x126D7023
158	.long	0x10CF84E3
159	mtvsrdd	32+13, 0, 12
160	mtvsrdd	32+14, 0, 14
161	.long	0x127191A3
162	.long	0x10CD74E3
163
164
165	mtvsrdd	32+13, 19, 7
166	mtvsrdd	32+14, 8, 20
167	mtvsrdd	32+15, 17, 9
168	mtvsrdd	32+16, 10, 18
169	mtvsrdd	32+17, 15, 11
170	mtvsrdd	32+18, 12, 16
171	.long	0x126D7023
172	.long	0x10EF84E3
173	.long	0x10F191E3
174
175
176	mtvsrdd	32+13, 19, 8
177	mtvsrdd	32+14, 9, 20
178	mtvsrdd	32+15, 17, 10
179	mtvsrdd	32+16, 11, 18
180	mtvsrdd	32+17, 0, 12
181	mtvsrdd	32+18, 0, 16
182	.long	0x126D7023
183	.long	0x110F84E3
184	.long	0x11119223
185
186
187	mtvsrdd	32+13, 19, 9
188	mtvsrdd	32+14, 10, 20
189	mtvsrdd	32+15, 17, 11
190	mtvsrdd	32+16, 12, 18
191	.long	0x126D7023
192	.long	0x112F84E3
193
194
195	mtvsrdd	32+13, 19, 10
196	mtvsrdd	32+14, 11, 20
197	mtvsrdd	32+15, 0, 12
198	mtvsrdd	32+16, 0, 18
199	.long	0x126D7023
200	.long	0x114F84E3
201
202
203	mtvsrdd	32+17, 19, 11
204	mtvsrdd	32+18, 12, 20
205	.long	0x11719023
206
207	stxv	32+6, 96(3)
208	stxv	32+7, 112(3)
209	stxv	32+8, 128(3)
210	stxv	32+9, 144(3)
211	stxv	32+10, 160(3)
212	stxv	32+11, 176(3)
213
214
215	mulld	21, 20, 12
216	mulhdu	22, 20, 12
217
218	std	21, 192(3)
219	std	22, 200(3)
220
221	blr
222.size	_p384_felem_mul_core,.-_p384_felem_mul_core
223
224
225
226
227
228.type	_p384_felem_square_core,@function
229.align	4
230_p384_felem_square_core:
231.localentry	_p384_felem_square_core,0
232
233
234	ld	6, 0(4)
235	ld	7, 8(4)
236	ld	8, 16(4)
237	ld	9, 24(4)
238	ld	10, 32(4)
239	ld	11, 40(4)
240	ld	12, 48(4)
241
242	vxor	0, 0, 0
243
244
245	mulld	14, 6, 6
246	mulhdu	15, 6, 6
247	std	14, 0(3)
248	std	15, 8(3)
249
250
251	add	14, 6, 6
252	mtvsrdd	32+13, 0, 14
253	mtvsrdd	32+14, 0, 7
254	.long	0x102D7023
255
256
257	mtvsrdd	32+15, 7, 14
258	mtvsrdd	32+16, 7, 8
259	.long	0x104F8023
260
261
262	add	15, 7, 7
263	mtvsrdd	32+13, 8, 14
264	mtvsrdd	32+14, 15, 9
265	.long	0x106D7023
266
267
268	mtvsrdd	32+13, 9, 14
269	mtvsrdd	32+14, 15, 10
270	mtvsrdd	32+15, 0, 8
271	.long	0x108D7023
272	.long	0x108F7923
273
274
275	mtvsrdd	32+13, 10, 14
276	mtvsrdd	32+14, 15, 11
277	add	16, 8, 8
278	mtvsrdd	32+15, 0, 16
279	mtvsrdd	32+16, 0, 9
280	.long	0x10AD7023
281	.long	0x10AF8163
282
283	stxv	32+1, 16(3)
284	stxv	32+2, 32(3)
285	stxv	32+3, 48(3)
286	stxv	32+4, 64(3)
287
288
289	mtvsrdd	32+13, 11, 14
290	mtvsrdd	32+14, 15, 12
291	mtvsrdd	32+15, 9, 16
292	mtvsrdd	32+16, 9, 10
293	stxv	32+5, 80(3)
294	.long	0x126D7023
295	.long	0x10CF84E3
296
297
298	add	17, 9, 9
299	mtvsrdd	32+13, 11, 15
300	mtvsrdd	32+14, 16, 12
301	mtvsrdd	32+15, 0, 17
302	mtvsrdd	32+16, 0, 10
303	.long	0x126D7023
304	.long	0x10EF84E3
305
306
307	mtvsrdd	32+13, 11, 16
308	mtvsrdd	32+14, 17, 12
309	mtvsrdd	32+15, 0, 10
310	.long	0x126D7023
311	.long	0x110F7CE3
312
313
314	add	14, 10, 10
315	mtvsrdd	32+13, 11, 17
316	mtvsrdd	32+14, 14, 12
317	.long	0x112D7023
318
319
320	mtvsrdd	32+13, 11, 14
321	mtvsrdd	32+14, 11, 12
322	.long	0x114D7023
323
324	stxv	32+6, 96(3)
325	stxv	32+7, 112(3)
326
327
328
329
330
331
332
333	mulld	6, 12, 11
334	mulhdu	7, 12, 11
335	addc	8, 6, 6
336	adde	9, 7, 7
337
338	stxv	32+8, 128(3)
339	stxv	32+9, 144(3)
340	stxv	32+10, 160(3)
341
342
343
344	mulld	14, 12, 12
345	mulhdu	15, 12, 12
346
347	std	8, 176(3)
348	std	9, 184(3)
349	std	14, 192(3)
350	std	15, 200(3)
351
352	blr
353.size	_p384_felem_square_core,.-_p384_felem_square_core
354
355
356
357
358.macro	F128_X_8 _off1 _off2
359	ld	9,\_off1(3)
360	ld	8,\_off2(3)
361	srdi	10,9,61
362	rldimi	10,8,3,0
363	sldi	9,9,3
364	std	9,\_off1(3)
365	std	10,\_off2(3)
366.endm
367
368.globl	p384_felem128_mul_by_8
369.type	p384_felem128_mul_by_8,@function
370.type	p384_felem128_mul_by_8,@function
371.align	4
372p384_felem128_mul_by_8:
373.localentry	p384_felem128_mul_by_8,0
374
375
376	F128_X_8	0, 8
377
378	F128_X_8	16, 24
379
380	F128_X_8	32, 40
381
382	F128_X_8	48, 56
383
384	F128_X_8	64, 72
385
386	F128_X_8	80, 88
387
388	F128_X_8	96, 104
389
390	F128_X_8	112, 120
391
392	F128_X_8	128, 136
393
394	F128_X_8	144, 152
395
396	F128_X_8	160, 168
397
398	F128_X_8	176, 184
399
400	F128_X_8	192, 200
401
402	blr
403.size	p384_felem128_mul_by_8,.-p384_felem128_mul_by_8
404
405
406
407
408.macro	F128_X_2 _off1 _off2
409	ld	9,\_off1(3)
410	ld	8,\_off2(3)
411	srdi	10,9,63
412	rldimi	10,8,1,0
413	sldi	9,9,1
414	std	9,\_off1(3)
415	std	10,\_off2(3)
416.endm
417
418.globl	p384_felem128_mul_by_2
419.type	p384_felem128_mul_by_2,@function
420.type	p384_felem128_mul_by_2,@function
421.align	4
422p384_felem128_mul_by_2:
423.localentry	p384_felem128_mul_by_2,0
424
425
426	F128_X_2	0, 8
427
428	F128_X_2	16, 24
429
430	F128_X_2	32, 40
431
432	F128_X_2	48, 56
433
434	F128_X_2	64, 72
435
436	F128_X_2	80, 88
437
438	F128_X_2	96, 104
439
440	F128_X_2	112, 120
441
442	F128_X_2	128, 136
443
444	F128_X_2	144, 152
445
446	F128_X_2	160, 168
447
448	F128_X_2	176, 184
449
450	F128_X_2	192, 200
451
452	blr
453.size	p384_felem128_mul_by_2,.-p384_felem128_mul_by_2
454
455.globl	p384_felem_diff128
456.type	p384_felem_diff128,@function
457.type	p384_felem_diff128,@function
458.align	4
459p384_felem_diff128:
460.localentry	p384_felem_diff128,0
461
462
463	addis	5, 2, .LConst_two127@toc@ha
464	addi	5, 5, .LConst_two127@toc@l
465
466	ld	10, 0(3)
467	ld	8, 8(3)
468	li	9, 0
469	addc	10, 10, 9
470	li	7, -1
471	rldicr	7, 7, 0, 0
472	adde	8, 8, 7
473	ld	11, 0(4)
474	ld	12, 8(4)
475	subfc	11, 11, 10
476	subfe	12, 12, 8
477	std	11, 0(3)
478	std	12, 8(3)
479
480
481	ld	8, 16(3)
482	ld	7, 24(3)
483	ld	10, 24(5)
484	addc	8, 8, 9
485	adde	7, 7, 10
486	ld	11, 16(4)
487	ld	12, 24(4)
488	subfc	11, 11, 8
489	subfe	12, 12, 7
490	std	11, 16(3)
491	std	12, 24(3)
492
493	ld	8, 32(3)
494	ld	7, 40(3)
495	addc	8, 8, 9
496	adde	7, 7, 10
497	ld	11, 32(4)
498	ld	12, 40(4)
499	subfc	11, 11, 8
500	subfe	12, 12, 7
501	std	11, 32(3)
502	std	12, 40(3)
503
504	ld	8, 48(3)
505	ld	7, 56(3)
506	addc	8, 8, 9
507	adde	7, 7, 10
508	ld	11, 48(4)
509	ld	12, 56(4)
510	subfc	11, 11, 8
511	subfe	12, 12, 7
512	std	11, 48(3)
513	std	12, 56(3)
514
515	ld	8, 64(3)
516	ld	7, 72(3)
517	addc	8, 8, 9
518	adde	7, 7, 10
519	ld	11, 64(4)
520	ld	12, 72(4)
521	subfc	11, 11, 8
522	subfe	12, 12, 7
523	std	11, 64(3)
524	std	12, 72(3)
525
526	ld	8, 80(3)
527	ld	7, 88(3)
528	addc	8, 8, 9
529	adde	7, 7, 10
530	ld	11, 80(4)
531	ld	12, 88(4)
532	subfc	11, 11, 8
533	subfe	12, 12, 7
534	std	11, 80(3)
535	std	12, 88(3)
536
537	ld	8, 96(3)
538	ld	7, 104(3)
539	ld	6, 40(5)
540	addc	8, 8, 9
541	adde	7, 7, 6
542	ld	11, 96(4)
543	ld	12, 104(4)
544	subfc	11, 11, 8
545	subfe	12, 12, 7
546	std	11, 96(3)
547	std	12, 104(3)
548
549	ld	8, 112(3)
550	ld	7, 120(3)
551	ld	6, 56(5)
552	addc	8, 8, 9
553	adde	7, 7, 6
554	ld	11, 112(4)
555	ld	12, 120(4)
556	subfc	11, 11, 8
557	subfe	12, 12, 7
558	std	11, 112(3)
559	std	12, 120(3)
560
561	ld	8, 128(3)
562	ld	7, 136(3)
563	ld	6, 72(5)
564	addc	8, 8, 9
565	adde	7, 7, 6
566	ld	11, 128(4)
567	ld	12, 136(4)
568	subfc	11, 11, 8
569	subfe	12, 12, 7
570	std	11, 128(3)
571	std	12, 136(3)
572
573	ld	8, 144(3)
574	ld	7, 152(3)
575	addc	8, 8, 9
576	adde	7, 7, 10
577	ld	11, 144(4)
578	ld	12, 152(4)
579	subfc	11, 11, 8
580	subfe	12, 12, 7
581	std	11, 144(3)
582	std	12, 152(3)
583
584	ld	8, 160(3)
585	ld	7, 168(3)
586	addc	8, 8, 9
587	adde	7, 7, 10
588	ld	11, 160(4)
589	ld	12, 168(4)
590	subfc	11, 11, 8
591	subfe	12, 12, 7
592	std	11, 160(3)
593	std	12, 168(3)
594
595	ld	8, 176(3)
596	ld	7, 184(3)
597	addc	8, 8, 9
598	adde	7, 7, 10
599	ld	11, 176(4)
600	ld	12, 184(4)
601	subfc	11, 11, 8
602	subfe	12, 12, 7
603	std	11, 176(3)
604	std	12, 184(3)
605
606	ld	8, 192(3)
607	ld	7, 200(3)
608	addc	8, 8, 9
609	adde	7, 7, 10
610	ld	11, 192(4)
611	ld	12, 200(4)
612	subfc	11, 11, 8
613	subfe	12, 12, 7
614	std	11, 192(3)
615	std	12, 200(3)
616
617	blr
618.size	p384_felem_diff128,.-p384_felem_diff128
619
620.data
621.align	4
622.LConst_two127:
623
624.long	0x00000000, 0x00000000, 0x00000000, 0x80000000
625
626.long	0x00000000, 0x00000000, 0xffffff80, 0x7fffffff
627
628.long	0x00000000, 0x00000000, 0xffff7f80, 0x80007fff
629
630.long	0x00000000, 0x00000000, 0xffffff80, 0x7f7fffff
631
632.long	0x00000000, 0x00000000, 0x7fffff80, 0x7fffffff
633
634.abiversion	2
635.text
636
637.globl	p384_felem_diff_128_64
638.type	p384_felem_diff_128_64,@function
639.type	p384_felem_diff_128_64,@function
640.align	4
641p384_felem_diff_128_64:
642.localentry	p384_felem_diff_128_64,0
643
644	addis	5, 2, .LConst_128_two64@toc@ha
645	addi	5, 5, .LConst_128_two64@toc@l
646
647	ld	9, 0(3)
648	ld	10, 8(3)
649	ld	8, 48(5)
650	li	7, 0
651	addc	9, 9, 8
652	li	6, 1
653	adde	10, 10, 6
654	ld	11, 0(4)
655	subfc	8, 11, 9
656	subfe	12, 7, 10
657	std	8, 0(3)
658	std	12, 8(3)
659
660	ld	9, 16(3)
661	ld	10, 24(3)
662	ld	8, 0(5)
663	addc	9, 9, 8
664	addze	10, 10
665	ld	11, 8(4)
666	subfc	11, 11, 9
667	subfe	12, 7, 10
668	std	11, 16(3)
669	std	12, 24(3)
670
671	ld	9, 32(3)
672	ld	10, 40(3)
673	ld	8, 16(5)
674	addc	9, 9, 8
675	addze	10, 10
676	ld	11, 16(4)
677	subfc	11, 11, 9
678	subfe	12, 7, 10
679	std	11, 32(3)
680	std	12, 40(3)
681
682	ld	10, 48(3)
683	ld	8, 56(3)
684
685	li	9, -256
686	addc	10, 10, 9
687	addze	8, 8
688	ld	11, 24(4)
689	subfc	11, 11, 10
690	subfe	12, 7, 8
691	std	11, 48(3)
692	std	12, 56(3)
693
694	ld	10, 64(3)
695	ld	8, 72(3)
696	addc	10, 10, 9
697	addze	8, 8
698	ld	11, 32(4)
699	subfc	11, 11, 10
700	subfe	12, 7, 8
701	std	11, 64(3)
702	std	12, 72(3)
703
704	ld	10, 80(3)
705	ld	8, 88(3)
706	addc	10, 10, 9
707	addze	8, 8
708	ld	11, 40(4)
709	subfc	11, 11, 10
710	subfe	12, 7, 8
711	std	11, 80(3)
712	std	12, 88(3)
713
714	ld	10, 96(3)
715	ld	8, 104(3)
716	addc	10, 10, 9
717	addze	9, 8
718	ld	11, 48(4)
719	subfc	11, 11, 10
720	subfe	12, 7, 9
721	std	11, 96(3)
722	std	12, 104(3)
723
724	blr
725.size	p384_felem_diff_128_64,.-p384_felem_diff_128_64
726
727.data
728.align	4
729.LConst_128_two64:
730
731.long	0xffffff00, 0xfeffffff, 0x00000000, 0x00000000
732
733.long	0xffffff00, 0xfffffffe, 0x00000000, 0x00000000
734
735.long	0xffffff00, 0xffffffff, 0x00000000, 0x00000000
736
737.long	0xffff0000, 0x0000ffff, 0x00000001, 0x00000000
738
739.LConst_two60:
740
741.long	0xfffffff0, 0x0fefffff, 0x0, 0x0
742
743.long	0xfffff000, 0x10000fff, 0x0, 0x0
744
745.long	0xeffffff0, 0x0fffffff, 0x0, 0x0
746
747.long	0xfffffff0, 0x0fffffff, 0x0, 0x0
748
749.abiversion	2
750.text
751
752
753
754.globl	p384_felem_diff64
755.type	p384_felem_diff64,@function
756.type	p384_felem_diff64,@function
757.align	4
758p384_felem_diff64:
759.localentry	p384_felem_diff64,0
760
761	addis	5, 2, .LConst_two60@toc@ha
762	addi	5, 5, .LConst_two60@toc@l
763
764	ld	9, 0(3)
765	ld	8, 16(5)
766	li	7, 0
767	add	9, 9, 8
768	ld	11, 0(4)
769	subf	8, 11, 9
770	std	8, 0(3)
771
772	ld	9, 8(3)
773	ld	8, 0(5)
774	add	9, 9, 8
775	ld	11, 8(4)
776	subf	11, 11, 9
777	std	11, 8(3)
778
779	ld	9, 16(3)
780	ld	8, 32(5)
781	add	9, 9, 8
782	ld	11, 16(4)
783	subf	11, 11, 9
784	std	11, 16(3)
785
786	ld	10, 24(3)
787	ld	9, 48(5)
788	add	10, 10, 9
789	ld	12, 24(4)
790	subf	12, 12, 10
791	std	12, 24(3)
792
793	ld	10, 32(3)
794	add	10, 10, 9
795	ld	11, 32(4)
796	subf	11, 11, 10
797	std	11, 32(3)
798
799	ld	10, 40(3)
800	add	10, 10, 9
801	ld	12, 40(4)
802	subf	12, 12, 10
803	std	12, 40(3)
804
805	ld	10, 48(3)
806	add	10, 10, 9
807	ld	11, 48(4)
808	subf	11, 11, 10
809	std	11, 48(3)
810
811	blr
812.size	p384_felem_diff64,.-p384_felem_diff64
813
814.abiversion	2
815.text
816
817
818
819.macro	SHR o_h o_l in_h in_l nbits
820	srdi	\o_l, \in_l, \nbits
821	rldimi	\o_l, \in_h, 64-\nbits, 0
822	srdi	\o_h, \in_h, \nbits
823.endm
824
825
826
827
828.global	p384_felem_reduce
829.type	p384_felem_reduce,@function
830.align	4
831p384_felem_reduce:
832.localentry	p384_felem_reduce,0
833
834
835	stdu	1, -208(1)
836	mflr	0
837	std	14, 56(1)
838	std	15, 64(1)
839	std	16, 72(1)
840	std	17, 80(1)
841	std	18, 88(1)
842	std	19, 96(1)
843	std	20, 104(1)
844	std	21, 112(1)
845	std	22, 120(1)
846	std	23, 128(1)
847	std	24, 136(1)
848	std	25, 144(1)
849	std	26, 152(1)
850	std	27, 160(1)
851	std	28, 168(1)
852	std	29, 176(1)
853	std	30, 184(1)
854	std	31, 192(1)
855
856	bl	_p384_felem_reduce_core
857
858	mtlr	0
859	ld	14, 56(1)
860	ld	15, 64(1)
861	ld	16, 72(1)
862	ld	17, 80(1)
863	ld	18, 88(1)
864	ld	19, 96(1)
865	ld	20, 104(1)
866	ld	21, 112(1)
867	ld	22, 120(1)
868	ld	23, 128(1)
869	ld	24, 136(1)
870	ld	25, 144(1)
871	ld	26, 152(1)
872	ld	27, 160(1)
873	ld	28, 168(1)
874	ld	29, 176(1)
875	ld	30, 184(1)
876	ld	31, 192(1)
877	addi	1, 1, 208
878	blr
879.size	p384_felem_reduce,.-p384_felem_reduce
880
881
882
883
884
885.type	_p384_felem_reduce_core,@function
886.align	4
887_p384_felem_reduce_core:
888.localentry	_p384_felem_reduce_core,0
889
890	addis	12, 2, .LConst@toc@ha
891	addi	12, 12, .LConst@toc@l
892
893
894	ld	11, 8(12)
895
896
897	ld	26, 96(4)
898	ld	27, 96+8(4)
899	add	27, 27, 11
900
901
902	ld	24, 80(4)
903	ld	25, 80+8(4)
904	add	25, 25, 11
905
906
907	ld	22, 64(4)
908	ld	23, 64+8(4)
909	add	23, 23, 11
910
911
912	ld	20, 48(4)
913	ld	21, 48+8(4)
914	add	21, 21, 11
915
916	ld	11, 48+8(12)
917
918
919	ld	18, 32(4)
920	ld	19, 32+8(4)
921	add	19, 19, 11
922
923	ld	11, 16+8(12)
924
925
926	ld	16, 16(4)
927	ld	17, 16+8(4)
928	add	17, 17, 11
929
930	ld	11, 32+8(12)
931
932
933	ld	14, 0(4)
934	ld	15, 0+8(4)
935	add	15, 15, 11
936
937
938	li	7, -1
939
940
941
942
943	ld	5, 192(4)
944	ld	6, 192+8(4)
945	SHR	9, 10, 6, 5, 32
946	ld	30, 128(4)
947	ld	31, 136(4)
948	addc	30, 30, 10
949	adde	31, 31, 9
950
951
952	srdi	11, 7, 32
953	and	11, 11, 5
954	sldi	11, 11, 24
955	ld	28, 112(4)
956	ld	29, 120(4)
957	addc	28, 28, 11
958	addze	29, 29
959
960
961	SHR	9, 10, 6, 5, 8
962	addc	28, 28, 10
963	adde	29, 29, 9
964
965
966	andi.	11, 5, 0xff
967	sldi	11, 11, 48
968	addc	26, 26, 11
969	addze	27, 27
970
971
972	SHR	9, 10, 6, 5, 16
973	subfc	26, 10, 26
974	subfe	27, 9, 27
975
976
977	srdi	11, 7, 48
978	and	11, 11, 5
979	sldi	11, 11, 40
980	li	9, 0
981	subfc	24, 11, 24
982	subfe	25, 9, 25
983
984
985	SHR	9, 10, 6, 5, 48
986	addc	26, 26, 10
987	adde	27, 27, 9
988
989
990	srdi	11, 7, 16
991	and	11, 11, 5
992	sldi	11, 11, 8
993	addc	24, 24, 11
994	addze	25, 25
995
996
997
998
999	ld	5, 176(4)
1000	ld	6, 176+8(4)
1001	SHR	9, 10, 6, 5, 32
1002	addc	28, 28, 10
1003	adde	29, 29, 9
1004
1005
1006	srdi	11, 7, 32
1007	and	11, 11, 5
1008	sldi	11, 11, 24
1009	addc	26, 26, 11
1010	addze	27, 27
1011
1012
1013	SHR	9, 10, 6, 5, 8
1014	addc	26, 26, 10
1015	adde	27, 27, 9
1016
1017
1018	andi.	11, 5, 0xff
1019	sldi	11, 11, 48
1020	addc	24, 24, 11
1021	addze	25, 25
1022
1023
1024	SHR	9, 10, 6, 5, 16
1025	subfc	24, 10, 24
1026	subfe	25, 9, 25
1027
1028
1029	srdi	11, 7, 48
1030	and	11, 11, 5
1031	sldi	11, 11, 40
1032	li	9, 0
1033	subfc	22, 11, 22
1034	subfe	23, 9, 23
1035
1036
1037	SHR	9, 10, 6, 5, 48
1038	addc	24, 24, 10
1039	adde	25, 25, 9
1040
1041
1042	srdi	11, 7, 16
1043	and	11, 11, 5
1044	sldi	11, 11, 8
1045	addc	22, 22, 11
1046	addze	23, 23
1047
1048
1049
1050
1051	ld	5, 160(4)
1052	ld	6, 160+8(4)
1053	SHR	9, 10, 6, 5, 32
1054	addc	26, 26, 10
1055	adde	27, 27, 9
1056
1057
1058	srdi	11, 7, 32
1059	and	11, 11, 5
1060	sldi	11, 11, 24
1061	addc	24, 24, 11
1062	addze	25, 25
1063
1064
1065	SHR	9, 10, 6, 5, 8
1066	addc	24, 24, 10
1067	adde	25, 25, 9
1068
1069
1070	andi.	11, 5, 0xff
1071	sldi	11, 11, 48
1072	addc	22, 22, 11
1073	addze	23, 23
1074
1075
1076	SHR	9, 10, 6, 5, 16
1077	subfc	22, 10, 22
1078	subfe	23, 9, 23
1079
1080
1081	srdi	11, 7, 48
1082	and	11, 11, 5
1083	sldi	11, 11, 40
1084	li	9, 0
1085	subfc	20, 11, 20
1086	subfe	21, 9, 21
1087
1088
1089	SHR	9, 10, 6, 5, 48
1090	addc	22, 22, 10
1091	adde	23, 23, 9
1092
1093
1094	srdi	11, 7, 16
1095	and	11, 11, 5
1096	sldi	11, 11, 8
1097	addc	20, 20, 11
1098	addze	21, 21
1099
1100
1101
1102
1103	ld	5, 144(4)
1104	ld	6, 144+8(4)
1105	SHR	9, 10, 6, 5, 32
1106	addc	24, 24, 10
1107	adde	25, 25, 9
1108
1109
1110	srdi	11, 7, 32
1111	and	11, 11, 5
1112	sldi	11, 11, 24
1113	addc	22, 22, 11
1114	addze	23, 23
1115
1116
1117	SHR	9, 10, 6, 5, 8
1118	addc	22, 22, 10
1119	adde	23, 23, 9
1120
1121
1122	andi.	11, 5, 0xff
1123	sldi	11, 11, 48
1124	addc	20, 20, 11
1125	addze	21, 21
1126
1127
1128	SHR	9, 10, 6, 5, 16
1129	subfc	20, 10, 20
1130	subfe	21, 9, 21
1131
1132
1133	srdi	11, 7, 48
1134	and	11, 11, 5
1135	sldi	11, 11, 40
1136	li	9, 0
1137	subfc	18, 11, 18
1138	subfe	19, 9, 19
1139
1140
1141	SHR	9, 10, 6, 5, 48
1142	addc	20, 20, 10
1143	adde	21, 21, 9
1144
1145
1146	srdi	11, 7, 16
1147	and	11, 11, 5
1148	sldi	11, 11, 8
1149	addc	18, 18, 11
1150	addze	19, 19
1151
1152
1153
1154
1155	mr	5, 30
1156	mr	6, 31
1157	SHR	9, 10, 6, 5, 32
1158	addc	22, 22, 10
1159	adde	23, 23, 9
1160
1161
1162	srdi	11, 7, 32
1163	and	11, 11, 5
1164	sldi	11, 11, 24
1165	addc	20, 20, 11
1166	addze	21, 21
1167
1168
1169	SHR	9, 10, 6, 5, 8
1170	addc	20, 20, 10
1171	adde	21, 21, 9
1172
1173
1174	andi.	11, 5, 0xff
1175	sldi	11, 11, 48
1176	addc	18, 18, 11
1177	addze	19, 19
1178
1179
1180	SHR	9, 10, 6, 5, 16
1181	subfc	18, 10, 18
1182	subfe	19, 9, 19
1183
1184
1185	srdi	11, 7, 48
1186	and	11, 11, 5
1187	sldi	11, 11, 40
1188	li	9, 0
1189	subfc	16, 11, 16
1190	subfe	17, 9, 17
1191
1192
1193	SHR	9, 10, 6, 5, 48
1194	addc	18, 18, 10
1195	adde	19, 19, 9
1196
1197
1198	srdi	11, 7, 16
1199	and	11, 11, 5
1200	sldi	11, 11, 8
1201	addc	16, 16, 11
1202	addze	17, 17
1203
1204
1205
1206
1207	mr	5, 28
1208	mr	6, 29
1209	SHR	9, 10, 6, 5, 32
1210	addc	20, 20, 10
1211	adde	21, 21, 9
1212
1213
1214	srdi	11, 7, 32
1215	and	11, 11, 5
1216	sldi	11, 11, 24
1217	addc	18, 18, 11
1218	addze	19, 19
1219
1220
1221	SHR	9, 10, 6, 5, 8
1222	addc	18, 18, 10
1223	adde	19, 19, 9
1224
1225
1226	andi.	11, 5, 0xff
1227	sldi	11, 11, 48
1228	addc	16, 16, 11
1229	addze	17, 17
1230
1231
1232	SHR	9, 10, 6, 5, 16
1233	subfc	16, 10, 16
1234	subfe	17, 9, 17
1235
1236
1237	srdi	11, 7, 48
1238	and	11, 11, 5
1239	sldi	11, 11, 40
1240	li	9, 0
1241	subfc	14, 11, 14
1242	subfe	15, 9, 15
1243
1244
1245	SHR	9, 10, 6, 5, 48
1246	addc	16, 16, 10
1247	adde	17, 17, 9
1248
1249
1250	srdi	11, 7, 16
1251	and	11, 11, 5
1252	sldi	11, 11, 8
1253	addc	14, 14, 11
1254	addze	15, 15
1255
1256
1257
1258
1259
1260
1261	SHR	9, 10, 23, 22, 56
1262	addc	24, 24, 10
1263	adde	25, 25, 9
1264	srdi	11, 7, 8
1265	and	22, 22, 11
1266	li	23, 0
1267
1268
1269
1270	SHR	9, 10, 25, 24, 56
1271	addc	26, 26, 10
1272	adde	27, 27, 9
1273	and	24, 24, 11
1274	li	25, 0
1275
1276
1277
1278
1279	SHR	31, 30, 27, 26, 48
1280	srdi	11, 7, 16
1281	and	26, 26, 11
1282	li	27, 0
1283
1284
1285
1286	SHR	9, 10, 31, 30, 40
1287	addc	20, 20, 10
1288	adde	21, 21, 9
1289
1290
1291	srdi	11, 7, 24
1292	and	10, 30, 11
1293	sldi	10, 10, 16
1294	addc	18, 18, 10
1295	addze	19, 19
1296
1297
1298	SHR	9, 10, 31, 30, 16
1299	addc	18, 18, 10
1300	adde	19, 19, 9
1301
1302
1303	srdi	11, 7, 48
1304	and	10, 30, 11
1305	sldi	10, 10, 40
1306	addc	16, 16, 10
1307	addze	17, 17
1308
1309
1310	SHR	9, 10, 31, 30, 24
1311	subfc	16, 10, 16
1312	subfe	17, 9, 17
1313
1314
1315	srdi	11, 7, 40
1316	and	10, 30, 11
1317	sldi	10, 10, 32
1318	li	9, 0
1319	subfc	14, 10, 14
1320	subfe	15, 9, 15
1321
1322
1323	addc	14, 14, 30
1324	adde	15, 15, 31
1325
1326
1327
1328
1329	SHR	9, 10, 15, 14, 56
1330	addc	16, 16, 10
1331	adde	17, 17, 9
1332
1333
1334	srdi	11, 7, 8
1335	and	14, 14, 11
1336	li	15, 0
1337
1338
1339	SHR	9, 10, 17, 16, 56
1340	addc	18, 18, 10
1341	adde	19, 19, 9
1342
1343
1344	and	16, 16, 11
1345	li	17, 0
1346
1347
1348	SHR	9, 10, 19, 18, 56
1349	addc	20, 20, 10
1350	adde	21, 21, 9
1351
1352
1353	and	18, 18, 11
1354	li	19, 0
1355
1356
1357	SHR	9, 10, 21, 20, 56
1358	addc	22, 22, 10
1359	adde	23, 23, 9
1360
1361
1362	and	20, 20, 11
1363	li	21, 0
1364
1365
1366	SHR	9, 10, 23, 22, 56
1367	addc	24, 24, 10
1368	adde	25, 25, 9
1369
1370
1371	and	22, 22, 11
1372
1373
1374	SHR	9, 10, 25, 24, 56
1375	addc	26, 26, 10
1376	adde	27, 27, 9
1377
1378
1379	and	24, 24, 11
1380
1381	std	14, 0(3)
1382	std	16, 8(3)
1383	std	18, 16(3)
1384	std	20, 24(3)
1385	std	22, 32(3)
1386	std	24, 40(3)
1387	std	26, 48(3)
1388	blr
1389.size	_p384_felem_reduce_core,.-_p384_felem_reduce_core
1390
1391.data
1392.align	4
1393.LConst:
1394
1395.long	0x0, 0x0, 0xfffffff0, 0xfffffff
1396
1397.long	0x0, 0x0, 0xfffffff0, 0xfefffff
1398
1399.long	0x0, 0x0, 0xfffff000, 0x10000fff
1400
1401.long	0x0, 0x0, 0xeffffff0, 0xfffffff
1402
1403.abiversion	2
1404.text
1405
1406
1407
1408
1409.global	p384_felem_square_reduce
1410.type	p384_felem_square_reduce,@function
1411.align	4
1412p384_felem_square_reduce:
1413.localentry	p384_felem_square_reduce,0
1414
1415	stdu	1, -512(1)
1416	mflr	0
1417	std	14, 56(1)
1418	std	15, 64(1)
1419	std	16, 72(1)
1420	std	17, 80(1)
1421	std	18, 88(1)
1422	std	19, 96(1)
1423	std	20, 104(1)
1424	std	21, 112(1)
1425	std	22, 120(1)
1426	std	23, 128(1)
1427	std	24, 136(1)
1428	std	25, 144(1)
1429	std	26, 152(1)
1430	std	27, 160(1)
1431	std	28, 168(1)
1432	std	29, 176(1)
1433	std	30, 184(1)
1434	std	31, 192(1)
1435
1436	std	3, 496(1)
1437	addi	3, 1, 208
1438	bl	_p384_felem_square_core
1439
1440	mr	4, 3
1441	ld	3, 496(1)
1442	bl	_p384_felem_reduce_core
1443
1444	ld	14, 56(1)
1445	ld	15, 64(1)
1446	ld	16, 72(1)
1447	ld	17, 80(1)
1448	ld	18, 88(1)
1449	ld	19, 96(1)
1450	ld	20, 104(1)
1451	ld	21, 112(1)
1452	ld	22, 120(1)
1453	ld	23, 128(1)
1454	ld	24, 136(1)
1455	ld	25, 144(1)
1456	ld	26, 152(1)
1457	ld	27, 160(1)
1458	ld	28, 168(1)
1459	ld	29, 176(1)
1460	ld	30, 184(1)
1461	ld	31, 192(1)
1462	addi	1, 1, 512
1463	mtlr	0
1464	blr
1465.size	p384_felem_square_reduce,.-p384_felem_square_reduce
1466
1467
1468
1469
1470.global	p384_felem_mul_reduce
1471.type	p384_felem_mul_reduce,@function
1472.align	5
1473p384_felem_mul_reduce:
1474.localentry	p384_felem_mul_reduce,0
1475
1476	stdu	1, -512(1)
1477	mflr	0
1478	std	14, 56(1)
1479	std	15, 64(1)
1480	std	16, 72(1)
1481	std	17, 80(1)
1482	std	18, 88(1)
1483	std	19, 96(1)
1484	std	20, 104(1)
1485	std	21, 112(1)
1486	std	22, 120(1)
1487	std	23, 128(1)
1488	std	24, 136(1)
1489	std	25, 144(1)
1490	std	26, 152(1)
1491	std	27, 160(1)
1492	std	28, 168(1)
1493	std	29, 176(1)
1494	std	30, 184(1)
1495	std	31, 192(1)
1496
1497	std	3, 496(1)
1498	addi	3, 1, 208
1499	bl	_p384_felem_mul_core
1500
1501	mr	4, 3
1502	ld	3, 496(1)
1503	bl	_p384_felem_reduce_core
1504
1505	ld	14, 56(1)
1506	ld	15, 64(1)
1507	ld	16, 72(1)
1508	ld	17, 80(1)
1509	ld	18, 88(1)
1510	ld	19, 96(1)
1511	ld	20, 104(1)
1512	ld	21, 112(1)
1513	ld	22, 120(1)
1514	ld	23, 128(1)
1515	ld	24, 136(1)
1516	ld	25, 144(1)
1517	ld	26, 152(1)
1518	ld	27, 160(1)
1519	ld	28, 168(1)
1520	ld	29, 176(1)
1521	ld	30, 184(1)
1522	ld	31, 192(1)
1523	addi	1, 1, 512
1524	mtlr	0
1525	blr
1526.size	p384_felem_mul_reduce,.-p384_felem_mul_reduce
1527