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