Update ABD stats for linear page Linux
[zfs.git] / module / icp / asm-ppc64 / sha2 / sha512-p8.S
blob2409c53385d63184086c203b234027e1eb7a7a0e
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_sha512_power8
28 .globl  .zfs_sha512_power8
29 .type   zfs_sha512_power8,@function
30 .section        ".opd","aw"
31 .align  3
32 zfs_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
41 .globl  zfs_sha512_power8
42 .type   zfs_sha512_power8,@function
43 .align  6
44 zfs_sha512_power8:
45 .localentry     zfs_sha512_power8,0
46 #endif
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
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
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
876 #elif (defined(__PPC64__) && defined(__LITTLE_ENDIAN__))
878 .abiversion     2
879 .text
881 .globl  zfs_sha512_power8
882 .type   zfs_sha512_power8,@function
883 .align  6
884 zfs_sha512_power8:
885 .localentry     zfs_sha512_power8,0
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
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
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
1722 #endif