Path: blob/main/sys/contrib/openzfs/module/icp/asm-ppc64/sha2/sha256-ppc.S
48775 views
// SPDX-License-Identifier: Apache-2.01/*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 at7*8* https://www.apache.org/licenses/LICENSE-2.09*10* Unless required by applicable law or agreed to in writing, software11* 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 and14* limitations under the License.15*/1617/*18* Portions Copyright (c) 2022 Tino Reichardt <[email protected]>19* - modified assembly to fit into OpenZFS20*/2122#if (defined(__PPC64__) && defined(__BIG_ENDIAN__))2324#if (!defined(_CALL_ELF) || _CALL_ELF == 1)25.text2627.globl zfs_sha256_ppc28.globl .zfs_sha256_ppc29.type zfs_sha256_ppc,@function30.section ".opd","aw"31.align 332zfs_sha256_ppc:33.quad .zfs_sha256_ppc,.TOC.@tocbase,034.previous35.align 636.zfs_sha256_ppc:37#else38.abiversion 239.text4041.globl zfs_sha256_ppc42.type zfs_sha256_ppc,@function43.align 644zfs_sha256_ppc:45.localentry zfs_sha256_ppc,046#endif47stdu 1,-320(1)48mflr 049sldi 5,5,65051std 3,144(1)5253std 14,176(1)54std 15,184(1)55std 16,192(1)56std 17,200(1)57std 18,208(1)58std 19,216(1)59std 20,224(1)60std 21,232(1)61std 22,240(1)62std 23,248(1)63std 24,256(1)64std 25,264(1)65std 26,272(1)66std 27,280(1)67std 28,288(1)68std 29,296(1)69std 30,304(1)70std 31,312(1)71std 0,336(1)72lwz 8,0(3)73mr 31,474lwz 9,4(3)75lwz 10,8(3)76lwz 11,12(3)77lwz 12,16(3)78lwz 6,20(3)79lwz 14,24(3)80lwz 15,28(3)81bl .LPICmeup82.LPICedup:83andi. 0,31,384bne .Lunaligned85.Laligned:86add 5,31,587std 5,128(1)88std 31,136(1)89bl .Lsha2_block_private90b .Ldone9192.align 493.Lunaligned:94subfic 0,31,409695andi. 0,0,403296beq .Lcross_page97cmpld 5,098ble .Laligned99subfc 5,0,5100add 0,31,0101std 5,120(1)102std 0,128(1)103std 31,136(1)104bl .Lsha2_block_private105106ld 5,120(1)107.Lcross_page:108li 0,16109mtctr 0110addi 20,1,48111.Lmemcpy:112lbz 16,0(31)113lbz 17,1(31)114lbz 18,2(31)115lbz 19,3(31)116addi 31,31,4117stb 16,0(20)118stb 17,1(20)119stb 18,2(20)120stb 19,3(20)121addi 20,20,4122bdnz .Lmemcpy123std 31,112(1)124addi 0,1,112125addi 31,1,48126std 5,120(1)127std 0,128(1)128std 31,136(1)129bl .Lsha2_block_private130ld 31,112(1)131ld 5,120(1)132addic. 5,5,-64133bne .Lunaligned134135.Ldone:136ld 0,336(1)137ld 14,176(1)138ld 15,184(1)139ld 16,192(1)140ld 17,200(1)141ld 18,208(1)142ld 19,216(1)143ld 20,224(1)144ld 21,232(1)145ld 22,240(1)146ld 23,248(1)147ld 24,256(1)148ld 25,264(1)149ld 26,272(1)150ld 27,280(1)151ld 28,288(1)152ld 29,296(1)153ld 30,304(1)154ld 31,312(1)155mtlr 0156addi 1,1,320157blr158.long 0159.byte 0,12,4,1,0x80,18,3,0160.long 0161.align 4162.Lsha2_block_private:163lwz 0,0(7)164lwz 16,0(31)165rotrwi 3,12,6166rotrwi 4,12,11167and 5,6,12168xor 3,3,4169add 15,15,0170andc 0,14,12171rotrwi 4,4,14172or 5,5,0173add 15,15,16174xor 3,3,4175add 15,15,5176add 15,15,3177178rotrwi 3,8,2179rotrwi 4,8,13180and 5,8,9181and 0,8,10182xor 3,3,4183rotrwi 4,4,9184xor 5,5,0185and 0,9,10186xor 3,3,4187add 11,11,15188xor 5,5,0189lwz 0,4(7)190add 15,15,3191add 15,15,5192193lwz 17,4(31)194rotrwi 3,11,6195rotrwi 4,11,11196and 5,12,11197xor 3,3,4198add 14,14,0199andc 0,6,11200rotrwi 4,4,14201or 5,5,0202add 14,14,17203xor 3,3,4204add 14,14,5205add 14,14,3206207rotrwi 3,15,2208rotrwi 4,15,13209and 5,15,8210and 0,15,9211xor 3,3,4212rotrwi 4,4,9213xor 5,5,0214and 0,8,9215xor 3,3,4216add 10,10,14217xor 5,5,0218lwz 0,8(7)219add 14,14,3220add 14,14,5221222lwz 18,8(31)223rotrwi 3,10,6224rotrwi 4,10,11225and 5,11,10226xor 3,3,4227add 6,6,0228andc 0,12,10229rotrwi 4,4,14230or 5,5,0231add 6,6,18232xor 3,3,4233add 6,6,5234add 6,6,3235236rotrwi 3,14,2237rotrwi 4,14,13238and 5,14,15239and 0,14,8240xor 3,3,4241rotrwi 4,4,9242xor 5,5,0243and 0,15,8244xor 3,3,4245add 9,9,6246xor 5,5,0247lwz 0,12(7)248add 6,6,3249add 6,6,5250251lwz 19,12(31)252rotrwi 3,9,6253rotrwi 4,9,11254and 5,10,9255xor 3,3,4256add 12,12,0257andc 0,11,9258rotrwi 4,4,14259or 5,5,0260add 12,12,19261xor 3,3,4262add 12,12,5263add 12,12,3264265rotrwi 3,6,2266rotrwi 4,6,13267and 5,6,14268and 0,6,15269xor 3,3,4270rotrwi 4,4,9271xor 5,5,0272and 0,14,15273xor 3,3,4274add 8,8,12275xor 5,5,0276lwz 0,16(7)277add 12,12,3278add 12,12,5279280lwz 20,16(31)281rotrwi 3,8,6282rotrwi 4,8,11283and 5,9,8284xor 3,3,4285add 11,11,0286andc 0,10,8287rotrwi 4,4,14288or 5,5,0289add 11,11,20290xor 3,3,4291add 11,11,5292add 11,11,3293294rotrwi 3,12,2295rotrwi 4,12,13296and 5,12,6297and 0,12,14298xor 3,3,4299rotrwi 4,4,9300xor 5,5,0301and 0,6,14302xor 3,3,4303add 15,15,11304xor 5,5,0305lwz 0,20(7)306add 11,11,3307add 11,11,5308309lwz 21,20(31)310rotrwi 3,15,6311rotrwi 4,15,11312and 5,8,15313xor 3,3,4314add 10,10,0315andc 0,9,15316rotrwi 4,4,14317or 5,5,0318add 10,10,21319xor 3,3,4320add 10,10,5321add 10,10,3322323rotrwi 3,11,2324rotrwi 4,11,13325and 5,11,12326and 0,11,6327xor 3,3,4328rotrwi 4,4,9329xor 5,5,0330and 0,12,6331xor 3,3,4332add 14,14,10333xor 5,5,0334lwz 0,24(7)335add 10,10,3336add 10,10,5337338lwz 22,24(31)339rotrwi 3,14,6340rotrwi 4,14,11341and 5,15,14342xor 3,3,4343add 9,9,0344andc 0,8,14345rotrwi 4,4,14346or 5,5,0347add 9,9,22348xor 3,3,4349add 9,9,5350add 9,9,3351352rotrwi 3,10,2353rotrwi 4,10,13354and 5,10,11355and 0,10,12356xor 3,3,4357rotrwi 4,4,9358xor 5,5,0359and 0,11,12360xor 3,3,4361add 6,6,9362xor 5,5,0363lwz 0,28(7)364add 9,9,3365add 9,9,5366367lwz 23,28(31)368rotrwi 3,6,6369rotrwi 4,6,11370and 5,14,6371xor 3,3,4372add 8,8,0373andc 0,15,6374rotrwi 4,4,14375or 5,5,0376add 8,8,23377xor 3,3,4378add 8,8,5379add 8,8,3380381rotrwi 3,9,2382rotrwi 4,9,13383and 5,9,10384and 0,9,11385xor 3,3,4386rotrwi 4,4,9387xor 5,5,0388and 0,10,11389xor 3,3,4390add 12,12,8391xor 5,5,0392lwz 0,32(7)393add 8,8,3394add 8,8,5395396lwz 24,32(31)397rotrwi 3,12,6398rotrwi 4,12,11399and 5,6,12400xor 3,3,4401add 15,15,0402andc 0,14,12403rotrwi 4,4,14404or 5,5,0405add 15,15,24406xor 3,3,4407add 15,15,5408add 15,15,3409410rotrwi 3,8,2411rotrwi 4,8,13412and 5,8,9413and 0,8,10414xor 3,3,4415rotrwi 4,4,9416xor 5,5,0417and 0,9,10418xor 3,3,4419add 11,11,15420xor 5,5,0421lwz 0,36(7)422add 15,15,3423add 15,15,5424425lwz 25,36(31)426rotrwi 3,11,6427rotrwi 4,11,11428and 5,12,11429xor 3,3,4430add 14,14,0431andc 0,6,11432rotrwi 4,4,14433or 5,5,0434add 14,14,25435xor 3,3,4436add 14,14,5437add 14,14,3438439rotrwi 3,15,2440rotrwi 4,15,13441and 5,15,8442and 0,15,9443xor 3,3,4444rotrwi 4,4,9445xor 5,5,0446and 0,8,9447xor 3,3,4448add 10,10,14449xor 5,5,0450lwz 0,40(7)451add 14,14,3452add 14,14,5453454lwz 26,40(31)455rotrwi 3,10,6456rotrwi 4,10,11457and 5,11,10458xor 3,3,4459add 6,6,0460andc 0,12,10461rotrwi 4,4,14462or 5,5,0463add 6,6,26464xor 3,3,4465add 6,6,5466add 6,6,3467468rotrwi 3,14,2469rotrwi 4,14,13470and 5,14,15471and 0,14,8472xor 3,3,4473rotrwi 4,4,9474xor 5,5,0475and 0,15,8476xor 3,3,4477add 9,9,6478xor 5,5,0479lwz 0,44(7)480add 6,6,3481add 6,6,5482483lwz 27,44(31)484rotrwi 3,9,6485rotrwi 4,9,11486and 5,10,9487xor 3,3,4488add 12,12,0489andc 0,11,9490rotrwi 4,4,14491or 5,5,0492add 12,12,27493xor 3,3,4494add 12,12,5495add 12,12,3496497rotrwi 3,6,2498rotrwi 4,6,13499and 5,6,14500and 0,6,15501xor 3,3,4502rotrwi 4,4,9503xor 5,5,0504and 0,14,15505xor 3,3,4506add 8,8,12507xor 5,5,0508lwz 0,48(7)509add 12,12,3510add 12,12,5511512lwz 28,48(31)513rotrwi 3,8,6514rotrwi 4,8,11515and 5,9,8516xor 3,3,4517add 11,11,0518andc 0,10,8519rotrwi 4,4,14520or 5,5,0521add 11,11,28522xor 3,3,4523add 11,11,5524add 11,11,3525526rotrwi 3,12,2527rotrwi 4,12,13528and 5,12,6529and 0,12,14530xor 3,3,4531rotrwi 4,4,9532xor 5,5,0533and 0,6,14534xor 3,3,4535add 15,15,11536xor 5,5,0537lwz 0,52(7)538add 11,11,3539add 11,11,5540541lwz 29,52(31)542rotrwi 3,15,6543rotrwi 4,15,11544and 5,8,15545xor 3,3,4546add 10,10,0547andc 0,9,15548rotrwi 4,4,14549or 5,5,0550add 10,10,29551xor 3,3,4552add 10,10,5553add 10,10,3554555rotrwi 3,11,2556rotrwi 4,11,13557and 5,11,12558and 0,11,6559xor 3,3,4560rotrwi 4,4,9561xor 5,5,0562and 0,12,6563xor 3,3,4564add 14,14,10565xor 5,5,0566lwz 0,56(7)567add 10,10,3568add 10,10,5569570lwz 30,56(31)571rotrwi 3,14,6572rotrwi 4,14,11573and 5,15,14574xor 3,3,4575add 9,9,0576andc 0,8,14577rotrwi 4,4,14578or 5,5,0579add 9,9,30580xor 3,3,4581add 9,9,5582add 9,9,3583584rotrwi 3,10,2585rotrwi 4,10,13586and 5,10,11587and 0,10,12588xor 3,3,4589rotrwi 4,4,9590xor 5,5,0591and 0,11,12592xor 3,3,4593add 6,6,9594xor 5,5,0595lwz 0,60(7)596add 9,9,3597add 9,9,5598599lwz 31,60(31)600rotrwi 3,6,6601rotrwi 4,6,11602and 5,14,6603xor 3,3,4604add 8,8,0605andc 0,15,6606rotrwi 4,4,14607or 5,5,0608add 8,8,31609xor 3,3,4610add 8,8,5611add 8,8,3612613rotrwi 3,9,2614rotrwi 4,9,13615and 5,9,10616and 0,9,11617xor 3,3,4618rotrwi 4,4,9619xor 5,5,0620and 0,10,11621xor 3,3,4622add 12,12,8623xor 5,5,0624add 8,8,3625add 8,8,5626627li 5,3628mtctr 5629.align 4630.Lrounds:631addi 7,7,64632rotrwi 3,17,7633rotrwi 4,17,18634rotrwi 5,30,17635rotrwi 0,30,19636xor 3,3,4637srwi 4,17,3638xor 5,5,0639srwi 0,30,10640add 16,16,25641xor 3,3,4642xor 5,5,0643lwz 0,0(7)644add 16,16,3645add 16,16,5646rotrwi 3,12,6647rotrwi 4,12,11648and 5,6,12649xor 3,3,4650add 15,15,0651andc 0,14,12652rotrwi 4,4,14653or 5,5,0654add 15,15,16655xor 3,3,4656add 15,15,5657add 15,15,3658659rotrwi 3,8,2660rotrwi 4,8,13661and 5,8,9662and 0,8,10663xor 3,3,4664rotrwi 4,4,9665xor 5,5,0666and 0,9,10667xor 3,3,4668add 11,11,15669xor 5,5,0670add 15,15,3671add 15,15,5672673rotrwi 3,18,7674rotrwi 4,18,18675rotrwi 5,31,17676rotrwi 0,31,19677xor 3,3,4678srwi 4,18,3679xor 5,5,0680srwi 0,31,10681add 17,17,26682xor 3,3,4683xor 5,5,0684lwz 0,4(7)685add 17,17,3686add 17,17,5687rotrwi 3,11,6688rotrwi 4,11,11689and 5,12,11690xor 3,3,4691add 14,14,0692andc 0,6,11693rotrwi 4,4,14694or 5,5,0695add 14,14,17696xor 3,3,4697add 14,14,5698add 14,14,3699700rotrwi 3,15,2701rotrwi 4,15,13702and 5,15,8703and 0,15,9704xor 3,3,4705rotrwi 4,4,9706xor 5,5,0707and 0,8,9708xor 3,3,4709add 10,10,14710xor 5,5,0711add 14,14,3712add 14,14,5713714rotrwi 3,19,7715rotrwi 4,19,18716rotrwi 5,16,17717rotrwi 0,16,19718xor 3,3,4719srwi 4,19,3720xor 5,5,0721srwi 0,16,10722add 18,18,27723xor 3,3,4724xor 5,5,0725lwz 0,8(7)726add 18,18,3727add 18,18,5728rotrwi 3,10,6729rotrwi 4,10,11730and 5,11,10731xor 3,3,4732add 6,6,0733andc 0,12,10734rotrwi 4,4,14735or 5,5,0736add 6,6,18737xor 3,3,4738add 6,6,5739add 6,6,3740741rotrwi 3,14,2742rotrwi 4,14,13743and 5,14,15744and 0,14,8745xor 3,3,4746rotrwi 4,4,9747xor 5,5,0748and 0,15,8749xor 3,3,4750add 9,9,6751xor 5,5,0752add 6,6,3753add 6,6,5754755rotrwi 3,20,7756rotrwi 4,20,18757rotrwi 5,17,17758rotrwi 0,17,19759xor 3,3,4760srwi 4,20,3761xor 5,5,0762srwi 0,17,10763add 19,19,28764xor 3,3,4765xor 5,5,0766lwz 0,12(7)767add 19,19,3768add 19,19,5769rotrwi 3,9,6770rotrwi 4,9,11771and 5,10,9772xor 3,3,4773add 12,12,0774andc 0,11,9775rotrwi 4,4,14776or 5,5,0777add 12,12,19778xor 3,3,4779add 12,12,5780add 12,12,3781782rotrwi 3,6,2783rotrwi 4,6,13784and 5,6,14785and 0,6,15786xor 3,3,4787rotrwi 4,4,9788xor 5,5,0789and 0,14,15790xor 3,3,4791add 8,8,12792xor 5,5,0793add 12,12,3794add 12,12,5795796rotrwi 3,21,7797rotrwi 4,21,18798rotrwi 5,18,17799rotrwi 0,18,19800xor 3,3,4801srwi 4,21,3802xor 5,5,0803srwi 0,18,10804add 20,20,29805xor 3,3,4806xor 5,5,0807lwz 0,16(7)808add 20,20,3809add 20,20,5810rotrwi 3,8,6811rotrwi 4,8,11812and 5,9,8813xor 3,3,4814add 11,11,0815andc 0,10,8816rotrwi 4,4,14817or 5,5,0818add 11,11,20819xor 3,3,4820add 11,11,5821add 11,11,3822823rotrwi 3,12,2824rotrwi 4,12,13825and 5,12,6826and 0,12,14827xor 3,3,4828rotrwi 4,4,9829xor 5,5,0830and 0,6,14831xor 3,3,4832add 15,15,11833xor 5,5,0834add 11,11,3835add 11,11,5836837rotrwi 3,22,7838rotrwi 4,22,18839rotrwi 5,19,17840rotrwi 0,19,19841xor 3,3,4842srwi 4,22,3843xor 5,5,0844srwi 0,19,10845add 21,21,30846xor 3,3,4847xor 5,5,0848lwz 0,20(7)849add 21,21,3850add 21,21,5851rotrwi 3,15,6852rotrwi 4,15,11853and 5,8,15854xor 3,3,4855add 10,10,0856andc 0,9,15857rotrwi 4,4,14858or 5,5,0859add 10,10,21860xor 3,3,4861add 10,10,5862add 10,10,3863864rotrwi 3,11,2865rotrwi 4,11,13866and 5,11,12867and 0,11,6868xor 3,3,4869rotrwi 4,4,9870xor 5,5,0871and 0,12,6872xor 3,3,4873add 14,14,10874xor 5,5,0875add 10,10,3876add 10,10,5877878rotrwi 3,23,7879rotrwi 4,23,18880rotrwi 5,20,17881rotrwi 0,20,19882xor 3,3,4883srwi 4,23,3884xor 5,5,0885srwi 0,20,10886add 22,22,31887xor 3,3,4888xor 5,5,0889lwz 0,24(7)890add 22,22,3891add 22,22,5892rotrwi 3,14,6893rotrwi 4,14,11894and 5,15,14895xor 3,3,4896add 9,9,0897andc 0,8,14898rotrwi 4,4,14899or 5,5,0900add 9,9,22901xor 3,3,4902add 9,9,5903add 9,9,3904905rotrwi 3,10,2906rotrwi 4,10,13907and 5,10,11908and 0,10,12909xor 3,3,4910rotrwi 4,4,9911xor 5,5,0912and 0,11,12913xor 3,3,4914add 6,6,9915xor 5,5,0916add 9,9,3917add 9,9,5918919rotrwi 3,24,7920rotrwi 4,24,18921rotrwi 5,21,17922rotrwi 0,21,19923xor 3,3,4924srwi 4,24,3925xor 5,5,0926srwi 0,21,10927add 23,23,16928xor 3,3,4929xor 5,5,0930lwz 0,28(7)931add 23,23,3932add 23,23,5933rotrwi 3,6,6934rotrwi 4,6,11935and 5,14,6936xor 3,3,4937add 8,8,0938andc 0,15,6939rotrwi 4,4,14940or 5,5,0941add 8,8,23942xor 3,3,4943add 8,8,5944add 8,8,3945946rotrwi 3,9,2947rotrwi 4,9,13948and 5,9,10949and 0,9,11950xor 3,3,4951rotrwi 4,4,9952xor 5,5,0953and 0,10,11954xor 3,3,4955add 12,12,8956xor 5,5,0957add 8,8,3958add 8,8,5959960rotrwi 3,25,7961rotrwi 4,25,18962rotrwi 5,22,17963rotrwi 0,22,19964xor 3,3,4965srwi 4,25,3966xor 5,5,0967srwi 0,22,10968add 24,24,17969xor 3,3,4970xor 5,5,0971lwz 0,32(7)972add 24,24,3973add 24,24,5974rotrwi 3,12,6975rotrwi 4,12,11976and 5,6,12977xor 3,3,4978add 15,15,0979andc 0,14,12980rotrwi 4,4,14981or 5,5,0982add 15,15,24983xor 3,3,4984add 15,15,5985add 15,15,3986987rotrwi 3,8,2988rotrwi 4,8,13989and 5,8,9990and 0,8,10991xor 3,3,4992rotrwi 4,4,9993xor 5,5,0994and 0,9,10995xor 3,3,4996add 11,11,15997xor 5,5,0998add 15,15,3999add 15,15,510001001rotrwi 3,26,71002rotrwi 4,26,181003rotrwi 5,23,171004rotrwi 0,23,191005xor 3,3,41006srwi 4,26,31007xor 5,5,01008srwi 0,23,101009add 25,25,181010xor 3,3,41011xor 5,5,01012lwz 0,36(7)1013add 25,25,31014add 25,25,51015rotrwi 3,11,61016rotrwi 4,11,111017and 5,12,111018xor 3,3,41019add 14,14,01020andc 0,6,111021rotrwi 4,4,141022or 5,5,01023add 14,14,251024xor 3,3,41025add 14,14,51026add 14,14,310271028rotrwi 3,15,21029rotrwi 4,15,131030and 5,15,81031and 0,15,91032xor 3,3,41033rotrwi 4,4,91034xor 5,5,01035and 0,8,91036xor 3,3,41037add 10,10,141038xor 5,5,01039add 14,14,31040add 14,14,510411042rotrwi 3,27,71043rotrwi 4,27,181044rotrwi 5,24,171045rotrwi 0,24,191046xor 3,3,41047srwi 4,27,31048xor 5,5,01049srwi 0,24,101050add 26,26,191051xor 3,3,41052xor 5,5,01053lwz 0,40(7)1054add 26,26,31055add 26,26,51056rotrwi 3,10,61057rotrwi 4,10,111058and 5,11,101059xor 3,3,41060add 6,6,01061andc 0,12,101062rotrwi 4,4,141063or 5,5,01064add 6,6,261065xor 3,3,41066add 6,6,51067add 6,6,310681069rotrwi 3,14,21070rotrwi 4,14,131071and 5,14,151072and 0,14,81073xor 3,3,41074rotrwi 4,4,91075xor 5,5,01076and 0,15,81077xor 3,3,41078add 9,9,61079xor 5,5,01080add 6,6,31081add 6,6,510821083rotrwi 3,28,71084rotrwi 4,28,181085rotrwi 5,25,171086rotrwi 0,25,191087xor 3,3,41088srwi 4,28,31089xor 5,5,01090srwi 0,25,101091add 27,27,201092xor 3,3,41093xor 5,5,01094lwz 0,44(7)1095add 27,27,31096add 27,27,51097rotrwi 3,9,61098rotrwi 4,9,111099and 5,10,91100xor 3,3,41101add 12,12,01102andc 0,11,91103rotrwi 4,4,141104or 5,5,01105add 12,12,271106xor 3,3,41107add 12,12,51108add 12,12,311091110rotrwi 3,6,21111rotrwi 4,6,131112and 5,6,141113and 0,6,151114xor 3,3,41115rotrwi 4,4,91116xor 5,5,01117and 0,14,151118xor 3,3,41119add 8,8,121120xor 5,5,01121add 12,12,31122add 12,12,511231124rotrwi 3,29,71125rotrwi 4,29,181126rotrwi 5,26,171127rotrwi 0,26,191128xor 3,3,41129srwi 4,29,31130xor 5,5,01131srwi 0,26,101132add 28,28,211133xor 3,3,41134xor 5,5,01135lwz 0,48(7)1136add 28,28,31137add 28,28,51138rotrwi 3,8,61139rotrwi 4,8,111140and 5,9,81141xor 3,3,41142add 11,11,01143andc 0,10,81144rotrwi 4,4,141145or 5,5,01146add 11,11,281147xor 3,3,41148add 11,11,51149add 11,11,311501151rotrwi 3,12,21152rotrwi 4,12,131153and 5,12,61154and 0,12,141155xor 3,3,41156rotrwi 4,4,91157xor 5,5,01158and 0,6,141159xor 3,3,41160add 15,15,111161xor 5,5,01162add 11,11,31163add 11,11,511641165rotrwi 3,30,71166rotrwi 4,30,181167rotrwi 5,27,171168rotrwi 0,27,191169xor 3,3,41170srwi 4,30,31171xor 5,5,01172srwi 0,27,101173add 29,29,221174xor 3,3,41175xor 5,5,01176lwz 0,52(7)1177add 29,29,31178add 29,29,51179rotrwi 3,15,61180rotrwi 4,15,111181and 5,8,151182xor 3,3,41183add 10,10,01184andc 0,9,151185rotrwi 4,4,141186or 5,5,01187add 10,10,291188xor 3,3,41189add 10,10,51190add 10,10,311911192rotrwi 3,11,21193rotrwi 4,11,131194and 5,11,121195and 0,11,61196xor 3,3,41197rotrwi 4,4,91198xor 5,5,01199and 0,12,61200xor 3,3,41201add 14,14,101202xor 5,5,01203add 10,10,31204add 10,10,512051206rotrwi 3,31,71207rotrwi 4,31,181208rotrwi 5,28,171209rotrwi 0,28,191210xor 3,3,41211srwi 4,31,31212xor 5,5,01213srwi 0,28,101214add 30,30,231215xor 3,3,41216xor 5,5,01217lwz 0,56(7)1218add 30,30,31219add 30,30,51220rotrwi 3,14,61221rotrwi 4,14,111222and 5,15,141223xor 3,3,41224add 9,9,01225andc 0,8,141226rotrwi 4,4,141227or 5,5,01228add 9,9,301229xor 3,3,41230add 9,9,51231add 9,9,312321233rotrwi 3,10,21234rotrwi 4,10,131235and 5,10,111236and 0,10,121237xor 3,3,41238rotrwi 4,4,91239xor 5,5,01240and 0,11,121241xor 3,3,41242add 6,6,91243xor 5,5,01244add 9,9,31245add 9,9,512461247rotrwi 3,16,71248rotrwi 4,16,181249rotrwi 5,29,171250rotrwi 0,29,191251xor 3,3,41252srwi 4,16,31253xor 5,5,01254srwi 0,29,101255add 31,31,241256xor 3,3,41257xor 5,5,01258lwz 0,60(7)1259add 31,31,31260add 31,31,51261rotrwi 3,6,61262rotrwi 4,6,111263and 5,14,61264xor 3,3,41265add 8,8,01266andc 0,15,61267rotrwi 4,4,141268or 5,5,01269add 8,8,311270xor 3,3,41271add 8,8,51272add 8,8,312731274rotrwi 3,9,21275rotrwi 4,9,131276and 5,9,101277and 0,9,111278xor 3,3,41279rotrwi 4,4,91280xor 5,5,01281and 0,10,111282xor 3,3,41283add 12,12,81284xor 5,5,01285add 8,8,31286add 8,8,512871288bdnz .Lrounds12891290ld 3,144(1)1291ld 31,136(1)1292ld 5,128(1)1293subi 7,7,19212941295lwz 16,0(3)1296lwz 17,4(3)1297lwz 18,8(3)1298lwz 19,12(3)1299lwz 20,16(3)1300lwz 21,20(3)1301lwz 22,24(3)1302addi 31,31,641303lwz 23,28(3)1304add 8,8,161305add 9,9,171306std 31,136(1)1307add 10,10,181308stw 8,0(3)1309add 11,11,191310stw 9,4(3)1311add 12,12,201312stw 10,8(3)1313add 6,6,211314stw 11,12(3)1315add 14,14,221316stw 12,16(3)1317add 15,15,231318stw 6,20(3)1319stw 14,24(3)1320cmpld 31,51321stw 15,28(3)1322bne .Lsha2_block_private1323blr1324.long 01325.byte 0,12,0x14,0,0,0,0,01326#if (!defined(_CALL_ELF) || _CALL_ELF == 1)1327.size .zfs_sha256_ppc,.-.zfs_sha256_ppc1328.size zfs_sha256_ppc,.-.zfs_sha256_ppc1329#else1330.size zfs_sha256_ppc,.-zfs_sha256_ppc1331#endif1332.align 61333.LPICmeup:1334mflr 01335bcl 20,31,$+41336mflr 71337addi 7,7,561338mtlr 01339blr1340.long 01341.byte 0,12,0x14,0,0,0,0,01342.space 281343.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba51344.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed51345.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc31346.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf1741347.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc1348.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da1349.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc71350.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x142929671351.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d131352.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c851353.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a31354.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa0701355.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb51356.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff31357.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc702081358.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f213591360#elif (defined(__PPC64__) && defined(__LITTLE_ENDIAN__))13611362.abiversion 21363.text13641365.globl zfs_sha256_ppc1366.type zfs_sha256_ppc,@function1367.align 61368zfs_sha256_ppc:1369.localentry zfs_sha256_ppc,013701371stdu 1,-320(1)1372mflr 01373sldi 5,5,613741375std 3,144(1)13761377std 14,176(1)1378std 15,184(1)1379std 16,192(1)1380std 17,200(1)1381std 18,208(1)1382std 19,216(1)1383std 20,224(1)1384std 21,232(1)1385std 22,240(1)1386std 23,248(1)1387std 24,256(1)1388std 25,264(1)1389std 26,272(1)1390std 27,280(1)1391std 28,288(1)1392std 29,296(1)1393std 30,304(1)1394std 31,312(1)1395std 0,336(1)1396lwz 8,0(3)1397mr 31,41398lwz 9,4(3)1399lwz 10,8(3)1400lwz 11,12(3)1401lwz 12,16(3)1402lwz 6,20(3)1403lwz 14,24(3)1404lwz 15,28(3)1405bl .LPICmeup1406.LPICedup:1407andi. 0,31,31408bne .Lunaligned1409.Laligned:1410add 5,31,51411std 5,128(1)1412std 31,136(1)1413bl .Lsha2_block_private1414b .Ldone14151416.align 41417.Lunaligned:1418subfic 0,31,40961419andi. 0,0,40321420beq .Lcross_page1421cmpld 5,01422ble .Laligned1423subfc 5,0,51424add 0,31,01425std 5,120(1)1426std 0,128(1)1427std 31,136(1)1428bl .Lsha2_block_private14291430ld 5,120(1)1431.Lcross_page:1432li 0,161433mtctr 01434addi 20,1,481435.Lmemcpy:1436lbz 16,0(31)1437lbz 17,1(31)1438lbz 18,2(31)1439lbz 19,3(31)1440addi 31,31,41441stb 16,0(20)1442stb 17,1(20)1443stb 18,2(20)1444stb 19,3(20)1445addi 20,20,41446bdnz .Lmemcpy1447std 31,112(1)1448addi 0,1,1121449addi 31,1,481450std 5,120(1)1451std 0,128(1)1452std 31,136(1)1453bl .Lsha2_block_private1454ld 31,112(1)1455ld 5,120(1)1456addic. 5,5,-641457bne .Lunaligned14581459.Ldone:1460ld 0,336(1)1461ld 14,176(1)1462ld 15,184(1)1463ld 16,192(1)1464ld 17,200(1)1465ld 18,208(1)1466ld 19,216(1)1467ld 20,224(1)1468ld 21,232(1)1469ld 22,240(1)1470ld 23,248(1)1471ld 24,256(1)1472ld 25,264(1)1473ld 26,272(1)1474ld 27,280(1)1475ld 28,288(1)1476ld 29,296(1)1477ld 30,304(1)1478ld 31,312(1)1479mtlr 01480addi 1,1,3201481blr1482.long 01483.byte 0,12,4,1,0x80,18,3,01484.long 01485.align 41486.Lsha2_block_private:1487lwz 0,0(7)1488lwz 3,0(31)1489rotlwi 16,3,81490rlwimi 16,3,24,0,71491rlwimi 16,3,24,16,231492rotrwi 3,12,61493rotrwi 4,12,111494and 5,6,121495xor 3,3,41496add 15,15,01497andc 0,14,121498rotrwi 4,4,141499or 5,5,01500add 15,15,161501xor 3,3,41502add 15,15,51503add 15,15,315041505rotrwi 3,8,21506rotrwi 4,8,131507and 5,8,91508and 0,8,101509xor 3,3,41510rotrwi 4,4,91511xor 5,5,01512and 0,9,101513xor 3,3,41514add 11,11,151515xor 5,5,01516lwz 0,4(7)1517add 15,15,31518add 15,15,515191520lwz 3,4(31)1521rotlwi 17,3,81522rlwimi 17,3,24,0,71523rlwimi 17,3,24,16,231524rotrwi 3,11,61525rotrwi 4,11,111526and 5,12,111527xor 3,3,41528add 14,14,01529andc 0,6,111530rotrwi 4,4,141531or 5,5,01532add 14,14,171533xor 3,3,41534add 14,14,51535add 14,14,315361537rotrwi 3,15,21538rotrwi 4,15,131539and 5,15,81540and 0,15,91541xor 3,3,41542rotrwi 4,4,91543xor 5,5,01544and 0,8,91545xor 3,3,41546add 10,10,141547xor 5,5,01548lwz 0,8(7)1549add 14,14,31550add 14,14,515511552lwz 3,8(31)1553rotlwi 18,3,81554rlwimi 18,3,24,0,71555rlwimi 18,3,24,16,231556rotrwi 3,10,61557rotrwi 4,10,111558and 5,11,101559xor 3,3,41560add 6,6,01561andc 0,12,101562rotrwi 4,4,141563or 5,5,01564add 6,6,181565xor 3,3,41566add 6,6,51567add 6,6,315681569rotrwi 3,14,21570rotrwi 4,14,131571and 5,14,151572and 0,14,81573xor 3,3,41574rotrwi 4,4,91575xor 5,5,01576and 0,15,81577xor 3,3,41578add 9,9,61579xor 5,5,01580lwz 0,12(7)1581add 6,6,31582add 6,6,515831584lwz 3,12(31)1585rotlwi 19,3,81586rlwimi 19,3,24,0,71587rlwimi 19,3,24,16,231588rotrwi 3,9,61589rotrwi 4,9,111590and 5,10,91591xor 3,3,41592add 12,12,01593andc 0,11,91594rotrwi 4,4,141595or 5,5,01596add 12,12,191597xor 3,3,41598add 12,12,51599add 12,12,316001601rotrwi 3,6,21602rotrwi 4,6,131603and 5,6,141604and 0,6,151605xor 3,3,41606rotrwi 4,4,91607xor 5,5,01608and 0,14,151609xor 3,3,41610add 8,8,121611xor 5,5,01612lwz 0,16(7)1613add 12,12,31614add 12,12,516151616lwz 3,16(31)1617rotlwi 20,3,81618rlwimi 20,3,24,0,71619rlwimi 20,3,24,16,231620rotrwi 3,8,61621rotrwi 4,8,111622and 5,9,81623xor 3,3,41624add 11,11,01625andc 0,10,81626rotrwi 4,4,141627or 5,5,01628add 11,11,201629xor 3,3,41630add 11,11,51631add 11,11,316321633rotrwi 3,12,21634rotrwi 4,12,131635and 5,12,61636and 0,12,141637xor 3,3,41638rotrwi 4,4,91639xor 5,5,01640and 0,6,141641xor 3,3,41642add 15,15,111643xor 5,5,01644lwz 0,20(7)1645add 11,11,31646add 11,11,516471648lwz 3,20(31)1649rotlwi 21,3,81650rlwimi 21,3,24,0,71651rlwimi 21,3,24,16,231652rotrwi 3,15,61653rotrwi 4,15,111654and 5,8,151655xor 3,3,41656add 10,10,01657andc 0,9,151658rotrwi 4,4,141659or 5,5,01660add 10,10,211661xor 3,3,41662add 10,10,51663add 10,10,316641665rotrwi 3,11,21666rotrwi 4,11,131667and 5,11,121668and 0,11,61669xor 3,3,41670rotrwi 4,4,91671xor 5,5,01672and 0,12,61673xor 3,3,41674add 14,14,101675xor 5,5,01676lwz 0,24(7)1677add 10,10,31678add 10,10,516791680lwz 3,24(31)1681rotlwi 22,3,81682rlwimi 22,3,24,0,71683rlwimi 22,3,24,16,231684rotrwi 3,14,61685rotrwi 4,14,111686and 5,15,141687xor 3,3,41688add 9,9,01689andc 0,8,141690rotrwi 4,4,141691or 5,5,01692add 9,9,221693xor 3,3,41694add 9,9,51695add 9,9,316961697rotrwi 3,10,21698rotrwi 4,10,131699and 5,10,111700and 0,10,121701xor 3,3,41702rotrwi 4,4,91703xor 5,5,01704and 0,11,121705xor 3,3,41706add 6,6,91707xor 5,5,01708lwz 0,28(7)1709add 9,9,31710add 9,9,517111712lwz 3,28(31)1713rotlwi 23,3,81714rlwimi 23,3,24,0,71715rlwimi 23,3,24,16,231716rotrwi 3,6,61717rotrwi 4,6,111718and 5,14,61719xor 3,3,41720add 8,8,01721andc 0,15,61722rotrwi 4,4,141723or 5,5,01724add 8,8,231725xor 3,3,41726add 8,8,51727add 8,8,317281729rotrwi 3,9,21730rotrwi 4,9,131731and 5,9,101732and 0,9,111733xor 3,3,41734rotrwi 4,4,91735xor 5,5,01736and 0,10,111737xor 3,3,41738add 12,12,81739xor 5,5,01740lwz 0,32(7)1741add 8,8,31742add 8,8,517431744lwz 3,32(31)1745rotlwi 24,3,81746rlwimi 24,3,24,0,71747rlwimi 24,3,24,16,231748rotrwi 3,12,61749rotrwi 4,12,111750and 5,6,121751xor 3,3,41752add 15,15,01753andc 0,14,121754rotrwi 4,4,141755or 5,5,01756add 15,15,241757xor 3,3,41758add 15,15,51759add 15,15,317601761rotrwi 3,8,21762rotrwi 4,8,131763and 5,8,91764and 0,8,101765xor 3,3,41766rotrwi 4,4,91767xor 5,5,01768and 0,9,101769xor 3,3,41770add 11,11,151771xor 5,5,01772lwz 0,36(7)1773add 15,15,31774add 15,15,517751776lwz 3,36(31)1777rotlwi 25,3,81778rlwimi 25,3,24,0,71779rlwimi 25,3,24,16,231780rotrwi 3,11,61781rotrwi 4,11,111782and 5,12,111783xor 3,3,41784add 14,14,01785andc 0,6,111786rotrwi 4,4,141787or 5,5,01788add 14,14,251789xor 3,3,41790add 14,14,51791add 14,14,317921793rotrwi 3,15,21794rotrwi 4,15,131795and 5,15,81796and 0,15,91797xor 3,3,41798rotrwi 4,4,91799xor 5,5,01800and 0,8,91801xor 3,3,41802add 10,10,141803xor 5,5,01804lwz 0,40(7)1805add 14,14,31806add 14,14,518071808lwz 3,40(31)1809rotlwi 26,3,81810rlwimi 26,3,24,0,71811rlwimi 26,3,24,16,231812rotrwi 3,10,61813rotrwi 4,10,111814and 5,11,101815xor 3,3,41816add 6,6,01817andc 0,12,101818rotrwi 4,4,141819or 5,5,01820add 6,6,261821xor 3,3,41822add 6,6,51823add 6,6,318241825rotrwi 3,14,21826rotrwi 4,14,131827and 5,14,151828and 0,14,81829xor 3,3,41830rotrwi 4,4,91831xor 5,5,01832and 0,15,81833xor 3,3,41834add 9,9,61835xor 5,5,01836lwz 0,44(7)1837add 6,6,31838add 6,6,518391840lwz 3,44(31)1841rotlwi 27,3,81842rlwimi 27,3,24,0,71843rlwimi 27,3,24,16,231844rotrwi 3,9,61845rotrwi 4,9,111846and 5,10,91847xor 3,3,41848add 12,12,01849andc 0,11,91850rotrwi 4,4,141851or 5,5,01852add 12,12,271853xor 3,3,41854add 12,12,51855add 12,12,318561857rotrwi 3,6,21858rotrwi 4,6,131859and 5,6,141860and 0,6,151861xor 3,3,41862rotrwi 4,4,91863xor 5,5,01864and 0,14,151865xor 3,3,41866add 8,8,121867xor 5,5,01868lwz 0,48(7)1869add 12,12,31870add 12,12,518711872lwz 3,48(31)1873rotlwi 28,3,81874rlwimi 28,3,24,0,71875rlwimi 28,3,24,16,231876rotrwi 3,8,61877rotrwi 4,8,111878and 5,9,81879xor 3,3,41880add 11,11,01881andc 0,10,81882rotrwi 4,4,141883or 5,5,01884add 11,11,281885xor 3,3,41886add 11,11,51887add 11,11,318881889rotrwi 3,12,21890rotrwi 4,12,131891and 5,12,61892and 0,12,141893xor 3,3,41894rotrwi 4,4,91895xor 5,5,01896and 0,6,141897xor 3,3,41898add 15,15,111899xor 5,5,01900lwz 0,52(7)1901add 11,11,31902add 11,11,519031904lwz 3,52(31)1905rotlwi 29,3,81906rlwimi 29,3,24,0,71907rlwimi 29,3,24,16,231908rotrwi 3,15,61909rotrwi 4,15,111910and 5,8,151911xor 3,3,41912add 10,10,01913andc 0,9,151914rotrwi 4,4,141915or 5,5,01916add 10,10,291917xor 3,3,41918add 10,10,51919add 10,10,319201921rotrwi 3,11,21922rotrwi 4,11,131923and 5,11,121924and 0,11,61925xor 3,3,41926rotrwi 4,4,91927xor 5,5,01928and 0,12,61929xor 3,3,41930add 14,14,101931xor 5,5,01932lwz 0,56(7)1933add 10,10,31934add 10,10,519351936lwz 3,56(31)1937rotlwi 30,3,81938rlwimi 30,3,24,0,71939rlwimi 30,3,24,16,231940rotrwi 3,14,61941rotrwi 4,14,111942and 5,15,141943xor 3,3,41944add 9,9,01945andc 0,8,141946rotrwi 4,4,141947or 5,5,01948add 9,9,301949xor 3,3,41950add 9,9,51951add 9,9,319521953rotrwi 3,10,21954rotrwi 4,10,131955and 5,10,111956and 0,10,121957xor 3,3,41958rotrwi 4,4,91959xor 5,5,01960and 0,11,121961xor 3,3,41962add 6,6,91963xor 5,5,01964lwz 0,60(7)1965add 9,9,31966add 9,9,519671968lwz 3,60(31)1969rotlwi 31,3,81970rlwimi 31,3,24,0,71971rlwimi 31,3,24,16,231972rotrwi 3,6,61973rotrwi 4,6,111974and 5,14,61975xor 3,3,41976add 8,8,01977andc 0,15,61978rotrwi 4,4,141979or 5,5,01980add 8,8,311981xor 3,3,41982add 8,8,51983add 8,8,319841985rotrwi 3,9,21986rotrwi 4,9,131987and 5,9,101988and 0,9,111989xor 3,3,41990rotrwi 4,4,91991xor 5,5,01992and 0,10,111993xor 3,3,41994add 12,12,81995xor 5,5,01996add 8,8,31997add 8,8,519981999li 5,32000mtctr 52001.align 42002.Lrounds:2003addi 7,7,642004rotrwi 3,17,72005rotrwi 4,17,182006rotrwi 5,30,172007rotrwi 0,30,192008xor 3,3,42009srwi 4,17,32010xor 5,5,02011srwi 0,30,102012add 16,16,252013xor 3,3,42014xor 5,5,02015lwz 0,0(7)2016add 16,16,32017add 16,16,52018rotrwi 3,12,62019rotrwi 4,12,112020and 5,6,122021xor 3,3,42022add 15,15,02023andc 0,14,122024rotrwi 4,4,142025or 5,5,02026add 15,15,162027xor 3,3,42028add 15,15,52029add 15,15,320302031rotrwi 3,8,22032rotrwi 4,8,132033and 5,8,92034and 0,8,102035xor 3,3,42036rotrwi 4,4,92037xor 5,5,02038and 0,9,102039xor 3,3,42040add 11,11,152041xor 5,5,02042add 15,15,32043add 15,15,520442045rotrwi 3,18,72046rotrwi 4,18,182047rotrwi 5,31,172048rotrwi 0,31,192049xor 3,3,42050srwi 4,18,32051xor 5,5,02052srwi 0,31,102053add 17,17,262054xor 3,3,42055xor 5,5,02056lwz 0,4(7)2057add 17,17,32058add 17,17,52059rotrwi 3,11,62060rotrwi 4,11,112061and 5,12,112062xor 3,3,42063add 14,14,02064andc 0,6,112065rotrwi 4,4,142066or 5,5,02067add 14,14,172068xor 3,3,42069add 14,14,52070add 14,14,320712072rotrwi 3,15,22073rotrwi 4,15,132074and 5,15,82075and 0,15,92076xor 3,3,42077rotrwi 4,4,92078xor 5,5,02079and 0,8,92080xor 3,3,42081add 10,10,142082xor 5,5,02083add 14,14,32084add 14,14,520852086rotrwi 3,19,72087rotrwi 4,19,182088rotrwi 5,16,172089rotrwi 0,16,192090xor 3,3,42091srwi 4,19,32092xor 5,5,02093srwi 0,16,102094add 18,18,272095xor 3,3,42096xor 5,5,02097lwz 0,8(7)2098add 18,18,32099add 18,18,52100rotrwi 3,10,62101rotrwi 4,10,112102and 5,11,102103xor 3,3,42104add 6,6,02105andc 0,12,102106rotrwi 4,4,142107or 5,5,02108add 6,6,182109xor 3,3,42110add 6,6,52111add 6,6,321122113rotrwi 3,14,22114rotrwi 4,14,132115and 5,14,152116and 0,14,82117xor 3,3,42118rotrwi 4,4,92119xor 5,5,02120and 0,15,82121xor 3,3,42122add 9,9,62123xor 5,5,02124add 6,6,32125add 6,6,521262127rotrwi 3,20,72128rotrwi 4,20,182129rotrwi 5,17,172130rotrwi 0,17,192131xor 3,3,42132srwi 4,20,32133xor 5,5,02134srwi 0,17,102135add 19,19,282136xor 3,3,42137xor 5,5,02138lwz 0,12(7)2139add 19,19,32140add 19,19,52141rotrwi 3,9,62142rotrwi 4,9,112143and 5,10,92144xor 3,3,42145add 12,12,02146andc 0,11,92147rotrwi 4,4,142148or 5,5,02149add 12,12,192150xor 3,3,42151add 12,12,52152add 12,12,321532154rotrwi 3,6,22155rotrwi 4,6,132156and 5,6,142157and 0,6,152158xor 3,3,42159rotrwi 4,4,92160xor 5,5,02161and 0,14,152162xor 3,3,42163add 8,8,122164xor 5,5,02165add 12,12,32166add 12,12,521672168rotrwi 3,21,72169rotrwi 4,21,182170rotrwi 5,18,172171rotrwi 0,18,192172xor 3,3,42173srwi 4,21,32174xor 5,5,02175srwi 0,18,102176add 20,20,292177xor 3,3,42178xor 5,5,02179lwz 0,16(7)2180add 20,20,32181add 20,20,52182rotrwi 3,8,62183rotrwi 4,8,112184and 5,9,82185xor 3,3,42186add 11,11,02187andc 0,10,82188rotrwi 4,4,142189or 5,5,02190add 11,11,202191xor 3,3,42192add 11,11,52193add 11,11,321942195rotrwi 3,12,22196rotrwi 4,12,132197and 5,12,62198and 0,12,142199xor 3,3,42200rotrwi 4,4,92201xor 5,5,02202and 0,6,142203xor 3,3,42204add 15,15,112205xor 5,5,02206add 11,11,32207add 11,11,522082209rotrwi 3,22,72210rotrwi 4,22,182211rotrwi 5,19,172212rotrwi 0,19,192213xor 3,3,42214srwi 4,22,32215xor 5,5,02216srwi 0,19,102217add 21,21,302218xor 3,3,42219xor 5,5,02220lwz 0,20(7)2221add 21,21,32222add 21,21,52223rotrwi 3,15,62224rotrwi 4,15,112225and 5,8,152226xor 3,3,42227add 10,10,02228andc 0,9,152229rotrwi 4,4,142230or 5,5,02231add 10,10,212232xor 3,3,42233add 10,10,52234add 10,10,322352236rotrwi 3,11,22237rotrwi 4,11,132238and 5,11,122239and 0,11,62240xor 3,3,42241rotrwi 4,4,92242xor 5,5,02243and 0,12,62244xor 3,3,42245add 14,14,102246xor 5,5,02247add 10,10,32248add 10,10,522492250rotrwi 3,23,72251rotrwi 4,23,182252rotrwi 5,20,172253rotrwi 0,20,192254xor 3,3,42255srwi 4,23,32256xor 5,5,02257srwi 0,20,102258add 22,22,312259xor 3,3,42260xor 5,5,02261lwz 0,24(7)2262add 22,22,32263add 22,22,52264rotrwi 3,14,62265rotrwi 4,14,112266and 5,15,142267xor 3,3,42268add 9,9,02269andc 0,8,142270rotrwi 4,4,142271or 5,5,02272add 9,9,222273xor 3,3,42274add 9,9,52275add 9,9,322762277rotrwi 3,10,22278rotrwi 4,10,132279and 5,10,112280and 0,10,122281xor 3,3,42282rotrwi 4,4,92283xor 5,5,02284and 0,11,122285xor 3,3,42286add 6,6,92287xor 5,5,02288add 9,9,32289add 9,9,522902291rotrwi 3,24,72292rotrwi 4,24,182293rotrwi 5,21,172294rotrwi 0,21,192295xor 3,3,42296srwi 4,24,32297xor 5,5,02298srwi 0,21,102299add 23,23,162300xor 3,3,42301xor 5,5,02302lwz 0,28(7)2303add 23,23,32304add 23,23,52305rotrwi 3,6,62306rotrwi 4,6,112307and 5,14,62308xor 3,3,42309add 8,8,02310andc 0,15,62311rotrwi 4,4,142312or 5,5,02313add 8,8,232314xor 3,3,42315add 8,8,52316add 8,8,323172318rotrwi 3,9,22319rotrwi 4,9,132320and 5,9,102321and 0,9,112322xor 3,3,42323rotrwi 4,4,92324xor 5,5,02325and 0,10,112326xor 3,3,42327add 12,12,82328xor 5,5,02329add 8,8,32330add 8,8,523312332rotrwi 3,25,72333rotrwi 4,25,182334rotrwi 5,22,172335rotrwi 0,22,192336xor 3,3,42337srwi 4,25,32338xor 5,5,02339srwi 0,22,102340add 24,24,172341xor 3,3,42342xor 5,5,02343lwz 0,32(7)2344add 24,24,32345add 24,24,52346rotrwi 3,12,62347rotrwi 4,12,112348and 5,6,122349xor 3,3,42350add 15,15,02351andc 0,14,122352rotrwi 4,4,142353or 5,5,02354add 15,15,242355xor 3,3,42356add 15,15,52357add 15,15,323582359rotrwi 3,8,22360rotrwi 4,8,132361and 5,8,92362and 0,8,102363xor 3,3,42364rotrwi 4,4,92365xor 5,5,02366and 0,9,102367xor 3,3,42368add 11,11,152369xor 5,5,02370add 15,15,32371add 15,15,523722373rotrwi 3,26,72374rotrwi 4,26,182375rotrwi 5,23,172376rotrwi 0,23,192377xor 3,3,42378srwi 4,26,32379xor 5,5,02380srwi 0,23,102381add 25,25,182382xor 3,3,42383xor 5,5,02384lwz 0,36(7)2385add 25,25,32386add 25,25,52387rotrwi 3,11,62388rotrwi 4,11,112389and 5,12,112390xor 3,3,42391add 14,14,02392andc 0,6,112393rotrwi 4,4,142394or 5,5,02395add 14,14,252396xor 3,3,42397add 14,14,52398add 14,14,323992400rotrwi 3,15,22401rotrwi 4,15,132402and 5,15,82403and 0,15,92404xor 3,3,42405rotrwi 4,4,92406xor 5,5,02407and 0,8,92408xor 3,3,42409add 10,10,142410xor 5,5,02411add 14,14,32412add 14,14,524132414rotrwi 3,27,72415rotrwi 4,27,182416rotrwi 5,24,172417rotrwi 0,24,192418xor 3,3,42419srwi 4,27,32420xor 5,5,02421srwi 0,24,102422add 26,26,192423xor 3,3,42424xor 5,5,02425lwz 0,40(7)2426add 26,26,32427add 26,26,52428rotrwi 3,10,62429rotrwi 4,10,112430and 5,11,102431xor 3,3,42432add 6,6,02433andc 0,12,102434rotrwi 4,4,142435or 5,5,02436add 6,6,262437xor 3,3,42438add 6,6,52439add 6,6,324402441rotrwi 3,14,22442rotrwi 4,14,132443and 5,14,152444and 0,14,82445xor 3,3,42446rotrwi 4,4,92447xor 5,5,02448and 0,15,82449xor 3,3,42450add 9,9,62451xor 5,5,02452add 6,6,32453add 6,6,524542455rotrwi 3,28,72456rotrwi 4,28,182457rotrwi 5,25,172458rotrwi 0,25,192459xor 3,3,42460srwi 4,28,32461xor 5,5,02462srwi 0,25,102463add 27,27,202464xor 3,3,42465xor 5,5,02466lwz 0,44(7)2467add 27,27,32468add 27,27,52469rotrwi 3,9,62470rotrwi 4,9,112471and 5,10,92472xor 3,3,42473add 12,12,02474andc 0,11,92475rotrwi 4,4,142476or 5,5,02477add 12,12,272478xor 3,3,42479add 12,12,52480add 12,12,324812482rotrwi 3,6,22483rotrwi 4,6,132484and 5,6,142485and 0,6,152486xor 3,3,42487rotrwi 4,4,92488xor 5,5,02489and 0,14,152490xor 3,3,42491add 8,8,122492xor 5,5,02493add 12,12,32494add 12,12,524952496rotrwi 3,29,72497rotrwi 4,29,182498rotrwi 5,26,172499rotrwi 0,26,192500xor 3,3,42501srwi 4,29,32502xor 5,5,02503srwi 0,26,102504add 28,28,212505xor 3,3,42506xor 5,5,02507lwz 0,48(7)2508add 28,28,32509add 28,28,52510rotrwi 3,8,62511rotrwi 4,8,112512and 5,9,82513xor 3,3,42514add 11,11,02515andc 0,10,82516rotrwi 4,4,142517or 5,5,02518add 11,11,282519xor 3,3,42520add 11,11,52521add 11,11,325222523rotrwi 3,12,22524rotrwi 4,12,132525and 5,12,62526and 0,12,142527xor 3,3,42528rotrwi 4,4,92529xor 5,5,02530and 0,6,142531xor 3,3,42532add 15,15,112533xor 5,5,02534add 11,11,32535add 11,11,525362537rotrwi 3,30,72538rotrwi 4,30,182539rotrwi 5,27,172540rotrwi 0,27,192541xor 3,3,42542srwi 4,30,32543xor 5,5,02544srwi 0,27,102545add 29,29,222546xor 3,3,42547xor 5,5,02548lwz 0,52(7)2549add 29,29,32550add 29,29,52551rotrwi 3,15,62552rotrwi 4,15,112553and 5,8,152554xor 3,3,42555add 10,10,02556andc 0,9,152557rotrwi 4,4,142558or 5,5,02559add 10,10,292560xor 3,3,42561add 10,10,52562add 10,10,325632564rotrwi 3,11,22565rotrwi 4,11,132566and 5,11,122567and 0,11,62568xor 3,3,42569rotrwi 4,4,92570xor 5,5,02571and 0,12,62572xor 3,3,42573add 14,14,102574xor 5,5,02575add 10,10,32576add 10,10,525772578rotrwi 3,31,72579rotrwi 4,31,182580rotrwi 5,28,172581rotrwi 0,28,192582xor 3,3,42583srwi 4,31,32584xor 5,5,02585srwi 0,28,102586add 30,30,232587xor 3,3,42588xor 5,5,02589lwz 0,56(7)2590add 30,30,32591add 30,30,52592rotrwi 3,14,62593rotrwi 4,14,112594and 5,15,142595xor 3,3,42596add 9,9,02597andc 0,8,142598rotrwi 4,4,142599or 5,5,02600add 9,9,302601xor 3,3,42602add 9,9,52603add 9,9,326042605rotrwi 3,10,22606rotrwi 4,10,132607and 5,10,112608and 0,10,122609xor 3,3,42610rotrwi 4,4,92611xor 5,5,02612and 0,11,122613xor 3,3,42614add 6,6,92615xor 5,5,02616add 9,9,32617add 9,9,526182619rotrwi 3,16,72620rotrwi 4,16,182621rotrwi 5,29,172622rotrwi 0,29,192623xor 3,3,42624srwi 4,16,32625xor 5,5,02626srwi 0,29,102627add 31,31,242628xor 3,3,42629xor 5,5,02630lwz 0,60(7)2631add 31,31,32632add 31,31,52633rotrwi 3,6,62634rotrwi 4,6,112635and 5,14,62636xor 3,3,42637add 8,8,02638andc 0,15,62639rotrwi 4,4,142640or 5,5,02641add 8,8,312642xor 3,3,42643add 8,8,52644add 8,8,326452646rotrwi 3,9,22647rotrwi 4,9,132648and 5,9,102649and 0,9,112650xor 3,3,42651rotrwi 4,4,92652xor 5,5,02653and 0,10,112654xor 3,3,42655add 12,12,82656xor 5,5,02657add 8,8,32658add 8,8,526592660bdnz .Lrounds26612662ld 3,144(1)2663ld 31,136(1)2664ld 5,128(1)2665subi 7,7,19226662667lwz 16,0(3)2668lwz 17,4(3)2669lwz 18,8(3)2670lwz 19,12(3)2671lwz 20,16(3)2672lwz 21,20(3)2673lwz 22,24(3)2674addi 31,31,642675lwz 23,28(3)2676add 8,8,162677add 9,9,172678std 31,136(1)2679add 10,10,182680stw 8,0(3)2681add 11,11,192682stw 9,4(3)2683add 12,12,202684stw 10,8(3)2685add 6,6,212686stw 11,12(3)2687add 14,14,222688stw 12,16(3)2689add 15,15,232690stw 6,20(3)2691stw 14,24(3)2692cmpld 31,52693stw 15,28(3)2694bne .Lsha2_block_private2695blr2696.long 02697.byte 0,12,0x14,0,0,0,0,02698.size zfs_sha256_ppc,.-zfs_sha256_ppc2699.align 62700.LPICmeup:2701mflr 02702bcl 20,31,$+42703mflr 72704addi 7,7,562705mtlr 02706blr2707.long 02708.byte 0,12,0x14,0,0,0,0,02709.space 282710.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba52711.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed52712.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc32713.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf1742714.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc2715.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da2716.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc72717.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x142929672718.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d132719.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c852720.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a32721.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa0702722.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb52723.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff32724.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc702082725.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f227262727#endif272827292730