xref: /freebsd/sys/crypto/openssl/powerpc64/poly1305-ppcfp.S (revision fe75646a0234a261c0013bf1840fdac4acaf0cec)
1/* Do not modify. This file is auto-generated from poly1305-ppcfp.pl. */
2.machine	"any"
3.abiversion	2
4.text
5
6.globl	poly1305_init_fpu
7.type	poly1305_init_fpu,@function
8.align	6
9poly1305_init_fpu:
10.localentry	poly1305_init_fpu,0
11
12	stdu	1,-48(1)
13	mflr	6
14	std	6,64(1)
15
16	bl	.LPICmeup
17
18	xor	0,0,0
19	mtlr	6
20
21	lfd	8,8*0(5)
22	lfd	9,8*1(5)
23	lfd	10,8*2(5)
24	lfd	11,8*3(5)
25	lfd	12,8*4(5)
26	lfd	13,8*5(5)
27
28	stfd	8,8*0(3)
29	stfd	9,8*1(3)
30	stfd	10,8*2(3)
31	stfd	11,8*3(3)
32
33	cmpld	4,0
34	beq-	.Lno_key
35
36	lfd	6,8*13(5)
37	mffs	7
38
39	stfd	8,8*4(3)
40	stfd	9,8*5(3)
41	stfd	10,8*6(3)
42	stfd	11,8*7(3)
43
44	li	8,4
45	li	9,8
46	li	10,12
47	lwbrx	7,0,4
48	lwbrx	8,8,4
49	lwbrx	9,9,4
50	lwbrx	10,10,4
51
52	lis	11,0xf000
53	ori	12,11,3
54	andc	7,7,11
55	andc	8,8,12
56	andc	9,9,12
57	andc	10,10,12
58
59	stw	7,36(3)
60	stw	8,44(3)
61	stw	9,52(3)
62	stw	10,60(3)
63
64	mtfsf	255,6
65	stfd	8,8*18(3)
66	stfd	9,8*19(3)
67	stfd	10,8*20(3)
68	stfd	11,8*21(3)
69	stfd	12,8*22(3)
70	stfd	13,8*23(3)
71
72	lfd	0,8*4(3)
73	lfd	2,8*5(3)
74	lfd	4,8*6(3)
75	lfd	6,8*7(3)
76
77	fsub	0,0,8
78	fsub	2,2,9
79	fsub	4,4,10
80	fsub	6,6,11
81
82	lfd	8,8*6(5)
83	lfd	9,8*7(5)
84	lfd	10,8*8(5)
85	lfd	11,8*9(5)
86
87	fmul	3,2,13
88	fmul	5,4,13
89	stfd	7,8*15(3)
90	fmul	7,6,13
91
92	fadd	1,0,8
93	stfd	3,8*12(3)
94	fadd	3,2,9
95	stfd	5,8*13(3)
96	fadd	5,4,10
97	stfd	7,8*14(3)
98	fadd	7,6,11
99
100	fsub	1,1,8
101	fsub	3,3,9
102	fsub	5,5,10
103	fsub	7,7,11
104
105	lfd	8,8*10(5)
106	lfd	9,8*11(5)
107	lfd	10,8*12(5)
108
109	fsub	0,0,1
110	fsub	2,2,3
111	fsub	4,4,5
112	fsub	6,6,7
113
114	stfd	1,8*5(3)
115	stfd	3,8*7(3)
116	stfd	5,8*9(3)
117	stfd	7,8*11(3)
118
119	stfd	0,8*4(3)
120	stfd	2,8*6(3)
121	stfd	4,8*8(3)
122	stfd	6,8*10(3)
123
124	lfd	2,8*12(3)
125	lfd	4,8*13(3)
126	lfd	6,8*14(3)
127	lfd	0,8*15(3)
128
129	fadd	3,2,8
130	fadd	5,4,9
131	fadd	7,6,10
132
133	fsub	3,3,8
134	fsub	5,5,9
135	fsub	7,7,10
136
137	fsub	2,2,3
138	fsub	4,4,5
139	fsub	6,6,7
140
141	stfd	3,8*13(3)
142	stfd	5,8*15(3)
143	stfd	7,8*17(3)
144
145	stfd	2,8*12(3)
146	stfd	4,8*14(3)
147	stfd	6,8*16(3)
148
149	mtfsf	255,0
150.Lno_key:
151	xor	3,3,3
152	addi	1,1,48
153	blr
154.long	0
155.byte	0,12,4,1,0x80,0,2,0
156.size	poly1305_init_fpu,.-poly1305_init_fpu
157
158.globl	poly1305_blocks_fpu
159.type	poly1305_blocks_fpu,@function
160.align	4
161poly1305_blocks_fpu:
162.localentry	poly1305_blocks_fpu,0
163
164	srwi.	5,5,4
165	beq-	.Labort
166
167	stdu	1,-240(1)
168	mflr	0
169	stfd	14,96(1)
170	stfd	15,104(1)
171	stfd	16,112(1)
172	stfd	17,120(1)
173	stfd	18,128(1)
174	stfd	19,136(1)
175	stfd	20,144(1)
176	stfd	21,152(1)
177	stfd	22,160(1)
178	stfd	23,168(1)
179	stfd	24,176(1)
180	stfd	25,184(1)
181	stfd	26,192(1)
182	stfd	27,200(1)
183	stfd	28,208(1)
184	stfd	29,216(1)
185	stfd	30,224(1)
186	stfd	31,232(1)
187	std	0,256(1)
188
189	xor	0,0,0
190	li	10,1
191	mtctr	5
192	neg	5,5
193	stw	0,80(1)
194	stw	10,84(1)
195
196	lfd	8,8*18(3)
197	lfd	9,8*19(3)
198	lfd	10,8*20(3)
199	lfd	11,8*21(3)
200	lfd	12,8*22(3)
201	lfd	13,8*23(3)
202
203	lfd	0,8*0(3)
204	lfd	2,8*1(3)
205	lfd	4,8*2(3)
206	lfd	6,8*3(3)
207
208	stfd	8,48(1)
209	oris	10,6,18736
210	stfd	9,56(1)
211	stfd	10,64(1)
212	stw	10,72(1)
213
214	li	11,4
215	li	12,8
216	li	6,12
217	lwbrx	7,0,4
218	lwbrx	8,11,4
219	lwbrx	9,12,4
220	lwbrx	10,6,4
221	addi	4,4,16
222
223	stw	7,52(1)
224	stw	8,60(1)
225	stw	9,68(1)
226	stw	10,76(1)
227
228	mffs	28
229	lfd	29,80(1)
230	lfd	14,8*4(3)
231	lfd	15,8*5(3)
232	lfd	16,8*6(3)
233	lfd	17,8*7(3)
234	lfd	18,8*8(3)
235	lfd	19,8*9(3)
236	lfd	24,8*10(3)
237	lfd	25,8*11(3)
238	lfd	26,8*12(3)
239	lfd	27,8*13(3)
240	lfd	20,8*14(3)
241	lfd	21,8*15(3)
242	lfd	22,8*16(3)
243	lfd	23,8*17(3)
244
245	stfd	28,80(1)
246	mtfsf	255,29
247
248	addic	5,5,1
249	addze	0,0
250	slwi.	0,0,4
251	sub	4,4,0
252
253	lfd	28,48(1)
254	lfd	29,56(1)
255	lfd	30,64(1)
256	lfd	31,72(1)
257
258	fsub	0,0,8
259	lwbrx	7,0,4
260	fsub	2,2,9
261	lwbrx	8,11,4
262	fsub	4,4,10
263	lwbrx	9,12,4
264	fsub	6,6,11
265	lwbrx	10,6,4
266
267	fsub	28,28,8
268	addi	4,4,16
269	fsub	29,29,9
270	fsub	30,30,10
271	fsub	31,31,11
272
273	fadd	28,28,0
274	stw	7,52(1)
275	fadd	29,29,2
276	stw	8,60(1)
277	fadd	30,30,4
278	stw	9,68(1)
279	fadd	31,31,6
280	stw	10,76(1)
281
282	b	.Lentry
283
284.align	4
285.Loop:
286	fsub	30,30,8
287	addic	5,5,1
288	fsub	31,31,9
289	addze	0,0
290	fsub	26,26,10
291	slwi.	0,0,4
292	fsub	27,27,11
293	sub	4,4,0
294
295	fadd	0,0,30
296	fadd	1,1,31
297	fadd	4,4,26
298	fadd	5,5,27
299
300
301	fadd	26,2,10
302	lwbrx	7,0,4
303	fadd	27,3,10
304	lwbrx	8,11,4
305	fadd	30,6,12
306	lwbrx	9,12,4
307	fadd	31,7,12
308	lwbrx	10,6,4
309	fadd	24,0,9
310	addi	4,4,16
311	fadd	25,1,9
312	fadd	28,4,11
313	fadd	29,5,11
314
315	fsub	26,26,10
316	stw	7,52(1)
317	fsub	27,27,10
318	stw	8,60(1)
319	fsub	30,30,12
320	stw	9,68(1)
321	fsub	31,31,12
322	stw	10,76(1)
323	fsub	24,24,9
324	fsub	25,25,9
325	fsub	28,28,11
326	fsub	29,29,11
327
328	fsub	2,2,26
329	fsub	3,3,27
330	fsub	6,6,30
331	fsub	7,7,31
332	fsub	4,4,28
333	fsub	5,5,29
334	fsub	0,0,24
335	fsub	1,1,25
336
337	fadd	2,2,24
338	fadd	3,3,25
339	fadd	6,6,28
340	fadd	7,7,29
341	fadd	4,4,26
342	fadd	5,5,27
343	fmadd	0,30,13,0
344	fmadd	1,31,13,1
345
346	fadd	29,2,3
347	lfd	26,8*12(3)
348	fadd	31,6,7
349	lfd	27,8*13(3)
350	fadd	30,4,5
351	lfd	24,8*10(3)
352	fadd	28,0,1
353	lfd	25,8*11(3)
354.Lentry:
355	fmul	0,22,29
356	fmul	1,23,29
357	fmul	4,16,29
358	fmul	5,17,29
359	fmul	2,14,29
360	fmul	3,15,29
361	fmul	6,18,29
362	fmul	7,19,29
363
364	fmadd	0,26,31,0
365	fmadd	1,27,31,1
366	fmadd	4,22,31,4
367	fmadd	5,23,31,5
368	fmadd	2,20,31,2
369	fmadd	3,21,31,3
370	fmadd	6,14,31,6
371	fmadd	7,15,31,7
372
373	fmadd	0,20,30,0
374	fmadd	1,21,30,1
375	fmadd	4,14,30,4
376	fmadd	5,15,30,5
377	fmadd	2,22,30,2
378	fmadd	3,23,30,3
379	fmadd	6,16,30,6
380	fmadd	7,17,30,7
381
382	fmadd	0,14,28,0
383	lfd	30,48(1)
384	fmadd	1,15,28,1
385	lfd	31,56(1)
386	fmadd	4,18,28,4
387	lfd	26,64(1)
388	fmadd	5,19,28,5
389	lfd	27,72(1)
390	fmadd	2,16,28,2
391	fmadd	3,17,28,3
392	fmadd	6,24,28,6
393	fmadd	7,25,28,7
394
395	bdnz	.Loop
396
397
398	fadd	24,0,9
399	fadd	25,1,9
400	fadd	28,4,11
401	fadd	29,5,11
402	fadd	26,2,10
403	fadd	27,3,10
404	fadd	30,6,12
405	fadd	31,7,12
406
407	fsub	24,24,9
408	fsub	25,25,9
409	fsub	28,28,11
410	fsub	29,29,11
411	fsub	26,26,10
412	fsub	27,27,10
413	fsub	30,30,12
414	fsub	31,31,12
415
416	fsub	2,2,26
417	fsub	3,3,27
418	fsub	6,6,30
419	fsub	7,7,31
420	fsub	4,4,28
421	fsub	5,5,29
422	fsub	0,0,24
423	fsub	1,1,25
424
425	fadd	2,2,24
426	fadd	3,3,25
427	fadd	6,6,28
428	fadd	7,7,29
429	fadd	4,4,26
430	fadd	5,5,27
431	fmadd	0,30,13,0
432	fmadd	1,31,13,1
433
434	fadd	29,2,3
435	fadd	31,6,7
436	fadd	30,4,5
437	fadd	28,0,1
438
439	lfd	0,80(1)
440	fadd	29,29,9
441	fadd	31,31,11
442	fadd	30,30,10
443	fadd	28,28,8
444
445	stfd	29,8*1(3)
446	stfd	31,8*3(3)
447	stfd	30,8*2(3)
448	stfd	28,8*0(3)
449
450	mtfsf	255,0
451	lfd	14,96(1)
452	lfd	15,104(1)
453	lfd	16,112(1)
454	lfd	17,120(1)
455	lfd	18,128(1)
456	lfd	19,136(1)
457	lfd	20,144(1)
458	lfd	21,152(1)
459	lfd	22,160(1)
460	lfd	23,168(1)
461	lfd	24,176(1)
462	lfd	25,184(1)
463	lfd	26,192(1)
464	lfd	27,200(1)
465	lfd	28,208(1)
466	lfd	29,216(1)
467	lfd	30,224(1)
468	lfd	31,232(1)
469	addi	1,1,240
470.Labort:
471	blr
472.long	0
473.byte	0,12,4,1,0x80,0,4,0
474.size	poly1305_blocks_fpu,.-poly1305_blocks_fpu
475.globl	poly1305_emit_fpu
476.type	poly1305_emit_fpu,@function
477.align	4
478poly1305_emit_fpu:
479.localentry	poly1305_emit_fpu,0
480
481	stdu	1,-80(1)
482	mflr	0
483	std	28,48(1)
484	std	29,56(1)
485	std	30,64(1)
486	std	31,72(1)
487	std	0,96(1)
488
489	lwz	28,0(3)
490	lwz	7,4(3)
491	lwz	29,8(3)
492	lwz	8,12(3)
493	lwz	30,16(3)
494	lwz	9,20(3)
495	lwz	31,24(3)
496	lwz	10,28(3)
497
498	lis	0,0xfff0
499	andc	28,28,0
500	andc	29,29,0
501	andc	30,30,0
502	andc	31,31,0
503	li	0,3
504
505	srwi	6,31,2
506	and	11,31,0
507	andc	31,31,0
508	add	31,31,6
509	add	7,7,31
510	add	8,8,28
511	add	9,9,29
512	add	10,10,30
513
514	srdi	28,7,32
515	add	8,8,28
516	srdi	29,8,32
517	add	9,9,29
518	srdi	30,9,32
519	add	10,10,30
520	srdi	31,10,32
521	add	11,11,31
522
523	insrdi	7,8,32,0
524	insrdi	9,10,32,0
525
526	addic	28,7,5
527	addze	29,9
528	addze	30,11
529
530	srdi	0,30,2
531	neg	0,0
532	sradi	0,0,63
533	ld	30,0(5)
534	ld	31,8(5)
535
536	andc	7,7,0
537	and	28,28,0
538	andc	9,9,0
539	and	29,29,0
540	or	7,7,28
541	or	9,9,29
542	rotldi	30,30,32
543	rotldi	31,31,32
544	addc	7,7,30
545	adde	9,9,31
546
547	srdi	8,7,32
548	srdi	10,9,32
549	li	29,4
550	stwbrx	7,0,4
551	li	30,8
552	stwbrx	8,29,4
553	li	31,12
554	stwbrx	9,30,4
555	stwbrx	10,31,4
556	ld	28,48(1)
557	ld	29,56(1)
558	ld	30,64(1)
559	ld	31,72(1)
560	addi	1,1,80
561	blr
562.long	0
563.byte	0,12,4,1,0x80,4,3,0
564.size	poly1305_emit_fpu,.-poly1305_emit_fpu
565.align	6
566.LPICmeup:
567	mflr	0
568	bcl	20,31,$+4
569	mflr	5
570	addi	5,5,56
571	mtlr	0
572	blr
573.long	0
574.byte	0,12,0x14,0,0,0,0,0
575.space	28
576
577.long	0x43300000,0x00000000
578.long	0x45300000,0x00000000
579.long	0x47300000,0x00000000
580.long	0x49300000,0x00000000
581.long	0x4b500000,0x00000000
582
583.long	0x37f40000,0x00000000
584
585.long	0x44300000,0x00000000
586.long	0x46300000,0x00000000
587.long	0x48300000,0x00000000
588.long	0x4a300000,0x00000000
589.long	0x3e300000,0x00000000
590.long	0x40300000,0x00000000
591.long	0x42300000,0x00000000
592
593.long	0x00000000,0x00000001
594.byte	80,111,108,121,49,51,48,53,32,102,111,114,32,80,80,67,32,70,80,85,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
595.align	2
596.align	4
597