xref: /freebsd/sys/contrib/openzfs/module/icp/asm-ppc64/sha2/sha512-p8.S (revision e6bfd18d21b225af6a0ed67ceeaf1293b7b9eba5)
1/*
2 * Copyright 2004-2022 The OpenSSL Project Authors. All Rights Reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *     https://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17/*
18 * Portions Copyright (c) 2022 Tino Reichardt <milky-zfs@mcmilk.de>
19 * - modified assembly to fit into OpenZFS
20 */
21
22#if (defined(__PPC64__) && defined(__BIG_ENDIAN__))
23
24#if (!defined(_CALL_ELF) || _CALL_ELF == 1)
25.text
26
27.globl	zfs_sha512_power8
28.globl	.zfs_sha512_power8
29.type	zfs_sha512_power8,@function
30.section	".opd","aw"
31.align	3
32zfs_sha512_power8:
33.quad	.zfs_sha512_power8,.TOC.@tocbase,0
34.previous
35.align	6
36.zfs_sha512_power8:
37#else
38.abiversion	2
39.text
40
41.globl	zfs_sha512_power8
42.type	zfs_sha512_power8,@function
43.align	6
44zfs_sha512_power8:
45.localentry	zfs_sha512_power8,0
46#endif
47
48	stdu	1,-384(1)
49	mflr	8
50	li	10,207
51	li	11,223
52	stvx	24,10,1
53	addi	10,10,32
54	mfspr	12,256
55	stvx	25,11,1
56	addi	11,11,32
57	stvx	26,10,1
58	addi	10,10,32
59	stvx	27,11,1
60	addi	11,11,32
61	stvx	28,10,1
62	addi	10,10,32
63	stvx	29,11,1
64	addi	11,11,32
65	stvx	30,10,1
66	stvx	31,11,1
67	li	11,-4096+255
68	stw	12,332(1)
69	li	10,0x10
70	std	26,336(1)
71	li	26,0x20
72	std	27,344(1)
73	li	27,0x30
74	std	28,352(1)
75	li	28,0x40
76	std	29,360(1)
77	li	29,0x50
78	std	30,368(1)
79	li	30,0x60
80	std	31,376(1)
81	li	31,0x70
82	std	8,400(1)
83	mtspr	256,11
84
85	bl	.LPICmeup
86	addi	11,1,79
87	.long	0x7C001E99
88	.long	0x7C4A1E99
89	.long	0x7C9A1E99
90	vsldoi	1,0,0,8
91	.long	0x7CDB1E99
92	vsldoi	3,2,2,8
93	vsldoi	5,4,4,8
94	vsldoi	7,6,6,8
95	li	0,4
96	b	.Loop
97.align	5
98.Loop:
99	lvx	28,0,6
100	.long	0x7D002699
101	addi	4,4,16
102	mr	7,6
103	stvx	0,0,11
104	stvx	1,10,11
105	stvx	2,26,11
106	stvx	3,27,11
107	stvx	4,28,11
108	stvx	5,29,11
109	stvx	6,30,11
110	stvx	7,31,11
111	.long	0x10E7E0C0
112	lvx	28,10,6
113	.long	0x10E740C0
114	vsel	29,6,5,4
115	.long	0x10C6E0C0
116	.long	0x10E7E8C0
117	.long	0x13C4FEC2
118	.long	0x10E7F0C0
119	vxor	29,0,1
120	vsel	29,1,2,29
121	.long	0x106338C0
122	.long	0x13C086C2
123	.long	0x13DEE8C0
124	.long	0x10E7F0C0
125	lvx	28,26,7
126	.long	0x7D402699
127	addi	4,4,16
128	vsldoi	9,8,8,8
129	.long	0x10C648C0
130	vsel	29,5,4,3
131	.long	0x10A5E0C0
132	.long	0x10C6E8C0
133	.long	0x13C3FEC2
134	.long	0x10C6F0C0
135	vxor	29,7,0
136	vsel	29,0,1,29
137	.long	0x104230C0
138	.long	0x13C786C2
139	.long	0x13DEE8C0
140	.long	0x10C6F0C0
141	lvx	28,27,7
142	.long	0x10A550C0
143	vsel	29,4,3,2
144	.long	0x1084E0C0
145	.long	0x10A5E8C0
146	.long	0x13C2FEC2
147	.long	0x10A5F0C0
148	vxor	29,6,7
149	vsel	29,7,0,29
150	.long	0x102128C0
151	.long	0x13C686C2
152	.long	0x13DEE8C0
153	.long	0x10A5F0C0
154	lvx	28,28,7
155	.long	0x7D802699
156	addi	4,4,16
157	vsldoi	11,10,10,8
158	.long	0x108458C0
159	vsel	29,3,2,1
160	.long	0x1063E0C0
161	.long	0x1084E8C0
162	.long	0x13C1FEC2
163	.long	0x1084F0C0
164	vxor	29,5,6
165	vsel	29,6,7,29
166	.long	0x100020C0
167	.long	0x13C586C2
168	.long	0x13DEE8C0
169	.long	0x1084F0C0
170	lvx	28,29,7
171	.long	0x106360C0
172	vsel	29,2,1,0
173	.long	0x1042E0C0
174	.long	0x1063E8C0
175	.long	0x13C0FEC2
176	.long	0x1063F0C0
177	vxor	29,4,5
178	vsel	29,5,6,29
179	.long	0x10E718C0
180	.long	0x13C486C2
181	.long	0x13DEE8C0
182	.long	0x1063F0C0
183	lvx	28,30,7
184	.long	0x7DC02699
185	addi	4,4,16
186	vsldoi	13,12,12,8
187	.long	0x104268C0
188	vsel	29,1,0,7
189	.long	0x1021E0C0
190	.long	0x1042E8C0
191	.long	0x13C7FEC2
192	.long	0x1042F0C0
193	vxor	29,3,4
194	vsel	29,4,5,29
195	.long	0x10C610C0
196	.long	0x13C386C2
197	.long	0x13DEE8C0
198	.long	0x1042F0C0
199	lvx	28,31,7
200	addi	7,7,0x80
201	.long	0x102170C0
202	vsel	29,0,7,6
203	.long	0x1000E0C0
204	.long	0x1021E8C0
205	.long	0x13C6FEC2
206	.long	0x1021F0C0
207	vxor	29,2,3
208	vsel	29,3,4,29
209	.long	0x10A508C0
210	.long	0x13C286C2
211	.long	0x13DEE8C0
212	.long	0x1021F0C0
213	lvx	28,0,7
214	.long	0x7E002699
215	addi	4,4,16
216	vsldoi	15,14,14,8
217	.long	0x100078C0
218	vsel	29,7,6,5
219	.long	0x10E7E0C0
220	.long	0x1000E8C0
221	.long	0x13C5FEC2
222	.long	0x1000F0C0
223	vxor	29,1,2
224	vsel	29,2,3,29
225	.long	0x108400C0
226	.long	0x13C186C2
227	.long	0x13DEE8C0
228	.long	0x1000F0C0
229	lvx	28,10,7
230	.long	0x10E780C0
231	vsel	29,6,5,4
232	.long	0x10C6E0C0
233	.long	0x10E7E8C0
234	.long	0x13C4FEC2
235	.long	0x10E7F0C0
236	vxor	29,0,1
237	vsel	29,1,2,29
238	.long	0x106338C0
239	.long	0x13C086C2
240	.long	0x13DEE8C0
241	.long	0x10E7F0C0
242	lvx	28,26,7
243	.long	0x7E402699
244	addi	4,4,16
245	vsldoi	17,16,16,8
246	.long	0x10C688C0
247	vsel	29,5,4,3
248	.long	0x10A5E0C0
249	.long	0x10C6E8C0
250	.long	0x13C3FEC2
251	.long	0x10C6F0C0
252	vxor	29,7,0
253	vsel	29,0,1,29
254	.long	0x104230C0
255	.long	0x13C786C2
256	.long	0x13DEE8C0
257	.long	0x10C6F0C0
258	lvx	28,27,7
259	.long	0x10A590C0
260	vsel	29,4,3,2
261	.long	0x1084E0C0
262	.long	0x10A5E8C0
263	.long	0x13C2FEC2
264	.long	0x10A5F0C0
265	vxor	29,6,7
266	vsel	29,7,0,29
267	.long	0x102128C0
268	.long	0x13C686C2
269	.long	0x13DEE8C0
270	.long	0x10A5F0C0
271	lvx	28,28,7
272	.long	0x7F002699
273	addi	4,4,16
274	vsldoi	19,18,18,8
275	.long	0x108498C0
276	vsel	29,3,2,1
277	.long	0x1063E0C0
278	.long	0x1084E8C0
279	.long	0x13C1FEC2
280	.long	0x1084F0C0
281	vxor	29,5,6
282	vsel	29,6,7,29
283	.long	0x100020C0
284	.long	0x13C586C2
285	.long	0x13DEE8C0
286	.long	0x1084F0C0
287	lvx	28,29,7
288	.long	0x1063C0C0
289	vsel	29,2,1,0
290	.long	0x1042E0C0
291	.long	0x1063E8C0
292	.long	0x13C0FEC2
293	.long	0x1063F0C0
294	vxor	29,4,5
295	vsel	29,5,6,29
296	.long	0x10E718C0
297	.long	0x13C486C2
298	.long	0x13DEE8C0
299	.long	0x1063F0C0
300	lvx	28,30,7
301	.long	0x7F402699
302	addi	4,4,16
303	vsldoi	25,24,24,8
304	.long	0x1042C8C0
305	vsel	29,1,0,7
306	.long	0x1021E0C0
307	.long	0x1042E8C0
308	.long	0x13C7FEC2
309	.long	0x1042F0C0
310	vxor	29,3,4
311	vsel	29,4,5,29
312	.long	0x10C610C0
313	.long	0x13C386C2
314	.long	0x13DEE8C0
315	.long	0x1042F0C0
316	lvx	28,31,7
317	addi	7,7,0x80
318	.long	0x1021D0C0
319	vsel	29,0,7,6
320	.long	0x1000E0C0
321	.long	0x1021E8C0
322	.long	0x13C6FEC2
323	.long	0x1021F0C0
324	vxor	29,2,3
325	vsel	29,3,4,29
326	.long	0x10A508C0
327	.long	0x13C286C2
328	.long	0x13DEE8C0
329	.long	0x1021F0C0
330	lvx	28,0,7
331	vsldoi	27,26,26,8
332	.long	0x13C906C2
333	.long	0x1108F0C0
334	.long	0x13DA7EC2
335	.long	0x1108F0C0
336	.long	0x110888C0
337	.long	0x1000D8C0
338	vsel	29,7,6,5
339	.long	0x10E7E0C0
340	.long	0x1000E8C0
341	.long	0x13C5FEC2
342	.long	0x1000F0C0
343	vxor	29,1,2
344	vsel	29,2,3,29
345	.long	0x108400C0
346	.long	0x13C186C2
347	.long	0x13DEE8C0
348	.long	0x1000F0C0
349	lvx	28,10,7
350	mtctr	0
351	b	.L16_xx
352.align	5
353.L16_xx:
354	.long	0x13CA06C2
355	.long	0x1129F0C0
356	.long	0x13DB7EC2
357	.long	0x1129F0C0
358	.long	0x112990C0
359	.long	0x10E740C0
360	vsel	29,6,5,4
361	.long	0x10C6E0C0
362	.long	0x10E7E8C0
363	.long	0x13C4FEC2
364	.long	0x10E7F0C0
365	vxor	29,0,1
366	vsel	29,1,2,29
367	.long	0x106338C0
368	.long	0x13C086C2
369	.long	0x13DEE8C0
370	.long	0x10E7F0C0
371	lvx	28,26,7
372	.long	0x13CB06C2
373	.long	0x114AF0C0
374	.long	0x13C87EC2
375	.long	0x114AF0C0
376	.long	0x114A98C0
377	.long	0x10C648C0
378	vsel	29,5,4,3
379	.long	0x10A5E0C0
380	.long	0x10C6E8C0
381	.long	0x13C3FEC2
382	.long	0x10C6F0C0
383	vxor	29,7,0
384	vsel	29,0,1,29
385	.long	0x104230C0
386	.long	0x13C786C2
387	.long	0x13DEE8C0
388	.long	0x10C6F0C0
389	lvx	28,27,7
390	.long	0x13CC06C2
391	.long	0x116BF0C0
392	.long	0x13C97EC2
393	.long	0x116BF0C0
394	.long	0x116BC0C0
395	.long	0x10A550C0
396	vsel	29,4,3,2
397	.long	0x1084E0C0
398	.long	0x10A5E8C0
399	.long	0x13C2FEC2
400	.long	0x10A5F0C0
401	vxor	29,6,7
402	vsel	29,7,0,29
403	.long	0x102128C0
404	.long	0x13C686C2
405	.long	0x13DEE8C0
406	.long	0x10A5F0C0
407	lvx	28,28,7
408	.long	0x13CD06C2
409	.long	0x118CF0C0
410	.long	0x13CA7EC2
411	.long	0x118CF0C0
412	.long	0x118CC8C0
413	.long	0x108458C0
414	vsel	29,3,2,1
415	.long	0x1063E0C0
416	.long	0x1084E8C0
417	.long	0x13C1FEC2
418	.long	0x1084F0C0
419	vxor	29,5,6
420	vsel	29,6,7,29
421	.long	0x100020C0
422	.long	0x13C586C2
423	.long	0x13DEE8C0
424	.long	0x1084F0C0
425	lvx	28,29,7
426	.long	0x13CE06C2
427	.long	0x11ADF0C0
428	.long	0x13CB7EC2
429	.long	0x11ADF0C0
430	.long	0x11ADD0C0
431	.long	0x106360C0
432	vsel	29,2,1,0
433	.long	0x1042E0C0
434	.long	0x1063E8C0
435	.long	0x13C0FEC2
436	.long	0x1063F0C0
437	vxor	29,4,5
438	vsel	29,5,6,29
439	.long	0x10E718C0
440	.long	0x13C486C2
441	.long	0x13DEE8C0
442	.long	0x1063F0C0
443	lvx	28,30,7
444	.long	0x13CF06C2
445	.long	0x11CEF0C0
446	.long	0x13CC7EC2
447	.long	0x11CEF0C0
448	.long	0x11CED8C0
449	.long	0x104268C0
450	vsel	29,1,0,7
451	.long	0x1021E0C0
452	.long	0x1042E8C0
453	.long	0x13C7FEC2
454	.long	0x1042F0C0
455	vxor	29,3,4
456	vsel	29,4,5,29
457	.long	0x10C610C0
458	.long	0x13C386C2
459	.long	0x13DEE8C0
460	.long	0x1042F0C0
461	lvx	28,31,7
462	addi	7,7,0x80
463	.long	0x13D006C2
464	.long	0x11EFF0C0
465	.long	0x13CD7EC2
466	.long	0x11EFF0C0
467	.long	0x11EF40C0
468	.long	0x102170C0
469	vsel	29,0,7,6
470	.long	0x1000E0C0
471	.long	0x1021E8C0
472	.long	0x13C6FEC2
473	.long	0x1021F0C0
474	vxor	29,2,3
475	vsel	29,3,4,29
476	.long	0x10A508C0
477	.long	0x13C286C2
478	.long	0x13DEE8C0
479	.long	0x1021F0C0
480	lvx	28,0,7
481	.long	0x13D106C2
482	.long	0x1210F0C0
483	.long	0x13CE7EC2
484	.long	0x1210F0C0
485	.long	0x121048C0
486	.long	0x100078C0
487	vsel	29,7,6,5
488	.long	0x10E7E0C0
489	.long	0x1000E8C0
490	.long	0x13C5FEC2
491	.long	0x1000F0C0
492	vxor	29,1,2
493	vsel	29,2,3,29
494	.long	0x108400C0
495	.long	0x13C186C2
496	.long	0x13DEE8C0
497	.long	0x1000F0C0
498	lvx	28,10,7
499	.long	0x13D206C2
500	.long	0x1231F0C0
501	.long	0x13CF7EC2
502	.long	0x1231F0C0
503	.long	0x123150C0
504	.long	0x10E780C0
505	vsel	29,6,5,4
506	.long	0x10C6E0C0
507	.long	0x10E7E8C0
508	.long	0x13C4FEC2
509	.long	0x10E7F0C0
510	vxor	29,0,1
511	vsel	29,1,2,29
512	.long	0x106338C0
513	.long	0x13C086C2
514	.long	0x13DEE8C0
515	.long	0x10E7F0C0
516	lvx	28,26,7
517	.long	0x13D306C2
518	.long	0x1252F0C0
519	.long	0x13D07EC2
520	.long	0x1252F0C0
521	.long	0x125258C0
522	.long	0x10C688C0
523	vsel	29,5,4,3
524	.long	0x10A5E0C0
525	.long	0x10C6E8C0
526	.long	0x13C3FEC2
527	.long	0x10C6F0C0
528	vxor	29,7,0
529	vsel	29,0,1,29
530	.long	0x104230C0
531	.long	0x13C786C2
532	.long	0x13DEE8C0
533	.long	0x10C6F0C0
534	lvx	28,27,7
535	.long	0x13D806C2
536	.long	0x1273F0C0
537	.long	0x13D17EC2
538	.long	0x1273F0C0
539	.long	0x127360C0
540	.long	0x10A590C0
541	vsel	29,4,3,2
542	.long	0x1084E0C0
543	.long	0x10A5E8C0
544	.long	0x13C2FEC2
545	.long	0x10A5F0C0
546	vxor	29,6,7
547	vsel	29,7,0,29
548	.long	0x102128C0
549	.long	0x13C686C2
550	.long	0x13DEE8C0
551	.long	0x10A5F0C0
552	lvx	28,28,7
553	.long	0x13D906C2
554	.long	0x1318F0C0
555	.long	0x13D27EC2
556	.long	0x1318F0C0
557	.long	0x131868C0
558	.long	0x108498C0
559	vsel	29,3,2,1
560	.long	0x1063E0C0
561	.long	0x1084E8C0
562	.long	0x13C1FEC2
563	.long	0x1084F0C0
564	vxor	29,5,6
565	vsel	29,6,7,29
566	.long	0x100020C0
567	.long	0x13C586C2
568	.long	0x13DEE8C0
569	.long	0x1084F0C0
570	lvx	28,29,7
571	.long	0x13DA06C2
572	.long	0x1339F0C0
573	.long	0x13D37EC2
574	.long	0x1339F0C0
575	.long	0x133970C0
576	.long	0x1063C0C0
577	vsel	29,2,1,0
578	.long	0x1042E0C0
579	.long	0x1063E8C0
580	.long	0x13C0FEC2
581	.long	0x1063F0C0
582	vxor	29,4,5
583	vsel	29,5,6,29
584	.long	0x10E718C0
585	.long	0x13C486C2
586	.long	0x13DEE8C0
587	.long	0x1063F0C0
588	lvx	28,30,7
589	.long	0x13DB06C2
590	.long	0x135AF0C0
591	.long	0x13D87EC2
592	.long	0x135AF0C0
593	.long	0x135A78C0
594	.long	0x1042C8C0
595	vsel	29,1,0,7
596	.long	0x1021E0C0
597	.long	0x1042E8C0
598	.long	0x13C7FEC2
599	.long	0x1042F0C0
600	vxor	29,3,4
601	vsel	29,4,5,29
602	.long	0x10C610C0
603	.long	0x13C386C2
604	.long	0x13DEE8C0
605	.long	0x1042F0C0
606	lvx	28,31,7
607	addi	7,7,0x80
608	.long	0x13C806C2
609	.long	0x137BF0C0
610	.long	0x13D97EC2
611	.long	0x137BF0C0
612	.long	0x137B80C0
613	.long	0x1021D0C0
614	vsel	29,0,7,6
615	.long	0x1000E0C0
616	.long	0x1021E8C0
617	.long	0x13C6FEC2
618	.long	0x1021F0C0
619	vxor	29,2,3
620	vsel	29,3,4,29
621	.long	0x10A508C0
622	.long	0x13C286C2
623	.long	0x13DEE8C0
624	.long	0x1021F0C0
625	lvx	28,0,7
626	.long	0x13C906C2
627	.long	0x1108F0C0
628	.long	0x13DA7EC2
629	.long	0x1108F0C0
630	.long	0x110888C0
631	.long	0x1000D8C0
632	vsel	29,7,6,5
633	.long	0x10E7E0C0
634	.long	0x1000E8C0
635	.long	0x13C5FEC2
636	.long	0x1000F0C0
637	vxor	29,1,2
638	vsel	29,2,3,29
639	.long	0x108400C0
640	.long	0x13C186C2
641	.long	0x13DEE8C0
642	.long	0x1000F0C0
643	lvx	28,10,7
644	bdnz	.L16_xx
645
646	lvx	10,0,11
647	subic.	5,5,1
648	lvx	11,10,11
649	.long	0x100050C0
650	lvx	12,26,11
651	.long	0x102158C0
652	lvx	13,27,11
653	.long	0x104260C0
654	lvx	14,28,11
655	.long	0x106368C0
656	lvx	15,29,11
657	.long	0x108470C0
658	lvx	16,30,11
659	.long	0x10A578C0
660	lvx	17,31,11
661	.long	0x10C680C0
662	.long	0x10E788C0
663	bne	.Loop
664	vperm	0,0,1,28
665	vperm	2,2,3,28
666	vperm	4,4,5,28
667	vperm	6,6,7,28
668	.long	0x7C001F99
669	.long	0x7C4A1F99
670	.long	0x7C9A1F99
671	.long	0x7CDB1F99
672	addi	11,1,207
673	mtlr	8
674	mtspr	256,12
675	lvx	24,0,11
676	lvx	25,10,11
677	lvx	26,26,11
678	lvx	27,27,11
679	lvx	28,28,11
680	lvx	29,29,11
681	lvx	30,30,11
682	lvx	31,31,11
683	ld	26,336(1)
684	ld	27,344(1)
685	ld	28,352(1)
686	ld	29,360(1)
687	ld	30,368(1)
688	ld	31,376(1)
689	addi	1,1,384
690	blr
691.long	0
692.byte	0,12,4,1,0x80,6,3,0
693.long	0
694#if (!defined(_CALL_ELF) || _CALL_ELF == 1)
695.size	.zfs_sha512_power8,.-.zfs_sha512_power8
696.size	zfs_sha512_power8,.-.zfs_sha512_power8
697#else
698.size	zfs_sha512_power8,.-zfs_sha512_power8
699#endif
700.align	6
701.LPICmeup:
702	mflr	0
703	bcl	20,31,$+4
704	mflr	6
705	addi	6,6,56
706	mtlr	0
707	blr
708.long	0
709.byte	0,12,0x14,0,0,0,0,0
710.space	28
711.long	0x428a2f98,0xd728ae22
712.long	0x428a2f98,0xd728ae22
713.long	0x71374491,0x23ef65cd
714.long	0x71374491,0x23ef65cd
715.long	0xb5c0fbcf,0xec4d3b2f
716.long	0xb5c0fbcf,0xec4d3b2f
717.long	0xe9b5dba5,0x8189dbbc
718.long	0xe9b5dba5,0x8189dbbc
719.long	0x3956c25b,0xf348b538
720.long	0x3956c25b,0xf348b538
721.long	0x59f111f1,0xb605d019
722.long	0x59f111f1,0xb605d019
723.long	0x923f82a4,0xaf194f9b
724.long	0x923f82a4,0xaf194f9b
725.long	0xab1c5ed5,0xda6d8118
726.long	0xab1c5ed5,0xda6d8118
727.long	0xd807aa98,0xa3030242
728.long	0xd807aa98,0xa3030242
729.long	0x12835b01,0x45706fbe
730.long	0x12835b01,0x45706fbe
731.long	0x243185be,0x4ee4b28c
732.long	0x243185be,0x4ee4b28c
733.long	0x550c7dc3,0xd5ffb4e2
734.long	0x550c7dc3,0xd5ffb4e2
735.long	0x72be5d74,0xf27b896f
736.long	0x72be5d74,0xf27b896f
737.long	0x80deb1fe,0x3b1696b1
738.long	0x80deb1fe,0x3b1696b1
739.long	0x9bdc06a7,0x25c71235
740.long	0x9bdc06a7,0x25c71235
741.long	0xc19bf174,0xcf692694
742.long	0xc19bf174,0xcf692694
743.long	0xe49b69c1,0x9ef14ad2
744.long	0xe49b69c1,0x9ef14ad2
745.long	0xefbe4786,0x384f25e3
746.long	0xefbe4786,0x384f25e3
747.long	0x0fc19dc6,0x8b8cd5b5
748.long	0x0fc19dc6,0x8b8cd5b5
749.long	0x240ca1cc,0x77ac9c65
750.long	0x240ca1cc,0x77ac9c65
751.long	0x2de92c6f,0x592b0275
752.long	0x2de92c6f,0x592b0275
753.long	0x4a7484aa,0x6ea6e483
754.long	0x4a7484aa,0x6ea6e483
755.long	0x5cb0a9dc,0xbd41fbd4
756.long	0x5cb0a9dc,0xbd41fbd4
757.long	0x76f988da,0x831153b5
758.long	0x76f988da,0x831153b5
759.long	0x983e5152,0xee66dfab
760.long	0x983e5152,0xee66dfab
761.long	0xa831c66d,0x2db43210
762.long	0xa831c66d,0x2db43210
763.long	0xb00327c8,0x98fb213f
764.long	0xb00327c8,0x98fb213f
765.long	0xbf597fc7,0xbeef0ee4
766.long	0xbf597fc7,0xbeef0ee4
767.long	0xc6e00bf3,0x3da88fc2
768.long	0xc6e00bf3,0x3da88fc2
769.long	0xd5a79147,0x930aa725
770.long	0xd5a79147,0x930aa725
771.long	0x06ca6351,0xe003826f
772.long	0x06ca6351,0xe003826f
773.long	0x14292967,0x0a0e6e70
774.long	0x14292967,0x0a0e6e70
775.long	0x27b70a85,0x46d22ffc
776.long	0x27b70a85,0x46d22ffc
777.long	0x2e1b2138,0x5c26c926
778.long	0x2e1b2138,0x5c26c926
779.long	0x4d2c6dfc,0x5ac42aed
780.long	0x4d2c6dfc,0x5ac42aed
781.long	0x53380d13,0x9d95b3df
782.long	0x53380d13,0x9d95b3df
783.long	0x650a7354,0x8baf63de
784.long	0x650a7354,0x8baf63de
785.long	0x766a0abb,0x3c77b2a8
786.long	0x766a0abb,0x3c77b2a8
787.long	0x81c2c92e,0x47edaee6
788.long	0x81c2c92e,0x47edaee6
789.long	0x92722c85,0x1482353b
790.long	0x92722c85,0x1482353b
791.long	0xa2bfe8a1,0x4cf10364
792.long	0xa2bfe8a1,0x4cf10364
793.long	0xa81a664b,0xbc423001
794.long	0xa81a664b,0xbc423001
795.long	0xc24b8b70,0xd0f89791
796.long	0xc24b8b70,0xd0f89791
797.long	0xc76c51a3,0x0654be30
798.long	0xc76c51a3,0x0654be30
799.long	0xd192e819,0xd6ef5218
800.long	0xd192e819,0xd6ef5218
801.long	0xd6990624,0x5565a910
802.long	0xd6990624,0x5565a910
803.long	0xf40e3585,0x5771202a
804.long	0xf40e3585,0x5771202a
805.long	0x106aa070,0x32bbd1b8
806.long	0x106aa070,0x32bbd1b8
807.long	0x19a4c116,0xb8d2d0c8
808.long	0x19a4c116,0xb8d2d0c8
809.long	0x1e376c08,0x5141ab53
810.long	0x1e376c08,0x5141ab53
811.long	0x2748774c,0xdf8eeb99
812.long	0x2748774c,0xdf8eeb99
813.long	0x34b0bcb5,0xe19b48a8
814.long	0x34b0bcb5,0xe19b48a8
815.long	0x391c0cb3,0xc5c95a63
816.long	0x391c0cb3,0xc5c95a63
817.long	0x4ed8aa4a,0xe3418acb
818.long	0x4ed8aa4a,0xe3418acb
819.long	0x5b9cca4f,0x7763e373
820.long	0x5b9cca4f,0x7763e373
821.long	0x682e6ff3,0xd6b2b8a3
822.long	0x682e6ff3,0xd6b2b8a3
823.long	0x748f82ee,0x5defb2fc
824.long	0x748f82ee,0x5defb2fc
825.long	0x78a5636f,0x43172f60
826.long	0x78a5636f,0x43172f60
827.long	0x84c87814,0xa1f0ab72
828.long	0x84c87814,0xa1f0ab72
829.long	0x8cc70208,0x1a6439ec
830.long	0x8cc70208,0x1a6439ec
831.long	0x90befffa,0x23631e28
832.long	0x90befffa,0x23631e28
833.long	0xa4506ceb,0xde82bde9
834.long	0xa4506ceb,0xde82bde9
835.long	0xbef9a3f7,0xb2c67915
836.long	0xbef9a3f7,0xb2c67915
837.long	0xc67178f2,0xe372532b
838.long	0xc67178f2,0xe372532b
839.long	0xca273ece,0xea26619c
840.long	0xca273ece,0xea26619c
841.long	0xd186b8c7,0x21c0c207
842.long	0xd186b8c7,0x21c0c207
843.long	0xeada7dd6,0xcde0eb1e
844.long	0xeada7dd6,0xcde0eb1e
845.long	0xf57d4f7f,0xee6ed178
846.long	0xf57d4f7f,0xee6ed178
847.long	0x06f067aa,0x72176fba
848.long	0x06f067aa,0x72176fba
849.long	0x0a637dc5,0xa2c898a6
850.long	0x0a637dc5,0xa2c898a6
851.long	0x113f9804,0xbef90dae
852.long	0x113f9804,0xbef90dae
853.long	0x1b710b35,0x131c471b
854.long	0x1b710b35,0x131c471b
855.long	0x28db77f5,0x23047d84
856.long	0x28db77f5,0x23047d84
857.long	0x32caab7b,0x40c72493
858.long	0x32caab7b,0x40c72493
859.long	0x3c9ebe0a,0x15c9bebc
860.long	0x3c9ebe0a,0x15c9bebc
861.long	0x431d67c4,0x9c100d4c
862.long	0x431d67c4,0x9c100d4c
863.long	0x4cc5d4be,0xcb3e42b6
864.long	0x4cc5d4be,0xcb3e42b6
865.long	0x597f299c,0xfc657e2a
866.long	0x597f299c,0xfc657e2a
867.long	0x5fcb6fab,0x3ad6faec
868.long	0x5fcb6fab,0x3ad6faec
869.long	0x6c44198c,0x4a475817
870.long	0x6c44198c,0x4a475817
871.long	0,0
872.long	0,0
873.long	0x00010203,0x04050607
874.long	0x10111213,0x14151617
875
876#elif (defined(__PPC64__) && defined(__LITTLE_ENDIAN__))
877
878.abiversion	2
879.text
880
881.globl	zfs_sha512_power8
882.type	zfs_sha512_power8,@function
883.align	6
884zfs_sha512_power8:
885.localentry	zfs_sha512_power8,0
886
887	stdu	1,-384(1)
888	mflr	8
889	li	10,207
890	li	11,223
891	stvx	24,10,1
892	addi	10,10,32
893	li	12,-1
894	stvx	25,11,1
895	addi	11,11,32
896	stvx	26,10,1
897	addi	10,10,32
898	stvx	27,11,1
899	addi	11,11,32
900	stvx	28,10,1
901	addi	10,10,32
902	stvx	29,11,1
903	addi	11,11,32
904	stvx	30,10,1
905	stvx	31,11,1
906	li	11,-4096+255
907	stw	12,332(1)
908	li	10,0x10
909	std	26,336(1)
910	li	26,0x20
911	std	27,344(1)
912	li	27,0x30
913	std	28,352(1)
914	li	28,0x40
915	std	29,360(1)
916	li	29,0x50
917	std	30,368(1)
918	li	30,0x60
919	std	31,376(1)
920	li	31,0x70
921	std	8,400(1)
922	or	11,11,11
923
924	bl	.LPICmeup
925	addi	11,1,79
926	li	7,8
927	lvsl	31,0,7
928	vspltisb	28,0x0f
929	vxor	31,31,28
930	.long	0x7C001E99
931	.long	0x7C4A1E99
932	.long	0x7C9A1E99
933	vsldoi	1,0,0,8
934	.long	0x7CDB1E99
935	vsldoi	3,2,2,8
936	vsldoi	5,4,4,8
937	vsldoi	7,6,6,8
938	li	0,4
939	b	.Loop
940.align	5
941.Loop:
942	lvx	28,0,6
943	.long	0x7D002699
944	addi	4,4,16
945	mr	7,6
946	stvx	0,0,11
947	stvx	1,10,11
948	stvx	2,26,11
949	stvx	3,27,11
950	stvx	4,28,11
951	stvx	5,29,11
952	stvx	6,30,11
953	stvx	7,31,11
954	.long	0x10E7E0C0
955	lvx	28,10,6
956	vperm	8,8,8,31
957	.long	0x10E740C0
958	vsel	29,6,5,4
959	.long	0x10C6E0C0
960	.long	0x10E7E8C0
961	.long	0x13C4FEC2
962	.long	0x10E7F0C0
963	vxor	29,0,1
964	vsel	29,1,2,29
965	.long	0x106338C0
966	.long	0x13C086C2
967	.long	0x13DEE8C0
968	.long	0x10E7F0C0
969	lvx	28,26,7
970	.long	0x7D402699
971	addi	4,4,16
972	vsldoi	9,8,8,8
973	.long	0x10C648C0
974	vsel	29,5,4,3
975	.long	0x10A5E0C0
976	.long	0x10C6E8C0
977	.long	0x13C3FEC2
978	.long	0x10C6F0C0
979	vxor	29,7,0
980	vsel	29,0,1,29
981	.long	0x104230C0
982	.long	0x13C786C2
983	.long	0x13DEE8C0
984	.long	0x10C6F0C0
985	lvx	28,27,7
986	vperm	10,10,10,31
987	.long	0x10A550C0
988	vsel	29,4,3,2
989	.long	0x1084E0C0
990	.long	0x10A5E8C0
991	.long	0x13C2FEC2
992	.long	0x10A5F0C0
993	vxor	29,6,7
994	vsel	29,7,0,29
995	.long	0x102128C0
996	.long	0x13C686C2
997	.long	0x13DEE8C0
998	.long	0x10A5F0C0
999	lvx	28,28,7
1000	.long	0x7D802699
1001	addi	4,4,16
1002	vsldoi	11,10,10,8
1003	.long	0x108458C0
1004	vsel	29,3,2,1
1005	.long	0x1063E0C0
1006	.long	0x1084E8C0
1007	.long	0x13C1FEC2
1008	.long	0x1084F0C0
1009	vxor	29,5,6
1010	vsel	29,6,7,29
1011	.long	0x100020C0
1012	.long	0x13C586C2
1013	.long	0x13DEE8C0
1014	.long	0x1084F0C0
1015	lvx	28,29,7
1016	vperm	12,12,12,31
1017	.long	0x106360C0
1018	vsel	29,2,1,0
1019	.long	0x1042E0C0
1020	.long	0x1063E8C0
1021	.long	0x13C0FEC2
1022	.long	0x1063F0C0
1023	vxor	29,4,5
1024	vsel	29,5,6,29
1025	.long	0x10E718C0
1026	.long	0x13C486C2
1027	.long	0x13DEE8C0
1028	.long	0x1063F0C0
1029	lvx	28,30,7
1030	.long	0x7DC02699
1031	addi	4,4,16
1032	vsldoi	13,12,12,8
1033	.long	0x104268C0
1034	vsel	29,1,0,7
1035	.long	0x1021E0C0
1036	.long	0x1042E8C0
1037	.long	0x13C7FEC2
1038	.long	0x1042F0C0
1039	vxor	29,3,4
1040	vsel	29,4,5,29
1041	.long	0x10C610C0
1042	.long	0x13C386C2
1043	.long	0x13DEE8C0
1044	.long	0x1042F0C0
1045	lvx	28,31,7
1046	addi	7,7,0x80
1047	vperm	14,14,14,31
1048	.long	0x102170C0
1049	vsel	29,0,7,6
1050	.long	0x1000E0C0
1051	.long	0x1021E8C0
1052	.long	0x13C6FEC2
1053	.long	0x1021F0C0
1054	vxor	29,2,3
1055	vsel	29,3,4,29
1056	.long	0x10A508C0
1057	.long	0x13C286C2
1058	.long	0x13DEE8C0
1059	.long	0x1021F0C0
1060	lvx	28,0,7
1061	.long	0x7E002699
1062	addi	4,4,16
1063	vsldoi	15,14,14,8
1064	.long	0x100078C0
1065	vsel	29,7,6,5
1066	.long	0x10E7E0C0
1067	.long	0x1000E8C0
1068	.long	0x13C5FEC2
1069	.long	0x1000F0C0
1070	vxor	29,1,2
1071	vsel	29,2,3,29
1072	.long	0x108400C0
1073	.long	0x13C186C2
1074	.long	0x13DEE8C0
1075	.long	0x1000F0C0
1076	lvx	28,10,7
1077	vperm	16,16,16,31
1078	.long	0x10E780C0
1079	vsel	29,6,5,4
1080	.long	0x10C6E0C0
1081	.long	0x10E7E8C0
1082	.long	0x13C4FEC2
1083	.long	0x10E7F0C0
1084	vxor	29,0,1
1085	vsel	29,1,2,29
1086	.long	0x106338C0
1087	.long	0x13C086C2
1088	.long	0x13DEE8C0
1089	.long	0x10E7F0C0
1090	lvx	28,26,7
1091	.long	0x7E402699
1092	addi	4,4,16
1093	vsldoi	17,16,16,8
1094	.long	0x10C688C0
1095	vsel	29,5,4,3
1096	.long	0x10A5E0C0
1097	.long	0x10C6E8C0
1098	.long	0x13C3FEC2
1099	.long	0x10C6F0C0
1100	vxor	29,7,0
1101	vsel	29,0,1,29
1102	.long	0x104230C0
1103	.long	0x13C786C2
1104	.long	0x13DEE8C0
1105	.long	0x10C6F0C0
1106	lvx	28,27,7
1107	vperm	18,18,18,31
1108	.long	0x10A590C0
1109	vsel	29,4,3,2
1110	.long	0x1084E0C0
1111	.long	0x10A5E8C0
1112	.long	0x13C2FEC2
1113	.long	0x10A5F0C0
1114	vxor	29,6,7
1115	vsel	29,7,0,29
1116	.long	0x102128C0
1117	.long	0x13C686C2
1118	.long	0x13DEE8C0
1119	.long	0x10A5F0C0
1120	lvx	28,28,7
1121	.long	0x7F002699
1122	addi	4,4,16
1123	vsldoi	19,18,18,8
1124	.long	0x108498C0
1125	vsel	29,3,2,1
1126	.long	0x1063E0C0
1127	.long	0x1084E8C0
1128	.long	0x13C1FEC2
1129	.long	0x1084F0C0
1130	vxor	29,5,6
1131	vsel	29,6,7,29
1132	.long	0x100020C0
1133	.long	0x13C586C2
1134	.long	0x13DEE8C0
1135	.long	0x1084F0C0
1136	lvx	28,29,7
1137	vperm	24,24,24,31
1138	.long	0x1063C0C0
1139	vsel	29,2,1,0
1140	.long	0x1042E0C0
1141	.long	0x1063E8C0
1142	.long	0x13C0FEC2
1143	.long	0x1063F0C0
1144	vxor	29,4,5
1145	vsel	29,5,6,29
1146	.long	0x10E718C0
1147	.long	0x13C486C2
1148	.long	0x13DEE8C0
1149	.long	0x1063F0C0
1150	lvx	28,30,7
1151	.long	0x7F402699
1152	addi	4,4,16
1153	vsldoi	25,24,24,8
1154	.long	0x1042C8C0
1155	vsel	29,1,0,7
1156	.long	0x1021E0C0
1157	.long	0x1042E8C0
1158	.long	0x13C7FEC2
1159	.long	0x1042F0C0
1160	vxor	29,3,4
1161	vsel	29,4,5,29
1162	.long	0x10C610C0
1163	.long	0x13C386C2
1164	.long	0x13DEE8C0
1165	.long	0x1042F0C0
1166	lvx	28,31,7
1167	addi	7,7,0x80
1168	vperm	26,26,26,31
1169	.long	0x1021D0C0
1170	vsel	29,0,7,6
1171	.long	0x1000E0C0
1172	.long	0x1021E8C0
1173	.long	0x13C6FEC2
1174	.long	0x1021F0C0
1175	vxor	29,2,3
1176	vsel	29,3,4,29
1177	.long	0x10A508C0
1178	.long	0x13C286C2
1179	.long	0x13DEE8C0
1180	.long	0x1021F0C0
1181	lvx	28,0,7
1182	vsldoi	27,26,26,8
1183	.long	0x13C906C2
1184	.long	0x1108F0C0
1185	.long	0x13DA7EC2
1186	.long	0x1108F0C0
1187	.long	0x110888C0
1188	.long	0x1000D8C0
1189	vsel	29,7,6,5
1190	.long	0x10E7E0C0
1191	.long	0x1000E8C0
1192	.long	0x13C5FEC2
1193	.long	0x1000F0C0
1194	vxor	29,1,2
1195	vsel	29,2,3,29
1196	.long	0x108400C0
1197	.long	0x13C186C2
1198	.long	0x13DEE8C0
1199	.long	0x1000F0C0
1200	lvx	28,10,7
1201	mtctr	0
1202	b	.L16_xx
1203.align	5
1204.L16_xx:
1205	.long	0x13CA06C2
1206	.long	0x1129F0C0
1207	.long	0x13DB7EC2
1208	.long	0x1129F0C0
1209	.long	0x112990C0
1210	.long	0x10E740C0
1211	vsel	29,6,5,4
1212	.long	0x10C6E0C0
1213	.long	0x10E7E8C0
1214	.long	0x13C4FEC2
1215	.long	0x10E7F0C0
1216	vxor	29,0,1
1217	vsel	29,1,2,29
1218	.long	0x106338C0
1219	.long	0x13C086C2
1220	.long	0x13DEE8C0
1221	.long	0x10E7F0C0
1222	lvx	28,26,7
1223	.long	0x13CB06C2
1224	.long	0x114AF0C0
1225	.long	0x13C87EC2
1226	.long	0x114AF0C0
1227	.long	0x114A98C0
1228	.long	0x10C648C0
1229	vsel	29,5,4,3
1230	.long	0x10A5E0C0
1231	.long	0x10C6E8C0
1232	.long	0x13C3FEC2
1233	.long	0x10C6F0C0
1234	vxor	29,7,0
1235	vsel	29,0,1,29
1236	.long	0x104230C0
1237	.long	0x13C786C2
1238	.long	0x13DEE8C0
1239	.long	0x10C6F0C0
1240	lvx	28,27,7
1241	.long	0x13CC06C2
1242	.long	0x116BF0C0
1243	.long	0x13C97EC2
1244	.long	0x116BF0C0
1245	.long	0x116BC0C0
1246	.long	0x10A550C0
1247	vsel	29,4,3,2
1248	.long	0x1084E0C0
1249	.long	0x10A5E8C0
1250	.long	0x13C2FEC2
1251	.long	0x10A5F0C0
1252	vxor	29,6,7
1253	vsel	29,7,0,29
1254	.long	0x102128C0
1255	.long	0x13C686C2
1256	.long	0x13DEE8C0
1257	.long	0x10A5F0C0
1258	lvx	28,28,7
1259	.long	0x13CD06C2
1260	.long	0x118CF0C0
1261	.long	0x13CA7EC2
1262	.long	0x118CF0C0
1263	.long	0x118CC8C0
1264	.long	0x108458C0
1265	vsel	29,3,2,1
1266	.long	0x1063E0C0
1267	.long	0x1084E8C0
1268	.long	0x13C1FEC2
1269	.long	0x1084F0C0
1270	vxor	29,5,6
1271	vsel	29,6,7,29
1272	.long	0x100020C0
1273	.long	0x13C586C2
1274	.long	0x13DEE8C0
1275	.long	0x1084F0C0
1276	lvx	28,29,7
1277	.long	0x13CE06C2
1278	.long	0x11ADF0C0
1279	.long	0x13CB7EC2
1280	.long	0x11ADF0C0
1281	.long	0x11ADD0C0
1282	.long	0x106360C0
1283	vsel	29,2,1,0
1284	.long	0x1042E0C0
1285	.long	0x1063E8C0
1286	.long	0x13C0FEC2
1287	.long	0x1063F0C0
1288	vxor	29,4,5
1289	vsel	29,5,6,29
1290	.long	0x10E718C0
1291	.long	0x13C486C2
1292	.long	0x13DEE8C0
1293	.long	0x1063F0C0
1294	lvx	28,30,7
1295	.long	0x13CF06C2
1296	.long	0x11CEF0C0
1297	.long	0x13CC7EC2
1298	.long	0x11CEF0C0
1299	.long	0x11CED8C0
1300	.long	0x104268C0
1301	vsel	29,1,0,7
1302	.long	0x1021E0C0
1303	.long	0x1042E8C0
1304	.long	0x13C7FEC2
1305	.long	0x1042F0C0
1306	vxor	29,3,4
1307	vsel	29,4,5,29
1308	.long	0x10C610C0
1309	.long	0x13C386C2
1310	.long	0x13DEE8C0
1311	.long	0x1042F0C0
1312	lvx	28,31,7
1313	addi	7,7,0x80
1314	.long	0x13D006C2
1315	.long	0x11EFF0C0
1316	.long	0x13CD7EC2
1317	.long	0x11EFF0C0
1318	.long	0x11EF40C0
1319	.long	0x102170C0
1320	vsel	29,0,7,6
1321	.long	0x1000E0C0
1322	.long	0x1021E8C0
1323	.long	0x13C6FEC2
1324	.long	0x1021F0C0
1325	vxor	29,2,3
1326	vsel	29,3,4,29
1327	.long	0x10A508C0
1328	.long	0x13C286C2
1329	.long	0x13DEE8C0
1330	.long	0x1021F0C0
1331	lvx	28,0,7
1332	.long	0x13D106C2
1333	.long	0x1210F0C0
1334	.long	0x13CE7EC2
1335	.long	0x1210F0C0
1336	.long	0x121048C0
1337	.long	0x100078C0
1338	vsel	29,7,6,5
1339	.long	0x10E7E0C0
1340	.long	0x1000E8C0
1341	.long	0x13C5FEC2
1342	.long	0x1000F0C0
1343	vxor	29,1,2
1344	vsel	29,2,3,29
1345	.long	0x108400C0
1346	.long	0x13C186C2
1347	.long	0x13DEE8C0
1348	.long	0x1000F0C0
1349	lvx	28,10,7
1350	.long	0x13D206C2
1351	.long	0x1231F0C0
1352	.long	0x13CF7EC2
1353	.long	0x1231F0C0
1354	.long	0x123150C0
1355	.long	0x10E780C0
1356	vsel	29,6,5,4
1357	.long	0x10C6E0C0
1358	.long	0x10E7E8C0
1359	.long	0x13C4FEC2
1360	.long	0x10E7F0C0
1361	vxor	29,0,1
1362	vsel	29,1,2,29
1363	.long	0x106338C0
1364	.long	0x13C086C2
1365	.long	0x13DEE8C0
1366	.long	0x10E7F0C0
1367	lvx	28,26,7
1368	.long	0x13D306C2
1369	.long	0x1252F0C0
1370	.long	0x13D07EC2
1371	.long	0x1252F0C0
1372	.long	0x125258C0
1373	.long	0x10C688C0
1374	vsel	29,5,4,3
1375	.long	0x10A5E0C0
1376	.long	0x10C6E8C0
1377	.long	0x13C3FEC2
1378	.long	0x10C6F0C0
1379	vxor	29,7,0
1380	vsel	29,0,1,29
1381	.long	0x104230C0
1382	.long	0x13C786C2
1383	.long	0x13DEE8C0
1384	.long	0x10C6F0C0
1385	lvx	28,27,7
1386	.long	0x13D806C2
1387	.long	0x1273F0C0
1388	.long	0x13D17EC2
1389	.long	0x1273F0C0
1390	.long	0x127360C0
1391	.long	0x10A590C0
1392	vsel	29,4,3,2
1393	.long	0x1084E0C0
1394	.long	0x10A5E8C0
1395	.long	0x13C2FEC2
1396	.long	0x10A5F0C0
1397	vxor	29,6,7
1398	vsel	29,7,0,29
1399	.long	0x102128C0
1400	.long	0x13C686C2
1401	.long	0x13DEE8C0
1402	.long	0x10A5F0C0
1403	lvx	28,28,7
1404	.long	0x13D906C2
1405	.long	0x1318F0C0
1406	.long	0x13D27EC2
1407	.long	0x1318F0C0
1408	.long	0x131868C0
1409	.long	0x108498C0
1410	vsel	29,3,2,1
1411	.long	0x1063E0C0
1412	.long	0x1084E8C0
1413	.long	0x13C1FEC2
1414	.long	0x1084F0C0
1415	vxor	29,5,6
1416	vsel	29,6,7,29
1417	.long	0x100020C0
1418	.long	0x13C586C2
1419	.long	0x13DEE8C0
1420	.long	0x1084F0C0
1421	lvx	28,29,7
1422	.long	0x13DA06C2
1423	.long	0x1339F0C0
1424	.long	0x13D37EC2
1425	.long	0x1339F0C0
1426	.long	0x133970C0
1427	.long	0x1063C0C0
1428	vsel	29,2,1,0
1429	.long	0x1042E0C0
1430	.long	0x1063E8C0
1431	.long	0x13C0FEC2
1432	.long	0x1063F0C0
1433	vxor	29,4,5
1434	vsel	29,5,6,29
1435	.long	0x10E718C0
1436	.long	0x13C486C2
1437	.long	0x13DEE8C0
1438	.long	0x1063F0C0
1439	lvx	28,30,7
1440	.long	0x13DB06C2
1441	.long	0x135AF0C0
1442	.long	0x13D87EC2
1443	.long	0x135AF0C0
1444	.long	0x135A78C0
1445	.long	0x1042C8C0
1446	vsel	29,1,0,7
1447	.long	0x1021E0C0
1448	.long	0x1042E8C0
1449	.long	0x13C7FEC2
1450	.long	0x1042F0C0
1451	vxor	29,3,4
1452	vsel	29,4,5,29
1453	.long	0x10C610C0
1454	.long	0x13C386C2
1455	.long	0x13DEE8C0
1456	.long	0x1042F0C0
1457	lvx	28,31,7
1458	addi	7,7,0x80
1459	.long	0x13C806C2
1460	.long	0x137BF0C0
1461	.long	0x13D97EC2
1462	.long	0x137BF0C0
1463	.long	0x137B80C0
1464	.long	0x1021D0C0
1465	vsel	29,0,7,6
1466	.long	0x1000E0C0
1467	.long	0x1021E8C0
1468	.long	0x13C6FEC2
1469	.long	0x1021F0C0
1470	vxor	29,2,3
1471	vsel	29,3,4,29
1472	.long	0x10A508C0
1473	.long	0x13C286C2
1474	.long	0x13DEE8C0
1475	.long	0x1021F0C0
1476	lvx	28,0,7
1477	.long	0x13C906C2
1478	.long	0x1108F0C0
1479	.long	0x13DA7EC2
1480	.long	0x1108F0C0
1481	.long	0x110888C0
1482	.long	0x1000D8C0
1483	vsel	29,7,6,5
1484	.long	0x10E7E0C0
1485	.long	0x1000E8C0
1486	.long	0x13C5FEC2
1487	.long	0x1000F0C0
1488	vxor	29,1,2
1489	vsel	29,2,3,29
1490	.long	0x108400C0
1491	.long	0x13C186C2
1492	.long	0x13DEE8C0
1493	.long	0x1000F0C0
1494	lvx	28,10,7
1495	bdnz	.L16_xx
1496
1497	lvx	10,0,11
1498	subic.	5,5,1
1499	lvx	11,10,11
1500	.long	0x100050C0
1501	lvx	12,26,11
1502	.long	0x102158C0
1503	lvx	13,27,11
1504	.long	0x104260C0
1505	lvx	14,28,11
1506	.long	0x106368C0
1507	lvx	15,29,11
1508	.long	0x108470C0
1509	lvx	16,30,11
1510	.long	0x10A578C0
1511	lvx	17,31,11
1512	.long	0x10C680C0
1513	.long	0x10E788C0
1514	bne	.Loop
1515	vperm	0,0,1,28
1516	vperm	2,2,3,28
1517	vperm	4,4,5,28
1518	vperm	6,6,7,28
1519	.long	0x7C001F99
1520	.long	0x7C4A1F99
1521	.long	0x7C9A1F99
1522	.long	0x7CDB1F99
1523	addi	11,1,207
1524	mtlr	8
1525	or	12,12,12
1526	lvx	24,0,11
1527	lvx	25,10,11
1528	lvx	26,26,11
1529	lvx	27,27,11
1530	lvx	28,28,11
1531	lvx	29,29,11
1532	lvx	30,30,11
1533	lvx	31,31,11
1534	ld	26,336(1)
1535	ld	27,344(1)
1536	ld	28,352(1)
1537	ld	29,360(1)
1538	ld	30,368(1)
1539	ld	31,376(1)
1540	addi	1,1,384
1541	blr
1542.long	0
1543.byte	0,12,4,1,0x80,6,3,0
1544.long	0
1545.size	zfs_sha512_power8,.-zfs_sha512_power8
1546.align	6
1547.LPICmeup:
1548	mflr	0
1549	bcl	20,31,$+4
1550	mflr	6
1551	addi	6,6,56
1552	mtlr	0
1553	blr
1554.long	0
1555.byte	0,12,0x14,0,0,0,0,0
1556.space	28
1557.long	0xd728ae22,0x428a2f98
1558.long	0xd728ae22,0x428a2f98
1559.long	0x23ef65cd,0x71374491
1560.long	0x23ef65cd,0x71374491
1561.long	0xec4d3b2f,0xb5c0fbcf
1562.long	0xec4d3b2f,0xb5c0fbcf
1563.long	0x8189dbbc,0xe9b5dba5
1564.long	0x8189dbbc,0xe9b5dba5
1565.long	0xf348b538,0x3956c25b
1566.long	0xf348b538,0x3956c25b
1567.long	0xb605d019,0x59f111f1
1568.long	0xb605d019,0x59f111f1
1569.long	0xaf194f9b,0x923f82a4
1570.long	0xaf194f9b,0x923f82a4
1571.long	0xda6d8118,0xab1c5ed5
1572.long	0xda6d8118,0xab1c5ed5
1573.long	0xa3030242,0xd807aa98
1574.long	0xa3030242,0xd807aa98
1575.long	0x45706fbe,0x12835b01
1576.long	0x45706fbe,0x12835b01
1577.long	0x4ee4b28c,0x243185be
1578.long	0x4ee4b28c,0x243185be
1579.long	0xd5ffb4e2,0x550c7dc3
1580.long	0xd5ffb4e2,0x550c7dc3
1581.long	0xf27b896f,0x72be5d74
1582.long	0xf27b896f,0x72be5d74
1583.long	0x3b1696b1,0x80deb1fe
1584.long	0x3b1696b1,0x80deb1fe
1585.long	0x25c71235,0x9bdc06a7
1586.long	0x25c71235,0x9bdc06a7
1587.long	0xcf692694,0xc19bf174
1588.long	0xcf692694,0xc19bf174
1589.long	0x9ef14ad2,0xe49b69c1
1590.long	0x9ef14ad2,0xe49b69c1
1591.long	0x384f25e3,0xefbe4786
1592.long	0x384f25e3,0xefbe4786
1593.long	0x8b8cd5b5,0x0fc19dc6
1594.long	0x8b8cd5b5,0x0fc19dc6
1595.long	0x77ac9c65,0x240ca1cc
1596.long	0x77ac9c65,0x240ca1cc
1597.long	0x592b0275,0x2de92c6f
1598.long	0x592b0275,0x2de92c6f
1599.long	0x6ea6e483,0x4a7484aa
1600.long	0x6ea6e483,0x4a7484aa
1601.long	0xbd41fbd4,0x5cb0a9dc
1602.long	0xbd41fbd4,0x5cb0a9dc
1603.long	0x831153b5,0x76f988da
1604.long	0x831153b5,0x76f988da
1605.long	0xee66dfab,0x983e5152
1606.long	0xee66dfab,0x983e5152
1607.long	0x2db43210,0xa831c66d
1608.long	0x2db43210,0xa831c66d
1609.long	0x98fb213f,0xb00327c8
1610.long	0x98fb213f,0xb00327c8
1611.long	0xbeef0ee4,0xbf597fc7
1612.long	0xbeef0ee4,0xbf597fc7
1613.long	0x3da88fc2,0xc6e00bf3
1614.long	0x3da88fc2,0xc6e00bf3
1615.long	0x930aa725,0xd5a79147
1616.long	0x930aa725,0xd5a79147
1617.long	0xe003826f,0x06ca6351
1618.long	0xe003826f,0x06ca6351
1619.long	0x0a0e6e70,0x14292967
1620.long	0x0a0e6e70,0x14292967
1621.long	0x46d22ffc,0x27b70a85
1622.long	0x46d22ffc,0x27b70a85
1623.long	0x5c26c926,0x2e1b2138
1624.long	0x5c26c926,0x2e1b2138
1625.long	0x5ac42aed,0x4d2c6dfc
1626.long	0x5ac42aed,0x4d2c6dfc
1627.long	0x9d95b3df,0x53380d13
1628.long	0x9d95b3df,0x53380d13
1629.long	0x8baf63de,0x650a7354
1630.long	0x8baf63de,0x650a7354
1631.long	0x3c77b2a8,0x766a0abb
1632.long	0x3c77b2a8,0x766a0abb
1633.long	0x47edaee6,0x81c2c92e
1634.long	0x47edaee6,0x81c2c92e
1635.long	0x1482353b,0x92722c85
1636.long	0x1482353b,0x92722c85
1637.long	0x4cf10364,0xa2bfe8a1
1638.long	0x4cf10364,0xa2bfe8a1
1639.long	0xbc423001,0xa81a664b
1640.long	0xbc423001,0xa81a664b
1641.long	0xd0f89791,0xc24b8b70
1642.long	0xd0f89791,0xc24b8b70
1643.long	0x0654be30,0xc76c51a3
1644.long	0x0654be30,0xc76c51a3
1645.long	0xd6ef5218,0xd192e819
1646.long	0xd6ef5218,0xd192e819
1647.long	0x5565a910,0xd6990624
1648.long	0x5565a910,0xd6990624
1649.long	0x5771202a,0xf40e3585
1650.long	0x5771202a,0xf40e3585
1651.long	0x32bbd1b8,0x106aa070
1652.long	0x32bbd1b8,0x106aa070
1653.long	0xb8d2d0c8,0x19a4c116
1654.long	0xb8d2d0c8,0x19a4c116
1655.long	0x5141ab53,0x1e376c08
1656.long	0x5141ab53,0x1e376c08
1657.long	0xdf8eeb99,0x2748774c
1658.long	0xdf8eeb99,0x2748774c
1659.long	0xe19b48a8,0x34b0bcb5
1660.long	0xe19b48a8,0x34b0bcb5
1661.long	0xc5c95a63,0x391c0cb3
1662.long	0xc5c95a63,0x391c0cb3
1663.long	0xe3418acb,0x4ed8aa4a
1664.long	0xe3418acb,0x4ed8aa4a
1665.long	0x7763e373,0x5b9cca4f
1666.long	0x7763e373,0x5b9cca4f
1667.long	0xd6b2b8a3,0x682e6ff3
1668.long	0xd6b2b8a3,0x682e6ff3
1669.long	0x5defb2fc,0x748f82ee
1670.long	0x5defb2fc,0x748f82ee
1671.long	0x43172f60,0x78a5636f
1672.long	0x43172f60,0x78a5636f
1673.long	0xa1f0ab72,0x84c87814
1674.long	0xa1f0ab72,0x84c87814
1675.long	0x1a6439ec,0x8cc70208
1676.long	0x1a6439ec,0x8cc70208
1677.long	0x23631e28,0x90befffa
1678.long	0x23631e28,0x90befffa
1679.long	0xde82bde9,0xa4506ceb
1680.long	0xde82bde9,0xa4506ceb
1681.long	0xb2c67915,0xbef9a3f7
1682.long	0xb2c67915,0xbef9a3f7
1683.long	0xe372532b,0xc67178f2
1684.long	0xe372532b,0xc67178f2
1685.long	0xea26619c,0xca273ece
1686.long	0xea26619c,0xca273ece
1687.long	0x21c0c207,0xd186b8c7
1688.long	0x21c0c207,0xd186b8c7
1689.long	0xcde0eb1e,0xeada7dd6
1690.long	0xcde0eb1e,0xeada7dd6
1691.long	0xee6ed178,0xf57d4f7f
1692.long	0xee6ed178,0xf57d4f7f
1693.long	0x72176fba,0x06f067aa
1694.long	0x72176fba,0x06f067aa
1695.long	0xa2c898a6,0x0a637dc5
1696.long	0xa2c898a6,0x0a637dc5
1697.long	0xbef90dae,0x113f9804
1698.long	0xbef90dae,0x113f9804
1699.long	0x131c471b,0x1b710b35
1700.long	0x131c471b,0x1b710b35
1701.long	0x23047d84,0x28db77f5
1702.long	0x23047d84,0x28db77f5
1703.long	0x40c72493,0x32caab7b
1704.long	0x40c72493,0x32caab7b
1705.long	0x15c9bebc,0x3c9ebe0a
1706.long	0x15c9bebc,0x3c9ebe0a
1707.long	0x9c100d4c,0x431d67c4
1708.long	0x9c100d4c,0x431d67c4
1709.long	0xcb3e42b6,0x4cc5d4be
1710.long	0xcb3e42b6,0x4cc5d4be
1711.long	0xfc657e2a,0x597f299c
1712.long	0xfc657e2a,0x597f299c
1713.long	0x3ad6faec,0x5fcb6fab
1714.long	0x3ad6faec,0x5fcb6fab
1715.long	0x4a475817,0x6c44198c
1716.long	0x4a475817,0x6c44198c
1717.long	0,0
1718.long	0,0
1719.long	0x14151617,0x10111213
1720.long	0x04050607,0x00010203
1721
1722#endif
1723