Path: blob/main/sys/contrib/openzfs/module/icp/asm-ppc64/sha2/sha512-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_sha512_ppc28.globl .zfs_sha512_ppc29.type zfs_sha512_ppc,@function30.section ".opd","aw"31.align 332zfs_sha512_ppc:33.quad .zfs_sha512_ppc,.TOC.@tocbase,034.previous35.align 636.zfs_sha512_ppc:37#else38.abiversion 239.text4041.globl zfs_sha512_ppc42.type zfs_sha512_ppc,@function43.align 644zfs_sha512_ppc:45.localentry zfs_sha512_ppc,046#endif47stdu 1,-384(1)48mflr 049sldi 5,5,75051std 3,208(1)5253std 14,240(1)54std 15,248(1)55std 16,256(1)56std 17,264(1)57std 18,272(1)58std 19,280(1)59std 20,288(1)60std 21,296(1)61std 22,304(1)62std 23,312(1)63std 24,320(1)64std 25,328(1)65std 26,336(1)66std 27,344(1)67std 28,352(1)68std 29,360(1)69std 30,368(1)70std 31,376(1)71std 0,400(1)72ld 8,0(3)73mr 31,474ld 9,8(3)75ld 10,16(3)76ld 11,24(3)77ld 12,32(3)78ld 6,40(3)79ld 14,48(3)80ld 15,56(3)81bl .LPICmeup82.LPICedup:83andi. 0,31,384bne .Lunaligned85.Laligned:86add 5,31,587std 5,192(1)88std 31,200(1)89bl .Lsha2_block_private90b .Ldone9192939495969798.align 499.Lunaligned:100subfic 0,31,4096101andi. 0,0,3968102beq .Lcross_page103cmpld 5,0104ble .Laligned105subfc 5,0,5106add 0,31,0107std 5,184(1)108std 0,192(1)109std 31,200(1)110bl .Lsha2_block_private111112ld 5,184(1)113.Lcross_page:114li 0,32115mtctr 0116addi 20,1,48117.Lmemcpy:118lbz 16,0(31)119lbz 17,1(31)120lbz 18,2(31)121lbz 19,3(31)122addi 31,31,4123stb 16,0(20)124stb 17,1(20)125stb 18,2(20)126stb 19,3(20)127addi 20,20,4128bdnz .Lmemcpy129std 31,176(1)130addi 0,1,176131addi 31,1,48132std 5,184(1)133std 0,192(1)134std 31,200(1)135bl .Lsha2_block_private136ld 31,176(1)137ld 5,184(1)138addic. 5,5,-128139bne .Lunaligned140141.Ldone:142ld 0,400(1)143ld 14,240(1)144ld 15,248(1)145ld 16,256(1)146ld 17,264(1)147ld 18,272(1)148ld 19,280(1)149ld 20,288(1)150ld 21,296(1)151ld 22,304(1)152ld 23,312(1)153ld 24,320(1)154ld 25,328(1)155ld 26,336(1)156ld 27,344(1)157ld 28,352(1)158ld 29,360(1)159ld 30,368(1)160ld 31,376(1)161mtlr 0162addi 1,1,384163blr164.long 0165.byte 0,12,4,1,0x80,18,3,0166.long 0167.align 4168.Lsha2_block_private:169ld 0,0(7)170lwz 5,0(31)171lwz 16,4(31)172insrdi 16,5,32,0173rotrdi 3,12,14174rotrdi 4,12,18175and 5,6,12176xor 3,3,4177add 15,15,0178andc 0,14,12179rotrdi 4,4,23180or 5,5,0181add 15,15,16182xor 3,3,4183add 15,15,5184add 15,15,3185186rotrdi 3,8,28187rotrdi 4,8,34188and 5,8,9189and 0,8,10190xor 3,3,4191rotrdi 4,4,5192xor 5,5,0193and 0,9,10194xor 3,3,4195add 11,11,15196xor 5,5,0197ld 0,8(7)198add 15,15,3199add 15,15,5200201lwz 5,8(31)202lwz 17,12(31)203insrdi 17,5,32,0204rotrdi 3,11,14205rotrdi 4,11,18206and 5,12,11207xor 3,3,4208add 14,14,0209andc 0,6,11210rotrdi 4,4,23211or 5,5,0212add 14,14,17213xor 3,3,4214add 14,14,5215add 14,14,3216217rotrdi 3,15,28218rotrdi 4,15,34219and 5,15,8220and 0,15,9221xor 3,3,4222rotrdi 4,4,5223xor 5,5,0224and 0,8,9225xor 3,3,4226add 10,10,14227xor 5,5,0228ld 0,16(7)229add 14,14,3230add 14,14,5231232lwz 5,16(31)233lwz 18,20(31)234insrdi 18,5,32,0235rotrdi 3,10,14236rotrdi 4,10,18237and 5,11,10238xor 3,3,4239add 6,6,0240andc 0,12,10241rotrdi 4,4,23242or 5,5,0243add 6,6,18244xor 3,3,4245add 6,6,5246add 6,6,3247248rotrdi 3,14,28249rotrdi 4,14,34250and 5,14,15251and 0,14,8252xor 3,3,4253rotrdi 4,4,5254xor 5,5,0255and 0,15,8256xor 3,3,4257add 9,9,6258xor 5,5,0259ld 0,24(7)260add 6,6,3261add 6,6,5262263lwz 5,24(31)264lwz 19,28(31)265insrdi 19,5,32,0266rotrdi 3,9,14267rotrdi 4,9,18268and 5,10,9269xor 3,3,4270add 12,12,0271andc 0,11,9272rotrdi 4,4,23273or 5,5,0274add 12,12,19275xor 3,3,4276add 12,12,5277add 12,12,3278279rotrdi 3,6,28280rotrdi 4,6,34281and 5,6,14282and 0,6,15283xor 3,3,4284rotrdi 4,4,5285xor 5,5,0286and 0,14,15287xor 3,3,4288add 8,8,12289xor 5,5,0290ld 0,32(7)291add 12,12,3292add 12,12,5293294lwz 5,32(31)295lwz 20,36(31)296insrdi 20,5,32,0297rotrdi 3,8,14298rotrdi 4,8,18299and 5,9,8300xor 3,3,4301add 11,11,0302andc 0,10,8303rotrdi 4,4,23304or 5,5,0305add 11,11,20306xor 3,3,4307add 11,11,5308add 11,11,3309310rotrdi 3,12,28311rotrdi 4,12,34312and 5,12,6313and 0,12,14314xor 3,3,4315rotrdi 4,4,5316xor 5,5,0317and 0,6,14318xor 3,3,4319add 15,15,11320xor 5,5,0321ld 0,40(7)322add 11,11,3323add 11,11,5324325lwz 5,40(31)326lwz 21,44(31)327insrdi 21,5,32,0328rotrdi 3,15,14329rotrdi 4,15,18330and 5,8,15331xor 3,3,4332add 10,10,0333andc 0,9,15334rotrdi 4,4,23335or 5,5,0336add 10,10,21337xor 3,3,4338add 10,10,5339add 10,10,3340341rotrdi 3,11,28342rotrdi 4,11,34343and 5,11,12344and 0,11,6345xor 3,3,4346rotrdi 4,4,5347xor 5,5,0348and 0,12,6349xor 3,3,4350add 14,14,10351xor 5,5,0352ld 0,48(7)353add 10,10,3354add 10,10,5355356lwz 5,48(31)357lwz 22,52(31)358insrdi 22,5,32,0359rotrdi 3,14,14360rotrdi 4,14,18361and 5,15,14362xor 3,3,4363add 9,9,0364andc 0,8,14365rotrdi 4,4,23366or 5,5,0367add 9,9,22368xor 3,3,4369add 9,9,5370add 9,9,3371372rotrdi 3,10,28373rotrdi 4,10,34374and 5,10,11375and 0,10,12376xor 3,3,4377rotrdi 4,4,5378xor 5,5,0379and 0,11,12380xor 3,3,4381add 6,6,9382xor 5,5,0383ld 0,56(7)384add 9,9,3385add 9,9,5386387lwz 5,56(31)388lwz 23,60(31)389insrdi 23,5,32,0390rotrdi 3,6,14391rotrdi 4,6,18392and 5,14,6393xor 3,3,4394add 8,8,0395andc 0,15,6396rotrdi 4,4,23397or 5,5,0398add 8,8,23399xor 3,3,4400add 8,8,5401add 8,8,3402403rotrdi 3,9,28404rotrdi 4,9,34405and 5,9,10406and 0,9,11407xor 3,3,4408rotrdi 4,4,5409xor 5,5,0410and 0,10,11411xor 3,3,4412add 12,12,8413xor 5,5,0414ld 0,64(7)415add 8,8,3416add 8,8,5417418lwz 5,64(31)419lwz 24,68(31)420insrdi 24,5,32,0421rotrdi 3,12,14422rotrdi 4,12,18423and 5,6,12424xor 3,3,4425add 15,15,0426andc 0,14,12427rotrdi 4,4,23428or 5,5,0429add 15,15,24430xor 3,3,4431add 15,15,5432add 15,15,3433434rotrdi 3,8,28435rotrdi 4,8,34436and 5,8,9437and 0,8,10438xor 3,3,4439rotrdi 4,4,5440xor 5,5,0441and 0,9,10442xor 3,3,4443add 11,11,15444xor 5,5,0445ld 0,72(7)446add 15,15,3447add 15,15,5448449lwz 5,72(31)450lwz 25,76(31)451insrdi 25,5,32,0452rotrdi 3,11,14453rotrdi 4,11,18454and 5,12,11455xor 3,3,4456add 14,14,0457andc 0,6,11458rotrdi 4,4,23459or 5,5,0460add 14,14,25461xor 3,3,4462add 14,14,5463add 14,14,3464465rotrdi 3,15,28466rotrdi 4,15,34467and 5,15,8468and 0,15,9469xor 3,3,4470rotrdi 4,4,5471xor 5,5,0472and 0,8,9473xor 3,3,4474add 10,10,14475xor 5,5,0476ld 0,80(7)477add 14,14,3478add 14,14,5479480lwz 5,80(31)481lwz 26,84(31)482insrdi 26,5,32,0483rotrdi 3,10,14484rotrdi 4,10,18485and 5,11,10486xor 3,3,4487add 6,6,0488andc 0,12,10489rotrdi 4,4,23490or 5,5,0491add 6,6,26492xor 3,3,4493add 6,6,5494add 6,6,3495496rotrdi 3,14,28497rotrdi 4,14,34498and 5,14,15499and 0,14,8500xor 3,3,4501rotrdi 4,4,5502xor 5,5,0503and 0,15,8504xor 3,3,4505add 9,9,6506xor 5,5,0507ld 0,88(7)508add 6,6,3509add 6,6,5510511lwz 5,88(31)512lwz 27,92(31)513insrdi 27,5,32,0514rotrdi 3,9,14515rotrdi 4,9,18516and 5,10,9517xor 3,3,4518add 12,12,0519andc 0,11,9520rotrdi 4,4,23521or 5,5,0522add 12,12,27523xor 3,3,4524add 12,12,5525add 12,12,3526527rotrdi 3,6,28528rotrdi 4,6,34529and 5,6,14530and 0,6,15531xor 3,3,4532rotrdi 4,4,5533xor 5,5,0534and 0,14,15535xor 3,3,4536add 8,8,12537xor 5,5,0538ld 0,96(7)539add 12,12,3540add 12,12,5541542lwz 5,96(31)543lwz 28,100(31)544insrdi 28,5,32,0545rotrdi 3,8,14546rotrdi 4,8,18547and 5,9,8548xor 3,3,4549add 11,11,0550andc 0,10,8551rotrdi 4,4,23552or 5,5,0553add 11,11,28554xor 3,3,4555add 11,11,5556add 11,11,3557558rotrdi 3,12,28559rotrdi 4,12,34560and 5,12,6561and 0,12,14562xor 3,3,4563rotrdi 4,4,5564xor 5,5,0565and 0,6,14566xor 3,3,4567add 15,15,11568xor 5,5,0569ld 0,104(7)570add 11,11,3571add 11,11,5572573lwz 5,104(31)574lwz 29,108(31)575insrdi 29,5,32,0576rotrdi 3,15,14577rotrdi 4,15,18578and 5,8,15579xor 3,3,4580add 10,10,0581andc 0,9,15582rotrdi 4,4,23583or 5,5,0584add 10,10,29585xor 3,3,4586add 10,10,5587add 10,10,3588589rotrdi 3,11,28590rotrdi 4,11,34591and 5,11,12592and 0,11,6593xor 3,3,4594rotrdi 4,4,5595xor 5,5,0596and 0,12,6597xor 3,3,4598add 14,14,10599xor 5,5,0600ld 0,112(7)601add 10,10,3602add 10,10,5603604lwz 5,112(31)605lwz 30,116(31)606insrdi 30,5,32,0607rotrdi 3,14,14608rotrdi 4,14,18609and 5,15,14610xor 3,3,4611add 9,9,0612andc 0,8,14613rotrdi 4,4,23614or 5,5,0615add 9,9,30616xor 3,3,4617add 9,9,5618add 9,9,3619620rotrdi 3,10,28621rotrdi 4,10,34622and 5,10,11623and 0,10,12624xor 3,3,4625rotrdi 4,4,5626xor 5,5,0627and 0,11,12628xor 3,3,4629add 6,6,9630xor 5,5,0631ld 0,120(7)632add 9,9,3633add 9,9,5634635lwz 5,120(31)636lwz 31,124(31)637insrdi 31,5,32,0638rotrdi 3,6,14639rotrdi 4,6,18640and 5,14,6641xor 3,3,4642add 8,8,0643andc 0,15,6644rotrdi 4,4,23645or 5,5,0646add 8,8,31647xor 3,3,4648add 8,8,5649add 8,8,3650651rotrdi 3,9,28652rotrdi 4,9,34653and 5,9,10654and 0,9,11655xor 3,3,4656rotrdi 4,4,5657xor 5,5,0658and 0,10,11659xor 3,3,4660add 12,12,8661xor 5,5,0662add 8,8,3663add 8,8,5664665li 5,4666mtctr 5667.align 4668.Lrounds:669addi 7,7,128670rotrdi 3,17,1671rotrdi 4,17,8672rotrdi 5,30,19673rotrdi 0,30,61674xor 3,3,4675srdi 4,17,7676xor 5,5,0677srdi 0,30,6678add 16,16,25679xor 3,3,4680xor 5,5,0681ld 0,0(7)682add 16,16,3683add 16,16,5684rotrdi 3,12,14685rotrdi 4,12,18686and 5,6,12687xor 3,3,4688add 15,15,0689andc 0,14,12690rotrdi 4,4,23691or 5,5,0692add 15,15,16693xor 3,3,4694add 15,15,5695add 15,15,3696697rotrdi 3,8,28698rotrdi 4,8,34699and 5,8,9700and 0,8,10701xor 3,3,4702rotrdi 4,4,5703xor 5,5,0704and 0,9,10705xor 3,3,4706add 11,11,15707xor 5,5,0708add 15,15,3709add 15,15,5710711rotrdi 3,18,1712rotrdi 4,18,8713rotrdi 5,31,19714rotrdi 0,31,61715xor 3,3,4716srdi 4,18,7717xor 5,5,0718srdi 0,31,6719add 17,17,26720xor 3,3,4721xor 5,5,0722ld 0,8(7)723add 17,17,3724add 17,17,5725rotrdi 3,11,14726rotrdi 4,11,18727and 5,12,11728xor 3,3,4729add 14,14,0730andc 0,6,11731rotrdi 4,4,23732or 5,5,0733add 14,14,17734xor 3,3,4735add 14,14,5736add 14,14,3737738rotrdi 3,15,28739rotrdi 4,15,34740and 5,15,8741and 0,15,9742xor 3,3,4743rotrdi 4,4,5744xor 5,5,0745and 0,8,9746xor 3,3,4747add 10,10,14748xor 5,5,0749add 14,14,3750add 14,14,5751752rotrdi 3,19,1753rotrdi 4,19,8754rotrdi 5,16,19755rotrdi 0,16,61756xor 3,3,4757srdi 4,19,7758xor 5,5,0759srdi 0,16,6760add 18,18,27761xor 3,3,4762xor 5,5,0763ld 0,16(7)764add 18,18,3765add 18,18,5766rotrdi 3,10,14767rotrdi 4,10,18768and 5,11,10769xor 3,3,4770add 6,6,0771andc 0,12,10772rotrdi 4,4,23773or 5,5,0774add 6,6,18775xor 3,3,4776add 6,6,5777add 6,6,3778779rotrdi 3,14,28780rotrdi 4,14,34781and 5,14,15782and 0,14,8783xor 3,3,4784rotrdi 4,4,5785xor 5,5,0786and 0,15,8787xor 3,3,4788add 9,9,6789xor 5,5,0790add 6,6,3791add 6,6,5792793rotrdi 3,20,1794rotrdi 4,20,8795rotrdi 5,17,19796rotrdi 0,17,61797xor 3,3,4798srdi 4,20,7799xor 5,5,0800srdi 0,17,6801add 19,19,28802xor 3,3,4803xor 5,5,0804ld 0,24(7)805add 19,19,3806add 19,19,5807rotrdi 3,9,14808rotrdi 4,9,18809and 5,10,9810xor 3,3,4811add 12,12,0812andc 0,11,9813rotrdi 4,4,23814or 5,5,0815add 12,12,19816xor 3,3,4817add 12,12,5818add 12,12,3819820rotrdi 3,6,28821rotrdi 4,6,34822and 5,6,14823and 0,6,15824xor 3,3,4825rotrdi 4,4,5826xor 5,5,0827and 0,14,15828xor 3,3,4829add 8,8,12830xor 5,5,0831add 12,12,3832add 12,12,5833834rotrdi 3,21,1835rotrdi 4,21,8836rotrdi 5,18,19837rotrdi 0,18,61838xor 3,3,4839srdi 4,21,7840xor 5,5,0841srdi 0,18,6842add 20,20,29843xor 3,3,4844xor 5,5,0845ld 0,32(7)846add 20,20,3847add 20,20,5848rotrdi 3,8,14849rotrdi 4,8,18850and 5,9,8851xor 3,3,4852add 11,11,0853andc 0,10,8854rotrdi 4,4,23855or 5,5,0856add 11,11,20857xor 3,3,4858add 11,11,5859add 11,11,3860861rotrdi 3,12,28862rotrdi 4,12,34863and 5,12,6864and 0,12,14865xor 3,3,4866rotrdi 4,4,5867xor 5,5,0868and 0,6,14869xor 3,3,4870add 15,15,11871xor 5,5,0872add 11,11,3873add 11,11,5874875rotrdi 3,22,1876rotrdi 4,22,8877rotrdi 5,19,19878rotrdi 0,19,61879xor 3,3,4880srdi 4,22,7881xor 5,5,0882srdi 0,19,6883add 21,21,30884xor 3,3,4885xor 5,5,0886ld 0,40(7)887add 21,21,3888add 21,21,5889rotrdi 3,15,14890rotrdi 4,15,18891and 5,8,15892xor 3,3,4893add 10,10,0894andc 0,9,15895rotrdi 4,4,23896or 5,5,0897add 10,10,21898xor 3,3,4899add 10,10,5900add 10,10,3901902rotrdi 3,11,28903rotrdi 4,11,34904and 5,11,12905and 0,11,6906xor 3,3,4907rotrdi 4,4,5908xor 5,5,0909and 0,12,6910xor 3,3,4911add 14,14,10912xor 5,5,0913add 10,10,3914add 10,10,5915916rotrdi 3,23,1917rotrdi 4,23,8918rotrdi 5,20,19919rotrdi 0,20,61920xor 3,3,4921srdi 4,23,7922xor 5,5,0923srdi 0,20,6924add 22,22,31925xor 3,3,4926xor 5,5,0927ld 0,48(7)928add 22,22,3929add 22,22,5930rotrdi 3,14,14931rotrdi 4,14,18932and 5,15,14933xor 3,3,4934add 9,9,0935andc 0,8,14936rotrdi 4,4,23937or 5,5,0938add 9,9,22939xor 3,3,4940add 9,9,5941add 9,9,3942943rotrdi 3,10,28944rotrdi 4,10,34945and 5,10,11946and 0,10,12947xor 3,3,4948rotrdi 4,4,5949xor 5,5,0950and 0,11,12951xor 3,3,4952add 6,6,9953xor 5,5,0954add 9,9,3955add 9,9,5956957rotrdi 3,24,1958rotrdi 4,24,8959rotrdi 5,21,19960rotrdi 0,21,61961xor 3,3,4962srdi 4,24,7963xor 5,5,0964srdi 0,21,6965add 23,23,16966xor 3,3,4967xor 5,5,0968ld 0,56(7)969add 23,23,3970add 23,23,5971rotrdi 3,6,14972rotrdi 4,6,18973and 5,14,6974xor 3,3,4975add 8,8,0976andc 0,15,6977rotrdi 4,4,23978or 5,5,0979add 8,8,23980xor 3,3,4981add 8,8,5982add 8,8,3983984rotrdi 3,9,28985rotrdi 4,9,34986and 5,9,10987and 0,9,11988xor 3,3,4989rotrdi 4,4,5990xor 5,5,0991and 0,10,11992xor 3,3,4993add 12,12,8994xor 5,5,0995add 8,8,3996add 8,8,5997998rotrdi 3,25,1999rotrdi 4,25,81000rotrdi 5,22,191001rotrdi 0,22,611002xor 3,3,41003srdi 4,25,71004xor 5,5,01005srdi 0,22,61006add 24,24,171007xor 3,3,41008xor 5,5,01009ld 0,64(7)1010add 24,24,31011add 24,24,51012rotrdi 3,12,141013rotrdi 4,12,181014and 5,6,121015xor 3,3,41016add 15,15,01017andc 0,14,121018rotrdi 4,4,231019or 5,5,01020add 15,15,241021xor 3,3,41022add 15,15,51023add 15,15,310241025rotrdi 3,8,281026rotrdi 4,8,341027and 5,8,91028and 0,8,101029xor 3,3,41030rotrdi 4,4,51031xor 5,5,01032and 0,9,101033xor 3,3,41034add 11,11,151035xor 5,5,01036add 15,15,31037add 15,15,510381039rotrdi 3,26,11040rotrdi 4,26,81041rotrdi 5,23,191042rotrdi 0,23,611043xor 3,3,41044srdi 4,26,71045xor 5,5,01046srdi 0,23,61047add 25,25,181048xor 3,3,41049xor 5,5,01050ld 0,72(7)1051add 25,25,31052add 25,25,51053rotrdi 3,11,141054rotrdi 4,11,181055and 5,12,111056xor 3,3,41057add 14,14,01058andc 0,6,111059rotrdi 4,4,231060or 5,5,01061add 14,14,251062xor 3,3,41063add 14,14,51064add 14,14,310651066rotrdi 3,15,281067rotrdi 4,15,341068and 5,15,81069and 0,15,91070xor 3,3,41071rotrdi 4,4,51072xor 5,5,01073and 0,8,91074xor 3,3,41075add 10,10,141076xor 5,5,01077add 14,14,31078add 14,14,510791080rotrdi 3,27,11081rotrdi 4,27,81082rotrdi 5,24,191083rotrdi 0,24,611084xor 3,3,41085srdi 4,27,71086xor 5,5,01087srdi 0,24,61088add 26,26,191089xor 3,3,41090xor 5,5,01091ld 0,80(7)1092add 26,26,31093add 26,26,51094rotrdi 3,10,141095rotrdi 4,10,181096and 5,11,101097xor 3,3,41098add 6,6,01099andc 0,12,101100rotrdi 4,4,231101or 5,5,01102add 6,6,261103xor 3,3,41104add 6,6,51105add 6,6,311061107rotrdi 3,14,281108rotrdi 4,14,341109and 5,14,151110and 0,14,81111xor 3,3,41112rotrdi 4,4,51113xor 5,5,01114and 0,15,81115xor 3,3,41116add 9,9,61117xor 5,5,01118add 6,6,31119add 6,6,511201121rotrdi 3,28,11122rotrdi 4,28,81123rotrdi 5,25,191124rotrdi 0,25,611125xor 3,3,41126srdi 4,28,71127xor 5,5,01128srdi 0,25,61129add 27,27,201130xor 3,3,41131xor 5,5,01132ld 0,88(7)1133add 27,27,31134add 27,27,51135rotrdi 3,9,141136rotrdi 4,9,181137and 5,10,91138xor 3,3,41139add 12,12,01140andc 0,11,91141rotrdi 4,4,231142or 5,5,01143add 12,12,271144xor 3,3,41145add 12,12,51146add 12,12,311471148rotrdi 3,6,281149rotrdi 4,6,341150and 5,6,141151and 0,6,151152xor 3,3,41153rotrdi 4,4,51154xor 5,5,01155and 0,14,151156xor 3,3,41157add 8,8,121158xor 5,5,01159add 12,12,31160add 12,12,511611162rotrdi 3,29,11163rotrdi 4,29,81164rotrdi 5,26,191165rotrdi 0,26,611166xor 3,3,41167srdi 4,29,71168xor 5,5,01169srdi 0,26,61170add 28,28,211171xor 3,3,41172xor 5,5,01173ld 0,96(7)1174add 28,28,31175add 28,28,51176rotrdi 3,8,141177rotrdi 4,8,181178and 5,9,81179xor 3,3,41180add 11,11,01181andc 0,10,81182rotrdi 4,4,231183or 5,5,01184add 11,11,281185xor 3,3,41186add 11,11,51187add 11,11,311881189rotrdi 3,12,281190rotrdi 4,12,341191and 5,12,61192and 0,12,141193xor 3,3,41194rotrdi 4,4,51195xor 5,5,01196and 0,6,141197xor 3,3,41198add 15,15,111199xor 5,5,01200add 11,11,31201add 11,11,512021203rotrdi 3,30,11204rotrdi 4,30,81205rotrdi 5,27,191206rotrdi 0,27,611207xor 3,3,41208srdi 4,30,71209xor 5,5,01210srdi 0,27,61211add 29,29,221212xor 3,3,41213xor 5,5,01214ld 0,104(7)1215add 29,29,31216add 29,29,51217rotrdi 3,15,141218rotrdi 4,15,181219and 5,8,151220xor 3,3,41221add 10,10,01222andc 0,9,151223rotrdi 4,4,231224or 5,5,01225add 10,10,291226xor 3,3,41227add 10,10,51228add 10,10,312291230rotrdi 3,11,281231rotrdi 4,11,341232and 5,11,121233and 0,11,61234xor 3,3,41235rotrdi 4,4,51236xor 5,5,01237and 0,12,61238xor 3,3,41239add 14,14,101240xor 5,5,01241add 10,10,31242add 10,10,512431244rotrdi 3,31,11245rotrdi 4,31,81246rotrdi 5,28,191247rotrdi 0,28,611248xor 3,3,41249srdi 4,31,71250xor 5,5,01251srdi 0,28,61252add 30,30,231253xor 3,3,41254xor 5,5,01255ld 0,112(7)1256add 30,30,31257add 30,30,51258rotrdi 3,14,141259rotrdi 4,14,181260and 5,15,141261xor 3,3,41262add 9,9,01263andc 0,8,141264rotrdi 4,4,231265or 5,5,01266add 9,9,301267xor 3,3,41268add 9,9,51269add 9,9,312701271rotrdi 3,10,281272rotrdi 4,10,341273and 5,10,111274and 0,10,121275xor 3,3,41276rotrdi 4,4,51277xor 5,5,01278and 0,11,121279xor 3,3,41280add 6,6,91281xor 5,5,01282add 9,9,31283add 9,9,512841285rotrdi 3,16,11286rotrdi 4,16,81287rotrdi 5,29,191288rotrdi 0,29,611289xor 3,3,41290srdi 4,16,71291xor 5,5,01292srdi 0,29,61293add 31,31,241294xor 3,3,41295xor 5,5,01296ld 0,120(7)1297add 31,31,31298add 31,31,51299rotrdi 3,6,141300rotrdi 4,6,181301and 5,14,61302xor 3,3,41303add 8,8,01304andc 0,15,61305rotrdi 4,4,231306or 5,5,01307add 8,8,311308xor 3,3,41309add 8,8,51310add 8,8,313111312rotrdi 3,9,281313rotrdi 4,9,341314and 5,9,101315and 0,9,111316xor 3,3,41317rotrdi 4,4,51318xor 5,5,01319and 0,10,111320xor 3,3,41321add 12,12,81322xor 5,5,01323add 8,8,31324add 8,8,513251326bdnz .Lrounds13271328ld 3,208(1)1329ld 31,200(1)1330ld 5,192(1)1331subi 7,7,51213321333ld 16,0(3)1334ld 17,8(3)1335ld 18,16(3)1336ld 19,24(3)1337ld 20,32(3)1338ld 21,40(3)1339ld 22,48(3)1340addi 31,31,1281341ld 23,56(3)1342add 8,8,161343add 9,9,171344std 31,200(1)1345add 10,10,181346std 8,0(3)1347add 11,11,191348std 9,8(3)1349add 12,12,201350std 10,16(3)1351add 6,6,211352std 11,24(3)1353add 14,14,221354std 12,32(3)1355add 15,15,231356std 6,40(3)1357std 14,48(3)1358cmpld 31,51359std 15,56(3)1360bne .Lsha2_block_private1361blr1362.long 01363.byte 0,12,0x14,0,0,0,0,01364#if (!defined(_CALL_ELF) || _CALL_ELF == 1)1365.size .zfs_sha512_ppc,.-.zfs_sha512_ppc1366.size zfs_sha512_ppc,.-.zfs_sha512_ppc1367#else1368.size zfs_sha512_ppc,.-zfs_sha512_ppc1369#endif1370.align 61371.LPICmeup:1372mflr 01373bcl 20,31,$+41374mflr 71375addi 7,7,561376mtlr 01377blr1378.long 01379.byte 0,12,0x14,0,0,0,0,01380.space 281381.long 0x428a2f98,0xd728ae221382.long 0x71374491,0x23ef65cd1383.long 0xb5c0fbcf,0xec4d3b2f1384.long 0xe9b5dba5,0x8189dbbc1385.long 0x3956c25b,0xf348b5381386.long 0x59f111f1,0xb605d0191387.long 0x923f82a4,0xaf194f9b1388.long 0xab1c5ed5,0xda6d81181389.long 0xd807aa98,0xa30302421390.long 0x12835b01,0x45706fbe1391.long 0x243185be,0x4ee4b28c1392.long 0x550c7dc3,0xd5ffb4e21393.long 0x72be5d74,0xf27b896f1394.long 0x80deb1fe,0x3b1696b11395.long 0x9bdc06a7,0x25c712351396.long 0xc19bf174,0xcf6926941397.long 0xe49b69c1,0x9ef14ad21398.long 0xefbe4786,0x384f25e31399.long 0x0fc19dc6,0x8b8cd5b51400.long 0x240ca1cc,0x77ac9c651401.long 0x2de92c6f,0x592b02751402.long 0x4a7484aa,0x6ea6e4831403.long 0x5cb0a9dc,0xbd41fbd41404.long 0x76f988da,0x831153b51405.long 0x983e5152,0xee66dfab1406.long 0xa831c66d,0x2db432101407.long 0xb00327c8,0x98fb213f1408.long 0xbf597fc7,0xbeef0ee41409.long 0xc6e00bf3,0x3da88fc21410.long 0xd5a79147,0x930aa7251411.long 0x06ca6351,0xe003826f1412.long 0x14292967,0x0a0e6e701413.long 0x27b70a85,0x46d22ffc1414.long 0x2e1b2138,0x5c26c9261415.long 0x4d2c6dfc,0x5ac42aed1416.long 0x53380d13,0x9d95b3df1417.long 0x650a7354,0x8baf63de1418.long 0x766a0abb,0x3c77b2a81419.long 0x81c2c92e,0x47edaee61420.long 0x92722c85,0x1482353b1421.long 0xa2bfe8a1,0x4cf103641422.long 0xa81a664b,0xbc4230011423.long 0xc24b8b70,0xd0f897911424.long 0xc76c51a3,0x0654be301425.long 0xd192e819,0xd6ef52181426.long 0xd6990624,0x5565a9101427.long 0xf40e3585,0x5771202a1428.long 0x106aa070,0x32bbd1b81429.long 0x19a4c116,0xb8d2d0c81430.long 0x1e376c08,0x5141ab531431.long 0x2748774c,0xdf8eeb991432.long 0x34b0bcb5,0xe19b48a81433.long 0x391c0cb3,0xc5c95a631434.long 0x4ed8aa4a,0xe3418acb1435.long 0x5b9cca4f,0x7763e3731436.long 0x682e6ff3,0xd6b2b8a31437.long 0x748f82ee,0x5defb2fc1438.long 0x78a5636f,0x43172f601439.long 0x84c87814,0xa1f0ab721440.long 0x8cc70208,0x1a6439ec1441.long 0x90befffa,0x23631e281442.long 0xa4506ceb,0xde82bde91443.long 0xbef9a3f7,0xb2c679151444.long 0xc67178f2,0xe372532b1445.long 0xca273ece,0xea26619c1446.long 0xd186b8c7,0x21c0c2071447.long 0xeada7dd6,0xcde0eb1e1448.long 0xf57d4f7f,0xee6ed1781449.long 0x06f067aa,0x72176fba1450.long 0x0a637dc5,0xa2c898a61451.long 0x113f9804,0xbef90dae1452.long 0x1b710b35,0x131c471b1453.long 0x28db77f5,0x23047d841454.long 0x32caab7b,0x40c724931455.long 0x3c9ebe0a,0x15c9bebc1456.long 0x431d67c4,0x9c100d4c1457.long 0x4cc5d4be,0xcb3e42b61458.long 0x597f299c,0xfc657e2a1459.long 0x5fcb6fab,0x3ad6faec1460.long 0x6c44198c,0x4a47581714611462#elif (defined(__PPC64__) && defined(__LITTLE_ENDIAN__))14631464.abiversion 21465.text14661467.globl zfs_sha512_ppc1468.type zfs_sha512_ppc,@function1469.align 61470zfs_sha512_ppc:1471.localentry zfs_sha512_ppc,014721473stdu 1,-384(1)1474mflr 01475sldi 5,5,714761477std 3,208(1)14781479std 14,240(1)1480std 15,248(1)1481std 16,256(1)1482std 17,264(1)1483std 18,272(1)1484std 19,280(1)1485std 20,288(1)1486std 21,296(1)1487std 22,304(1)1488std 23,312(1)1489std 24,320(1)1490std 25,328(1)1491std 26,336(1)1492std 27,344(1)1493std 28,352(1)1494std 29,360(1)1495std 30,368(1)1496std 31,376(1)1497std 0,400(1)1498ld 8,0(3)1499mr 31,41500ld 9,8(3)1501ld 10,16(3)1502ld 11,24(3)1503ld 12,32(3)1504ld 6,40(3)1505ld 14,48(3)1506ld 15,56(3)1507bl .LPICmeup1508.LPICedup:1509andi. 0,31,31510bne .Lunaligned1511.Laligned:1512add 5,31,51513std 5,192(1)1514std 31,200(1)1515bl .Lsha2_block_private1516b .Ldone15171518.align 41519.Lunaligned:1520subfic 0,31,40961521andi. 0,0,39681522beq .Lcross_page1523cmpld 5,01524ble .Laligned1525subfc 5,0,51526add 0,31,01527std 5,184(1)1528std 0,192(1)1529std 31,200(1)1530bl .Lsha2_block_private15311532ld 5,184(1)1533.Lcross_page:1534li 0,321535mtctr 01536addi 20,1,481537.Lmemcpy:1538lbz 16,0(31)1539lbz 17,1(31)1540lbz 18,2(31)1541lbz 19,3(31)1542addi 31,31,41543stb 16,0(20)1544stb 17,1(20)1545stb 18,2(20)1546stb 19,3(20)1547addi 20,20,41548bdnz .Lmemcpy1549std 31,176(1)1550addi 0,1,1761551addi 31,1,481552std 5,184(1)1553std 0,192(1)1554std 31,200(1)1555bl .Lsha2_block_private1556ld 31,176(1)1557ld 5,184(1)1558addic. 5,5,-1281559bne .Lunaligned15601561.Ldone:1562ld 0,400(1)1563ld 14,240(1)1564ld 15,248(1)1565ld 16,256(1)1566ld 17,264(1)1567ld 18,272(1)1568ld 19,280(1)1569ld 20,288(1)1570ld 21,296(1)1571ld 22,304(1)1572ld 23,312(1)1573ld 24,320(1)1574ld 25,328(1)1575ld 26,336(1)1576ld 27,344(1)1577ld 28,352(1)1578ld 29,360(1)1579ld 30,368(1)1580ld 31,376(1)1581mtlr 01582addi 1,1,3841583blr1584.long 01585.byte 0,12,4,1,0x80,18,3,01586.long 01587.align 41588.Lsha2_block_private:1589ld 0,0(7)1590lwz 3,0(31)1591lwz 4,4(31)1592rotlwi 5,3,81593rotlwi 16,4,81594rlwimi 5,3,24,0,71595rlwimi 16,4,24,0,71596rlwimi 5,3,24,16,231597rlwimi 16,4,24,16,231598insrdi 16,5,32,01599rotrdi 3,12,141600rotrdi 4,12,181601and 5,6,121602xor 3,3,41603add 15,15,01604andc 0,14,121605rotrdi 4,4,231606or 5,5,01607add 15,15,161608xor 3,3,41609add 15,15,51610add 15,15,316111612rotrdi 3,8,281613rotrdi 4,8,341614and 5,8,91615and 0,8,101616xor 3,3,41617rotrdi 4,4,51618xor 5,5,01619and 0,9,101620xor 3,3,41621add 11,11,151622xor 5,5,01623ld 0,8(7)1624add 15,15,31625add 15,15,516261627lwz 3,8(31)1628lwz 4,12(31)1629rotlwi 5,3,81630rotlwi 17,4,81631rlwimi 5,3,24,0,71632rlwimi 17,4,24,0,71633rlwimi 5,3,24,16,231634rlwimi 17,4,24,16,231635insrdi 17,5,32,01636rotrdi 3,11,141637rotrdi 4,11,181638and 5,12,111639xor 3,3,41640add 14,14,01641andc 0,6,111642rotrdi 4,4,231643or 5,5,01644add 14,14,171645xor 3,3,41646add 14,14,51647add 14,14,316481649rotrdi 3,15,281650rotrdi 4,15,341651and 5,15,81652and 0,15,91653xor 3,3,41654rotrdi 4,4,51655xor 5,5,01656and 0,8,91657xor 3,3,41658add 10,10,141659xor 5,5,01660ld 0,16(7)1661add 14,14,31662add 14,14,516631664lwz 3,16(31)1665lwz 4,20(31)1666rotlwi 5,3,81667rotlwi 18,4,81668rlwimi 5,3,24,0,71669rlwimi 18,4,24,0,71670rlwimi 5,3,24,16,231671rlwimi 18,4,24,16,231672insrdi 18,5,32,01673rotrdi 3,10,141674rotrdi 4,10,181675and 5,11,101676xor 3,3,41677add 6,6,01678andc 0,12,101679rotrdi 4,4,231680or 5,5,01681add 6,6,181682xor 3,3,41683add 6,6,51684add 6,6,316851686rotrdi 3,14,281687rotrdi 4,14,341688and 5,14,151689and 0,14,81690xor 3,3,41691rotrdi 4,4,51692xor 5,5,01693and 0,15,81694xor 3,3,41695add 9,9,61696xor 5,5,01697ld 0,24(7)1698add 6,6,31699add 6,6,517001701lwz 3,24(31)1702lwz 4,28(31)1703rotlwi 5,3,81704rotlwi 19,4,81705rlwimi 5,3,24,0,71706rlwimi 19,4,24,0,71707rlwimi 5,3,24,16,231708rlwimi 19,4,24,16,231709insrdi 19,5,32,01710rotrdi 3,9,141711rotrdi 4,9,181712and 5,10,91713xor 3,3,41714add 12,12,01715andc 0,11,91716rotrdi 4,4,231717or 5,5,01718add 12,12,191719xor 3,3,41720add 12,12,51721add 12,12,317221723rotrdi 3,6,281724rotrdi 4,6,341725and 5,6,141726and 0,6,151727xor 3,3,41728rotrdi 4,4,51729xor 5,5,01730and 0,14,151731xor 3,3,41732add 8,8,121733xor 5,5,01734ld 0,32(7)1735add 12,12,31736add 12,12,517371738lwz 3,32(31)1739lwz 4,36(31)1740rotlwi 5,3,81741rotlwi 20,4,81742rlwimi 5,3,24,0,71743rlwimi 20,4,24,0,71744rlwimi 5,3,24,16,231745rlwimi 20,4,24,16,231746insrdi 20,5,32,01747rotrdi 3,8,141748rotrdi 4,8,181749and 5,9,81750xor 3,3,41751add 11,11,01752andc 0,10,81753rotrdi 4,4,231754or 5,5,01755add 11,11,201756xor 3,3,41757add 11,11,51758add 11,11,317591760rotrdi 3,12,281761rotrdi 4,12,341762and 5,12,61763and 0,12,141764xor 3,3,41765rotrdi 4,4,51766xor 5,5,01767and 0,6,141768xor 3,3,41769add 15,15,111770xor 5,5,01771ld 0,40(7)1772add 11,11,31773add 11,11,517741775lwz 3,40(31)1776lwz 4,44(31)1777rotlwi 5,3,81778rotlwi 21,4,81779rlwimi 5,3,24,0,71780rlwimi 21,4,24,0,71781rlwimi 5,3,24,16,231782rlwimi 21,4,24,16,231783insrdi 21,5,32,01784rotrdi 3,15,141785rotrdi 4,15,181786and 5,8,151787xor 3,3,41788add 10,10,01789andc 0,9,151790rotrdi 4,4,231791or 5,5,01792add 10,10,211793xor 3,3,41794add 10,10,51795add 10,10,317961797rotrdi 3,11,281798rotrdi 4,11,341799and 5,11,121800and 0,11,61801xor 3,3,41802rotrdi 4,4,51803xor 5,5,01804and 0,12,61805xor 3,3,41806add 14,14,101807xor 5,5,01808ld 0,48(7)1809add 10,10,31810add 10,10,518111812lwz 3,48(31)1813lwz 4,52(31)1814rotlwi 5,3,81815rotlwi 22,4,81816rlwimi 5,3,24,0,71817rlwimi 22,4,24,0,71818rlwimi 5,3,24,16,231819rlwimi 22,4,24,16,231820insrdi 22,5,32,01821rotrdi 3,14,141822rotrdi 4,14,181823and 5,15,141824xor 3,3,41825add 9,9,01826andc 0,8,141827rotrdi 4,4,231828or 5,5,01829add 9,9,221830xor 3,3,41831add 9,9,51832add 9,9,318331834rotrdi 3,10,281835rotrdi 4,10,341836and 5,10,111837and 0,10,121838xor 3,3,41839rotrdi 4,4,51840xor 5,5,01841and 0,11,121842xor 3,3,41843add 6,6,91844xor 5,5,01845ld 0,56(7)1846add 9,9,31847add 9,9,518481849lwz 3,56(31)1850lwz 4,60(31)1851rotlwi 5,3,81852rotlwi 23,4,81853rlwimi 5,3,24,0,71854rlwimi 23,4,24,0,71855rlwimi 5,3,24,16,231856rlwimi 23,4,24,16,231857insrdi 23,5,32,01858rotrdi 3,6,141859rotrdi 4,6,181860and 5,14,61861xor 3,3,41862add 8,8,01863andc 0,15,61864rotrdi 4,4,231865or 5,5,01866add 8,8,231867xor 3,3,41868add 8,8,51869add 8,8,318701871rotrdi 3,9,281872rotrdi 4,9,341873and 5,9,101874and 0,9,111875xor 3,3,41876rotrdi 4,4,51877xor 5,5,01878and 0,10,111879xor 3,3,41880add 12,12,81881xor 5,5,01882ld 0,64(7)1883add 8,8,31884add 8,8,518851886lwz 3,64(31)1887lwz 4,68(31)1888rotlwi 5,3,81889rotlwi 24,4,81890rlwimi 5,3,24,0,71891rlwimi 24,4,24,0,71892rlwimi 5,3,24,16,231893rlwimi 24,4,24,16,231894insrdi 24,5,32,01895rotrdi 3,12,141896rotrdi 4,12,181897and 5,6,121898xor 3,3,41899add 15,15,01900andc 0,14,121901rotrdi 4,4,231902or 5,5,01903add 15,15,241904xor 3,3,41905add 15,15,51906add 15,15,319071908rotrdi 3,8,281909rotrdi 4,8,341910and 5,8,91911and 0,8,101912xor 3,3,41913rotrdi 4,4,51914xor 5,5,01915and 0,9,101916xor 3,3,41917add 11,11,151918xor 5,5,01919ld 0,72(7)1920add 15,15,31921add 15,15,519221923lwz 3,72(31)1924lwz 4,76(31)1925rotlwi 5,3,81926rotlwi 25,4,81927rlwimi 5,3,24,0,71928rlwimi 25,4,24,0,71929rlwimi 5,3,24,16,231930rlwimi 25,4,24,16,231931insrdi 25,5,32,01932rotrdi 3,11,141933rotrdi 4,11,181934and 5,12,111935xor 3,3,41936add 14,14,01937andc 0,6,111938rotrdi 4,4,231939or 5,5,01940add 14,14,251941xor 3,3,41942add 14,14,51943add 14,14,319441945rotrdi 3,15,281946rotrdi 4,15,341947and 5,15,81948and 0,15,91949xor 3,3,41950rotrdi 4,4,51951xor 5,5,01952and 0,8,91953xor 3,3,41954add 10,10,141955xor 5,5,01956ld 0,80(7)1957add 14,14,31958add 14,14,519591960lwz 3,80(31)1961lwz 4,84(31)1962rotlwi 5,3,81963rotlwi 26,4,81964rlwimi 5,3,24,0,71965rlwimi 26,4,24,0,71966rlwimi 5,3,24,16,231967rlwimi 26,4,24,16,231968insrdi 26,5,32,01969rotrdi 3,10,141970rotrdi 4,10,181971and 5,11,101972xor 3,3,41973add 6,6,01974andc 0,12,101975rotrdi 4,4,231976or 5,5,01977add 6,6,261978xor 3,3,41979add 6,6,51980add 6,6,319811982rotrdi 3,14,281983rotrdi 4,14,341984and 5,14,151985and 0,14,81986xor 3,3,41987rotrdi 4,4,51988xor 5,5,01989and 0,15,81990xor 3,3,41991add 9,9,61992xor 5,5,01993ld 0,88(7)1994add 6,6,31995add 6,6,519961997lwz 3,88(31)1998lwz 4,92(31)1999rotlwi 5,3,82000rotlwi 27,4,82001rlwimi 5,3,24,0,72002rlwimi 27,4,24,0,72003rlwimi 5,3,24,16,232004rlwimi 27,4,24,16,232005insrdi 27,5,32,02006rotrdi 3,9,142007rotrdi 4,9,182008and 5,10,92009xor 3,3,42010add 12,12,02011andc 0,11,92012rotrdi 4,4,232013or 5,5,02014add 12,12,272015xor 3,3,42016add 12,12,52017add 12,12,320182019rotrdi 3,6,282020rotrdi 4,6,342021and 5,6,142022and 0,6,152023xor 3,3,42024rotrdi 4,4,52025xor 5,5,02026and 0,14,152027xor 3,3,42028add 8,8,122029xor 5,5,02030ld 0,96(7)2031add 12,12,32032add 12,12,520332034lwz 3,96(31)2035lwz 4,100(31)2036rotlwi 5,3,82037rotlwi 28,4,82038rlwimi 5,3,24,0,72039rlwimi 28,4,24,0,72040rlwimi 5,3,24,16,232041rlwimi 28,4,24,16,232042insrdi 28,5,32,02043rotrdi 3,8,142044rotrdi 4,8,182045and 5,9,82046xor 3,3,42047add 11,11,02048andc 0,10,82049rotrdi 4,4,232050or 5,5,02051add 11,11,282052xor 3,3,42053add 11,11,52054add 11,11,320552056rotrdi 3,12,282057rotrdi 4,12,342058and 5,12,62059and 0,12,142060xor 3,3,42061rotrdi 4,4,52062xor 5,5,02063and 0,6,142064xor 3,3,42065add 15,15,112066xor 5,5,02067ld 0,104(7)2068add 11,11,32069add 11,11,520702071lwz 3,104(31)2072lwz 4,108(31)2073rotlwi 5,3,82074rotlwi 29,4,82075rlwimi 5,3,24,0,72076rlwimi 29,4,24,0,72077rlwimi 5,3,24,16,232078rlwimi 29,4,24,16,232079insrdi 29,5,32,02080rotrdi 3,15,142081rotrdi 4,15,182082and 5,8,152083xor 3,3,42084add 10,10,02085andc 0,9,152086rotrdi 4,4,232087or 5,5,02088add 10,10,292089xor 3,3,42090add 10,10,52091add 10,10,320922093rotrdi 3,11,282094rotrdi 4,11,342095and 5,11,122096and 0,11,62097xor 3,3,42098rotrdi 4,4,52099xor 5,5,02100and 0,12,62101xor 3,3,42102add 14,14,102103xor 5,5,02104ld 0,112(7)2105add 10,10,32106add 10,10,521072108lwz 3,112(31)2109lwz 4,116(31)2110rotlwi 5,3,82111rotlwi 30,4,82112rlwimi 5,3,24,0,72113rlwimi 30,4,24,0,72114rlwimi 5,3,24,16,232115rlwimi 30,4,24,16,232116insrdi 30,5,32,02117rotrdi 3,14,142118rotrdi 4,14,182119and 5,15,142120xor 3,3,42121add 9,9,02122andc 0,8,142123rotrdi 4,4,232124or 5,5,02125add 9,9,302126xor 3,3,42127add 9,9,52128add 9,9,321292130rotrdi 3,10,282131rotrdi 4,10,342132and 5,10,112133and 0,10,122134xor 3,3,42135rotrdi 4,4,52136xor 5,5,02137and 0,11,122138xor 3,3,42139add 6,6,92140xor 5,5,02141ld 0,120(7)2142add 9,9,32143add 9,9,521442145lwz 3,120(31)2146lwz 4,124(31)2147rotlwi 5,3,82148rotlwi 31,4,82149rlwimi 5,3,24,0,72150rlwimi 31,4,24,0,72151rlwimi 5,3,24,16,232152rlwimi 31,4,24,16,232153insrdi 31,5,32,02154rotrdi 3,6,142155rotrdi 4,6,182156and 5,14,62157xor 3,3,42158add 8,8,02159andc 0,15,62160rotrdi 4,4,232161or 5,5,02162add 8,8,312163xor 3,3,42164add 8,8,52165add 8,8,321662167rotrdi 3,9,282168rotrdi 4,9,342169and 5,9,102170and 0,9,112171xor 3,3,42172rotrdi 4,4,52173xor 5,5,02174and 0,10,112175xor 3,3,42176add 12,12,82177xor 5,5,02178add 8,8,32179add 8,8,521802181li 5,42182mtctr 52183.align 42184.Lrounds:2185addi 7,7,1282186rotrdi 3,17,12187rotrdi 4,17,82188rotrdi 5,30,192189rotrdi 0,30,612190xor 3,3,42191srdi 4,17,72192xor 5,5,02193srdi 0,30,62194add 16,16,252195xor 3,3,42196xor 5,5,02197ld 0,0(7)2198add 16,16,32199add 16,16,52200rotrdi 3,12,142201rotrdi 4,12,182202and 5,6,122203xor 3,3,42204add 15,15,02205andc 0,14,122206rotrdi 4,4,232207or 5,5,02208add 15,15,162209xor 3,3,42210add 15,15,52211add 15,15,322122213rotrdi 3,8,282214rotrdi 4,8,342215and 5,8,92216and 0,8,102217xor 3,3,42218rotrdi 4,4,52219xor 5,5,02220and 0,9,102221xor 3,3,42222add 11,11,152223xor 5,5,02224add 15,15,32225add 15,15,522262227rotrdi 3,18,12228rotrdi 4,18,82229rotrdi 5,31,192230rotrdi 0,31,612231xor 3,3,42232srdi 4,18,72233xor 5,5,02234srdi 0,31,62235add 17,17,262236xor 3,3,42237xor 5,5,02238ld 0,8(7)2239add 17,17,32240add 17,17,52241rotrdi 3,11,142242rotrdi 4,11,182243and 5,12,112244xor 3,3,42245add 14,14,02246andc 0,6,112247rotrdi 4,4,232248or 5,5,02249add 14,14,172250xor 3,3,42251add 14,14,52252add 14,14,322532254rotrdi 3,15,282255rotrdi 4,15,342256and 5,15,82257and 0,15,92258xor 3,3,42259rotrdi 4,4,52260xor 5,5,02261and 0,8,92262xor 3,3,42263add 10,10,142264xor 5,5,02265add 14,14,32266add 14,14,522672268rotrdi 3,19,12269rotrdi 4,19,82270rotrdi 5,16,192271rotrdi 0,16,612272xor 3,3,42273srdi 4,19,72274xor 5,5,02275srdi 0,16,62276add 18,18,272277xor 3,3,42278xor 5,5,02279ld 0,16(7)2280add 18,18,32281add 18,18,52282rotrdi 3,10,142283rotrdi 4,10,182284and 5,11,102285xor 3,3,42286add 6,6,02287andc 0,12,102288rotrdi 4,4,232289or 5,5,02290add 6,6,182291xor 3,3,42292add 6,6,52293add 6,6,322942295rotrdi 3,14,282296rotrdi 4,14,342297and 5,14,152298and 0,14,82299xor 3,3,42300rotrdi 4,4,52301xor 5,5,02302and 0,15,82303xor 3,3,42304add 9,9,62305xor 5,5,02306add 6,6,32307add 6,6,523082309rotrdi 3,20,12310rotrdi 4,20,82311rotrdi 5,17,192312rotrdi 0,17,612313xor 3,3,42314srdi 4,20,72315xor 5,5,02316srdi 0,17,62317add 19,19,282318xor 3,3,42319xor 5,5,02320ld 0,24(7)2321add 19,19,32322add 19,19,52323rotrdi 3,9,142324rotrdi 4,9,182325and 5,10,92326xor 3,3,42327add 12,12,02328andc 0,11,92329rotrdi 4,4,232330or 5,5,02331add 12,12,192332xor 3,3,42333add 12,12,52334add 12,12,323352336rotrdi 3,6,282337rotrdi 4,6,342338and 5,6,142339and 0,6,152340xor 3,3,42341rotrdi 4,4,52342xor 5,5,02343and 0,14,152344xor 3,3,42345add 8,8,122346xor 5,5,02347add 12,12,32348add 12,12,523492350rotrdi 3,21,12351rotrdi 4,21,82352rotrdi 5,18,192353rotrdi 0,18,612354xor 3,3,42355srdi 4,21,72356xor 5,5,02357srdi 0,18,62358add 20,20,292359xor 3,3,42360xor 5,5,02361ld 0,32(7)2362add 20,20,32363add 20,20,52364rotrdi 3,8,142365rotrdi 4,8,182366and 5,9,82367xor 3,3,42368add 11,11,02369andc 0,10,82370rotrdi 4,4,232371or 5,5,02372add 11,11,202373xor 3,3,42374add 11,11,52375add 11,11,323762377rotrdi 3,12,282378rotrdi 4,12,342379and 5,12,62380and 0,12,142381xor 3,3,42382rotrdi 4,4,52383xor 5,5,02384and 0,6,142385xor 3,3,42386add 15,15,112387xor 5,5,02388add 11,11,32389add 11,11,523902391rotrdi 3,22,12392rotrdi 4,22,82393rotrdi 5,19,192394rotrdi 0,19,612395xor 3,3,42396srdi 4,22,72397xor 5,5,02398srdi 0,19,62399add 21,21,302400xor 3,3,42401xor 5,5,02402ld 0,40(7)2403add 21,21,32404add 21,21,52405rotrdi 3,15,142406rotrdi 4,15,182407and 5,8,152408xor 3,3,42409add 10,10,02410andc 0,9,152411rotrdi 4,4,232412or 5,5,02413add 10,10,212414xor 3,3,42415add 10,10,52416add 10,10,324172418rotrdi 3,11,282419rotrdi 4,11,342420and 5,11,122421and 0,11,62422xor 3,3,42423rotrdi 4,4,52424xor 5,5,02425and 0,12,62426xor 3,3,42427add 14,14,102428xor 5,5,02429add 10,10,32430add 10,10,524312432rotrdi 3,23,12433rotrdi 4,23,82434rotrdi 5,20,192435rotrdi 0,20,612436xor 3,3,42437srdi 4,23,72438xor 5,5,02439srdi 0,20,62440add 22,22,312441xor 3,3,42442xor 5,5,02443ld 0,48(7)2444add 22,22,32445add 22,22,52446rotrdi 3,14,142447rotrdi 4,14,182448and 5,15,142449xor 3,3,42450add 9,9,02451andc 0,8,142452rotrdi 4,4,232453or 5,5,02454add 9,9,222455xor 3,3,42456add 9,9,52457add 9,9,324582459rotrdi 3,10,282460rotrdi 4,10,342461and 5,10,112462and 0,10,122463xor 3,3,42464rotrdi 4,4,52465xor 5,5,02466and 0,11,122467xor 3,3,42468add 6,6,92469xor 5,5,02470add 9,9,32471add 9,9,524722473rotrdi 3,24,12474rotrdi 4,24,82475rotrdi 5,21,192476rotrdi 0,21,612477xor 3,3,42478srdi 4,24,72479xor 5,5,02480srdi 0,21,62481add 23,23,162482xor 3,3,42483xor 5,5,02484ld 0,56(7)2485add 23,23,32486add 23,23,52487rotrdi 3,6,142488rotrdi 4,6,182489and 5,14,62490xor 3,3,42491add 8,8,02492andc 0,15,62493rotrdi 4,4,232494or 5,5,02495add 8,8,232496xor 3,3,42497add 8,8,52498add 8,8,324992500rotrdi 3,9,282501rotrdi 4,9,342502and 5,9,102503and 0,9,112504xor 3,3,42505rotrdi 4,4,52506xor 5,5,02507and 0,10,112508xor 3,3,42509add 12,12,82510xor 5,5,02511add 8,8,32512add 8,8,525132514rotrdi 3,25,12515rotrdi 4,25,82516rotrdi 5,22,192517rotrdi 0,22,612518xor 3,3,42519srdi 4,25,72520xor 5,5,02521srdi 0,22,62522add 24,24,172523xor 3,3,42524xor 5,5,02525ld 0,64(7)2526add 24,24,32527add 24,24,52528rotrdi 3,12,142529rotrdi 4,12,182530and 5,6,122531xor 3,3,42532add 15,15,02533andc 0,14,122534rotrdi 4,4,232535or 5,5,02536add 15,15,242537xor 3,3,42538add 15,15,52539add 15,15,325402541rotrdi 3,8,282542rotrdi 4,8,342543and 5,8,92544and 0,8,102545xor 3,3,42546rotrdi 4,4,52547xor 5,5,02548and 0,9,102549xor 3,3,42550add 11,11,152551xor 5,5,02552add 15,15,32553add 15,15,525542555rotrdi 3,26,12556rotrdi 4,26,82557rotrdi 5,23,192558rotrdi 0,23,612559xor 3,3,42560srdi 4,26,72561xor 5,5,02562srdi 0,23,62563add 25,25,182564xor 3,3,42565xor 5,5,02566ld 0,72(7)2567add 25,25,32568add 25,25,52569rotrdi 3,11,142570rotrdi 4,11,182571and 5,12,112572xor 3,3,42573add 14,14,02574andc 0,6,112575rotrdi 4,4,232576or 5,5,02577add 14,14,252578xor 3,3,42579add 14,14,52580add 14,14,325812582rotrdi 3,15,282583rotrdi 4,15,342584and 5,15,82585and 0,15,92586xor 3,3,42587rotrdi 4,4,52588xor 5,5,02589and 0,8,92590xor 3,3,42591add 10,10,142592xor 5,5,02593add 14,14,32594add 14,14,525952596rotrdi 3,27,12597rotrdi 4,27,82598rotrdi 5,24,192599rotrdi 0,24,612600xor 3,3,42601srdi 4,27,72602xor 5,5,02603srdi 0,24,62604add 26,26,192605xor 3,3,42606xor 5,5,02607ld 0,80(7)2608add 26,26,32609add 26,26,52610rotrdi 3,10,142611rotrdi 4,10,182612and 5,11,102613xor 3,3,42614add 6,6,02615andc 0,12,102616rotrdi 4,4,232617or 5,5,02618add 6,6,262619xor 3,3,42620add 6,6,52621add 6,6,326222623rotrdi 3,14,282624rotrdi 4,14,342625and 5,14,152626and 0,14,82627xor 3,3,42628rotrdi 4,4,52629xor 5,5,02630and 0,15,82631xor 3,3,42632add 9,9,62633xor 5,5,02634add 6,6,32635add 6,6,526362637rotrdi 3,28,12638rotrdi 4,28,82639rotrdi 5,25,192640rotrdi 0,25,612641xor 3,3,42642srdi 4,28,72643xor 5,5,02644srdi 0,25,62645add 27,27,202646xor 3,3,42647xor 5,5,02648ld 0,88(7)2649add 27,27,32650add 27,27,52651rotrdi 3,9,142652rotrdi 4,9,182653and 5,10,92654xor 3,3,42655add 12,12,02656andc 0,11,92657rotrdi 4,4,232658or 5,5,02659add 12,12,272660xor 3,3,42661add 12,12,52662add 12,12,326632664rotrdi 3,6,282665rotrdi 4,6,342666and 5,6,142667and 0,6,152668xor 3,3,42669rotrdi 4,4,52670xor 5,5,02671and 0,14,152672xor 3,3,42673add 8,8,122674xor 5,5,02675add 12,12,32676add 12,12,526772678rotrdi 3,29,12679rotrdi 4,29,82680rotrdi 5,26,192681rotrdi 0,26,612682xor 3,3,42683srdi 4,29,72684xor 5,5,02685srdi 0,26,62686add 28,28,212687xor 3,3,42688xor 5,5,02689ld 0,96(7)2690add 28,28,32691add 28,28,52692rotrdi 3,8,142693rotrdi 4,8,182694and 5,9,82695xor 3,3,42696add 11,11,02697andc 0,10,82698rotrdi 4,4,232699or 5,5,02700add 11,11,282701xor 3,3,42702add 11,11,52703add 11,11,327042705rotrdi 3,12,282706rotrdi 4,12,342707and 5,12,62708and 0,12,142709xor 3,3,42710rotrdi 4,4,52711xor 5,5,02712and 0,6,142713xor 3,3,42714add 15,15,112715xor 5,5,02716add 11,11,32717add 11,11,527182719rotrdi 3,30,12720rotrdi 4,30,82721rotrdi 5,27,192722rotrdi 0,27,612723xor 3,3,42724srdi 4,30,72725xor 5,5,02726srdi 0,27,62727add 29,29,222728xor 3,3,42729xor 5,5,02730ld 0,104(7)2731add 29,29,32732add 29,29,52733rotrdi 3,15,142734rotrdi 4,15,182735and 5,8,152736xor 3,3,42737add 10,10,02738andc 0,9,152739rotrdi 4,4,232740or 5,5,02741add 10,10,292742xor 3,3,42743add 10,10,52744add 10,10,327452746rotrdi 3,11,282747rotrdi 4,11,342748and 5,11,122749and 0,11,62750xor 3,3,42751rotrdi 4,4,52752xor 5,5,02753and 0,12,62754xor 3,3,42755add 14,14,102756xor 5,5,02757add 10,10,32758add 10,10,527592760rotrdi 3,31,12761rotrdi 4,31,82762rotrdi 5,28,192763rotrdi 0,28,612764xor 3,3,42765srdi 4,31,72766xor 5,5,02767srdi 0,28,62768add 30,30,232769xor 3,3,42770xor 5,5,02771ld 0,112(7)2772add 30,30,32773add 30,30,52774rotrdi 3,14,142775rotrdi 4,14,182776and 5,15,142777xor 3,3,42778add 9,9,02779andc 0,8,142780rotrdi 4,4,232781or 5,5,02782add 9,9,302783xor 3,3,42784add 9,9,52785add 9,9,327862787rotrdi 3,10,282788rotrdi 4,10,342789and 5,10,112790and 0,10,122791xor 3,3,42792rotrdi 4,4,52793xor 5,5,02794and 0,11,122795xor 3,3,42796add 6,6,92797xor 5,5,02798add 9,9,32799add 9,9,528002801rotrdi 3,16,12802rotrdi 4,16,82803rotrdi 5,29,192804rotrdi 0,29,612805xor 3,3,42806srdi 4,16,72807xor 5,5,02808srdi 0,29,62809add 31,31,242810xor 3,3,42811xor 5,5,02812ld 0,120(7)2813add 31,31,32814add 31,31,52815rotrdi 3,6,142816rotrdi 4,6,182817and 5,14,62818xor 3,3,42819add 8,8,02820andc 0,15,62821rotrdi 4,4,232822or 5,5,02823add 8,8,312824xor 3,3,42825add 8,8,52826add 8,8,328272828rotrdi 3,9,282829rotrdi 4,9,342830and 5,9,102831and 0,9,112832xor 3,3,42833rotrdi 4,4,52834xor 5,5,02835and 0,10,112836xor 3,3,42837add 12,12,82838xor 5,5,02839add 8,8,32840add 8,8,528412842bdnz .Lrounds28432844ld 3,208(1)2845ld 31,200(1)2846ld 5,192(1)2847subi 7,7,51228482849ld 16,0(3)2850ld 17,8(3)2851ld 18,16(3)2852ld 19,24(3)2853ld 20,32(3)2854ld 21,40(3)2855ld 22,48(3)2856addi 31,31,1282857ld 23,56(3)2858add 8,8,162859add 9,9,172860std 31,200(1)2861add 10,10,182862std 8,0(3)2863add 11,11,192864std 9,8(3)2865add 12,12,202866std 10,16(3)2867add 6,6,212868std 11,24(3)2869add 14,14,222870std 12,32(3)2871add 15,15,232872std 6,40(3)2873std 14,48(3)2874cmpld 31,52875std 15,56(3)2876bne .Lsha2_block_private2877blr2878.long 02879.byte 0,12,0x14,0,0,0,0,02880.size zfs_sha512_ppc,.-zfs_sha512_ppc2881.align 62882.LPICmeup:2883mflr 02884bcl 20,31,$+42885mflr 72886addi 7,7,562887mtlr 02888blr2889.long 02890.byte 0,12,0x14,0,0,0,0,02891.space 282892.long 0xd728ae22,0x428a2f982893.long 0x23ef65cd,0x713744912894.long 0xec4d3b2f,0xb5c0fbcf2895.long 0x8189dbbc,0xe9b5dba52896.long 0xf348b538,0x3956c25b2897.long 0xb605d019,0x59f111f12898.long 0xaf194f9b,0x923f82a42899.long 0xda6d8118,0xab1c5ed52900.long 0xa3030242,0xd807aa982901.long 0x45706fbe,0x12835b012902.long 0x4ee4b28c,0x243185be2903.long 0xd5ffb4e2,0x550c7dc32904.long 0xf27b896f,0x72be5d742905.long 0x3b1696b1,0x80deb1fe2906.long 0x25c71235,0x9bdc06a72907.long 0xcf692694,0xc19bf1742908.long 0x9ef14ad2,0xe49b69c12909.long 0x384f25e3,0xefbe47862910.long 0x8b8cd5b5,0x0fc19dc62911.long 0x77ac9c65,0x240ca1cc2912.long 0x592b0275,0x2de92c6f2913.long 0x6ea6e483,0x4a7484aa2914.long 0xbd41fbd4,0x5cb0a9dc2915.long 0x831153b5,0x76f988da2916.long 0xee66dfab,0x983e51522917.long 0x2db43210,0xa831c66d2918.long 0x98fb213f,0xb00327c82919.long 0xbeef0ee4,0xbf597fc72920.long 0x3da88fc2,0xc6e00bf32921.long 0x930aa725,0xd5a791472922.long 0xe003826f,0x06ca63512923.long 0x0a0e6e70,0x142929672924.long 0x46d22ffc,0x27b70a852925.long 0x5c26c926,0x2e1b21382926.long 0x5ac42aed,0x4d2c6dfc2927.long 0x9d95b3df,0x53380d132928.long 0x8baf63de,0x650a73542929.long 0x3c77b2a8,0x766a0abb2930.long 0x47edaee6,0x81c2c92e2931.long 0x1482353b,0x92722c852932.long 0x4cf10364,0xa2bfe8a12933.long 0xbc423001,0xa81a664b2934.long 0xd0f89791,0xc24b8b702935.long 0x0654be30,0xc76c51a32936.long 0xd6ef5218,0xd192e8192937.long 0x5565a910,0xd69906242938.long 0x5771202a,0xf40e35852939.long 0x32bbd1b8,0x106aa0702940.long 0xb8d2d0c8,0x19a4c1162941.long 0x5141ab53,0x1e376c082942.long 0xdf8eeb99,0x2748774c2943.long 0xe19b48a8,0x34b0bcb52944.long 0xc5c95a63,0x391c0cb32945.long 0xe3418acb,0x4ed8aa4a2946.long 0x7763e373,0x5b9cca4f2947.long 0xd6b2b8a3,0x682e6ff32948.long 0x5defb2fc,0x748f82ee2949.long 0x43172f60,0x78a5636f2950.long 0xa1f0ab72,0x84c878142951.long 0x1a6439ec,0x8cc702082952.long 0x23631e28,0x90befffa2953.long 0xde82bde9,0xa4506ceb2954.long 0xb2c67915,0xbef9a3f72955.long 0xe372532b,0xc67178f22956.long 0xea26619c,0xca273ece2957.long 0x21c0c207,0xd186b8c72958.long 0xcde0eb1e,0xeada7dd62959.long 0xee6ed178,0xf57d4f7f2960.long 0x72176fba,0x06f067aa2961.long 0xa2c898a6,0x0a637dc52962.long 0xbef90dae,0x113f98042963.long 0x131c471b,0x1b710b352964.long 0x23047d84,0x28db77f52965.long 0x40c72493,0x32caab7b2966.long 0x15c9bebc,0x3c9ebe0a2967.long 0x9c100d4c,0x431d67c42968.long 0xcb3e42b6,0x4cc5d4be2969.long 0xfc657e2a,0x597f299c2970.long 0x3ad6faec,0x5fcb6fab2971.long 0x4a475817,0x6c44198c29722973#endif297429752976