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