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