zio: do no-op injections just before handing off to vdevs
[zfs.git] / module / icp / asm-ppc64 / sha2 / sha512-ppc.S
blob57213f68abc57b8d7c46dacf2df3f40d561792cb
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_ppc
28 .globl  .zfs_sha512_ppc
29 .type   zfs_sha512_ppc,@function
30 .section        ".opd","aw"
31 .align  3
32 zfs_sha512_ppc:
33 .quad   .zfs_sha512_ppc,.TOC.@tocbase,0
34 .previous
35 .align  6
36 .zfs_sha512_ppc:
37 #else
38 .abiversion     2
39 .text
41 .globl  zfs_sha512_ppc
42 .type   zfs_sha512_ppc,@function
43 .align  6
44 zfs_sha512_ppc:
45 .localentry     zfs_sha512_ppc,0
46 #endif
47         stdu    1,-384(1)
48         mflr    0
49         sldi    5,5,7
51         std     3,208(1)
53         std     14,240(1)
54         std     15,248(1)
55         std     16,256(1)
56         std     17,264(1)
57         std     18,272(1)
58         std     19,280(1)
59         std     20,288(1)
60         std     21,296(1)
61         std     22,304(1)
62         std     23,312(1)
63         std     24,320(1)
64         std     25,328(1)
65         std     26,336(1)
66         std     27,344(1)
67         std     28,352(1)
68         std     29,360(1)
69         std     30,368(1)
70         std     31,376(1)
71         std     0,400(1)
72         ld      8,0(3)
73         mr      31,4
74         ld      9,8(3)
75         ld      10,16(3)
76         ld      11,24(3)
77         ld      12,32(3)
78         ld      6,40(3)
79         ld      14,48(3)
80         ld      15,56(3)
81         bl      .LPICmeup
82 .LPICedup:
83         andi.   0,31,3
84         bne     .Lunaligned
85 .Laligned:
86         add     5,31,5
87         std     5,192(1)
88         std     31,200(1)
89         bl      .Lsha2_block_private
90         b       .Ldone
98 .align  4
99 .Lunaligned:
100         subfic  0,31,4096
101         andi.   0,0,3968
102         beq     .Lcross_page
103         cmpld   5,0
104         ble     .Laligned
105         subfc   5,0,5
106         add     0,31,0
107         std     5,184(1)
108         std     0,192(1)
109         std     31,200(1)
110         bl      .Lsha2_block_private
112         ld      5,184(1)
113 .Lcross_page:
114         li      0,32
115         mtctr   0
116         addi    20,1,48
117 .Lmemcpy:
118         lbz     16,0(31)
119         lbz     17,1(31)
120         lbz     18,2(31)
121         lbz     19,3(31)
122         addi    31,31,4
123         stb     16,0(20)
124         stb     17,1(20)
125         stb     18,2(20)
126         stb     19,3(20)
127         addi    20,20,4
128         bdnz    .Lmemcpy
129         std     31,176(1)
130         addi    0,1,176
131         addi    31,1,48
132         std     5,184(1)
133         std     0,192(1)
134         std     31,200(1)
135         bl      .Lsha2_block_private
136         ld      31,176(1)
137         ld      5,184(1)
138         addic.  5,5,-128
139         bne     .Lunaligned
141 .Ldone:
142         ld      0,400(1)
143         ld      14,240(1)
144         ld      15,248(1)
145         ld      16,256(1)
146         ld      17,264(1)
147         ld      18,272(1)
148         ld      19,280(1)
149         ld      20,288(1)
150         ld      21,296(1)
151         ld      22,304(1)
152         ld      23,312(1)
153         ld      24,320(1)
154         ld      25,328(1)
155         ld      26,336(1)
156         ld      27,344(1)
157         ld      28,352(1)
158         ld      29,360(1)
159         ld      30,368(1)
160         ld      31,376(1)
161         mtlr    0
162         addi    1,1,384
163         blr     
164 .long   0
165 .byte   0,12,4,1,0x80,18,3,0
166 .long   0
167 .align  4
168 .Lsha2_block_private:
169         ld      0,0(7)
170         lwz     5,0(31)
171         lwz     16,4(31)
172         insrdi  16,5,32,0
173         rotrdi  3,12,14
174         rotrdi  4,12,18
175         and     5,6,12
176         xor     3,3,4
177         add     15,15,0
178         andc    0,14,12
179         rotrdi  4,4,23
180         or      5,5,0
181         add     15,15,16
182         xor     3,3,4
183         add     15,15,5
184         add     15,15,3
186         rotrdi  3,8,28
187         rotrdi  4,8,34
188         and     5,8,9
189         and     0,8,10
190         xor     3,3,4
191         rotrdi  4,4,5
192         xor     5,5,0
193         and     0,9,10
194         xor     3,3,4
195         add     11,11,15
196         xor     5,5,0
197         ld      0,8(7)
198         add     15,15,3
199         add     15,15,5
201         lwz     5,8(31)
202         lwz     17,12(31)
203         insrdi  17,5,32,0
204         rotrdi  3,11,14
205         rotrdi  4,11,18
206         and     5,12,11
207         xor     3,3,4
208         add     14,14,0
209         andc    0,6,11
210         rotrdi  4,4,23
211         or      5,5,0
212         add     14,14,17
213         xor     3,3,4
214         add     14,14,5
215         add     14,14,3
217         rotrdi  3,15,28
218         rotrdi  4,15,34
219         and     5,15,8
220         and     0,15,9
221         xor     3,3,4
222         rotrdi  4,4,5
223         xor     5,5,0
224         and     0,8,9
225         xor     3,3,4
226         add     10,10,14
227         xor     5,5,0
228         ld      0,16(7)
229         add     14,14,3
230         add     14,14,5
232         lwz     5,16(31)
233         lwz     18,20(31)
234         insrdi  18,5,32,0
235         rotrdi  3,10,14
236         rotrdi  4,10,18
237         and     5,11,10
238         xor     3,3,4
239         add     6,6,0
240         andc    0,12,10
241         rotrdi  4,4,23
242         or      5,5,0
243         add     6,6,18
244         xor     3,3,4
245         add     6,6,5
246         add     6,6,3
248         rotrdi  3,14,28
249         rotrdi  4,14,34
250         and     5,14,15
251         and     0,14,8
252         xor     3,3,4
253         rotrdi  4,4,5
254         xor     5,5,0
255         and     0,15,8
256         xor     3,3,4
257         add     9,9,6
258         xor     5,5,0
259         ld      0,24(7)
260         add     6,6,3
261         add     6,6,5
263         lwz     5,24(31)
264         lwz     19,28(31)
265         insrdi  19,5,32,0
266         rotrdi  3,9,14
267         rotrdi  4,9,18
268         and     5,10,9
269         xor     3,3,4
270         add     12,12,0
271         andc    0,11,9
272         rotrdi  4,4,23
273         or      5,5,0
274         add     12,12,19
275         xor     3,3,4
276         add     12,12,5
277         add     12,12,3
279         rotrdi  3,6,28
280         rotrdi  4,6,34
281         and     5,6,14
282         and     0,6,15
283         xor     3,3,4
284         rotrdi  4,4,5
285         xor     5,5,0
286         and     0,14,15
287         xor     3,3,4
288         add     8,8,12
289         xor     5,5,0
290         ld      0,32(7)
291         add     12,12,3
292         add     12,12,5
294         lwz     5,32(31)
295         lwz     20,36(31)
296         insrdi  20,5,32,0
297         rotrdi  3,8,14
298         rotrdi  4,8,18
299         and     5,9,8
300         xor     3,3,4
301         add     11,11,0
302         andc    0,10,8
303         rotrdi  4,4,23
304         or      5,5,0
305         add     11,11,20
306         xor     3,3,4
307         add     11,11,5
308         add     11,11,3
310         rotrdi  3,12,28
311         rotrdi  4,12,34
312         and     5,12,6
313         and     0,12,14
314         xor     3,3,4
315         rotrdi  4,4,5
316         xor     5,5,0
317         and     0,6,14
318         xor     3,3,4
319         add     15,15,11
320         xor     5,5,0
321         ld      0,40(7)
322         add     11,11,3
323         add     11,11,5
325         lwz     5,40(31)
326         lwz     21,44(31)
327         insrdi  21,5,32,0
328         rotrdi  3,15,14
329         rotrdi  4,15,18
330         and     5,8,15
331         xor     3,3,4
332         add     10,10,0
333         andc    0,9,15
334         rotrdi  4,4,23
335         or      5,5,0
336         add     10,10,21
337         xor     3,3,4
338         add     10,10,5
339         add     10,10,3
341         rotrdi  3,11,28
342         rotrdi  4,11,34
343         and     5,11,12
344         and     0,11,6
345         xor     3,3,4
346         rotrdi  4,4,5
347         xor     5,5,0
348         and     0,12,6
349         xor     3,3,4
350         add     14,14,10
351         xor     5,5,0
352         ld      0,48(7)
353         add     10,10,3
354         add     10,10,5
356         lwz     5,48(31)
357         lwz     22,52(31)
358         insrdi  22,5,32,0
359         rotrdi  3,14,14
360         rotrdi  4,14,18
361         and     5,15,14
362         xor     3,3,4
363         add     9,9,0
364         andc    0,8,14
365         rotrdi  4,4,23
366         or      5,5,0
367         add     9,9,22
368         xor     3,3,4
369         add     9,9,5
370         add     9,9,3
372         rotrdi  3,10,28
373         rotrdi  4,10,34
374         and     5,10,11
375         and     0,10,12
376         xor     3,3,4
377         rotrdi  4,4,5
378         xor     5,5,0
379         and     0,11,12
380         xor     3,3,4
381         add     6,6,9
382         xor     5,5,0
383         ld      0,56(7)
384         add     9,9,3
385         add     9,9,5
387         lwz     5,56(31)
388         lwz     23,60(31)
389         insrdi  23,5,32,0
390         rotrdi  3,6,14
391         rotrdi  4,6,18
392         and     5,14,6
393         xor     3,3,4
394         add     8,8,0
395         andc    0,15,6
396         rotrdi  4,4,23
397         or      5,5,0
398         add     8,8,23
399         xor     3,3,4
400         add     8,8,5
401         add     8,8,3
403         rotrdi  3,9,28
404         rotrdi  4,9,34
405         and     5,9,10
406         and     0,9,11
407         xor     3,3,4
408         rotrdi  4,4,5
409         xor     5,5,0
410         and     0,10,11
411         xor     3,3,4
412         add     12,12,8
413         xor     5,5,0
414         ld      0,64(7)
415         add     8,8,3
416         add     8,8,5
418         lwz     5,64(31)
419         lwz     24,68(31)
420         insrdi  24,5,32,0
421         rotrdi  3,12,14
422         rotrdi  4,12,18
423         and     5,6,12
424         xor     3,3,4
425         add     15,15,0
426         andc    0,14,12
427         rotrdi  4,4,23
428         or      5,5,0
429         add     15,15,24
430         xor     3,3,4
431         add     15,15,5
432         add     15,15,3
434         rotrdi  3,8,28
435         rotrdi  4,8,34
436         and     5,8,9
437         and     0,8,10
438         xor     3,3,4
439         rotrdi  4,4,5
440         xor     5,5,0
441         and     0,9,10
442         xor     3,3,4
443         add     11,11,15
444         xor     5,5,0
445         ld      0,72(7)
446         add     15,15,3
447         add     15,15,5
449         lwz     5,72(31)
450         lwz     25,76(31)
451         insrdi  25,5,32,0
452         rotrdi  3,11,14
453         rotrdi  4,11,18
454         and     5,12,11
455         xor     3,3,4
456         add     14,14,0
457         andc    0,6,11
458         rotrdi  4,4,23
459         or      5,5,0
460         add     14,14,25
461         xor     3,3,4
462         add     14,14,5
463         add     14,14,3
465         rotrdi  3,15,28
466         rotrdi  4,15,34
467         and     5,15,8
468         and     0,15,9
469         xor     3,3,4
470         rotrdi  4,4,5
471         xor     5,5,0
472         and     0,8,9
473         xor     3,3,4
474         add     10,10,14
475         xor     5,5,0
476         ld      0,80(7)
477         add     14,14,3
478         add     14,14,5
480         lwz     5,80(31)
481         lwz     26,84(31)
482         insrdi  26,5,32,0
483         rotrdi  3,10,14
484         rotrdi  4,10,18
485         and     5,11,10
486         xor     3,3,4
487         add     6,6,0
488         andc    0,12,10
489         rotrdi  4,4,23
490         or      5,5,0
491         add     6,6,26
492         xor     3,3,4
493         add     6,6,5
494         add     6,6,3
496         rotrdi  3,14,28
497         rotrdi  4,14,34
498         and     5,14,15
499         and     0,14,8
500         xor     3,3,4
501         rotrdi  4,4,5
502         xor     5,5,0
503         and     0,15,8
504         xor     3,3,4
505         add     9,9,6
506         xor     5,5,0
507         ld      0,88(7)
508         add     6,6,3
509         add     6,6,5
511         lwz     5,88(31)
512         lwz     27,92(31)
513         insrdi  27,5,32,0
514         rotrdi  3,9,14
515         rotrdi  4,9,18
516         and     5,10,9
517         xor     3,3,4
518         add     12,12,0
519         andc    0,11,9
520         rotrdi  4,4,23
521         or      5,5,0
522         add     12,12,27
523         xor     3,3,4
524         add     12,12,5
525         add     12,12,3
527         rotrdi  3,6,28
528         rotrdi  4,6,34
529         and     5,6,14
530         and     0,6,15
531         xor     3,3,4
532         rotrdi  4,4,5
533         xor     5,5,0
534         and     0,14,15
535         xor     3,3,4
536         add     8,8,12
537         xor     5,5,0
538         ld      0,96(7)
539         add     12,12,3
540         add     12,12,5
542         lwz     5,96(31)
543         lwz     28,100(31)
544         insrdi  28,5,32,0
545         rotrdi  3,8,14
546         rotrdi  4,8,18
547         and     5,9,8
548         xor     3,3,4
549         add     11,11,0
550         andc    0,10,8
551         rotrdi  4,4,23
552         or      5,5,0
553         add     11,11,28
554         xor     3,3,4
555         add     11,11,5
556         add     11,11,3
558         rotrdi  3,12,28
559         rotrdi  4,12,34
560         and     5,12,6
561         and     0,12,14
562         xor     3,3,4
563         rotrdi  4,4,5
564         xor     5,5,0
565         and     0,6,14
566         xor     3,3,4
567         add     15,15,11
568         xor     5,5,0
569         ld      0,104(7)
570         add     11,11,3
571         add     11,11,5
573         lwz     5,104(31)
574         lwz     29,108(31)
575         insrdi  29,5,32,0
576         rotrdi  3,15,14
577         rotrdi  4,15,18
578         and     5,8,15
579         xor     3,3,4
580         add     10,10,0
581         andc    0,9,15
582         rotrdi  4,4,23
583         or      5,5,0
584         add     10,10,29
585         xor     3,3,4
586         add     10,10,5
587         add     10,10,3
589         rotrdi  3,11,28
590         rotrdi  4,11,34
591         and     5,11,12
592         and     0,11,6
593         xor     3,3,4
594         rotrdi  4,4,5
595         xor     5,5,0
596         and     0,12,6
597         xor     3,3,4
598         add     14,14,10
599         xor     5,5,0
600         ld      0,112(7)
601         add     10,10,3
602         add     10,10,5
604         lwz     5,112(31)
605         lwz     30,116(31)
606         insrdi  30,5,32,0
607         rotrdi  3,14,14
608         rotrdi  4,14,18
609         and     5,15,14
610         xor     3,3,4
611         add     9,9,0
612         andc    0,8,14
613         rotrdi  4,4,23
614         or      5,5,0
615         add     9,9,30
616         xor     3,3,4
617         add     9,9,5
618         add     9,9,3
620         rotrdi  3,10,28
621         rotrdi  4,10,34
622         and     5,10,11
623         and     0,10,12
624         xor     3,3,4
625         rotrdi  4,4,5
626         xor     5,5,0
627         and     0,11,12
628         xor     3,3,4
629         add     6,6,9
630         xor     5,5,0
631         ld      0,120(7)
632         add     9,9,3
633         add     9,9,5
635         lwz     5,120(31)
636         lwz     31,124(31)
637         insrdi  31,5,32,0
638         rotrdi  3,6,14
639         rotrdi  4,6,18
640         and     5,14,6
641         xor     3,3,4
642         add     8,8,0
643         andc    0,15,6
644         rotrdi  4,4,23
645         or      5,5,0
646         add     8,8,31
647         xor     3,3,4
648         add     8,8,5
649         add     8,8,3
651         rotrdi  3,9,28
652         rotrdi  4,9,34
653         and     5,9,10
654         and     0,9,11
655         xor     3,3,4
656         rotrdi  4,4,5
657         xor     5,5,0
658         and     0,10,11
659         xor     3,3,4
660         add     12,12,8
661         xor     5,5,0
662         add     8,8,3
663         add     8,8,5
665         li      5,4
666         mtctr   5
667 .align  4
668 .Lrounds:
669         addi    7,7,128
670         rotrdi  3,17,1
671         rotrdi  4,17,8
672         rotrdi  5,30,19
673         rotrdi  0,30,61
674         xor     3,3,4
675         srdi    4,17,7
676         xor     5,5,0
677         srdi    0,30,6
678         add     16,16,25
679         xor     3,3,4
680         xor     5,5,0
681         ld      0,0(7)
682         add     16,16,3
683         add     16,16,5
684         rotrdi  3,12,14
685         rotrdi  4,12,18
686         and     5,6,12
687         xor     3,3,4
688         add     15,15,0
689         andc    0,14,12
690         rotrdi  4,4,23
691         or      5,5,0
692         add     15,15,16
693         xor     3,3,4
694         add     15,15,5
695         add     15,15,3
697         rotrdi  3,8,28
698         rotrdi  4,8,34
699         and     5,8,9
700         and     0,8,10
701         xor     3,3,4
702         rotrdi  4,4,5
703         xor     5,5,0
704         and     0,9,10
705         xor     3,3,4
706         add     11,11,15
707         xor     5,5,0
708         add     15,15,3
709         add     15,15,5
711         rotrdi  3,18,1
712         rotrdi  4,18,8
713         rotrdi  5,31,19
714         rotrdi  0,31,61
715         xor     3,3,4
716         srdi    4,18,7
717         xor     5,5,0
718         srdi    0,31,6
719         add     17,17,26
720         xor     3,3,4
721         xor     5,5,0
722         ld      0,8(7)
723         add     17,17,3
724         add     17,17,5
725         rotrdi  3,11,14
726         rotrdi  4,11,18
727         and     5,12,11
728         xor     3,3,4
729         add     14,14,0
730         andc    0,6,11
731         rotrdi  4,4,23
732         or      5,5,0
733         add     14,14,17
734         xor     3,3,4
735         add     14,14,5
736         add     14,14,3
738         rotrdi  3,15,28
739         rotrdi  4,15,34
740         and     5,15,8
741         and     0,15,9
742         xor     3,3,4
743         rotrdi  4,4,5
744         xor     5,5,0
745         and     0,8,9
746         xor     3,3,4
747         add     10,10,14
748         xor     5,5,0
749         add     14,14,3
750         add     14,14,5
752         rotrdi  3,19,1
753         rotrdi  4,19,8
754         rotrdi  5,16,19
755         rotrdi  0,16,61
756         xor     3,3,4
757         srdi    4,19,7
758         xor     5,5,0
759         srdi    0,16,6
760         add     18,18,27
761         xor     3,3,4
762         xor     5,5,0
763         ld      0,16(7)
764         add     18,18,3
765         add     18,18,5
766         rotrdi  3,10,14
767         rotrdi  4,10,18
768         and     5,11,10
769         xor     3,3,4
770         add     6,6,0
771         andc    0,12,10
772         rotrdi  4,4,23
773         or      5,5,0
774         add     6,6,18
775         xor     3,3,4
776         add     6,6,5
777         add     6,6,3
779         rotrdi  3,14,28
780         rotrdi  4,14,34
781         and     5,14,15
782         and     0,14,8
783         xor     3,3,4
784         rotrdi  4,4,5
785         xor     5,5,0
786         and     0,15,8
787         xor     3,3,4
788         add     9,9,6
789         xor     5,5,0
790         add     6,6,3
791         add     6,6,5
793         rotrdi  3,20,1
794         rotrdi  4,20,8
795         rotrdi  5,17,19
796         rotrdi  0,17,61
797         xor     3,3,4
798         srdi    4,20,7
799         xor     5,5,0
800         srdi    0,17,6
801         add     19,19,28
802         xor     3,3,4
803         xor     5,5,0
804         ld      0,24(7)
805         add     19,19,3
806         add     19,19,5
807         rotrdi  3,9,14
808         rotrdi  4,9,18
809         and     5,10,9
810         xor     3,3,4
811         add     12,12,0
812         andc    0,11,9
813         rotrdi  4,4,23
814         or      5,5,0
815         add     12,12,19
816         xor     3,3,4
817         add     12,12,5
818         add     12,12,3
820         rotrdi  3,6,28
821         rotrdi  4,6,34
822         and     5,6,14
823         and     0,6,15
824         xor     3,3,4
825         rotrdi  4,4,5
826         xor     5,5,0
827         and     0,14,15
828         xor     3,3,4
829         add     8,8,12
830         xor     5,5,0
831         add     12,12,3
832         add     12,12,5
834         rotrdi  3,21,1
835         rotrdi  4,21,8
836         rotrdi  5,18,19
837         rotrdi  0,18,61
838         xor     3,3,4
839         srdi    4,21,7
840         xor     5,5,0
841         srdi    0,18,6
842         add     20,20,29
843         xor     3,3,4
844         xor     5,5,0
845         ld      0,32(7)
846         add     20,20,3
847         add     20,20,5
848         rotrdi  3,8,14
849         rotrdi  4,8,18
850         and     5,9,8
851         xor     3,3,4
852         add     11,11,0
853         andc    0,10,8
854         rotrdi  4,4,23
855         or      5,5,0
856         add     11,11,20
857         xor     3,3,4
858         add     11,11,5
859         add     11,11,3
861         rotrdi  3,12,28
862         rotrdi  4,12,34
863         and     5,12,6
864         and     0,12,14
865         xor     3,3,4
866         rotrdi  4,4,5
867         xor     5,5,0
868         and     0,6,14
869         xor     3,3,4
870         add     15,15,11
871         xor     5,5,0
872         add     11,11,3
873         add     11,11,5
875         rotrdi  3,22,1
876         rotrdi  4,22,8
877         rotrdi  5,19,19
878         rotrdi  0,19,61
879         xor     3,3,4
880         srdi    4,22,7
881         xor     5,5,0
882         srdi    0,19,6
883         add     21,21,30
884         xor     3,3,4
885         xor     5,5,0
886         ld      0,40(7)
887         add     21,21,3
888         add     21,21,5
889         rotrdi  3,15,14
890         rotrdi  4,15,18
891         and     5,8,15
892         xor     3,3,4
893         add     10,10,0
894         andc    0,9,15
895         rotrdi  4,4,23
896         or      5,5,0
897         add     10,10,21
898         xor     3,3,4
899         add     10,10,5
900         add     10,10,3
902         rotrdi  3,11,28
903         rotrdi  4,11,34
904         and     5,11,12
905         and     0,11,6
906         xor     3,3,4
907         rotrdi  4,4,5
908         xor     5,5,0
909         and     0,12,6
910         xor     3,3,4
911         add     14,14,10
912         xor     5,5,0
913         add     10,10,3
914         add     10,10,5
916         rotrdi  3,23,1
917         rotrdi  4,23,8
918         rotrdi  5,20,19
919         rotrdi  0,20,61
920         xor     3,3,4
921         srdi    4,23,7
922         xor     5,5,0
923         srdi    0,20,6
924         add     22,22,31
925         xor     3,3,4
926         xor     5,5,0
927         ld      0,48(7)
928         add     22,22,3
929         add     22,22,5
930         rotrdi  3,14,14
931         rotrdi  4,14,18
932         and     5,15,14
933         xor     3,3,4
934         add     9,9,0
935         andc    0,8,14
936         rotrdi  4,4,23
937         or      5,5,0
938         add     9,9,22
939         xor     3,3,4
940         add     9,9,5
941         add     9,9,3
943         rotrdi  3,10,28
944         rotrdi  4,10,34
945         and     5,10,11
946         and     0,10,12
947         xor     3,3,4
948         rotrdi  4,4,5
949         xor     5,5,0
950         and     0,11,12
951         xor     3,3,4
952         add     6,6,9
953         xor     5,5,0
954         add     9,9,3
955         add     9,9,5
957         rotrdi  3,24,1
958         rotrdi  4,24,8
959         rotrdi  5,21,19
960         rotrdi  0,21,61
961         xor     3,3,4
962         srdi    4,24,7
963         xor     5,5,0
964         srdi    0,21,6
965         add     23,23,16
966         xor     3,3,4
967         xor     5,5,0
968         ld      0,56(7)
969         add     23,23,3
970         add     23,23,5
971         rotrdi  3,6,14
972         rotrdi  4,6,18
973         and     5,14,6
974         xor     3,3,4
975         add     8,8,0
976         andc    0,15,6
977         rotrdi  4,4,23
978         or      5,5,0
979         add     8,8,23
980         xor     3,3,4
981         add     8,8,5
982         add     8,8,3
984         rotrdi  3,9,28
985         rotrdi  4,9,34
986         and     5,9,10
987         and     0,9,11
988         xor     3,3,4
989         rotrdi  4,4,5
990         xor     5,5,0
991         and     0,10,11
992         xor     3,3,4
993         add     12,12,8
994         xor     5,5,0
995         add     8,8,3
996         add     8,8,5
998         rotrdi  3,25,1
999         rotrdi  4,25,8
1000         rotrdi  5,22,19
1001         rotrdi  0,22,61
1002         xor     3,3,4
1003         srdi    4,25,7
1004         xor     5,5,0
1005         srdi    0,22,6
1006         add     24,24,17
1007         xor     3,3,4
1008         xor     5,5,0
1009         ld      0,64(7)
1010         add     24,24,3
1011         add     24,24,5
1012         rotrdi  3,12,14
1013         rotrdi  4,12,18
1014         and     5,6,12
1015         xor     3,3,4
1016         add     15,15,0
1017         andc    0,14,12
1018         rotrdi  4,4,23
1019         or      5,5,0
1020         add     15,15,24
1021         xor     3,3,4
1022         add     15,15,5
1023         add     15,15,3
1025         rotrdi  3,8,28
1026         rotrdi  4,8,34
1027         and     5,8,9
1028         and     0,8,10
1029         xor     3,3,4
1030         rotrdi  4,4,5
1031         xor     5,5,0
1032         and     0,9,10
1033         xor     3,3,4
1034         add     11,11,15
1035         xor     5,5,0
1036         add     15,15,3
1037         add     15,15,5
1039         rotrdi  3,26,1
1040         rotrdi  4,26,8
1041         rotrdi  5,23,19
1042         rotrdi  0,23,61
1043         xor     3,3,4
1044         srdi    4,26,7
1045         xor     5,5,0
1046         srdi    0,23,6
1047         add     25,25,18
1048         xor     3,3,4
1049         xor     5,5,0
1050         ld      0,72(7)
1051         add     25,25,3
1052         add     25,25,5
1053         rotrdi  3,11,14
1054         rotrdi  4,11,18
1055         and     5,12,11
1056         xor     3,3,4
1057         add     14,14,0
1058         andc    0,6,11
1059         rotrdi  4,4,23
1060         or      5,5,0
1061         add     14,14,25
1062         xor     3,3,4
1063         add     14,14,5
1064         add     14,14,3
1066         rotrdi  3,15,28
1067         rotrdi  4,15,34
1068         and     5,15,8
1069         and     0,15,9
1070         xor     3,3,4
1071         rotrdi  4,4,5
1072         xor     5,5,0
1073         and     0,8,9
1074         xor     3,3,4
1075         add     10,10,14
1076         xor     5,5,0
1077         add     14,14,3
1078         add     14,14,5
1080         rotrdi  3,27,1
1081         rotrdi  4,27,8
1082         rotrdi  5,24,19
1083         rotrdi  0,24,61
1084         xor     3,3,4
1085         srdi    4,27,7
1086         xor     5,5,0
1087         srdi    0,24,6
1088         add     26,26,19
1089         xor     3,3,4
1090         xor     5,5,0
1091         ld      0,80(7)
1092         add     26,26,3
1093         add     26,26,5
1094         rotrdi  3,10,14
1095         rotrdi  4,10,18
1096         and     5,11,10
1097         xor     3,3,4
1098         add     6,6,0
1099         andc    0,12,10
1100         rotrdi  4,4,23
1101         or      5,5,0
1102         add     6,6,26
1103         xor     3,3,4
1104         add     6,6,5
1105         add     6,6,3
1107         rotrdi  3,14,28
1108         rotrdi  4,14,34
1109         and     5,14,15
1110         and     0,14,8
1111         xor     3,3,4
1112         rotrdi  4,4,5
1113         xor     5,5,0
1114         and     0,15,8
1115         xor     3,3,4
1116         add     9,9,6
1117         xor     5,5,0
1118         add     6,6,3
1119         add     6,6,5
1121         rotrdi  3,28,1
1122         rotrdi  4,28,8
1123         rotrdi  5,25,19
1124         rotrdi  0,25,61
1125         xor     3,3,4
1126         srdi    4,28,7
1127         xor     5,5,0
1128         srdi    0,25,6
1129         add     27,27,20
1130         xor     3,3,4
1131         xor     5,5,0
1132         ld      0,88(7)
1133         add     27,27,3
1134         add     27,27,5
1135         rotrdi  3,9,14
1136         rotrdi  4,9,18
1137         and     5,10,9
1138         xor     3,3,4
1139         add     12,12,0
1140         andc    0,11,9
1141         rotrdi  4,4,23
1142         or      5,5,0
1143         add     12,12,27
1144         xor     3,3,4
1145         add     12,12,5
1146         add     12,12,3
1148         rotrdi  3,6,28
1149         rotrdi  4,6,34
1150         and     5,6,14
1151         and     0,6,15
1152         xor     3,3,4
1153         rotrdi  4,4,5
1154         xor     5,5,0
1155         and     0,14,15
1156         xor     3,3,4
1157         add     8,8,12
1158         xor     5,5,0
1159         add     12,12,3
1160         add     12,12,5
1162         rotrdi  3,29,1
1163         rotrdi  4,29,8
1164         rotrdi  5,26,19
1165         rotrdi  0,26,61
1166         xor     3,3,4
1167         srdi    4,29,7
1168         xor     5,5,0
1169         srdi    0,26,6
1170         add     28,28,21
1171         xor     3,3,4
1172         xor     5,5,0
1173         ld      0,96(7)
1174         add     28,28,3
1175         add     28,28,5
1176         rotrdi  3,8,14
1177         rotrdi  4,8,18
1178         and     5,9,8
1179         xor     3,3,4
1180         add     11,11,0
1181         andc    0,10,8
1182         rotrdi  4,4,23
1183         or      5,5,0
1184         add     11,11,28
1185         xor     3,3,4
1186         add     11,11,5
1187         add     11,11,3
1189         rotrdi  3,12,28
1190         rotrdi  4,12,34
1191         and     5,12,6
1192         and     0,12,14
1193         xor     3,3,4
1194         rotrdi  4,4,5
1195         xor     5,5,0
1196         and     0,6,14
1197         xor     3,3,4
1198         add     15,15,11
1199         xor     5,5,0
1200         add     11,11,3
1201         add     11,11,5
1203         rotrdi  3,30,1
1204         rotrdi  4,30,8
1205         rotrdi  5,27,19
1206         rotrdi  0,27,61
1207         xor     3,3,4
1208         srdi    4,30,7
1209         xor     5,5,0
1210         srdi    0,27,6
1211         add     29,29,22
1212         xor     3,3,4
1213         xor     5,5,0
1214         ld      0,104(7)
1215         add     29,29,3
1216         add     29,29,5
1217         rotrdi  3,15,14
1218         rotrdi  4,15,18
1219         and     5,8,15
1220         xor     3,3,4
1221         add     10,10,0
1222         andc    0,9,15
1223         rotrdi  4,4,23
1224         or      5,5,0
1225         add     10,10,29
1226         xor     3,3,4
1227         add     10,10,5
1228         add     10,10,3
1230         rotrdi  3,11,28
1231         rotrdi  4,11,34
1232         and     5,11,12
1233         and     0,11,6
1234         xor     3,3,4
1235         rotrdi  4,4,5
1236         xor     5,5,0
1237         and     0,12,6
1238         xor     3,3,4
1239         add     14,14,10
1240         xor     5,5,0
1241         add     10,10,3
1242         add     10,10,5
1244         rotrdi  3,31,1
1245         rotrdi  4,31,8
1246         rotrdi  5,28,19
1247         rotrdi  0,28,61
1248         xor     3,3,4
1249         srdi    4,31,7
1250         xor     5,5,0
1251         srdi    0,28,6
1252         add     30,30,23
1253         xor     3,3,4
1254         xor     5,5,0
1255         ld      0,112(7)
1256         add     30,30,3
1257         add     30,30,5
1258         rotrdi  3,14,14
1259         rotrdi  4,14,18
1260         and     5,15,14
1261         xor     3,3,4
1262         add     9,9,0
1263         andc    0,8,14
1264         rotrdi  4,4,23
1265         or      5,5,0
1266         add     9,9,30
1267         xor     3,3,4
1268         add     9,9,5
1269         add     9,9,3
1271         rotrdi  3,10,28
1272         rotrdi  4,10,34
1273         and     5,10,11
1274         and     0,10,12
1275         xor     3,3,4
1276         rotrdi  4,4,5
1277         xor     5,5,0
1278         and     0,11,12
1279         xor     3,3,4
1280         add     6,6,9
1281         xor     5,5,0
1282         add     9,9,3
1283         add     9,9,5
1285         rotrdi  3,16,1
1286         rotrdi  4,16,8
1287         rotrdi  5,29,19
1288         rotrdi  0,29,61
1289         xor     3,3,4
1290         srdi    4,16,7
1291         xor     5,5,0
1292         srdi    0,29,6
1293         add     31,31,24
1294         xor     3,3,4
1295         xor     5,5,0
1296         ld      0,120(7)
1297         add     31,31,3
1298         add     31,31,5
1299         rotrdi  3,6,14
1300         rotrdi  4,6,18
1301         and     5,14,6
1302         xor     3,3,4
1303         add     8,8,0
1304         andc    0,15,6
1305         rotrdi  4,4,23
1306         or      5,5,0
1307         add     8,8,31
1308         xor     3,3,4
1309         add     8,8,5
1310         add     8,8,3
1312         rotrdi  3,9,28
1313         rotrdi  4,9,34
1314         and     5,9,10
1315         and     0,9,11
1316         xor     3,3,4
1317         rotrdi  4,4,5
1318         xor     5,5,0
1319         and     0,10,11
1320         xor     3,3,4
1321         add     12,12,8
1322         xor     5,5,0
1323         add     8,8,3
1324         add     8,8,5
1326         bdnz    .Lrounds
1328         ld      3,208(1)
1329         ld      31,200(1)
1330         ld      5,192(1)
1331         subi    7,7,512
1333         ld      16,0(3)
1334         ld      17,8(3)
1335         ld      18,16(3)
1336         ld      19,24(3)
1337         ld      20,32(3)
1338         ld      21,40(3)
1339         ld      22,48(3)
1340         addi    31,31,128
1341         ld      23,56(3)
1342         add     8,8,16
1343         add     9,9,17
1344         std     31,200(1)
1345         add     10,10,18
1346         std     8,0(3)
1347         add     11,11,19
1348         std     9,8(3)
1349         add     12,12,20
1350         std     10,16(3)
1351         add     6,6,21
1352         std     11,24(3)
1353         add     14,14,22
1354         std     12,32(3)
1355         add     15,15,23
1356         std     6,40(3)
1357         std     14,48(3)
1358         cmpld   31,5
1359         std     15,56(3)
1360         bne     .Lsha2_block_private
1361         blr     
1362 .long   0
1363 .byte   0,12,0x14,0,0,0,0,0
1364 #if (!defined(_CALL_ELF) || _CALL_ELF == 1)
1365 .size   .zfs_sha512_ppc,.-.zfs_sha512_ppc
1366 .size   zfs_sha512_ppc,.-.zfs_sha512_ppc
1367 #else
1368 .size   zfs_sha512_ppc,.-zfs_sha512_ppc
1369 #endif
1370 .align  6
1371 .LPICmeup:
1372         mflr    0
1373         bcl     20,31,$+4
1374         mflr    7
1375         addi    7,7,56
1376         mtlr    0
1377         blr     
1378 .long   0
1379 .byte   0,12,0x14,0,0,0,0,0
1380 .space  28
1381 .long   0x428a2f98,0xd728ae22
1382 .long   0x71374491,0x23ef65cd
1383 .long   0xb5c0fbcf,0xec4d3b2f
1384 .long   0xe9b5dba5,0x8189dbbc
1385 .long   0x3956c25b,0xf348b538
1386 .long   0x59f111f1,0xb605d019
1387 .long   0x923f82a4,0xaf194f9b
1388 .long   0xab1c5ed5,0xda6d8118
1389 .long   0xd807aa98,0xa3030242
1390 .long   0x12835b01,0x45706fbe
1391 .long   0x243185be,0x4ee4b28c
1392 .long   0x550c7dc3,0xd5ffb4e2
1393 .long   0x72be5d74,0xf27b896f
1394 .long   0x80deb1fe,0x3b1696b1
1395 .long   0x9bdc06a7,0x25c71235
1396 .long   0xc19bf174,0xcf692694
1397 .long   0xe49b69c1,0x9ef14ad2
1398 .long   0xefbe4786,0x384f25e3
1399 .long   0x0fc19dc6,0x8b8cd5b5
1400 .long   0x240ca1cc,0x77ac9c65
1401 .long   0x2de92c6f,0x592b0275
1402 .long   0x4a7484aa,0x6ea6e483
1403 .long   0x5cb0a9dc,0xbd41fbd4
1404 .long   0x76f988da,0x831153b5
1405 .long   0x983e5152,0xee66dfab
1406 .long   0xa831c66d,0x2db43210
1407 .long   0xb00327c8,0x98fb213f
1408 .long   0xbf597fc7,0xbeef0ee4
1409 .long   0xc6e00bf3,0x3da88fc2
1410 .long   0xd5a79147,0x930aa725
1411 .long   0x06ca6351,0xe003826f
1412 .long   0x14292967,0x0a0e6e70
1413 .long   0x27b70a85,0x46d22ffc
1414 .long   0x2e1b2138,0x5c26c926
1415 .long   0x4d2c6dfc,0x5ac42aed
1416 .long   0x53380d13,0x9d95b3df
1417 .long   0x650a7354,0x8baf63de
1418 .long   0x766a0abb,0x3c77b2a8
1419 .long   0x81c2c92e,0x47edaee6
1420 .long   0x92722c85,0x1482353b
1421 .long   0xa2bfe8a1,0x4cf10364
1422 .long   0xa81a664b,0xbc423001
1423 .long   0xc24b8b70,0xd0f89791
1424 .long   0xc76c51a3,0x0654be30
1425 .long   0xd192e819,0xd6ef5218
1426 .long   0xd6990624,0x5565a910
1427 .long   0xf40e3585,0x5771202a
1428 .long   0x106aa070,0x32bbd1b8
1429 .long   0x19a4c116,0xb8d2d0c8
1430 .long   0x1e376c08,0x5141ab53
1431 .long   0x2748774c,0xdf8eeb99
1432 .long   0x34b0bcb5,0xe19b48a8
1433 .long   0x391c0cb3,0xc5c95a63
1434 .long   0x4ed8aa4a,0xe3418acb
1435 .long   0x5b9cca4f,0x7763e373
1436 .long   0x682e6ff3,0xd6b2b8a3
1437 .long   0x748f82ee,0x5defb2fc
1438 .long   0x78a5636f,0x43172f60
1439 .long   0x84c87814,0xa1f0ab72
1440 .long   0x8cc70208,0x1a6439ec
1441 .long   0x90befffa,0x23631e28
1442 .long   0xa4506ceb,0xde82bde9
1443 .long   0xbef9a3f7,0xb2c67915
1444 .long   0xc67178f2,0xe372532b
1445 .long   0xca273ece,0xea26619c
1446 .long   0xd186b8c7,0x21c0c207
1447 .long   0xeada7dd6,0xcde0eb1e
1448 .long   0xf57d4f7f,0xee6ed178
1449 .long   0x06f067aa,0x72176fba
1450 .long   0x0a637dc5,0xa2c898a6
1451 .long   0x113f9804,0xbef90dae
1452 .long   0x1b710b35,0x131c471b
1453 .long   0x28db77f5,0x23047d84
1454 .long   0x32caab7b,0x40c72493
1455 .long   0x3c9ebe0a,0x15c9bebc
1456 .long   0x431d67c4,0x9c100d4c
1457 .long   0x4cc5d4be,0xcb3e42b6
1458 .long   0x597f299c,0xfc657e2a
1459 .long   0x5fcb6fab,0x3ad6faec
1460 .long   0x6c44198c,0x4a475817
1462 #elif (defined(__PPC64__) && defined(__LITTLE_ENDIAN__))
1464 .abiversion     2
1465 .text
1467 .globl  zfs_sha512_ppc
1468 .type   zfs_sha512_ppc,@function
1469 .align  6
1470 zfs_sha512_ppc:
1471 .localentry     zfs_sha512_ppc,0
1473         stdu    1,-384(1)
1474         mflr    0
1475         sldi    5,5,7
1477         std     3,208(1)
1479         std     14,240(1)
1480         std     15,248(1)
1481         std     16,256(1)
1482         std     17,264(1)
1483         std     18,272(1)
1484         std     19,280(1)
1485         std     20,288(1)
1486         std     21,296(1)
1487         std     22,304(1)
1488         std     23,312(1)
1489         std     24,320(1)
1490         std     25,328(1)
1491         std     26,336(1)
1492         std     27,344(1)
1493         std     28,352(1)
1494         std     29,360(1)
1495         std     30,368(1)
1496         std     31,376(1)
1497         std     0,400(1)
1498         ld      8,0(3)
1499         mr      31,4
1500         ld      9,8(3)
1501         ld      10,16(3)
1502         ld      11,24(3)
1503         ld      12,32(3)
1504         ld      6,40(3)
1505         ld      14,48(3)
1506         ld      15,56(3)
1507         bl      .LPICmeup
1508 .LPICedup:
1509         andi.   0,31,3
1510         bne     .Lunaligned
1511 .Laligned:
1512         add     5,31,5
1513         std     5,192(1)
1514         std     31,200(1)
1515         bl      .Lsha2_block_private
1516         b       .Ldone
1518 .align  4
1519 .Lunaligned:
1520         subfic  0,31,4096
1521         andi.   0,0,3968
1522         beq     .Lcross_page
1523         cmpld   5,0
1524         ble     .Laligned
1525         subfc   5,0,5
1526         add     0,31,0
1527         std     5,184(1)
1528         std     0,192(1)
1529         std     31,200(1)
1530         bl      .Lsha2_block_private
1532         ld      5,184(1)
1533 .Lcross_page:
1534         li      0,32
1535         mtctr   0
1536         addi    20,1,48
1537 .Lmemcpy:
1538         lbz     16,0(31)
1539         lbz     17,1(31)
1540         lbz     18,2(31)
1541         lbz     19,3(31)
1542         addi    31,31,4
1543         stb     16,0(20)
1544         stb     17,1(20)
1545         stb     18,2(20)
1546         stb     19,3(20)
1547         addi    20,20,4
1548         bdnz    .Lmemcpy
1549         std     31,176(1)
1550         addi    0,1,176
1551         addi    31,1,48
1552         std     5,184(1)
1553         std     0,192(1)
1554         std     31,200(1)
1555         bl      .Lsha2_block_private
1556         ld      31,176(1)
1557         ld      5,184(1)
1558         addic.  5,5,-128
1559         bne     .Lunaligned
1561 .Ldone:
1562         ld      0,400(1)
1563         ld      14,240(1)
1564         ld      15,248(1)
1565         ld      16,256(1)
1566         ld      17,264(1)
1567         ld      18,272(1)
1568         ld      19,280(1)
1569         ld      20,288(1)
1570         ld      21,296(1)
1571         ld      22,304(1)
1572         ld      23,312(1)
1573         ld      24,320(1)
1574         ld      25,328(1)
1575         ld      26,336(1)
1576         ld      27,344(1)
1577         ld      28,352(1)
1578         ld      29,360(1)
1579         ld      30,368(1)
1580         ld      31,376(1)
1581         mtlr    0
1582         addi    1,1,384
1583         blr     
1584 .long   0
1585 .byte   0,12,4,1,0x80,18,3,0
1586 .long   0
1587 .align  4
1588 .Lsha2_block_private:
1589         ld      0,0(7)
1590         lwz     3,0(31)
1591         lwz     4,4(31)
1592         rotlwi  5,3,8
1593         rotlwi  16,4,8
1594         rlwimi  5,3,24,0,7
1595         rlwimi  16,4,24,0,7
1596         rlwimi  5,3,24,16,23
1597         rlwimi  16,4,24,16,23
1598         insrdi  16,5,32,0
1599         rotrdi  3,12,14
1600         rotrdi  4,12,18
1601         and     5,6,12
1602         xor     3,3,4
1603         add     15,15,0
1604         andc    0,14,12
1605         rotrdi  4,4,23
1606         or      5,5,0
1607         add     15,15,16
1608         xor     3,3,4
1609         add     15,15,5
1610         add     15,15,3
1612         rotrdi  3,8,28
1613         rotrdi  4,8,34
1614         and     5,8,9
1615         and     0,8,10
1616         xor     3,3,4
1617         rotrdi  4,4,5
1618         xor     5,5,0
1619         and     0,9,10
1620         xor     3,3,4
1621         add     11,11,15
1622         xor     5,5,0
1623         ld      0,8(7)
1624         add     15,15,3
1625         add     15,15,5
1627         lwz     3,8(31)
1628         lwz     4,12(31)
1629         rotlwi  5,3,8
1630         rotlwi  17,4,8
1631         rlwimi  5,3,24,0,7
1632         rlwimi  17,4,24,0,7
1633         rlwimi  5,3,24,16,23
1634         rlwimi  17,4,24,16,23
1635         insrdi  17,5,32,0
1636         rotrdi  3,11,14
1637         rotrdi  4,11,18
1638         and     5,12,11
1639         xor     3,3,4
1640         add     14,14,0
1641         andc    0,6,11
1642         rotrdi  4,4,23
1643         or      5,5,0
1644         add     14,14,17
1645         xor     3,3,4
1646         add     14,14,5
1647         add     14,14,3
1649         rotrdi  3,15,28
1650         rotrdi  4,15,34
1651         and     5,15,8
1652         and     0,15,9
1653         xor     3,3,4
1654         rotrdi  4,4,5
1655         xor     5,5,0
1656         and     0,8,9
1657         xor     3,3,4
1658         add     10,10,14
1659         xor     5,5,0
1660         ld      0,16(7)
1661         add     14,14,3
1662         add     14,14,5
1664         lwz     3,16(31)
1665         lwz     4,20(31)
1666         rotlwi  5,3,8
1667         rotlwi  18,4,8
1668         rlwimi  5,3,24,0,7
1669         rlwimi  18,4,24,0,7
1670         rlwimi  5,3,24,16,23
1671         rlwimi  18,4,24,16,23
1672         insrdi  18,5,32,0
1673         rotrdi  3,10,14
1674         rotrdi  4,10,18
1675         and     5,11,10
1676         xor     3,3,4
1677         add     6,6,0
1678         andc    0,12,10
1679         rotrdi  4,4,23
1680         or      5,5,0
1681         add     6,6,18
1682         xor     3,3,4
1683         add     6,6,5
1684         add     6,6,3
1686         rotrdi  3,14,28
1687         rotrdi  4,14,34
1688         and     5,14,15
1689         and     0,14,8
1690         xor     3,3,4
1691         rotrdi  4,4,5
1692         xor     5,5,0
1693         and     0,15,8
1694         xor     3,3,4
1695         add     9,9,6
1696         xor     5,5,0
1697         ld      0,24(7)
1698         add     6,6,3
1699         add     6,6,5
1701         lwz     3,24(31)
1702         lwz     4,28(31)
1703         rotlwi  5,3,8
1704         rotlwi  19,4,8
1705         rlwimi  5,3,24,0,7
1706         rlwimi  19,4,24,0,7
1707         rlwimi  5,3,24,16,23
1708         rlwimi  19,4,24,16,23
1709         insrdi  19,5,32,0
1710         rotrdi  3,9,14
1711         rotrdi  4,9,18
1712         and     5,10,9
1713         xor     3,3,4
1714         add     12,12,0
1715         andc    0,11,9
1716         rotrdi  4,4,23
1717         or      5,5,0
1718         add     12,12,19
1719         xor     3,3,4
1720         add     12,12,5
1721         add     12,12,3
1723         rotrdi  3,6,28
1724         rotrdi  4,6,34
1725         and     5,6,14
1726         and     0,6,15
1727         xor     3,3,4
1728         rotrdi  4,4,5
1729         xor     5,5,0
1730         and     0,14,15
1731         xor     3,3,4
1732         add     8,8,12
1733         xor     5,5,0
1734         ld      0,32(7)
1735         add     12,12,3
1736         add     12,12,5
1738         lwz     3,32(31)
1739         lwz     4,36(31)
1740         rotlwi  5,3,8
1741         rotlwi  20,4,8
1742         rlwimi  5,3,24,0,7
1743         rlwimi  20,4,24,0,7
1744         rlwimi  5,3,24,16,23
1745         rlwimi  20,4,24,16,23
1746         insrdi  20,5,32,0
1747         rotrdi  3,8,14
1748         rotrdi  4,8,18
1749         and     5,9,8
1750         xor     3,3,4
1751         add     11,11,0
1752         andc    0,10,8
1753         rotrdi  4,4,23
1754         or      5,5,0
1755         add     11,11,20
1756         xor     3,3,4
1757         add     11,11,5
1758         add     11,11,3
1760         rotrdi  3,12,28
1761         rotrdi  4,12,34
1762         and     5,12,6
1763         and     0,12,14
1764         xor     3,3,4
1765         rotrdi  4,4,5
1766         xor     5,5,0
1767         and     0,6,14
1768         xor     3,3,4
1769         add     15,15,11
1770         xor     5,5,0
1771         ld      0,40(7)
1772         add     11,11,3
1773         add     11,11,5
1775         lwz     3,40(31)
1776         lwz     4,44(31)
1777         rotlwi  5,3,8
1778         rotlwi  21,4,8
1779         rlwimi  5,3,24,0,7
1780         rlwimi  21,4,24,0,7
1781         rlwimi  5,3,24,16,23
1782         rlwimi  21,4,24,16,23
1783         insrdi  21,5,32,0
1784         rotrdi  3,15,14
1785         rotrdi  4,15,18
1786         and     5,8,15
1787         xor     3,3,4
1788         add     10,10,0
1789         andc    0,9,15
1790         rotrdi  4,4,23
1791         or      5,5,0
1792         add     10,10,21
1793         xor     3,3,4
1794         add     10,10,5
1795         add     10,10,3
1797         rotrdi  3,11,28
1798         rotrdi  4,11,34
1799         and     5,11,12
1800         and     0,11,6
1801         xor     3,3,4
1802         rotrdi  4,4,5
1803         xor     5,5,0
1804         and     0,12,6
1805         xor     3,3,4
1806         add     14,14,10
1807         xor     5,5,0
1808         ld      0,48(7)
1809         add     10,10,3
1810         add     10,10,5
1812         lwz     3,48(31)
1813         lwz     4,52(31)
1814         rotlwi  5,3,8
1815         rotlwi  22,4,8
1816         rlwimi  5,3,24,0,7
1817         rlwimi  22,4,24,0,7
1818         rlwimi  5,3,24,16,23
1819         rlwimi  22,4,24,16,23
1820         insrdi  22,5,32,0
1821         rotrdi  3,14,14
1822         rotrdi  4,14,18
1823         and     5,15,14
1824         xor     3,3,4
1825         add     9,9,0
1826         andc    0,8,14
1827         rotrdi  4,4,23
1828         or      5,5,0
1829         add     9,9,22
1830         xor     3,3,4
1831         add     9,9,5
1832         add     9,9,3
1834         rotrdi  3,10,28
1835         rotrdi  4,10,34
1836         and     5,10,11
1837         and     0,10,12
1838         xor     3,3,4
1839         rotrdi  4,4,5
1840         xor     5,5,0
1841         and     0,11,12
1842         xor     3,3,4
1843         add     6,6,9
1844         xor     5,5,0
1845         ld      0,56(7)
1846         add     9,9,3
1847         add     9,9,5
1849         lwz     3,56(31)
1850         lwz     4,60(31)
1851         rotlwi  5,3,8
1852         rotlwi  23,4,8
1853         rlwimi  5,3,24,0,7
1854         rlwimi  23,4,24,0,7
1855         rlwimi  5,3,24,16,23
1856         rlwimi  23,4,24,16,23
1857         insrdi  23,5,32,0
1858         rotrdi  3,6,14
1859         rotrdi  4,6,18
1860         and     5,14,6
1861         xor     3,3,4
1862         add     8,8,0
1863         andc    0,15,6
1864         rotrdi  4,4,23
1865         or      5,5,0
1866         add     8,8,23
1867         xor     3,3,4
1868         add     8,8,5
1869         add     8,8,3
1871         rotrdi  3,9,28
1872         rotrdi  4,9,34
1873         and     5,9,10
1874         and     0,9,11
1875         xor     3,3,4
1876         rotrdi  4,4,5
1877         xor     5,5,0
1878         and     0,10,11
1879         xor     3,3,4
1880         add     12,12,8
1881         xor     5,5,0
1882         ld      0,64(7)
1883         add     8,8,3
1884         add     8,8,5
1886         lwz     3,64(31)
1887         lwz     4,68(31)
1888         rotlwi  5,3,8
1889         rotlwi  24,4,8
1890         rlwimi  5,3,24,0,7
1891         rlwimi  24,4,24,0,7
1892         rlwimi  5,3,24,16,23
1893         rlwimi  24,4,24,16,23
1894         insrdi  24,5,32,0
1895         rotrdi  3,12,14
1896         rotrdi  4,12,18
1897         and     5,6,12
1898         xor     3,3,4
1899         add     15,15,0
1900         andc    0,14,12
1901         rotrdi  4,4,23
1902         or      5,5,0
1903         add     15,15,24
1904         xor     3,3,4
1905         add     15,15,5
1906         add     15,15,3
1908         rotrdi  3,8,28
1909         rotrdi  4,8,34
1910         and     5,8,9
1911         and     0,8,10
1912         xor     3,3,4
1913         rotrdi  4,4,5
1914         xor     5,5,0
1915         and     0,9,10
1916         xor     3,3,4
1917         add     11,11,15
1918         xor     5,5,0
1919         ld      0,72(7)
1920         add     15,15,3
1921         add     15,15,5
1923         lwz     3,72(31)
1924         lwz     4,76(31)
1925         rotlwi  5,3,8
1926         rotlwi  25,4,8
1927         rlwimi  5,3,24,0,7
1928         rlwimi  25,4,24,0,7
1929         rlwimi  5,3,24,16,23
1930         rlwimi  25,4,24,16,23
1931         insrdi  25,5,32,0
1932         rotrdi  3,11,14
1933         rotrdi  4,11,18
1934         and     5,12,11
1935         xor     3,3,4
1936         add     14,14,0
1937         andc    0,6,11
1938         rotrdi  4,4,23
1939         or      5,5,0
1940         add     14,14,25
1941         xor     3,3,4
1942         add     14,14,5
1943         add     14,14,3
1945         rotrdi  3,15,28
1946         rotrdi  4,15,34
1947         and     5,15,8
1948         and     0,15,9
1949         xor     3,3,4
1950         rotrdi  4,4,5
1951         xor     5,5,0
1952         and     0,8,9
1953         xor     3,3,4
1954         add     10,10,14
1955         xor     5,5,0
1956         ld      0,80(7)
1957         add     14,14,3
1958         add     14,14,5
1960         lwz     3,80(31)
1961         lwz     4,84(31)
1962         rotlwi  5,3,8
1963         rotlwi  26,4,8
1964         rlwimi  5,3,24,0,7
1965         rlwimi  26,4,24,0,7
1966         rlwimi  5,3,24,16,23
1967         rlwimi  26,4,24,16,23
1968         insrdi  26,5,32,0
1969         rotrdi  3,10,14
1970         rotrdi  4,10,18
1971         and     5,11,10
1972         xor     3,3,4
1973         add     6,6,0
1974         andc    0,12,10
1975         rotrdi  4,4,23
1976         or      5,5,0
1977         add     6,6,26
1978         xor     3,3,4
1979         add     6,6,5
1980         add     6,6,3
1982         rotrdi  3,14,28
1983         rotrdi  4,14,34
1984         and     5,14,15
1985         and     0,14,8
1986         xor     3,3,4
1987         rotrdi  4,4,5
1988         xor     5,5,0
1989         and     0,15,8
1990         xor     3,3,4
1991         add     9,9,6
1992         xor     5,5,0
1993         ld      0,88(7)
1994         add     6,6,3
1995         add     6,6,5
1997         lwz     3,88(31)
1998         lwz     4,92(31)
1999         rotlwi  5,3,8
2000         rotlwi  27,4,8
2001         rlwimi  5,3,24,0,7
2002         rlwimi  27,4,24,0,7
2003         rlwimi  5,3,24,16,23
2004         rlwimi  27,4,24,16,23
2005         insrdi  27,5,32,0
2006         rotrdi  3,9,14
2007         rotrdi  4,9,18
2008         and     5,10,9
2009         xor     3,3,4
2010         add     12,12,0
2011         andc    0,11,9
2012         rotrdi  4,4,23
2013         or      5,5,0
2014         add     12,12,27
2015         xor     3,3,4
2016         add     12,12,5
2017         add     12,12,3
2019         rotrdi  3,6,28
2020         rotrdi  4,6,34
2021         and     5,6,14
2022         and     0,6,15
2023         xor     3,3,4
2024         rotrdi  4,4,5
2025         xor     5,5,0
2026         and     0,14,15
2027         xor     3,3,4
2028         add     8,8,12
2029         xor     5,5,0
2030         ld      0,96(7)
2031         add     12,12,3
2032         add     12,12,5
2034         lwz     3,96(31)
2035         lwz     4,100(31)
2036         rotlwi  5,3,8
2037         rotlwi  28,4,8
2038         rlwimi  5,3,24,0,7
2039         rlwimi  28,4,24,0,7
2040         rlwimi  5,3,24,16,23
2041         rlwimi  28,4,24,16,23
2042         insrdi  28,5,32,0
2043         rotrdi  3,8,14
2044         rotrdi  4,8,18
2045         and     5,9,8
2046         xor     3,3,4
2047         add     11,11,0
2048         andc    0,10,8
2049         rotrdi  4,4,23
2050         or      5,5,0
2051         add     11,11,28
2052         xor     3,3,4
2053         add     11,11,5
2054         add     11,11,3
2056         rotrdi  3,12,28
2057         rotrdi  4,12,34
2058         and     5,12,6
2059         and     0,12,14
2060         xor     3,3,4
2061         rotrdi  4,4,5
2062         xor     5,5,0
2063         and     0,6,14
2064         xor     3,3,4
2065         add     15,15,11
2066         xor     5,5,0
2067         ld      0,104(7)
2068         add     11,11,3
2069         add     11,11,5
2071         lwz     3,104(31)
2072         lwz     4,108(31)
2073         rotlwi  5,3,8
2074         rotlwi  29,4,8
2075         rlwimi  5,3,24,0,7
2076         rlwimi  29,4,24,0,7
2077         rlwimi  5,3,24,16,23
2078         rlwimi  29,4,24,16,23
2079         insrdi  29,5,32,0
2080         rotrdi  3,15,14
2081         rotrdi  4,15,18
2082         and     5,8,15
2083         xor     3,3,4
2084         add     10,10,0
2085         andc    0,9,15
2086         rotrdi  4,4,23
2087         or      5,5,0
2088         add     10,10,29
2089         xor     3,3,4
2090         add     10,10,5
2091         add     10,10,3
2093         rotrdi  3,11,28
2094         rotrdi  4,11,34
2095         and     5,11,12
2096         and     0,11,6
2097         xor     3,3,4
2098         rotrdi  4,4,5
2099         xor     5,5,0
2100         and     0,12,6
2101         xor     3,3,4
2102         add     14,14,10
2103         xor     5,5,0
2104         ld      0,112(7)
2105         add     10,10,3
2106         add     10,10,5
2108         lwz     3,112(31)
2109         lwz     4,116(31)
2110         rotlwi  5,3,8
2111         rotlwi  30,4,8
2112         rlwimi  5,3,24,0,7
2113         rlwimi  30,4,24,0,7
2114         rlwimi  5,3,24,16,23
2115         rlwimi  30,4,24,16,23
2116         insrdi  30,5,32,0
2117         rotrdi  3,14,14
2118         rotrdi  4,14,18
2119         and     5,15,14
2120         xor     3,3,4
2121         add     9,9,0
2122         andc    0,8,14
2123         rotrdi  4,4,23
2124         or      5,5,0
2125         add     9,9,30
2126         xor     3,3,4
2127         add     9,9,5
2128         add     9,9,3
2130         rotrdi  3,10,28
2131         rotrdi  4,10,34
2132         and     5,10,11
2133         and     0,10,12
2134         xor     3,3,4
2135         rotrdi  4,4,5
2136         xor     5,5,0
2137         and     0,11,12
2138         xor     3,3,4
2139         add     6,6,9
2140         xor     5,5,0
2141         ld      0,120(7)
2142         add     9,9,3
2143         add     9,9,5
2145         lwz     3,120(31)
2146         lwz     4,124(31)
2147         rotlwi  5,3,8
2148         rotlwi  31,4,8
2149         rlwimi  5,3,24,0,7
2150         rlwimi  31,4,24,0,7
2151         rlwimi  5,3,24,16,23
2152         rlwimi  31,4,24,16,23
2153         insrdi  31,5,32,0
2154         rotrdi  3,6,14
2155         rotrdi  4,6,18
2156         and     5,14,6
2157         xor     3,3,4
2158         add     8,8,0
2159         andc    0,15,6
2160         rotrdi  4,4,23
2161         or      5,5,0
2162         add     8,8,31
2163         xor     3,3,4
2164         add     8,8,5
2165         add     8,8,3
2167         rotrdi  3,9,28
2168         rotrdi  4,9,34
2169         and     5,9,10
2170         and     0,9,11
2171         xor     3,3,4
2172         rotrdi  4,4,5
2173         xor     5,5,0
2174         and     0,10,11
2175         xor     3,3,4
2176         add     12,12,8
2177         xor     5,5,0
2178         add     8,8,3
2179         add     8,8,5
2181         li      5,4
2182         mtctr   5
2183 .align  4
2184 .Lrounds:
2185         addi    7,7,128
2186         rotrdi  3,17,1
2187         rotrdi  4,17,8
2188         rotrdi  5,30,19
2189         rotrdi  0,30,61
2190         xor     3,3,4
2191         srdi    4,17,7
2192         xor     5,5,0
2193         srdi    0,30,6
2194         add     16,16,25
2195         xor     3,3,4
2196         xor     5,5,0
2197         ld      0,0(7)
2198         add     16,16,3
2199         add     16,16,5
2200         rotrdi  3,12,14
2201         rotrdi  4,12,18
2202         and     5,6,12
2203         xor     3,3,4
2204         add     15,15,0
2205         andc    0,14,12
2206         rotrdi  4,4,23
2207         or      5,5,0
2208         add     15,15,16
2209         xor     3,3,4
2210         add     15,15,5
2211         add     15,15,3
2213         rotrdi  3,8,28
2214         rotrdi  4,8,34
2215         and     5,8,9
2216         and     0,8,10
2217         xor     3,3,4
2218         rotrdi  4,4,5
2219         xor     5,5,0
2220         and     0,9,10
2221         xor     3,3,4
2222         add     11,11,15
2223         xor     5,5,0
2224         add     15,15,3
2225         add     15,15,5
2227         rotrdi  3,18,1
2228         rotrdi  4,18,8
2229         rotrdi  5,31,19
2230         rotrdi  0,31,61
2231         xor     3,3,4
2232         srdi    4,18,7
2233         xor     5,5,0
2234         srdi    0,31,6
2235         add     17,17,26
2236         xor     3,3,4
2237         xor     5,5,0
2238         ld      0,8(7)
2239         add     17,17,3
2240         add     17,17,5
2241         rotrdi  3,11,14
2242         rotrdi  4,11,18
2243         and     5,12,11
2244         xor     3,3,4
2245         add     14,14,0
2246         andc    0,6,11
2247         rotrdi  4,4,23
2248         or      5,5,0
2249         add     14,14,17
2250         xor     3,3,4
2251         add     14,14,5
2252         add     14,14,3
2254         rotrdi  3,15,28
2255         rotrdi  4,15,34
2256         and     5,15,8
2257         and     0,15,9
2258         xor     3,3,4
2259         rotrdi  4,4,5
2260         xor     5,5,0
2261         and     0,8,9
2262         xor     3,3,4
2263         add     10,10,14
2264         xor     5,5,0
2265         add     14,14,3
2266         add     14,14,5
2268         rotrdi  3,19,1
2269         rotrdi  4,19,8
2270         rotrdi  5,16,19
2271         rotrdi  0,16,61
2272         xor     3,3,4
2273         srdi    4,19,7
2274         xor     5,5,0
2275         srdi    0,16,6
2276         add     18,18,27
2277         xor     3,3,4
2278         xor     5,5,0
2279         ld      0,16(7)
2280         add     18,18,3
2281         add     18,18,5
2282         rotrdi  3,10,14
2283         rotrdi  4,10,18
2284         and     5,11,10
2285         xor     3,3,4
2286         add     6,6,0
2287         andc    0,12,10
2288         rotrdi  4,4,23
2289         or      5,5,0
2290         add     6,6,18
2291         xor     3,3,4
2292         add     6,6,5
2293         add     6,6,3
2295         rotrdi  3,14,28
2296         rotrdi  4,14,34
2297         and     5,14,15
2298         and     0,14,8
2299         xor     3,3,4
2300         rotrdi  4,4,5
2301         xor     5,5,0
2302         and     0,15,8
2303         xor     3,3,4
2304         add     9,9,6
2305         xor     5,5,0
2306         add     6,6,3
2307         add     6,6,5
2309         rotrdi  3,20,1
2310         rotrdi  4,20,8
2311         rotrdi  5,17,19
2312         rotrdi  0,17,61
2313         xor     3,3,4
2314         srdi    4,20,7
2315         xor     5,5,0
2316         srdi    0,17,6
2317         add     19,19,28
2318         xor     3,3,4
2319         xor     5,5,0
2320         ld      0,24(7)
2321         add     19,19,3
2322         add     19,19,5
2323         rotrdi  3,9,14
2324         rotrdi  4,9,18
2325         and     5,10,9
2326         xor     3,3,4
2327         add     12,12,0
2328         andc    0,11,9
2329         rotrdi  4,4,23
2330         or      5,5,0
2331         add     12,12,19
2332         xor     3,3,4
2333         add     12,12,5
2334         add     12,12,3
2336         rotrdi  3,6,28
2337         rotrdi  4,6,34
2338         and     5,6,14
2339         and     0,6,15
2340         xor     3,3,4
2341         rotrdi  4,4,5
2342         xor     5,5,0
2343         and     0,14,15
2344         xor     3,3,4
2345         add     8,8,12
2346         xor     5,5,0
2347         add     12,12,3
2348         add     12,12,5
2350         rotrdi  3,21,1
2351         rotrdi  4,21,8
2352         rotrdi  5,18,19
2353         rotrdi  0,18,61
2354         xor     3,3,4
2355         srdi    4,21,7
2356         xor     5,5,0
2357         srdi    0,18,6
2358         add     20,20,29
2359         xor     3,3,4
2360         xor     5,5,0
2361         ld      0,32(7)
2362         add     20,20,3
2363         add     20,20,5
2364         rotrdi  3,8,14
2365         rotrdi  4,8,18
2366         and     5,9,8
2367         xor     3,3,4
2368         add     11,11,0
2369         andc    0,10,8
2370         rotrdi  4,4,23
2371         or      5,5,0
2372         add     11,11,20
2373         xor     3,3,4
2374         add     11,11,5
2375         add     11,11,3
2377         rotrdi  3,12,28
2378         rotrdi  4,12,34
2379         and     5,12,6
2380         and     0,12,14
2381         xor     3,3,4
2382         rotrdi  4,4,5
2383         xor     5,5,0
2384         and     0,6,14
2385         xor     3,3,4
2386         add     15,15,11
2387         xor     5,5,0
2388         add     11,11,3
2389         add     11,11,5
2391         rotrdi  3,22,1
2392         rotrdi  4,22,8
2393         rotrdi  5,19,19
2394         rotrdi  0,19,61
2395         xor     3,3,4
2396         srdi    4,22,7
2397         xor     5,5,0
2398         srdi    0,19,6
2399         add     21,21,30
2400         xor     3,3,4
2401         xor     5,5,0
2402         ld      0,40(7)
2403         add     21,21,3
2404         add     21,21,5
2405         rotrdi  3,15,14
2406         rotrdi  4,15,18
2407         and     5,8,15
2408         xor     3,3,4
2409         add     10,10,0
2410         andc    0,9,15
2411         rotrdi  4,4,23
2412         or      5,5,0
2413         add     10,10,21
2414         xor     3,3,4
2415         add     10,10,5
2416         add     10,10,3
2418         rotrdi  3,11,28
2419         rotrdi  4,11,34
2420         and     5,11,12
2421         and     0,11,6
2422         xor     3,3,4
2423         rotrdi  4,4,5
2424         xor     5,5,0
2425         and     0,12,6
2426         xor     3,3,4
2427         add     14,14,10
2428         xor     5,5,0
2429         add     10,10,3
2430         add     10,10,5
2432         rotrdi  3,23,1
2433         rotrdi  4,23,8
2434         rotrdi  5,20,19
2435         rotrdi  0,20,61
2436         xor     3,3,4
2437         srdi    4,23,7
2438         xor     5,5,0
2439         srdi    0,20,6
2440         add     22,22,31
2441         xor     3,3,4
2442         xor     5,5,0
2443         ld      0,48(7)
2444         add     22,22,3
2445         add     22,22,5
2446         rotrdi  3,14,14
2447         rotrdi  4,14,18
2448         and     5,15,14
2449         xor     3,3,4
2450         add     9,9,0
2451         andc    0,8,14
2452         rotrdi  4,4,23
2453         or      5,5,0
2454         add     9,9,22
2455         xor     3,3,4
2456         add     9,9,5
2457         add     9,9,3
2459         rotrdi  3,10,28
2460         rotrdi  4,10,34
2461         and     5,10,11
2462         and     0,10,12
2463         xor     3,3,4
2464         rotrdi  4,4,5
2465         xor     5,5,0
2466         and     0,11,12
2467         xor     3,3,4
2468         add     6,6,9
2469         xor     5,5,0
2470         add     9,9,3
2471         add     9,9,5
2473         rotrdi  3,24,1
2474         rotrdi  4,24,8
2475         rotrdi  5,21,19
2476         rotrdi  0,21,61
2477         xor     3,3,4
2478         srdi    4,24,7
2479         xor     5,5,0
2480         srdi    0,21,6
2481         add     23,23,16
2482         xor     3,3,4
2483         xor     5,5,0
2484         ld      0,56(7)
2485         add     23,23,3
2486         add     23,23,5
2487         rotrdi  3,6,14
2488         rotrdi  4,6,18
2489         and     5,14,6
2490         xor     3,3,4
2491         add     8,8,0
2492         andc    0,15,6
2493         rotrdi  4,4,23
2494         or      5,5,0
2495         add     8,8,23
2496         xor     3,3,4
2497         add     8,8,5
2498         add     8,8,3
2500         rotrdi  3,9,28
2501         rotrdi  4,9,34
2502         and     5,9,10
2503         and     0,9,11
2504         xor     3,3,4
2505         rotrdi  4,4,5
2506         xor     5,5,0
2507         and     0,10,11
2508         xor     3,3,4
2509         add     12,12,8
2510         xor     5,5,0
2511         add     8,8,3
2512         add     8,8,5
2514         rotrdi  3,25,1
2515         rotrdi  4,25,8
2516         rotrdi  5,22,19
2517         rotrdi  0,22,61
2518         xor     3,3,4
2519         srdi    4,25,7
2520         xor     5,5,0
2521         srdi    0,22,6
2522         add     24,24,17
2523         xor     3,3,4
2524         xor     5,5,0
2525         ld      0,64(7)
2526         add     24,24,3
2527         add     24,24,5
2528         rotrdi  3,12,14
2529         rotrdi  4,12,18
2530         and     5,6,12
2531         xor     3,3,4
2532         add     15,15,0
2533         andc    0,14,12
2534         rotrdi  4,4,23
2535         or      5,5,0
2536         add     15,15,24
2537         xor     3,3,4
2538         add     15,15,5
2539         add     15,15,3
2541         rotrdi  3,8,28
2542         rotrdi  4,8,34
2543         and     5,8,9
2544         and     0,8,10
2545         xor     3,3,4
2546         rotrdi  4,4,5
2547         xor     5,5,0
2548         and     0,9,10
2549         xor     3,3,4
2550         add     11,11,15
2551         xor     5,5,0
2552         add     15,15,3
2553         add     15,15,5
2555         rotrdi  3,26,1
2556         rotrdi  4,26,8
2557         rotrdi  5,23,19
2558         rotrdi  0,23,61
2559         xor     3,3,4
2560         srdi    4,26,7
2561         xor     5,5,0
2562         srdi    0,23,6
2563         add     25,25,18
2564         xor     3,3,4
2565         xor     5,5,0
2566         ld      0,72(7)
2567         add     25,25,3
2568         add     25,25,5
2569         rotrdi  3,11,14
2570         rotrdi  4,11,18
2571         and     5,12,11
2572         xor     3,3,4
2573         add     14,14,0
2574         andc    0,6,11
2575         rotrdi  4,4,23
2576         or      5,5,0
2577         add     14,14,25
2578         xor     3,3,4
2579         add     14,14,5
2580         add     14,14,3
2582         rotrdi  3,15,28
2583         rotrdi  4,15,34
2584         and     5,15,8
2585         and     0,15,9
2586         xor     3,3,4
2587         rotrdi  4,4,5
2588         xor     5,5,0
2589         and     0,8,9
2590         xor     3,3,4
2591         add     10,10,14
2592         xor     5,5,0
2593         add     14,14,3
2594         add     14,14,5
2596         rotrdi  3,27,1
2597         rotrdi  4,27,8
2598         rotrdi  5,24,19
2599         rotrdi  0,24,61
2600         xor     3,3,4
2601         srdi    4,27,7
2602         xor     5,5,0
2603         srdi    0,24,6
2604         add     26,26,19
2605         xor     3,3,4
2606         xor     5,5,0
2607         ld      0,80(7)
2608         add     26,26,3
2609         add     26,26,5
2610         rotrdi  3,10,14
2611         rotrdi  4,10,18
2612         and     5,11,10
2613         xor     3,3,4
2614         add     6,6,0
2615         andc    0,12,10
2616         rotrdi  4,4,23
2617         or      5,5,0
2618         add     6,6,26
2619         xor     3,3,4
2620         add     6,6,5
2621         add     6,6,3
2623         rotrdi  3,14,28
2624         rotrdi  4,14,34
2625         and     5,14,15
2626         and     0,14,8
2627         xor     3,3,4
2628         rotrdi  4,4,5
2629         xor     5,5,0
2630         and     0,15,8
2631         xor     3,3,4
2632         add     9,9,6
2633         xor     5,5,0
2634         add     6,6,3
2635         add     6,6,5
2637         rotrdi  3,28,1
2638         rotrdi  4,28,8
2639         rotrdi  5,25,19
2640         rotrdi  0,25,61
2641         xor     3,3,4
2642         srdi    4,28,7
2643         xor     5,5,0
2644         srdi    0,25,6
2645         add     27,27,20
2646         xor     3,3,4
2647         xor     5,5,0
2648         ld      0,88(7)
2649         add     27,27,3
2650         add     27,27,5
2651         rotrdi  3,9,14
2652         rotrdi  4,9,18
2653         and     5,10,9
2654         xor     3,3,4
2655         add     12,12,0
2656         andc    0,11,9
2657         rotrdi  4,4,23
2658         or      5,5,0
2659         add     12,12,27
2660         xor     3,3,4
2661         add     12,12,5
2662         add     12,12,3
2664         rotrdi  3,6,28
2665         rotrdi  4,6,34
2666         and     5,6,14
2667         and     0,6,15
2668         xor     3,3,4
2669         rotrdi  4,4,5
2670         xor     5,5,0
2671         and     0,14,15
2672         xor     3,3,4
2673         add     8,8,12
2674         xor     5,5,0
2675         add     12,12,3
2676         add     12,12,5
2678         rotrdi  3,29,1
2679         rotrdi  4,29,8
2680         rotrdi  5,26,19
2681         rotrdi  0,26,61
2682         xor     3,3,4
2683         srdi    4,29,7
2684         xor     5,5,0
2685         srdi    0,26,6
2686         add     28,28,21
2687         xor     3,3,4
2688         xor     5,5,0
2689         ld      0,96(7)
2690         add     28,28,3
2691         add     28,28,5
2692         rotrdi  3,8,14
2693         rotrdi  4,8,18
2694         and     5,9,8
2695         xor     3,3,4
2696         add     11,11,0
2697         andc    0,10,8
2698         rotrdi  4,4,23
2699         or      5,5,0
2700         add     11,11,28
2701         xor     3,3,4
2702         add     11,11,5
2703         add     11,11,3
2705         rotrdi  3,12,28
2706         rotrdi  4,12,34
2707         and     5,12,6
2708         and     0,12,14
2709         xor     3,3,4
2710         rotrdi  4,4,5
2711         xor     5,5,0
2712         and     0,6,14
2713         xor     3,3,4
2714         add     15,15,11
2715         xor     5,5,0
2716         add     11,11,3
2717         add     11,11,5
2719         rotrdi  3,30,1
2720         rotrdi  4,30,8
2721         rotrdi  5,27,19
2722         rotrdi  0,27,61
2723         xor     3,3,4
2724         srdi    4,30,7
2725         xor     5,5,0
2726         srdi    0,27,6
2727         add     29,29,22
2728         xor     3,3,4
2729         xor     5,5,0
2730         ld      0,104(7)
2731         add     29,29,3
2732         add     29,29,5
2733         rotrdi  3,15,14
2734         rotrdi  4,15,18
2735         and     5,8,15
2736         xor     3,3,4
2737         add     10,10,0
2738         andc    0,9,15
2739         rotrdi  4,4,23
2740         or      5,5,0
2741         add     10,10,29
2742         xor     3,3,4
2743         add     10,10,5
2744         add     10,10,3
2746         rotrdi  3,11,28
2747         rotrdi  4,11,34
2748         and     5,11,12
2749         and     0,11,6
2750         xor     3,3,4
2751         rotrdi  4,4,5
2752         xor     5,5,0
2753         and     0,12,6
2754         xor     3,3,4
2755         add     14,14,10
2756         xor     5,5,0
2757         add     10,10,3
2758         add     10,10,5
2760         rotrdi  3,31,1
2761         rotrdi  4,31,8
2762         rotrdi  5,28,19
2763         rotrdi  0,28,61
2764         xor     3,3,4
2765         srdi    4,31,7
2766         xor     5,5,0
2767         srdi    0,28,6
2768         add     30,30,23
2769         xor     3,3,4
2770         xor     5,5,0
2771         ld      0,112(7)
2772         add     30,30,3
2773         add     30,30,5
2774         rotrdi  3,14,14
2775         rotrdi  4,14,18
2776         and     5,15,14
2777         xor     3,3,4
2778         add     9,9,0
2779         andc    0,8,14
2780         rotrdi  4,4,23
2781         or      5,5,0
2782         add     9,9,30
2783         xor     3,3,4
2784         add     9,9,5
2785         add     9,9,3
2787         rotrdi  3,10,28
2788         rotrdi  4,10,34
2789         and     5,10,11
2790         and     0,10,12
2791         xor     3,3,4
2792         rotrdi  4,4,5
2793         xor     5,5,0
2794         and     0,11,12
2795         xor     3,3,4
2796         add     6,6,9
2797         xor     5,5,0
2798         add     9,9,3
2799         add     9,9,5
2801         rotrdi  3,16,1
2802         rotrdi  4,16,8
2803         rotrdi  5,29,19
2804         rotrdi  0,29,61
2805         xor     3,3,4
2806         srdi    4,16,7
2807         xor     5,5,0
2808         srdi    0,29,6
2809         add     31,31,24
2810         xor     3,3,4
2811         xor     5,5,0
2812         ld      0,120(7)
2813         add     31,31,3
2814         add     31,31,5
2815         rotrdi  3,6,14
2816         rotrdi  4,6,18
2817         and     5,14,6
2818         xor     3,3,4
2819         add     8,8,0
2820         andc    0,15,6
2821         rotrdi  4,4,23
2822         or      5,5,0
2823         add     8,8,31
2824         xor     3,3,4
2825         add     8,8,5
2826         add     8,8,3
2828         rotrdi  3,9,28
2829         rotrdi  4,9,34
2830         and     5,9,10
2831         and     0,9,11
2832         xor     3,3,4
2833         rotrdi  4,4,5
2834         xor     5,5,0
2835         and     0,10,11
2836         xor     3,3,4
2837         add     12,12,8
2838         xor     5,5,0
2839         add     8,8,3
2840         add     8,8,5
2842         bdnz    .Lrounds
2844         ld      3,208(1)
2845         ld      31,200(1)
2846         ld      5,192(1)
2847         subi    7,7,512
2849         ld      16,0(3)
2850         ld      17,8(3)
2851         ld      18,16(3)
2852         ld      19,24(3)
2853         ld      20,32(3)
2854         ld      21,40(3)
2855         ld      22,48(3)
2856         addi    31,31,128
2857         ld      23,56(3)
2858         add     8,8,16
2859         add     9,9,17
2860         std     31,200(1)
2861         add     10,10,18
2862         std     8,0(3)
2863         add     11,11,19
2864         std     9,8(3)
2865         add     12,12,20
2866         std     10,16(3)
2867         add     6,6,21
2868         std     11,24(3)
2869         add     14,14,22
2870         std     12,32(3)
2871         add     15,15,23
2872         std     6,40(3)
2873         std     14,48(3)
2874         cmpld   31,5
2875         std     15,56(3)
2876         bne     .Lsha2_block_private
2877         blr     
2878 .long   0
2879 .byte   0,12,0x14,0,0,0,0,0
2880 .size   zfs_sha512_ppc,.-zfs_sha512_ppc
2881 .align  6
2882 .LPICmeup:
2883         mflr    0
2884         bcl     20,31,$+4
2885         mflr    7
2886         addi    7,7,56
2887         mtlr    0
2888         blr     
2889 .long   0
2890 .byte   0,12,0x14,0,0,0,0,0
2891 .space  28
2892 .long   0xd728ae22,0x428a2f98
2893 .long   0x23ef65cd,0x71374491
2894 .long   0xec4d3b2f,0xb5c0fbcf
2895 .long   0x8189dbbc,0xe9b5dba5
2896 .long   0xf348b538,0x3956c25b
2897 .long   0xb605d019,0x59f111f1
2898 .long   0xaf194f9b,0x923f82a4
2899 .long   0xda6d8118,0xab1c5ed5
2900 .long   0xa3030242,0xd807aa98
2901 .long   0x45706fbe,0x12835b01
2902 .long   0x4ee4b28c,0x243185be
2903 .long   0xd5ffb4e2,0x550c7dc3
2904 .long   0xf27b896f,0x72be5d74
2905 .long   0x3b1696b1,0x80deb1fe
2906 .long   0x25c71235,0x9bdc06a7
2907 .long   0xcf692694,0xc19bf174
2908 .long   0x9ef14ad2,0xe49b69c1
2909 .long   0x384f25e3,0xefbe4786
2910 .long   0x8b8cd5b5,0x0fc19dc6
2911 .long   0x77ac9c65,0x240ca1cc
2912 .long   0x592b0275,0x2de92c6f
2913 .long   0x6ea6e483,0x4a7484aa
2914 .long   0xbd41fbd4,0x5cb0a9dc
2915 .long   0x831153b5,0x76f988da
2916 .long   0xee66dfab,0x983e5152
2917 .long   0x2db43210,0xa831c66d
2918 .long   0x98fb213f,0xb00327c8
2919 .long   0xbeef0ee4,0xbf597fc7
2920 .long   0x3da88fc2,0xc6e00bf3
2921 .long   0x930aa725,0xd5a79147
2922 .long   0xe003826f,0x06ca6351
2923 .long   0x0a0e6e70,0x14292967
2924 .long   0x46d22ffc,0x27b70a85
2925 .long   0x5c26c926,0x2e1b2138
2926 .long   0x5ac42aed,0x4d2c6dfc
2927 .long   0x9d95b3df,0x53380d13
2928 .long   0x8baf63de,0x650a7354
2929 .long   0x3c77b2a8,0x766a0abb
2930 .long   0x47edaee6,0x81c2c92e
2931 .long   0x1482353b,0x92722c85
2932 .long   0x4cf10364,0xa2bfe8a1
2933 .long   0xbc423001,0xa81a664b
2934 .long   0xd0f89791,0xc24b8b70
2935 .long   0x0654be30,0xc76c51a3
2936 .long   0xd6ef5218,0xd192e819
2937 .long   0x5565a910,0xd6990624
2938 .long   0x5771202a,0xf40e3585
2939 .long   0x32bbd1b8,0x106aa070
2940 .long   0xb8d2d0c8,0x19a4c116
2941 .long   0x5141ab53,0x1e376c08
2942 .long   0xdf8eeb99,0x2748774c
2943 .long   0xe19b48a8,0x34b0bcb5
2944 .long   0xc5c95a63,0x391c0cb3
2945 .long   0xe3418acb,0x4ed8aa4a
2946 .long   0x7763e373,0x5b9cca4f
2947 .long   0xd6b2b8a3,0x682e6ff3
2948 .long   0x5defb2fc,0x748f82ee
2949 .long   0x43172f60,0x78a5636f
2950 .long   0xa1f0ab72,0x84c87814
2951 .long   0x1a6439ec,0x8cc70208
2952 .long   0x23631e28,0x90befffa
2953 .long   0xde82bde9,0xa4506ceb
2954 .long   0xb2c67915,0xbef9a3f7
2955 .long   0xe372532b,0xc67178f2
2956 .long   0xea26619c,0xca273ece
2957 .long   0x21c0c207,0xd186b8c7
2958 .long   0xcde0eb1e,0xeada7dd6
2959 .long   0xee6ed178,0xf57d4f7f
2960 .long   0x72176fba,0x06f067aa
2961 .long   0xa2c898a6,0x0a637dc5
2962 .long   0xbef90dae,0x113f9804
2963 .long   0x131c471b,0x1b710b35
2964 .long   0x23047d84,0x28db77f5
2965 .long   0x40c72493,0x32caab7b
2966 .long   0x15c9bebc,0x3c9ebe0a
2967 .long   0x9c100d4c,0x431d67c4
2968 .long   0xcb3e42b6,0x4cc5d4be
2969 .long   0xfc657e2a,0x597f299c
2970 .long   0x3ad6faec,0x5fcb6fab
2971 .long   0x4a475817,0x6c44198c
2973 #endif