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