CI: Stick with ubuntu-22.04 for CodeQL analysis
[zfs.git] / module / icp / asm-ppc64 / sha2 / sha256-ppc.S
blobd039bc36ee11cdda4fb8a3ae6876df45a0be0c4b
1 /*
2  * Copyright 2004-2022 The OpenSSL Project Authors. All Rights Reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     https://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
18  * Portions Copyright (c) 2022 Tino Reichardt <milky-zfs@mcmilk.de>
19  * - modified assembly to fit into OpenZFS
20  */
22 #if (defined(__PPC64__) && defined(__BIG_ENDIAN__))
24 #if (!defined(_CALL_ELF) || _CALL_ELF == 1)
25 .text
27 .globl  zfs_sha256_ppc
28 .globl  .zfs_sha256_ppc
29 .type   zfs_sha256_ppc,@function
30 .section        ".opd","aw"
31 .align  3
32 zfs_sha256_ppc:
33 .quad   .zfs_sha256_ppc,.TOC.@tocbase,0
34 .previous
35 .align  6
36 .zfs_sha256_ppc:
37 #else
38 .abiversion     2
39 .text
41 .globl  zfs_sha256_ppc
42 .type   zfs_sha256_ppc,@function
43 .align  6
44 zfs_sha256_ppc:
45 .localentry     zfs_sha256_ppc,0
46 #endif
47         stdu    1,-320(1)
48         mflr    0
49         sldi    5,5,6
51         std     3,144(1)
53         std     14,176(1)
54         std     15,184(1)
55         std     16,192(1)
56         std     17,200(1)
57         std     18,208(1)
58         std     19,216(1)
59         std     20,224(1)
60         std     21,232(1)
61         std     22,240(1)
62         std     23,248(1)
63         std     24,256(1)
64         std     25,264(1)
65         std     26,272(1)
66         std     27,280(1)
67         std     28,288(1)
68         std     29,296(1)
69         std     30,304(1)
70         std     31,312(1)
71         std     0,336(1)
72         lwz     8,0(3)
73         mr      31,4
74         lwz     9,4(3)
75         lwz     10,8(3)
76         lwz     11,12(3)
77         lwz     12,16(3)
78         lwz     6,20(3)
79         lwz     14,24(3)
80         lwz     15,28(3)
81         bl      .LPICmeup
82 .LPICedup:
83         andi.   0,31,3
84         bne     .Lunaligned
85 .Laligned:
86         add     5,31,5
87         std     5,128(1)
88         std     31,136(1)
89         bl      .Lsha2_block_private
90         b       .Ldone
92 .align  4
93 .Lunaligned:
94         subfic  0,31,4096
95         andi.   0,0,4032
96         beq     .Lcross_page
97         cmpld   5,0
98         ble     .Laligned
99         subfc   5,0,5
100         add     0,31,0
101         std     5,120(1)
102         std     0,128(1)
103         std     31,136(1)
104         bl      .Lsha2_block_private
106         ld      5,120(1)
107 .Lcross_page:
108         li      0,16
109         mtctr   0
110         addi    20,1,48
111 .Lmemcpy:
112         lbz     16,0(31)
113         lbz     17,1(31)
114         lbz     18,2(31)
115         lbz     19,3(31)
116         addi    31,31,4
117         stb     16,0(20)
118         stb     17,1(20)
119         stb     18,2(20)
120         stb     19,3(20)
121         addi    20,20,4
122         bdnz    .Lmemcpy
123         std     31,112(1)
124         addi    0,1,112
125         addi    31,1,48
126         std     5,120(1)
127         std     0,128(1)
128         std     31,136(1)
129         bl      .Lsha2_block_private
130         ld      31,112(1)
131         ld      5,120(1)
132         addic.  5,5,-64
133         bne     .Lunaligned
135 .Ldone:
136         ld      0,336(1)
137         ld      14,176(1)
138         ld      15,184(1)
139         ld      16,192(1)
140         ld      17,200(1)
141         ld      18,208(1)
142         ld      19,216(1)
143         ld      20,224(1)
144         ld      21,232(1)
145         ld      22,240(1)
146         ld      23,248(1)
147         ld      24,256(1)
148         ld      25,264(1)
149         ld      26,272(1)
150         ld      27,280(1)
151         ld      28,288(1)
152         ld      29,296(1)
153         ld      30,304(1)
154         ld      31,312(1)
155         mtlr    0
156         addi    1,1,320
157         blr     
158 .long   0
159 .byte   0,12,4,1,0x80,18,3,0
160 .long   0
161 .align  4
162 .Lsha2_block_private:
163         lwz     0,0(7)
164         lwz     16,0(31)
165         rotrwi  3,12,6
166         rotrwi  4,12,11
167         and     5,6,12
168         xor     3,3,4
169         add     15,15,0
170         andc    0,14,12
171         rotrwi  4,4,14
172         or      5,5,0
173         add     15,15,16
174         xor     3,3,4
175         add     15,15,5
176         add     15,15,3
178         rotrwi  3,8,2
179         rotrwi  4,8,13
180         and     5,8,9
181         and     0,8,10
182         xor     3,3,4
183         rotrwi  4,4,9
184         xor     5,5,0
185         and     0,9,10
186         xor     3,3,4
187         add     11,11,15
188         xor     5,5,0
189         lwz     0,4(7)
190         add     15,15,3
191         add     15,15,5
193         lwz     17,4(31)
194         rotrwi  3,11,6
195         rotrwi  4,11,11
196         and     5,12,11
197         xor     3,3,4
198         add     14,14,0
199         andc    0,6,11
200         rotrwi  4,4,14
201         or      5,5,0
202         add     14,14,17
203         xor     3,3,4
204         add     14,14,5
205         add     14,14,3
207         rotrwi  3,15,2
208         rotrwi  4,15,13
209         and     5,15,8
210         and     0,15,9
211         xor     3,3,4
212         rotrwi  4,4,9
213         xor     5,5,0
214         and     0,8,9
215         xor     3,3,4
216         add     10,10,14
217         xor     5,5,0
218         lwz     0,8(7)
219         add     14,14,3
220         add     14,14,5
222         lwz     18,8(31)
223         rotrwi  3,10,6
224         rotrwi  4,10,11
225         and     5,11,10
226         xor     3,3,4
227         add     6,6,0
228         andc    0,12,10
229         rotrwi  4,4,14
230         or      5,5,0
231         add     6,6,18
232         xor     3,3,4
233         add     6,6,5
234         add     6,6,3
236         rotrwi  3,14,2
237         rotrwi  4,14,13
238         and     5,14,15
239         and     0,14,8
240         xor     3,3,4
241         rotrwi  4,4,9
242         xor     5,5,0
243         and     0,15,8
244         xor     3,3,4
245         add     9,9,6
246         xor     5,5,0
247         lwz     0,12(7)
248         add     6,6,3
249         add     6,6,5
251         lwz     19,12(31)
252         rotrwi  3,9,6
253         rotrwi  4,9,11
254         and     5,10,9
255         xor     3,3,4
256         add     12,12,0
257         andc    0,11,9
258         rotrwi  4,4,14
259         or      5,5,0
260         add     12,12,19
261         xor     3,3,4
262         add     12,12,5
263         add     12,12,3
265         rotrwi  3,6,2
266         rotrwi  4,6,13
267         and     5,6,14
268         and     0,6,15
269         xor     3,3,4
270         rotrwi  4,4,9
271         xor     5,5,0
272         and     0,14,15
273         xor     3,3,4
274         add     8,8,12
275         xor     5,5,0
276         lwz     0,16(7)
277         add     12,12,3
278         add     12,12,5
280         lwz     20,16(31)
281         rotrwi  3,8,6
282         rotrwi  4,8,11
283         and     5,9,8
284         xor     3,3,4
285         add     11,11,0
286         andc    0,10,8
287         rotrwi  4,4,14
288         or      5,5,0
289         add     11,11,20
290         xor     3,3,4
291         add     11,11,5
292         add     11,11,3
294         rotrwi  3,12,2
295         rotrwi  4,12,13
296         and     5,12,6
297         and     0,12,14
298         xor     3,3,4
299         rotrwi  4,4,9
300         xor     5,5,0
301         and     0,6,14
302         xor     3,3,4
303         add     15,15,11
304         xor     5,5,0
305         lwz     0,20(7)
306         add     11,11,3
307         add     11,11,5
309         lwz     21,20(31)
310         rotrwi  3,15,6
311         rotrwi  4,15,11
312         and     5,8,15
313         xor     3,3,4
314         add     10,10,0
315         andc    0,9,15
316         rotrwi  4,4,14
317         or      5,5,0
318         add     10,10,21
319         xor     3,3,4
320         add     10,10,5
321         add     10,10,3
323         rotrwi  3,11,2
324         rotrwi  4,11,13
325         and     5,11,12
326         and     0,11,6
327         xor     3,3,4
328         rotrwi  4,4,9
329         xor     5,5,0
330         and     0,12,6
331         xor     3,3,4
332         add     14,14,10
333         xor     5,5,0
334         lwz     0,24(7)
335         add     10,10,3
336         add     10,10,5
338         lwz     22,24(31)
339         rotrwi  3,14,6
340         rotrwi  4,14,11
341         and     5,15,14
342         xor     3,3,4
343         add     9,9,0
344         andc    0,8,14
345         rotrwi  4,4,14
346         or      5,5,0
347         add     9,9,22
348         xor     3,3,4
349         add     9,9,5
350         add     9,9,3
352         rotrwi  3,10,2
353         rotrwi  4,10,13
354         and     5,10,11
355         and     0,10,12
356         xor     3,3,4
357         rotrwi  4,4,9
358         xor     5,5,0
359         and     0,11,12
360         xor     3,3,4
361         add     6,6,9
362         xor     5,5,0
363         lwz     0,28(7)
364         add     9,9,3
365         add     9,9,5
367         lwz     23,28(31)
368         rotrwi  3,6,6
369         rotrwi  4,6,11
370         and     5,14,6
371         xor     3,3,4
372         add     8,8,0
373         andc    0,15,6
374         rotrwi  4,4,14
375         or      5,5,0
376         add     8,8,23
377         xor     3,3,4
378         add     8,8,5
379         add     8,8,3
381         rotrwi  3,9,2
382         rotrwi  4,9,13
383         and     5,9,10
384         and     0,9,11
385         xor     3,3,4
386         rotrwi  4,4,9
387         xor     5,5,0
388         and     0,10,11
389         xor     3,3,4
390         add     12,12,8
391         xor     5,5,0
392         lwz     0,32(7)
393         add     8,8,3
394         add     8,8,5
396         lwz     24,32(31)
397         rotrwi  3,12,6
398         rotrwi  4,12,11
399         and     5,6,12
400         xor     3,3,4
401         add     15,15,0
402         andc    0,14,12
403         rotrwi  4,4,14
404         or      5,5,0
405         add     15,15,24
406         xor     3,3,4
407         add     15,15,5
408         add     15,15,3
410         rotrwi  3,8,2
411         rotrwi  4,8,13
412         and     5,8,9
413         and     0,8,10
414         xor     3,3,4
415         rotrwi  4,4,9
416         xor     5,5,0
417         and     0,9,10
418         xor     3,3,4
419         add     11,11,15
420         xor     5,5,0
421         lwz     0,36(7)
422         add     15,15,3
423         add     15,15,5
425         lwz     25,36(31)
426         rotrwi  3,11,6
427         rotrwi  4,11,11
428         and     5,12,11
429         xor     3,3,4
430         add     14,14,0
431         andc    0,6,11
432         rotrwi  4,4,14
433         or      5,5,0
434         add     14,14,25
435         xor     3,3,4
436         add     14,14,5
437         add     14,14,3
439         rotrwi  3,15,2
440         rotrwi  4,15,13
441         and     5,15,8
442         and     0,15,9
443         xor     3,3,4
444         rotrwi  4,4,9
445         xor     5,5,0
446         and     0,8,9
447         xor     3,3,4
448         add     10,10,14
449         xor     5,5,0
450         lwz     0,40(7)
451         add     14,14,3
452         add     14,14,5
454         lwz     26,40(31)
455         rotrwi  3,10,6
456         rotrwi  4,10,11
457         and     5,11,10
458         xor     3,3,4
459         add     6,6,0
460         andc    0,12,10
461         rotrwi  4,4,14
462         or      5,5,0
463         add     6,6,26
464         xor     3,3,4
465         add     6,6,5
466         add     6,6,3
468         rotrwi  3,14,2
469         rotrwi  4,14,13
470         and     5,14,15
471         and     0,14,8
472         xor     3,3,4
473         rotrwi  4,4,9
474         xor     5,5,0
475         and     0,15,8
476         xor     3,3,4
477         add     9,9,6
478         xor     5,5,0
479         lwz     0,44(7)
480         add     6,6,3
481         add     6,6,5
483         lwz     27,44(31)
484         rotrwi  3,9,6
485         rotrwi  4,9,11
486         and     5,10,9
487         xor     3,3,4
488         add     12,12,0
489         andc    0,11,9
490         rotrwi  4,4,14
491         or      5,5,0
492         add     12,12,27
493         xor     3,3,4
494         add     12,12,5
495         add     12,12,3
497         rotrwi  3,6,2
498         rotrwi  4,6,13
499         and     5,6,14
500         and     0,6,15
501         xor     3,3,4
502         rotrwi  4,4,9
503         xor     5,5,0
504         and     0,14,15
505         xor     3,3,4
506         add     8,8,12
507         xor     5,5,0
508         lwz     0,48(7)
509         add     12,12,3
510         add     12,12,5
512         lwz     28,48(31)
513         rotrwi  3,8,6
514         rotrwi  4,8,11
515         and     5,9,8
516         xor     3,3,4
517         add     11,11,0
518         andc    0,10,8
519         rotrwi  4,4,14
520         or      5,5,0
521         add     11,11,28
522         xor     3,3,4
523         add     11,11,5
524         add     11,11,3
526         rotrwi  3,12,2
527         rotrwi  4,12,13
528         and     5,12,6
529         and     0,12,14
530         xor     3,3,4
531         rotrwi  4,4,9
532         xor     5,5,0
533         and     0,6,14
534         xor     3,3,4
535         add     15,15,11
536         xor     5,5,0
537         lwz     0,52(7)
538         add     11,11,3
539         add     11,11,5
541         lwz     29,52(31)
542         rotrwi  3,15,6
543         rotrwi  4,15,11
544         and     5,8,15
545         xor     3,3,4
546         add     10,10,0
547         andc    0,9,15
548         rotrwi  4,4,14
549         or      5,5,0
550         add     10,10,29
551         xor     3,3,4
552         add     10,10,5
553         add     10,10,3
555         rotrwi  3,11,2
556         rotrwi  4,11,13
557         and     5,11,12
558         and     0,11,6
559         xor     3,3,4
560         rotrwi  4,4,9
561         xor     5,5,0
562         and     0,12,6
563         xor     3,3,4
564         add     14,14,10
565         xor     5,5,0
566         lwz     0,56(7)
567         add     10,10,3
568         add     10,10,5
570         lwz     30,56(31)
571         rotrwi  3,14,6
572         rotrwi  4,14,11
573         and     5,15,14
574         xor     3,3,4
575         add     9,9,0
576         andc    0,8,14
577         rotrwi  4,4,14
578         or      5,5,0
579         add     9,9,30
580         xor     3,3,4
581         add     9,9,5
582         add     9,9,3
584         rotrwi  3,10,2
585         rotrwi  4,10,13
586         and     5,10,11
587         and     0,10,12
588         xor     3,3,4
589         rotrwi  4,4,9
590         xor     5,5,0
591         and     0,11,12
592         xor     3,3,4
593         add     6,6,9
594         xor     5,5,0
595         lwz     0,60(7)
596         add     9,9,3
597         add     9,9,5
599         lwz     31,60(31)
600         rotrwi  3,6,6
601         rotrwi  4,6,11
602         and     5,14,6
603         xor     3,3,4
604         add     8,8,0
605         andc    0,15,6
606         rotrwi  4,4,14
607         or      5,5,0
608         add     8,8,31
609         xor     3,3,4
610         add     8,8,5
611         add     8,8,3
613         rotrwi  3,9,2
614         rotrwi  4,9,13
615         and     5,9,10
616         and     0,9,11
617         xor     3,3,4
618         rotrwi  4,4,9
619         xor     5,5,0
620         and     0,10,11
621         xor     3,3,4
622         add     12,12,8
623         xor     5,5,0
624         add     8,8,3
625         add     8,8,5
627         li      5,3
628         mtctr   5
629 .align  4
630 .Lrounds:
631         addi    7,7,64
632         rotrwi  3,17,7
633         rotrwi  4,17,18
634         rotrwi  5,30,17
635         rotrwi  0,30,19
636         xor     3,3,4
637         srwi    4,17,3
638         xor     5,5,0
639         srwi    0,30,10
640         add     16,16,25
641         xor     3,3,4
642         xor     5,5,0
643         lwz     0,0(7)
644         add     16,16,3
645         add     16,16,5
646         rotrwi  3,12,6
647         rotrwi  4,12,11
648         and     5,6,12
649         xor     3,3,4
650         add     15,15,0
651         andc    0,14,12
652         rotrwi  4,4,14
653         or      5,5,0
654         add     15,15,16
655         xor     3,3,4
656         add     15,15,5
657         add     15,15,3
659         rotrwi  3,8,2
660         rotrwi  4,8,13
661         and     5,8,9
662         and     0,8,10
663         xor     3,3,4
664         rotrwi  4,4,9
665         xor     5,5,0
666         and     0,9,10
667         xor     3,3,4
668         add     11,11,15
669         xor     5,5,0
670         add     15,15,3
671         add     15,15,5
673         rotrwi  3,18,7
674         rotrwi  4,18,18
675         rotrwi  5,31,17
676         rotrwi  0,31,19
677         xor     3,3,4
678         srwi    4,18,3
679         xor     5,5,0
680         srwi    0,31,10
681         add     17,17,26
682         xor     3,3,4
683         xor     5,5,0
684         lwz     0,4(7)
685         add     17,17,3
686         add     17,17,5
687         rotrwi  3,11,6
688         rotrwi  4,11,11
689         and     5,12,11
690         xor     3,3,4
691         add     14,14,0
692         andc    0,6,11
693         rotrwi  4,4,14
694         or      5,5,0
695         add     14,14,17
696         xor     3,3,4
697         add     14,14,5
698         add     14,14,3
700         rotrwi  3,15,2
701         rotrwi  4,15,13
702         and     5,15,8
703         and     0,15,9
704         xor     3,3,4
705         rotrwi  4,4,9
706         xor     5,5,0
707         and     0,8,9
708         xor     3,3,4
709         add     10,10,14
710         xor     5,5,0
711         add     14,14,3
712         add     14,14,5
714         rotrwi  3,19,7
715         rotrwi  4,19,18
716         rotrwi  5,16,17
717         rotrwi  0,16,19
718         xor     3,3,4
719         srwi    4,19,3
720         xor     5,5,0
721         srwi    0,16,10
722         add     18,18,27
723         xor     3,3,4
724         xor     5,5,0
725         lwz     0,8(7)
726         add     18,18,3
727         add     18,18,5
728         rotrwi  3,10,6
729         rotrwi  4,10,11
730         and     5,11,10
731         xor     3,3,4
732         add     6,6,0
733         andc    0,12,10
734         rotrwi  4,4,14
735         or      5,5,0
736         add     6,6,18
737         xor     3,3,4
738         add     6,6,5
739         add     6,6,3
741         rotrwi  3,14,2
742         rotrwi  4,14,13
743         and     5,14,15
744         and     0,14,8
745         xor     3,3,4
746         rotrwi  4,4,9
747         xor     5,5,0
748         and     0,15,8
749         xor     3,3,4
750         add     9,9,6
751         xor     5,5,0
752         add     6,6,3
753         add     6,6,5
755         rotrwi  3,20,7
756         rotrwi  4,20,18
757         rotrwi  5,17,17
758         rotrwi  0,17,19
759         xor     3,3,4
760         srwi    4,20,3
761         xor     5,5,0
762         srwi    0,17,10
763         add     19,19,28
764         xor     3,3,4
765         xor     5,5,0
766         lwz     0,12(7)
767         add     19,19,3
768         add     19,19,5
769         rotrwi  3,9,6
770         rotrwi  4,9,11
771         and     5,10,9
772         xor     3,3,4
773         add     12,12,0
774         andc    0,11,9
775         rotrwi  4,4,14
776         or      5,5,0
777         add     12,12,19
778         xor     3,3,4
779         add     12,12,5
780         add     12,12,3
782         rotrwi  3,6,2
783         rotrwi  4,6,13
784         and     5,6,14
785         and     0,6,15
786         xor     3,3,4
787         rotrwi  4,4,9
788         xor     5,5,0
789         and     0,14,15
790         xor     3,3,4
791         add     8,8,12
792         xor     5,5,0
793         add     12,12,3
794         add     12,12,5
796         rotrwi  3,21,7
797         rotrwi  4,21,18
798         rotrwi  5,18,17
799         rotrwi  0,18,19
800         xor     3,3,4
801         srwi    4,21,3
802         xor     5,5,0
803         srwi    0,18,10
804         add     20,20,29
805         xor     3,3,4
806         xor     5,5,0
807         lwz     0,16(7)
808         add     20,20,3
809         add     20,20,5
810         rotrwi  3,8,6
811         rotrwi  4,8,11
812         and     5,9,8
813         xor     3,3,4
814         add     11,11,0
815         andc    0,10,8
816         rotrwi  4,4,14
817         or      5,5,0
818         add     11,11,20
819         xor     3,3,4
820         add     11,11,5
821         add     11,11,3
823         rotrwi  3,12,2
824         rotrwi  4,12,13
825         and     5,12,6
826         and     0,12,14
827         xor     3,3,4
828         rotrwi  4,4,9
829         xor     5,5,0
830         and     0,6,14
831         xor     3,3,4
832         add     15,15,11
833         xor     5,5,0
834         add     11,11,3
835         add     11,11,5
837         rotrwi  3,22,7
838         rotrwi  4,22,18
839         rotrwi  5,19,17
840         rotrwi  0,19,19
841         xor     3,3,4
842         srwi    4,22,3
843         xor     5,5,0
844         srwi    0,19,10
845         add     21,21,30
846         xor     3,3,4
847         xor     5,5,0
848         lwz     0,20(7)
849         add     21,21,3
850         add     21,21,5
851         rotrwi  3,15,6
852         rotrwi  4,15,11
853         and     5,8,15
854         xor     3,3,4
855         add     10,10,0
856         andc    0,9,15
857         rotrwi  4,4,14
858         or      5,5,0
859         add     10,10,21
860         xor     3,3,4
861         add     10,10,5
862         add     10,10,3
864         rotrwi  3,11,2
865         rotrwi  4,11,13
866         and     5,11,12
867         and     0,11,6
868         xor     3,3,4
869         rotrwi  4,4,9
870         xor     5,5,0
871         and     0,12,6
872         xor     3,3,4
873         add     14,14,10
874         xor     5,5,0
875         add     10,10,3
876         add     10,10,5
878         rotrwi  3,23,7
879         rotrwi  4,23,18
880         rotrwi  5,20,17
881         rotrwi  0,20,19
882         xor     3,3,4
883         srwi    4,23,3
884         xor     5,5,0
885         srwi    0,20,10
886         add     22,22,31
887         xor     3,3,4
888         xor     5,5,0
889         lwz     0,24(7)
890         add     22,22,3
891         add     22,22,5
892         rotrwi  3,14,6
893         rotrwi  4,14,11
894         and     5,15,14
895         xor     3,3,4
896         add     9,9,0
897         andc    0,8,14
898         rotrwi  4,4,14
899         or      5,5,0
900         add     9,9,22
901         xor     3,3,4
902         add     9,9,5
903         add     9,9,3
905         rotrwi  3,10,2
906         rotrwi  4,10,13
907         and     5,10,11
908         and     0,10,12
909         xor     3,3,4
910         rotrwi  4,4,9
911         xor     5,5,0
912         and     0,11,12
913         xor     3,3,4
914         add     6,6,9
915         xor     5,5,0
916         add     9,9,3
917         add     9,9,5
919         rotrwi  3,24,7
920         rotrwi  4,24,18
921         rotrwi  5,21,17
922         rotrwi  0,21,19
923         xor     3,3,4
924         srwi    4,24,3
925         xor     5,5,0
926         srwi    0,21,10
927         add     23,23,16
928         xor     3,3,4
929         xor     5,5,0
930         lwz     0,28(7)
931         add     23,23,3
932         add     23,23,5
933         rotrwi  3,6,6
934         rotrwi  4,6,11
935         and     5,14,6
936         xor     3,3,4
937         add     8,8,0
938         andc    0,15,6
939         rotrwi  4,4,14
940         or      5,5,0
941         add     8,8,23
942         xor     3,3,4
943         add     8,8,5
944         add     8,8,3
946         rotrwi  3,9,2
947         rotrwi  4,9,13
948         and     5,9,10
949         and     0,9,11
950         xor     3,3,4
951         rotrwi  4,4,9
952         xor     5,5,0
953         and     0,10,11
954         xor     3,3,4
955         add     12,12,8
956         xor     5,5,0
957         add     8,8,3
958         add     8,8,5
960         rotrwi  3,25,7
961         rotrwi  4,25,18
962         rotrwi  5,22,17
963         rotrwi  0,22,19
964         xor     3,3,4
965         srwi    4,25,3
966         xor     5,5,0
967         srwi    0,22,10
968         add     24,24,17
969         xor     3,3,4
970         xor     5,5,0
971         lwz     0,32(7)
972         add     24,24,3
973         add     24,24,5
974         rotrwi  3,12,6
975         rotrwi  4,12,11
976         and     5,6,12
977         xor     3,3,4
978         add     15,15,0
979         andc    0,14,12
980         rotrwi  4,4,14
981         or      5,5,0
982         add     15,15,24
983         xor     3,3,4
984         add     15,15,5
985         add     15,15,3
987         rotrwi  3,8,2
988         rotrwi  4,8,13
989         and     5,8,9
990         and     0,8,10
991         xor     3,3,4
992         rotrwi  4,4,9
993         xor     5,5,0
994         and     0,9,10
995         xor     3,3,4
996         add     11,11,15
997         xor     5,5,0
998         add     15,15,3
999         add     15,15,5
1001         rotrwi  3,26,7
1002         rotrwi  4,26,18
1003         rotrwi  5,23,17
1004         rotrwi  0,23,19
1005         xor     3,3,4
1006         srwi    4,26,3
1007         xor     5,5,0
1008         srwi    0,23,10
1009         add     25,25,18
1010         xor     3,3,4
1011         xor     5,5,0
1012         lwz     0,36(7)
1013         add     25,25,3
1014         add     25,25,5
1015         rotrwi  3,11,6
1016         rotrwi  4,11,11
1017         and     5,12,11
1018         xor     3,3,4
1019         add     14,14,0
1020         andc    0,6,11
1021         rotrwi  4,4,14
1022         or      5,5,0
1023         add     14,14,25
1024         xor     3,3,4
1025         add     14,14,5
1026         add     14,14,3
1028         rotrwi  3,15,2
1029         rotrwi  4,15,13
1030         and     5,15,8
1031         and     0,15,9
1032         xor     3,3,4
1033         rotrwi  4,4,9
1034         xor     5,5,0
1035         and     0,8,9
1036         xor     3,3,4
1037         add     10,10,14
1038         xor     5,5,0
1039         add     14,14,3
1040         add     14,14,5
1042         rotrwi  3,27,7
1043         rotrwi  4,27,18
1044         rotrwi  5,24,17
1045         rotrwi  0,24,19
1046         xor     3,3,4
1047         srwi    4,27,3
1048         xor     5,5,0
1049         srwi    0,24,10
1050         add     26,26,19
1051         xor     3,3,4
1052         xor     5,5,0
1053         lwz     0,40(7)
1054         add     26,26,3
1055         add     26,26,5
1056         rotrwi  3,10,6
1057         rotrwi  4,10,11
1058         and     5,11,10
1059         xor     3,3,4
1060         add     6,6,0
1061         andc    0,12,10
1062         rotrwi  4,4,14
1063         or      5,5,0
1064         add     6,6,26
1065         xor     3,3,4
1066         add     6,6,5
1067         add     6,6,3
1069         rotrwi  3,14,2
1070         rotrwi  4,14,13
1071         and     5,14,15
1072         and     0,14,8
1073         xor     3,3,4
1074         rotrwi  4,4,9
1075         xor     5,5,0
1076         and     0,15,8
1077         xor     3,3,4
1078         add     9,9,6
1079         xor     5,5,0
1080         add     6,6,3
1081         add     6,6,5
1083         rotrwi  3,28,7
1084         rotrwi  4,28,18
1085         rotrwi  5,25,17
1086         rotrwi  0,25,19
1087         xor     3,3,4
1088         srwi    4,28,3
1089         xor     5,5,0
1090         srwi    0,25,10
1091         add     27,27,20
1092         xor     3,3,4
1093         xor     5,5,0
1094         lwz     0,44(7)
1095         add     27,27,3
1096         add     27,27,5
1097         rotrwi  3,9,6
1098         rotrwi  4,9,11
1099         and     5,10,9
1100         xor     3,3,4
1101         add     12,12,0
1102         andc    0,11,9
1103         rotrwi  4,4,14
1104         or      5,5,0
1105         add     12,12,27
1106         xor     3,3,4
1107         add     12,12,5
1108         add     12,12,3
1110         rotrwi  3,6,2
1111         rotrwi  4,6,13
1112         and     5,6,14
1113         and     0,6,15
1114         xor     3,3,4
1115         rotrwi  4,4,9
1116         xor     5,5,0
1117         and     0,14,15
1118         xor     3,3,4
1119         add     8,8,12
1120         xor     5,5,0
1121         add     12,12,3
1122         add     12,12,5
1124         rotrwi  3,29,7
1125         rotrwi  4,29,18
1126         rotrwi  5,26,17
1127         rotrwi  0,26,19
1128         xor     3,3,4
1129         srwi    4,29,3
1130         xor     5,5,0
1131         srwi    0,26,10
1132         add     28,28,21
1133         xor     3,3,4
1134         xor     5,5,0
1135         lwz     0,48(7)
1136         add     28,28,3
1137         add     28,28,5
1138         rotrwi  3,8,6
1139         rotrwi  4,8,11
1140         and     5,9,8
1141         xor     3,3,4
1142         add     11,11,0
1143         andc    0,10,8
1144         rotrwi  4,4,14
1145         or      5,5,0
1146         add     11,11,28
1147         xor     3,3,4
1148         add     11,11,5
1149         add     11,11,3
1151         rotrwi  3,12,2
1152         rotrwi  4,12,13
1153         and     5,12,6
1154         and     0,12,14
1155         xor     3,3,4
1156         rotrwi  4,4,9
1157         xor     5,5,0
1158         and     0,6,14
1159         xor     3,3,4
1160         add     15,15,11
1161         xor     5,5,0
1162         add     11,11,3
1163         add     11,11,5
1165         rotrwi  3,30,7
1166         rotrwi  4,30,18
1167         rotrwi  5,27,17
1168         rotrwi  0,27,19
1169         xor     3,3,4
1170         srwi    4,30,3
1171         xor     5,5,0
1172         srwi    0,27,10
1173         add     29,29,22
1174         xor     3,3,4
1175         xor     5,5,0
1176         lwz     0,52(7)
1177         add     29,29,3
1178         add     29,29,5
1179         rotrwi  3,15,6
1180         rotrwi  4,15,11
1181         and     5,8,15
1182         xor     3,3,4
1183         add     10,10,0
1184         andc    0,9,15
1185         rotrwi  4,4,14
1186         or      5,5,0
1187         add     10,10,29
1188         xor     3,3,4
1189         add     10,10,5
1190         add     10,10,3
1192         rotrwi  3,11,2
1193         rotrwi  4,11,13
1194         and     5,11,12
1195         and     0,11,6
1196         xor     3,3,4
1197         rotrwi  4,4,9
1198         xor     5,5,0
1199         and     0,12,6
1200         xor     3,3,4
1201         add     14,14,10
1202         xor     5,5,0
1203         add     10,10,3
1204         add     10,10,5
1206         rotrwi  3,31,7
1207         rotrwi  4,31,18
1208         rotrwi  5,28,17
1209         rotrwi  0,28,19
1210         xor     3,3,4
1211         srwi    4,31,3
1212         xor     5,5,0
1213         srwi    0,28,10
1214         add     30,30,23
1215         xor     3,3,4
1216         xor     5,5,0
1217         lwz     0,56(7)
1218         add     30,30,3
1219         add     30,30,5
1220         rotrwi  3,14,6
1221         rotrwi  4,14,11
1222         and     5,15,14
1223         xor     3,3,4
1224         add     9,9,0
1225         andc    0,8,14
1226         rotrwi  4,4,14
1227         or      5,5,0
1228         add     9,9,30
1229         xor     3,3,4
1230         add     9,9,5
1231         add     9,9,3
1233         rotrwi  3,10,2
1234         rotrwi  4,10,13
1235         and     5,10,11
1236         and     0,10,12
1237         xor     3,3,4
1238         rotrwi  4,4,9
1239         xor     5,5,0
1240         and     0,11,12
1241         xor     3,3,4
1242         add     6,6,9
1243         xor     5,5,0
1244         add     9,9,3
1245         add     9,9,5
1247         rotrwi  3,16,7
1248         rotrwi  4,16,18
1249         rotrwi  5,29,17
1250         rotrwi  0,29,19
1251         xor     3,3,4
1252         srwi    4,16,3
1253         xor     5,5,0
1254         srwi    0,29,10
1255         add     31,31,24
1256         xor     3,3,4
1257         xor     5,5,0
1258         lwz     0,60(7)
1259         add     31,31,3
1260         add     31,31,5
1261         rotrwi  3,6,6
1262         rotrwi  4,6,11
1263         and     5,14,6
1264         xor     3,3,4
1265         add     8,8,0
1266         andc    0,15,6
1267         rotrwi  4,4,14
1268         or      5,5,0
1269         add     8,8,31
1270         xor     3,3,4
1271         add     8,8,5
1272         add     8,8,3
1274         rotrwi  3,9,2
1275         rotrwi  4,9,13
1276         and     5,9,10
1277         and     0,9,11
1278         xor     3,3,4
1279         rotrwi  4,4,9
1280         xor     5,5,0
1281         and     0,10,11
1282         xor     3,3,4
1283         add     12,12,8
1284         xor     5,5,0
1285         add     8,8,3
1286         add     8,8,5
1288         bdnz    .Lrounds
1290         ld      3,144(1)
1291         ld      31,136(1)
1292         ld      5,128(1)
1293         subi    7,7,192
1295         lwz     16,0(3)
1296         lwz     17,4(3)
1297         lwz     18,8(3)
1298         lwz     19,12(3)
1299         lwz     20,16(3)
1300         lwz     21,20(3)
1301         lwz     22,24(3)
1302         addi    31,31,64
1303         lwz     23,28(3)
1304         add     8,8,16
1305         add     9,9,17
1306         std     31,136(1)
1307         add     10,10,18
1308         stw     8,0(3)
1309         add     11,11,19
1310         stw     9,4(3)
1311         add     12,12,20
1312         stw     10,8(3)
1313         add     6,6,21
1314         stw     11,12(3)
1315         add     14,14,22
1316         stw     12,16(3)
1317         add     15,15,23
1318         stw     6,20(3)
1319         stw     14,24(3)
1320         cmpld   31,5
1321         stw     15,28(3)
1322         bne     .Lsha2_block_private
1323         blr     
1324 .long   0
1325 .byte   0,12,0x14,0,0,0,0,0
1326 #if (!defined(_CALL_ELF) || _CALL_ELF == 1)
1327 .size   .zfs_sha256_ppc,.-.zfs_sha256_ppc
1328 .size   zfs_sha256_ppc,.-.zfs_sha256_ppc
1329 #else
1330 .size   zfs_sha256_ppc,.-zfs_sha256_ppc
1331 #endif
1332 .align  6
1333 .LPICmeup:
1334         mflr    0
1335         bcl     20,31,$+4
1336         mflr    7
1337         addi    7,7,56
1338         mtlr    0
1339         blr     
1340 .long   0
1341 .byte   0,12,0x14,0,0,0,0,0
1342 .space  28
1343 .long   0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
1344 .long   0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
1345 .long   0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
1346 .long   0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
1347 .long   0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
1348 .long   0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
1349 .long   0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
1350 .long   0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
1351 .long   0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
1352 .long   0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
1353 .long   0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
1354 .long   0xd192e819,0xd6990624,0xf40e3585,0x106aa070
1355 .long   0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
1356 .long   0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
1357 .long   0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
1358 .long   0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
1360 #elif (defined(__PPC64__) && defined(__LITTLE_ENDIAN__))
1362 .abiversion     2
1363 .text
1365 .globl  zfs_sha256_ppc
1366 .type   zfs_sha256_ppc,@function
1367 .align  6
1368 zfs_sha256_ppc:
1369 .localentry     zfs_sha256_ppc,0
1371         stdu    1,-320(1)
1372         mflr    0
1373         sldi    5,5,6
1375         std     3,144(1)
1377         std     14,176(1)
1378         std     15,184(1)
1379         std     16,192(1)
1380         std     17,200(1)
1381         std     18,208(1)
1382         std     19,216(1)
1383         std     20,224(1)
1384         std     21,232(1)
1385         std     22,240(1)
1386         std     23,248(1)
1387         std     24,256(1)
1388         std     25,264(1)
1389         std     26,272(1)
1390         std     27,280(1)
1391         std     28,288(1)
1392         std     29,296(1)
1393         std     30,304(1)
1394         std     31,312(1)
1395         std     0,336(1)
1396         lwz     8,0(3)
1397         mr      31,4
1398         lwz     9,4(3)
1399         lwz     10,8(3)
1400         lwz     11,12(3)
1401         lwz     12,16(3)
1402         lwz     6,20(3)
1403         lwz     14,24(3)
1404         lwz     15,28(3)
1405         bl      .LPICmeup
1406 .LPICedup:
1407         andi.   0,31,3
1408         bne     .Lunaligned
1409 .Laligned:
1410         add     5,31,5
1411         std     5,128(1)
1412         std     31,136(1)
1413         bl      .Lsha2_block_private
1414         b       .Ldone
1416 .align  4
1417 .Lunaligned:
1418         subfic  0,31,4096
1419         andi.   0,0,4032
1420         beq     .Lcross_page
1421         cmpld   5,0
1422         ble     .Laligned
1423         subfc   5,0,5
1424         add     0,31,0
1425         std     5,120(1)
1426         std     0,128(1)
1427         std     31,136(1)
1428         bl      .Lsha2_block_private
1430         ld      5,120(1)
1431 .Lcross_page:
1432         li      0,16
1433         mtctr   0
1434         addi    20,1,48
1435 .Lmemcpy:
1436         lbz     16,0(31)
1437         lbz     17,1(31)
1438         lbz     18,2(31)
1439         lbz     19,3(31)
1440         addi    31,31,4
1441         stb     16,0(20)
1442         stb     17,1(20)
1443         stb     18,2(20)
1444         stb     19,3(20)
1445         addi    20,20,4
1446         bdnz    .Lmemcpy
1447         std     31,112(1)
1448         addi    0,1,112
1449         addi    31,1,48
1450         std     5,120(1)
1451         std     0,128(1)
1452         std     31,136(1)
1453         bl      .Lsha2_block_private
1454         ld      31,112(1)
1455         ld      5,120(1)
1456         addic.  5,5,-64
1457         bne     .Lunaligned
1459 .Ldone:
1460         ld      0,336(1)
1461         ld      14,176(1)
1462         ld      15,184(1)
1463         ld      16,192(1)
1464         ld      17,200(1)
1465         ld      18,208(1)
1466         ld      19,216(1)
1467         ld      20,224(1)
1468         ld      21,232(1)
1469         ld      22,240(1)
1470         ld      23,248(1)
1471         ld      24,256(1)
1472         ld      25,264(1)
1473         ld      26,272(1)
1474         ld      27,280(1)
1475         ld      28,288(1)
1476         ld      29,296(1)
1477         ld      30,304(1)
1478         ld      31,312(1)
1479         mtlr    0
1480         addi    1,1,320
1481         blr     
1482 .long   0
1483 .byte   0,12,4,1,0x80,18,3,0
1484 .long   0
1485 .align  4
1486 .Lsha2_block_private:
1487         lwz     0,0(7)
1488         lwz     3,0(31)
1489         rotlwi  16,3,8
1490         rlwimi  16,3,24,0,7
1491         rlwimi  16,3,24,16,23
1492         rotrwi  3,12,6
1493         rotrwi  4,12,11
1494         and     5,6,12
1495         xor     3,3,4
1496         add     15,15,0
1497         andc    0,14,12
1498         rotrwi  4,4,14
1499         or      5,5,0
1500         add     15,15,16
1501         xor     3,3,4
1502         add     15,15,5
1503         add     15,15,3
1505         rotrwi  3,8,2
1506         rotrwi  4,8,13
1507         and     5,8,9
1508         and     0,8,10
1509         xor     3,3,4
1510         rotrwi  4,4,9
1511         xor     5,5,0
1512         and     0,9,10
1513         xor     3,3,4
1514         add     11,11,15
1515         xor     5,5,0
1516         lwz     0,4(7)
1517         add     15,15,3
1518         add     15,15,5
1520         lwz     3,4(31)
1521         rotlwi  17,3,8
1522         rlwimi  17,3,24,0,7
1523         rlwimi  17,3,24,16,23
1524         rotrwi  3,11,6
1525         rotrwi  4,11,11
1526         and     5,12,11
1527         xor     3,3,4
1528         add     14,14,0
1529         andc    0,6,11
1530         rotrwi  4,4,14
1531         or      5,5,0
1532         add     14,14,17
1533         xor     3,3,4
1534         add     14,14,5
1535         add     14,14,3
1537         rotrwi  3,15,2
1538         rotrwi  4,15,13
1539         and     5,15,8
1540         and     0,15,9
1541         xor     3,3,4
1542         rotrwi  4,4,9
1543         xor     5,5,0
1544         and     0,8,9
1545         xor     3,3,4
1546         add     10,10,14
1547         xor     5,5,0
1548         lwz     0,8(7)
1549         add     14,14,3
1550         add     14,14,5
1552         lwz     3,8(31)
1553         rotlwi  18,3,8
1554         rlwimi  18,3,24,0,7
1555         rlwimi  18,3,24,16,23
1556         rotrwi  3,10,6
1557         rotrwi  4,10,11
1558         and     5,11,10
1559         xor     3,3,4
1560         add     6,6,0
1561         andc    0,12,10
1562         rotrwi  4,4,14
1563         or      5,5,0
1564         add     6,6,18
1565         xor     3,3,4
1566         add     6,6,5
1567         add     6,6,3
1569         rotrwi  3,14,2
1570         rotrwi  4,14,13
1571         and     5,14,15
1572         and     0,14,8
1573         xor     3,3,4
1574         rotrwi  4,4,9
1575         xor     5,5,0
1576         and     0,15,8
1577         xor     3,3,4
1578         add     9,9,6
1579         xor     5,5,0
1580         lwz     0,12(7)
1581         add     6,6,3
1582         add     6,6,5
1584         lwz     3,12(31)
1585         rotlwi  19,3,8
1586         rlwimi  19,3,24,0,7
1587         rlwimi  19,3,24,16,23
1588         rotrwi  3,9,6
1589         rotrwi  4,9,11
1590         and     5,10,9
1591         xor     3,3,4
1592         add     12,12,0
1593         andc    0,11,9
1594         rotrwi  4,4,14
1595         or      5,5,0
1596         add     12,12,19
1597         xor     3,3,4
1598         add     12,12,5
1599         add     12,12,3
1601         rotrwi  3,6,2
1602         rotrwi  4,6,13
1603         and     5,6,14
1604         and     0,6,15
1605         xor     3,3,4
1606         rotrwi  4,4,9
1607         xor     5,5,0
1608         and     0,14,15
1609         xor     3,3,4
1610         add     8,8,12
1611         xor     5,5,0
1612         lwz     0,16(7)
1613         add     12,12,3
1614         add     12,12,5
1616         lwz     3,16(31)
1617         rotlwi  20,3,8
1618         rlwimi  20,3,24,0,7
1619         rlwimi  20,3,24,16,23
1620         rotrwi  3,8,6
1621         rotrwi  4,8,11
1622         and     5,9,8
1623         xor     3,3,4
1624         add     11,11,0
1625         andc    0,10,8
1626         rotrwi  4,4,14
1627         or      5,5,0
1628         add     11,11,20
1629         xor     3,3,4
1630         add     11,11,5
1631         add     11,11,3
1633         rotrwi  3,12,2
1634         rotrwi  4,12,13
1635         and     5,12,6
1636         and     0,12,14
1637         xor     3,3,4
1638         rotrwi  4,4,9
1639         xor     5,5,0
1640         and     0,6,14
1641         xor     3,3,4
1642         add     15,15,11
1643         xor     5,5,0
1644         lwz     0,20(7)
1645         add     11,11,3
1646         add     11,11,5
1648         lwz     3,20(31)
1649         rotlwi  21,3,8
1650         rlwimi  21,3,24,0,7
1651         rlwimi  21,3,24,16,23
1652         rotrwi  3,15,6
1653         rotrwi  4,15,11
1654         and     5,8,15
1655         xor     3,3,4
1656         add     10,10,0
1657         andc    0,9,15
1658         rotrwi  4,4,14
1659         or      5,5,0
1660         add     10,10,21
1661         xor     3,3,4
1662         add     10,10,5
1663         add     10,10,3
1665         rotrwi  3,11,2
1666         rotrwi  4,11,13
1667         and     5,11,12
1668         and     0,11,6
1669         xor     3,3,4
1670         rotrwi  4,4,9
1671         xor     5,5,0
1672         and     0,12,6
1673         xor     3,3,4
1674         add     14,14,10
1675         xor     5,5,0
1676         lwz     0,24(7)
1677         add     10,10,3
1678         add     10,10,5
1680         lwz     3,24(31)
1681         rotlwi  22,3,8
1682         rlwimi  22,3,24,0,7
1683         rlwimi  22,3,24,16,23
1684         rotrwi  3,14,6
1685         rotrwi  4,14,11
1686         and     5,15,14
1687         xor     3,3,4
1688         add     9,9,0
1689         andc    0,8,14
1690         rotrwi  4,4,14
1691         or      5,5,0
1692         add     9,9,22
1693         xor     3,3,4
1694         add     9,9,5
1695         add     9,9,3
1697         rotrwi  3,10,2
1698         rotrwi  4,10,13
1699         and     5,10,11
1700         and     0,10,12
1701         xor     3,3,4
1702         rotrwi  4,4,9
1703         xor     5,5,0
1704         and     0,11,12
1705         xor     3,3,4
1706         add     6,6,9
1707         xor     5,5,0
1708         lwz     0,28(7)
1709         add     9,9,3
1710         add     9,9,5
1712         lwz     3,28(31)
1713         rotlwi  23,3,8
1714         rlwimi  23,3,24,0,7
1715         rlwimi  23,3,24,16,23
1716         rotrwi  3,6,6
1717         rotrwi  4,6,11
1718         and     5,14,6
1719         xor     3,3,4
1720         add     8,8,0
1721         andc    0,15,6
1722         rotrwi  4,4,14
1723         or      5,5,0
1724         add     8,8,23
1725         xor     3,3,4
1726         add     8,8,5
1727         add     8,8,3
1729         rotrwi  3,9,2
1730         rotrwi  4,9,13
1731         and     5,9,10
1732         and     0,9,11
1733         xor     3,3,4
1734         rotrwi  4,4,9
1735         xor     5,5,0
1736         and     0,10,11
1737         xor     3,3,4
1738         add     12,12,8
1739         xor     5,5,0
1740         lwz     0,32(7)
1741         add     8,8,3
1742         add     8,8,5
1744         lwz     3,32(31)
1745         rotlwi  24,3,8
1746         rlwimi  24,3,24,0,7
1747         rlwimi  24,3,24,16,23
1748         rotrwi  3,12,6
1749         rotrwi  4,12,11
1750         and     5,6,12
1751         xor     3,3,4
1752         add     15,15,0
1753         andc    0,14,12
1754         rotrwi  4,4,14
1755         or      5,5,0
1756         add     15,15,24
1757         xor     3,3,4
1758         add     15,15,5
1759         add     15,15,3
1761         rotrwi  3,8,2
1762         rotrwi  4,8,13
1763         and     5,8,9
1764         and     0,8,10
1765         xor     3,3,4
1766         rotrwi  4,4,9
1767         xor     5,5,0
1768         and     0,9,10
1769         xor     3,3,4
1770         add     11,11,15
1771         xor     5,5,0
1772         lwz     0,36(7)
1773         add     15,15,3
1774         add     15,15,5
1776         lwz     3,36(31)
1777         rotlwi  25,3,8
1778         rlwimi  25,3,24,0,7
1779         rlwimi  25,3,24,16,23
1780         rotrwi  3,11,6
1781         rotrwi  4,11,11
1782         and     5,12,11
1783         xor     3,3,4
1784         add     14,14,0
1785         andc    0,6,11
1786         rotrwi  4,4,14
1787         or      5,5,0
1788         add     14,14,25
1789         xor     3,3,4
1790         add     14,14,5
1791         add     14,14,3
1793         rotrwi  3,15,2
1794         rotrwi  4,15,13
1795         and     5,15,8
1796         and     0,15,9
1797         xor     3,3,4
1798         rotrwi  4,4,9
1799         xor     5,5,0
1800         and     0,8,9
1801         xor     3,3,4
1802         add     10,10,14
1803         xor     5,5,0
1804         lwz     0,40(7)
1805         add     14,14,3
1806         add     14,14,5
1808         lwz     3,40(31)
1809         rotlwi  26,3,8
1810         rlwimi  26,3,24,0,7
1811         rlwimi  26,3,24,16,23
1812         rotrwi  3,10,6
1813         rotrwi  4,10,11
1814         and     5,11,10
1815         xor     3,3,4
1816         add     6,6,0
1817         andc    0,12,10
1818         rotrwi  4,4,14
1819         or      5,5,0
1820         add     6,6,26
1821         xor     3,3,4
1822         add     6,6,5
1823         add     6,6,3
1825         rotrwi  3,14,2
1826         rotrwi  4,14,13
1827         and     5,14,15
1828         and     0,14,8
1829         xor     3,3,4
1830         rotrwi  4,4,9
1831         xor     5,5,0
1832         and     0,15,8
1833         xor     3,3,4
1834         add     9,9,6
1835         xor     5,5,0
1836         lwz     0,44(7)
1837         add     6,6,3
1838         add     6,6,5
1840         lwz     3,44(31)
1841         rotlwi  27,3,8
1842         rlwimi  27,3,24,0,7
1843         rlwimi  27,3,24,16,23
1844         rotrwi  3,9,6
1845         rotrwi  4,9,11
1846         and     5,10,9
1847         xor     3,3,4
1848         add     12,12,0
1849         andc    0,11,9
1850         rotrwi  4,4,14
1851         or      5,5,0
1852         add     12,12,27
1853         xor     3,3,4
1854         add     12,12,5
1855         add     12,12,3
1857         rotrwi  3,6,2
1858         rotrwi  4,6,13
1859         and     5,6,14
1860         and     0,6,15
1861         xor     3,3,4
1862         rotrwi  4,4,9
1863         xor     5,5,0
1864         and     0,14,15
1865         xor     3,3,4
1866         add     8,8,12
1867         xor     5,5,0
1868         lwz     0,48(7)
1869         add     12,12,3
1870         add     12,12,5
1872         lwz     3,48(31)
1873         rotlwi  28,3,8
1874         rlwimi  28,3,24,0,7
1875         rlwimi  28,3,24,16,23
1876         rotrwi  3,8,6
1877         rotrwi  4,8,11
1878         and     5,9,8
1879         xor     3,3,4
1880         add     11,11,0
1881         andc    0,10,8
1882         rotrwi  4,4,14
1883         or      5,5,0
1884         add     11,11,28
1885         xor     3,3,4
1886         add     11,11,5
1887         add     11,11,3
1889         rotrwi  3,12,2
1890         rotrwi  4,12,13
1891         and     5,12,6
1892         and     0,12,14
1893         xor     3,3,4
1894         rotrwi  4,4,9
1895         xor     5,5,0
1896         and     0,6,14
1897         xor     3,3,4
1898         add     15,15,11
1899         xor     5,5,0
1900         lwz     0,52(7)
1901         add     11,11,3
1902         add     11,11,5
1904         lwz     3,52(31)
1905         rotlwi  29,3,8
1906         rlwimi  29,3,24,0,7
1907         rlwimi  29,3,24,16,23
1908         rotrwi  3,15,6
1909         rotrwi  4,15,11
1910         and     5,8,15
1911         xor     3,3,4
1912         add     10,10,0
1913         andc    0,9,15
1914         rotrwi  4,4,14
1915         or      5,5,0
1916         add     10,10,29
1917         xor     3,3,4
1918         add     10,10,5
1919         add     10,10,3
1921         rotrwi  3,11,2
1922         rotrwi  4,11,13
1923         and     5,11,12
1924         and     0,11,6
1925         xor     3,3,4
1926         rotrwi  4,4,9
1927         xor     5,5,0
1928         and     0,12,6
1929         xor     3,3,4
1930         add     14,14,10
1931         xor     5,5,0
1932         lwz     0,56(7)
1933         add     10,10,3
1934         add     10,10,5
1936         lwz     3,56(31)
1937         rotlwi  30,3,8
1938         rlwimi  30,3,24,0,7
1939         rlwimi  30,3,24,16,23
1940         rotrwi  3,14,6
1941         rotrwi  4,14,11
1942         and     5,15,14
1943         xor     3,3,4
1944         add     9,9,0
1945         andc    0,8,14
1946         rotrwi  4,4,14
1947         or      5,5,0
1948         add     9,9,30
1949         xor     3,3,4
1950         add     9,9,5
1951         add     9,9,3
1953         rotrwi  3,10,2
1954         rotrwi  4,10,13
1955         and     5,10,11
1956         and     0,10,12
1957         xor     3,3,4
1958         rotrwi  4,4,9
1959         xor     5,5,0
1960         and     0,11,12
1961         xor     3,3,4
1962         add     6,6,9
1963         xor     5,5,0
1964         lwz     0,60(7)
1965         add     9,9,3
1966         add     9,9,5
1968         lwz     3,60(31)
1969         rotlwi  31,3,8
1970         rlwimi  31,3,24,0,7
1971         rlwimi  31,3,24,16,23
1972         rotrwi  3,6,6
1973         rotrwi  4,6,11
1974         and     5,14,6
1975         xor     3,3,4
1976         add     8,8,0
1977         andc    0,15,6
1978         rotrwi  4,4,14
1979         or      5,5,0
1980         add     8,8,31
1981         xor     3,3,4
1982         add     8,8,5
1983         add     8,8,3
1985         rotrwi  3,9,2
1986         rotrwi  4,9,13
1987         and     5,9,10
1988         and     0,9,11
1989         xor     3,3,4
1990         rotrwi  4,4,9
1991         xor     5,5,0
1992         and     0,10,11
1993         xor     3,3,4
1994         add     12,12,8
1995         xor     5,5,0
1996         add     8,8,3
1997         add     8,8,5
1999         li      5,3
2000         mtctr   5
2001 .align  4
2002 .Lrounds:
2003         addi    7,7,64
2004         rotrwi  3,17,7
2005         rotrwi  4,17,18
2006         rotrwi  5,30,17
2007         rotrwi  0,30,19
2008         xor     3,3,4
2009         srwi    4,17,3
2010         xor     5,5,0
2011         srwi    0,30,10
2012         add     16,16,25
2013         xor     3,3,4
2014         xor     5,5,0
2015         lwz     0,0(7)
2016         add     16,16,3
2017         add     16,16,5
2018         rotrwi  3,12,6
2019         rotrwi  4,12,11
2020         and     5,6,12
2021         xor     3,3,4
2022         add     15,15,0
2023         andc    0,14,12
2024         rotrwi  4,4,14
2025         or      5,5,0
2026         add     15,15,16
2027         xor     3,3,4
2028         add     15,15,5
2029         add     15,15,3
2031         rotrwi  3,8,2
2032         rotrwi  4,8,13
2033         and     5,8,9
2034         and     0,8,10
2035         xor     3,3,4
2036         rotrwi  4,4,9
2037         xor     5,5,0
2038         and     0,9,10
2039         xor     3,3,4
2040         add     11,11,15
2041         xor     5,5,0
2042         add     15,15,3
2043         add     15,15,5
2045         rotrwi  3,18,7
2046         rotrwi  4,18,18
2047         rotrwi  5,31,17
2048         rotrwi  0,31,19
2049         xor     3,3,4
2050         srwi    4,18,3
2051         xor     5,5,0
2052         srwi    0,31,10
2053         add     17,17,26
2054         xor     3,3,4
2055         xor     5,5,0
2056         lwz     0,4(7)
2057         add     17,17,3
2058         add     17,17,5
2059         rotrwi  3,11,6
2060         rotrwi  4,11,11
2061         and     5,12,11
2062         xor     3,3,4
2063         add     14,14,0
2064         andc    0,6,11
2065         rotrwi  4,4,14
2066         or      5,5,0
2067         add     14,14,17
2068         xor     3,3,4
2069         add     14,14,5
2070         add     14,14,3
2072         rotrwi  3,15,2
2073         rotrwi  4,15,13
2074         and     5,15,8
2075         and     0,15,9
2076         xor     3,3,4
2077         rotrwi  4,4,9
2078         xor     5,5,0
2079         and     0,8,9
2080         xor     3,3,4
2081         add     10,10,14
2082         xor     5,5,0
2083         add     14,14,3
2084         add     14,14,5
2086         rotrwi  3,19,7
2087         rotrwi  4,19,18
2088         rotrwi  5,16,17
2089         rotrwi  0,16,19
2090         xor     3,3,4
2091         srwi    4,19,3
2092         xor     5,5,0
2093         srwi    0,16,10
2094         add     18,18,27
2095         xor     3,3,4
2096         xor     5,5,0
2097         lwz     0,8(7)
2098         add     18,18,3
2099         add     18,18,5
2100         rotrwi  3,10,6
2101         rotrwi  4,10,11
2102         and     5,11,10
2103         xor     3,3,4
2104         add     6,6,0
2105         andc    0,12,10
2106         rotrwi  4,4,14
2107         or      5,5,0
2108         add     6,6,18
2109         xor     3,3,4
2110         add     6,6,5
2111         add     6,6,3
2113         rotrwi  3,14,2
2114         rotrwi  4,14,13
2115         and     5,14,15
2116         and     0,14,8
2117         xor     3,3,4
2118         rotrwi  4,4,9
2119         xor     5,5,0
2120         and     0,15,8
2121         xor     3,3,4
2122         add     9,9,6
2123         xor     5,5,0
2124         add     6,6,3
2125         add     6,6,5
2127         rotrwi  3,20,7
2128         rotrwi  4,20,18
2129         rotrwi  5,17,17
2130         rotrwi  0,17,19
2131         xor     3,3,4
2132         srwi    4,20,3
2133         xor     5,5,0
2134         srwi    0,17,10
2135         add     19,19,28
2136         xor     3,3,4
2137         xor     5,5,0
2138         lwz     0,12(7)
2139         add     19,19,3
2140         add     19,19,5
2141         rotrwi  3,9,6
2142         rotrwi  4,9,11
2143         and     5,10,9
2144         xor     3,3,4
2145         add     12,12,0
2146         andc    0,11,9
2147         rotrwi  4,4,14
2148         or      5,5,0
2149         add     12,12,19
2150         xor     3,3,4
2151         add     12,12,5
2152         add     12,12,3
2154         rotrwi  3,6,2
2155         rotrwi  4,6,13
2156         and     5,6,14
2157         and     0,6,15
2158         xor     3,3,4
2159         rotrwi  4,4,9
2160         xor     5,5,0
2161         and     0,14,15
2162         xor     3,3,4
2163         add     8,8,12
2164         xor     5,5,0
2165         add     12,12,3
2166         add     12,12,5
2168         rotrwi  3,21,7
2169         rotrwi  4,21,18
2170         rotrwi  5,18,17
2171         rotrwi  0,18,19
2172         xor     3,3,4
2173         srwi    4,21,3
2174         xor     5,5,0
2175         srwi    0,18,10
2176         add     20,20,29
2177         xor     3,3,4
2178         xor     5,5,0
2179         lwz     0,16(7)
2180         add     20,20,3
2181         add     20,20,5
2182         rotrwi  3,8,6
2183         rotrwi  4,8,11
2184         and     5,9,8
2185         xor     3,3,4
2186         add     11,11,0
2187         andc    0,10,8
2188         rotrwi  4,4,14
2189         or      5,5,0
2190         add     11,11,20
2191         xor     3,3,4
2192         add     11,11,5
2193         add     11,11,3
2195         rotrwi  3,12,2
2196         rotrwi  4,12,13
2197         and     5,12,6
2198         and     0,12,14
2199         xor     3,3,4
2200         rotrwi  4,4,9
2201         xor     5,5,0
2202         and     0,6,14
2203         xor     3,3,4
2204         add     15,15,11
2205         xor     5,5,0
2206         add     11,11,3
2207         add     11,11,5
2209         rotrwi  3,22,7
2210         rotrwi  4,22,18
2211         rotrwi  5,19,17
2212         rotrwi  0,19,19
2213         xor     3,3,4
2214         srwi    4,22,3
2215         xor     5,5,0
2216         srwi    0,19,10
2217         add     21,21,30
2218         xor     3,3,4
2219         xor     5,5,0
2220         lwz     0,20(7)
2221         add     21,21,3
2222         add     21,21,5
2223         rotrwi  3,15,6
2224         rotrwi  4,15,11
2225         and     5,8,15
2226         xor     3,3,4
2227         add     10,10,0
2228         andc    0,9,15
2229         rotrwi  4,4,14
2230         or      5,5,0
2231         add     10,10,21
2232         xor     3,3,4
2233         add     10,10,5
2234         add     10,10,3
2236         rotrwi  3,11,2
2237         rotrwi  4,11,13
2238         and     5,11,12
2239         and     0,11,6
2240         xor     3,3,4
2241         rotrwi  4,4,9
2242         xor     5,5,0
2243         and     0,12,6
2244         xor     3,3,4
2245         add     14,14,10
2246         xor     5,5,0
2247         add     10,10,3
2248         add     10,10,5
2250         rotrwi  3,23,7
2251         rotrwi  4,23,18
2252         rotrwi  5,20,17
2253         rotrwi  0,20,19
2254         xor     3,3,4
2255         srwi    4,23,3
2256         xor     5,5,0
2257         srwi    0,20,10
2258         add     22,22,31
2259         xor     3,3,4
2260         xor     5,5,0
2261         lwz     0,24(7)
2262         add     22,22,3
2263         add     22,22,5
2264         rotrwi  3,14,6
2265         rotrwi  4,14,11
2266         and     5,15,14
2267         xor     3,3,4
2268         add     9,9,0
2269         andc    0,8,14
2270         rotrwi  4,4,14
2271         or      5,5,0
2272         add     9,9,22
2273         xor     3,3,4
2274         add     9,9,5
2275         add     9,9,3
2277         rotrwi  3,10,2
2278         rotrwi  4,10,13
2279         and     5,10,11
2280         and     0,10,12
2281         xor     3,3,4
2282         rotrwi  4,4,9
2283         xor     5,5,0
2284         and     0,11,12
2285         xor     3,3,4
2286         add     6,6,9
2287         xor     5,5,0
2288         add     9,9,3
2289         add     9,9,5
2291         rotrwi  3,24,7
2292         rotrwi  4,24,18
2293         rotrwi  5,21,17
2294         rotrwi  0,21,19
2295         xor     3,3,4
2296         srwi    4,24,3
2297         xor     5,5,0
2298         srwi    0,21,10
2299         add     23,23,16
2300         xor     3,3,4
2301         xor     5,5,0
2302         lwz     0,28(7)
2303         add     23,23,3
2304         add     23,23,5
2305         rotrwi  3,6,6
2306         rotrwi  4,6,11
2307         and     5,14,6
2308         xor     3,3,4
2309         add     8,8,0
2310         andc    0,15,6
2311         rotrwi  4,4,14
2312         or      5,5,0
2313         add     8,8,23
2314         xor     3,3,4
2315         add     8,8,5
2316         add     8,8,3
2318         rotrwi  3,9,2
2319         rotrwi  4,9,13
2320         and     5,9,10
2321         and     0,9,11
2322         xor     3,3,4
2323         rotrwi  4,4,9
2324         xor     5,5,0
2325         and     0,10,11
2326         xor     3,3,4
2327         add     12,12,8
2328         xor     5,5,0
2329         add     8,8,3
2330         add     8,8,5
2332         rotrwi  3,25,7
2333         rotrwi  4,25,18
2334         rotrwi  5,22,17
2335         rotrwi  0,22,19
2336         xor     3,3,4
2337         srwi    4,25,3
2338         xor     5,5,0
2339         srwi    0,22,10
2340         add     24,24,17
2341         xor     3,3,4
2342         xor     5,5,0
2343         lwz     0,32(7)
2344         add     24,24,3
2345         add     24,24,5
2346         rotrwi  3,12,6
2347         rotrwi  4,12,11
2348         and     5,6,12
2349         xor     3,3,4
2350         add     15,15,0
2351         andc    0,14,12
2352         rotrwi  4,4,14
2353         or      5,5,0
2354         add     15,15,24
2355         xor     3,3,4
2356         add     15,15,5
2357         add     15,15,3
2359         rotrwi  3,8,2
2360         rotrwi  4,8,13
2361         and     5,8,9
2362         and     0,8,10
2363         xor     3,3,4
2364         rotrwi  4,4,9
2365         xor     5,5,0
2366         and     0,9,10
2367         xor     3,3,4
2368         add     11,11,15
2369         xor     5,5,0
2370         add     15,15,3
2371         add     15,15,5
2373         rotrwi  3,26,7
2374         rotrwi  4,26,18
2375         rotrwi  5,23,17
2376         rotrwi  0,23,19
2377         xor     3,3,4
2378         srwi    4,26,3
2379         xor     5,5,0
2380         srwi    0,23,10
2381         add     25,25,18
2382         xor     3,3,4
2383         xor     5,5,0
2384         lwz     0,36(7)
2385         add     25,25,3
2386         add     25,25,5
2387         rotrwi  3,11,6
2388         rotrwi  4,11,11
2389         and     5,12,11
2390         xor     3,3,4
2391         add     14,14,0
2392         andc    0,6,11
2393         rotrwi  4,4,14
2394         or      5,5,0
2395         add     14,14,25
2396         xor     3,3,4
2397         add     14,14,5
2398         add     14,14,3
2400         rotrwi  3,15,2
2401         rotrwi  4,15,13
2402         and     5,15,8
2403         and     0,15,9
2404         xor     3,3,4
2405         rotrwi  4,4,9
2406         xor     5,5,0
2407         and     0,8,9
2408         xor     3,3,4
2409         add     10,10,14
2410         xor     5,5,0
2411         add     14,14,3
2412         add     14,14,5
2414         rotrwi  3,27,7
2415         rotrwi  4,27,18
2416         rotrwi  5,24,17
2417         rotrwi  0,24,19
2418         xor     3,3,4
2419         srwi    4,27,3
2420         xor     5,5,0
2421         srwi    0,24,10
2422         add     26,26,19
2423         xor     3,3,4
2424         xor     5,5,0
2425         lwz     0,40(7)
2426         add     26,26,3
2427         add     26,26,5
2428         rotrwi  3,10,6
2429         rotrwi  4,10,11
2430         and     5,11,10
2431         xor     3,3,4
2432         add     6,6,0
2433         andc    0,12,10
2434         rotrwi  4,4,14
2435         or      5,5,0
2436         add     6,6,26
2437         xor     3,3,4
2438         add     6,6,5
2439         add     6,6,3
2441         rotrwi  3,14,2
2442         rotrwi  4,14,13
2443         and     5,14,15
2444         and     0,14,8
2445         xor     3,3,4
2446         rotrwi  4,4,9
2447         xor     5,5,0
2448         and     0,15,8
2449         xor     3,3,4
2450         add     9,9,6
2451         xor     5,5,0
2452         add     6,6,3
2453         add     6,6,5
2455         rotrwi  3,28,7
2456         rotrwi  4,28,18
2457         rotrwi  5,25,17
2458         rotrwi  0,25,19
2459         xor     3,3,4
2460         srwi    4,28,3
2461         xor     5,5,0
2462         srwi    0,25,10
2463         add     27,27,20
2464         xor     3,3,4
2465         xor     5,5,0
2466         lwz     0,44(7)
2467         add     27,27,3
2468         add     27,27,5
2469         rotrwi  3,9,6
2470         rotrwi  4,9,11
2471         and     5,10,9
2472         xor     3,3,4
2473         add     12,12,0
2474         andc    0,11,9
2475         rotrwi  4,4,14
2476         or      5,5,0
2477         add     12,12,27
2478         xor     3,3,4
2479         add     12,12,5
2480         add     12,12,3
2482         rotrwi  3,6,2
2483         rotrwi  4,6,13
2484         and     5,6,14
2485         and     0,6,15
2486         xor     3,3,4
2487         rotrwi  4,4,9
2488         xor     5,5,0
2489         and     0,14,15
2490         xor     3,3,4
2491         add     8,8,12
2492         xor     5,5,0
2493         add     12,12,3
2494         add     12,12,5
2496         rotrwi  3,29,7
2497         rotrwi  4,29,18
2498         rotrwi  5,26,17
2499         rotrwi  0,26,19
2500         xor     3,3,4
2501         srwi    4,29,3
2502         xor     5,5,0
2503         srwi    0,26,10
2504         add     28,28,21
2505         xor     3,3,4
2506         xor     5,5,0
2507         lwz     0,48(7)
2508         add     28,28,3
2509         add     28,28,5
2510         rotrwi  3,8,6
2511         rotrwi  4,8,11
2512         and     5,9,8
2513         xor     3,3,4
2514         add     11,11,0
2515         andc    0,10,8
2516         rotrwi  4,4,14
2517         or      5,5,0
2518         add     11,11,28
2519         xor     3,3,4
2520         add     11,11,5
2521         add     11,11,3
2523         rotrwi  3,12,2
2524         rotrwi  4,12,13
2525         and     5,12,6
2526         and     0,12,14
2527         xor     3,3,4
2528         rotrwi  4,4,9
2529         xor     5,5,0
2530         and     0,6,14
2531         xor     3,3,4
2532         add     15,15,11
2533         xor     5,5,0
2534         add     11,11,3
2535         add     11,11,5
2537         rotrwi  3,30,7
2538         rotrwi  4,30,18
2539         rotrwi  5,27,17
2540         rotrwi  0,27,19
2541         xor     3,3,4
2542         srwi    4,30,3
2543         xor     5,5,0
2544         srwi    0,27,10
2545         add     29,29,22
2546         xor     3,3,4
2547         xor     5,5,0
2548         lwz     0,52(7)
2549         add     29,29,3
2550         add     29,29,5
2551         rotrwi  3,15,6
2552         rotrwi  4,15,11
2553         and     5,8,15
2554         xor     3,3,4
2555         add     10,10,0
2556         andc    0,9,15
2557         rotrwi  4,4,14
2558         or      5,5,0
2559         add     10,10,29
2560         xor     3,3,4
2561         add     10,10,5
2562         add     10,10,3
2564         rotrwi  3,11,2
2565         rotrwi  4,11,13
2566         and     5,11,12
2567         and     0,11,6
2568         xor     3,3,4
2569         rotrwi  4,4,9
2570         xor     5,5,0
2571         and     0,12,6
2572         xor     3,3,4
2573         add     14,14,10
2574         xor     5,5,0
2575         add     10,10,3
2576         add     10,10,5
2578         rotrwi  3,31,7
2579         rotrwi  4,31,18
2580         rotrwi  5,28,17
2581         rotrwi  0,28,19
2582         xor     3,3,4
2583         srwi    4,31,3
2584         xor     5,5,0
2585         srwi    0,28,10
2586         add     30,30,23
2587         xor     3,3,4
2588         xor     5,5,0
2589         lwz     0,56(7)
2590         add     30,30,3
2591         add     30,30,5
2592         rotrwi  3,14,6
2593         rotrwi  4,14,11
2594         and     5,15,14
2595         xor     3,3,4
2596         add     9,9,0
2597         andc    0,8,14
2598         rotrwi  4,4,14
2599         or      5,5,0
2600         add     9,9,30
2601         xor     3,3,4
2602         add     9,9,5
2603         add     9,9,3
2605         rotrwi  3,10,2
2606         rotrwi  4,10,13
2607         and     5,10,11
2608         and     0,10,12
2609         xor     3,3,4
2610         rotrwi  4,4,9
2611         xor     5,5,0
2612         and     0,11,12
2613         xor     3,3,4
2614         add     6,6,9
2615         xor     5,5,0
2616         add     9,9,3
2617         add     9,9,5
2619         rotrwi  3,16,7
2620         rotrwi  4,16,18
2621         rotrwi  5,29,17
2622         rotrwi  0,29,19
2623         xor     3,3,4
2624         srwi    4,16,3
2625         xor     5,5,0
2626         srwi    0,29,10
2627         add     31,31,24
2628         xor     3,3,4
2629         xor     5,5,0
2630         lwz     0,60(7)
2631         add     31,31,3
2632         add     31,31,5
2633         rotrwi  3,6,6
2634         rotrwi  4,6,11
2635         and     5,14,6
2636         xor     3,3,4
2637         add     8,8,0
2638         andc    0,15,6
2639         rotrwi  4,4,14
2640         or      5,5,0
2641         add     8,8,31
2642         xor     3,3,4
2643         add     8,8,5
2644         add     8,8,3
2646         rotrwi  3,9,2
2647         rotrwi  4,9,13
2648         and     5,9,10
2649         and     0,9,11
2650         xor     3,3,4
2651         rotrwi  4,4,9
2652         xor     5,5,0
2653         and     0,10,11
2654         xor     3,3,4
2655         add     12,12,8
2656         xor     5,5,0
2657         add     8,8,3
2658         add     8,8,5
2660         bdnz    .Lrounds
2662         ld      3,144(1)
2663         ld      31,136(1)
2664         ld      5,128(1)
2665         subi    7,7,192
2667         lwz     16,0(3)
2668         lwz     17,4(3)
2669         lwz     18,8(3)
2670         lwz     19,12(3)
2671         lwz     20,16(3)
2672         lwz     21,20(3)
2673         lwz     22,24(3)
2674         addi    31,31,64
2675         lwz     23,28(3)
2676         add     8,8,16
2677         add     9,9,17
2678         std     31,136(1)
2679         add     10,10,18
2680         stw     8,0(3)
2681         add     11,11,19
2682         stw     9,4(3)
2683         add     12,12,20
2684         stw     10,8(3)
2685         add     6,6,21
2686         stw     11,12(3)
2687         add     14,14,22
2688         stw     12,16(3)
2689         add     15,15,23
2690         stw     6,20(3)
2691         stw     14,24(3)
2692         cmpld   31,5
2693         stw     15,28(3)
2694         bne     .Lsha2_block_private
2695         blr     
2696 .long   0
2697 .byte   0,12,0x14,0,0,0,0,0
2698 .size   zfs_sha256_ppc,.-zfs_sha256_ppc
2699 .align  6
2700 .LPICmeup:
2701         mflr    0
2702         bcl     20,31,$+4
2703         mflr    7
2704         addi    7,7,56
2705         mtlr    0
2706         blr     
2707 .long   0
2708 .byte   0,12,0x14,0,0,0,0,0
2709 .space  28
2710 .long   0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
2711 .long   0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
2712 .long   0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
2713 .long   0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
2714 .long   0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
2715 .long   0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
2716 .long   0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
2717 .long   0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
2718 .long   0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
2719 .long   0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
2720 .long   0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
2721 .long   0xd192e819,0xd6990624,0xf40e3585,0x106aa070
2722 .long   0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
2723 .long   0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
2724 .long   0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
2725 .long   0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
2727 #endif