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