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