zfs/module/icp/asm-ppc64/sha2/sha512-ppc.S

2959 lines
39 KiB
ArmAsm

/*
* Copyright 2004-2022 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* Portions Copyright (c) 2022 Tino Reichardt <milky-zfs@mcmilk.de>
* - modified assembly to fit into OpenZFS
*/
#if (defined(__PPC64__) && defined(__BIG_ENDIAN__))
.text
.globl zfs_sha512_ppc
.globl .zfs_sha512_ppc
.type zfs_sha512_ppc,@function
.section ".opd","aw"
.align 3
zfs_sha512_ppc:
.quad .zfs_sha512_ppc,.TOC.@tocbase,0
.previous
.align 6
.zfs_sha512_ppc:
stdu 1,-384(1)
mflr 0
sldi 5,5,7
std 3,208(1)
std 14,240(1)
std 15,248(1)
std 16,256(1)
std 17,264(1)
std 18,272(1)
std 19,280(1)
std 20,288(1)
std 21,296(1)
std 22,304(1)
std 23,312(1)
std 24,320(1)
std 25,328(1)
std 26,336(1)
std 27,344(1)
std 28,352(1)
std 29,360(1)
std 30,368(1)
std 31,376(1)
std 0,400(1)
ld 8,0(3)
mr 31,4
ld 9,8(3)
ld 10,16(3)
ld 11,24(3)
ld 12,32(3)
ld 6,40(3)
ld 14,48(3)
ld 15,56(3)
bl .LPICmeup
.LPICedup:
andi. 0,31,3
bne .Lunaligned
.Laligned:
add 5,31,5
std 5,192(1)
std 31,200(1)
bl .Lsha2_block_private
b .Ldone
.align 4
.Lunaligned:
subfic 0,31,4096
andi. 0,0,3968
beq .Lcross_page
cmpld 5,0
ble .Laligned
subfc 5,0,5
add 0,31,0
std 5,184(1)
std 0,192(1)
std 31,200(1)
bl .Lsha2_block_private
ld 5,184(1)
.Lcross_page:
li 0,32
mtctr 0
addi 20,1,48
.Lmemcpy:
lbz 16,0(31)
lbz 17,1(31)
lbz 18,2(31)
lbz 19,3(31)
addi 31,31,4
stb 16,0(20)
stb 17,1(20)
stb 18,2(20)
stb 19,3(20)
addi 20,20,4
bdnz .Lmemcpy
std 31,176(1)
addi 0,1,176
addi 31,1,48
std 5,184(1)
std 0,192(1)
std 31,200(1)
bl .Lsha2_block_private
ld 31,176(1)
ld 5,184(1)
addic. 5,5,-128
bne .Lunaligned
.Ldone:
ld 0,400(1)
ld 14,240(1)
ld 15,248(1)
ld 16,256(1)
ld 17,264(1)
ld 18,272(1)
ld 19,280(1)
ld 20,288(1)
ld 21,296(1)
ld 22,304(1)
ld 23,312(1)
ld 24,320(1)
ld 25,328(1)
ld 26,336(1)
ld 27,344(1)
ld 28,352(1)
ld 29,360(1)
ld 30,368(1)
ld 31,376(1)
mtlr 0
addi 1,1,384
blr
.long 0
.byte 0,12,4,1,0x80,18,3,0
.long 0
.align 4
.Lsha2_block_private:
ld 0,0(7)
lwz 5,0(31)
lwz 16,4(31)
insrdi 16,5,32,0
rotrdi 3,12,14
rotrdi 4,12,18
and 5,6,12
xor 3,3,4
add 15,15,0
andc 0,14,12
rotrdi 4,4,23
or 5,5,0
add 15,15,16
xor 3,3,4
add 15,15,5
add 15,15,3
rotrdi 3,8,28
rotrdi 4,8,34
and 5,8,9
and 0,8,10
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,9,10
xor 3,3,4
add 11,11,15
xor 5,5,0
ld 0,8(7)
add 15,15,3
add 15,15,5
lwz 5,8(31)
lwz 17,12(31)
insrdi 17,5,32,0
rotrdi 3,11,14
rotrdi 4,11,18
and 5,12,11
xor 3,3,4
add 14,14,0
andc 0,6,11
rotrdi 4,4,23
or 5,5,0
add 14,14,17
xor 3,3,4
add 14,14,5
add 14,14,3
rotrdi 3,15,28
rotrdi 4,15,34
and 5,15,8
and 0,15,9
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,8,9
xor 3,3,4
add 10,10,14
xor 5,5,0
ld 0,16(7)
add 14,14,3
add 14,14,5
lwz 5,16(31)
lwz 18,20(31)
insrdi 18,5,32,0
rotrdi 3,10,14
rotrdi 4,10,18
and 5,11,10
xor 3,3,4
add 6,6,0
andc 0,12,10
rotrdi 4,4,23
or 5,5,0
add 6,6,18
xor 3,3,4
add 6,6,5
add 6,6,3
rotrdi 3,14,28
rotrdi 4,14,34
and 5,14,15
and 0,14,8
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,15,8
xor 3,3,4
add 9,9,6
xor 5,5,0
ld 0,24(7)
add 6,6,3
add 6,6,5
lwz 5,24(31)
lwz 19,28(31)
insrdi 19,5,32,0
rotrdi 3,9,14
rotrdi 4,9,18
and 5,10,9
xor 3,3,4
add 12,12,0
andc 0,11,9
rotrdi 4,4,23
or 5,5,0
add 12,12,19
xor 3,3,4
add 12,12,5
add 12,12,3
rotrdi 3,6,28
rotrdi 4,6,34
and 5,6,14
and 0,6,15
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,14,15
xor 3,3,4
add 8,8,12
xor 5,5,0
ld 0,32(7)
add 12,12,3
add 12,12,5
lwz 5,32(31)
lwz 20,36(31)
insrdi 20,5,32,0
rotrdi 3,8,14
rotrdi 4,8,18
and 5,9,8
xor 3,3,4
add 11,11,0
andc 0,10,8
rotrdi 4,4,23
or 5,5,0
add 11,11,20
xor 3,3,4
add 11,11,5
add 11,11,3
rotrdi 3,12,28
rotrdi 4,12,34
and 5,12,6
and 0,12,14
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,6,14
xor 3,3,4
add 15,15,11
xor 5,5,0
ld 0,40(7)
add 11,11,3
add 11,11,5
lwz 5,40(31)
lwz 21,44(31)
insrdi 21,5,32,0
rotrdi 3,15,14
rotrdi 4,15,18
and 5,8,15
xor 3,3,4
add 10,10,0
andc 0,9,15
rotrdi 4,4,23
or 5,5,0
add 10,10,21
xor 3,3,4
add 10,10,5
add 10,10,3
rotrdi 3,11,28
rotrdi 4,11,34
and 5,11,12
and 0,11,6
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,12,6
xor 3,3,4
add 14,14,10
xor 5,5,0
ld 0,48(7)
add 10,10,3
add 10,10,5
lwz 5,48(31)
lwz 22,52(31)
insrdi 22,5,32,0
rotrdi 3,14,14
rotrdi 4,14,18
and 5,15,14
xor 3,3,4
add 9,9,0
andc 0,8,14
rotrdi 4,4,23
or 5,5,0
add 9,9,22
xor 3,3,4
add 9,9,5
add 9,9,3
rotrdi 3,10,28
rotrdi 4,10,34
and 5,10,11
and 0,10,12
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,11,12
xor 3,3,4
add 6,6,9
xor 5,5,0
ld 0,56(7)
add 9,9,3
add 9,9,5
lwz 5,56(31)
lwz 23,60(31)
insrdi 23,5,32,0
rotrdi 3,6,14
rotrdi 4,6,18
and 5,14,6
xor 3,3,4
add 8,8,0
andc 0,15,6
rotrdi 4,4,23
or 5,5,0
add 8,8,23
xor 3,3,4
add 8,8,5
add 8,8,3
rotrdi 3,9,28
rotrdi 4,9,34
and 5,9,10
and 0,9,11
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,10,11
xor 3,3,4
add 12,12,8
xor 5,5,0
ld 0,64(7)
add 8,8,3
add 8,8,5
lwz 5,64(31)
lwz 24,68(31)
insrdi 24,5,32,0
rotrdi 3,12,14
rotrdi 4,12,18
and 5,6,12
xor 3,3,4
add 15,15,0
andc 0,14,12
rotrdi 4,4,23
or 5,5,0
add 15,15,24
xor 3,3,4
add 15,15,5
add 15,15,3
rotrdi 3,8,28
rotrdi 4,8,34
and 5,8,9
and 0,8,10
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,9,10
xor 3,3,4
add 11,11,15
xor 5,5,0
ld 0,72(7)
add 15,15,3
add 15,15,5
lwz 5,72(31)
lwz 25,76(31)
insrdi 25,5,32,0
rotrdi 3,11,14
rotrdi 4,11,18
and 5,12,11
xor 3,3,4
add 14,14,0
andc 0,6,11
rotrdi 4,4,23
or 5,5,0
add 14,14,25
xor 3,3,4
add 14,14,5
add 14,14,3
rotrdi 3,15,28
rotrdi 4,15,34
and 5,15,8
and 0,15,9
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,8,9
xor 3,3,4
add 10,10,14
xor 5,5,0
ld 0,80(7)
add 14,14,3
add 14,14,5
lwz 5,80(31)
lwz 26,84(31)
insrdi 26,5,32,0
rotrdi 3,10,14
rotrdi 4,10,18
and 5,11,10
xor 3,3,4
add 6,6,0
andc 0,12,10
rotrdi 4,4,23
or 5,5,0
add 6,6,26
xor 3,3,4
add 6,6,5
add 6,6,3
rotrdi 3,14,28
rotrdi 4,14,34
and 5,14,15
and 0,14,8
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,15,8
xor 3,3,4
add 9,9,6
xor 5,5,0
ld 0,88(7)
add 6,6,3
add 6,6,5
lwz 5,88(31)
lwz 27,92(31)
insrdi 27,5,32,0
rotrdi 3,9,14
rotrdi 4,9,18
and 5,10,9
xor 3,3,4
add 12,12,0
andc 0,11,9
rotrdi 4,4,23
or 5,5,0
add 12,12,27
xor 3,3,4
add 12,12,5
add 12,12,3
rotrdi 3,6,28
rotrdi 4,6,34
and 5,6,14
and 0,6,15
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,14,15
xor 3,3,4
add 8,8,12
xor 5,5,0
ld 0,96(7)
add 12,12,3
add 12,12,5
lwz 5,96(31)
lwz 28,100(31)
insrdi 28,5,32,0
rotrdi 3,8,14
rotrdi 4,8,18
and 5,9,8
xor 3,3,4
add 11,11,0
andc 0,10,8
rotrdi 4,4,23
or 5,5,0
add 11,11,28
xor 3,3,4
add 11,11,5
add 11,11,3
rotrdi 3,12,28
rotrdi 4,12,34
and 5,12,6
and 0,12,14
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,6,14
xor 3,3,4
add 15,15,11
xor 5,5,0
ld 0,104(7)
add 11,11,3
add 11,11,5
lwz 5,104(31)
lwz 29,108(31)
insrdi 29,5,32,0
rotrdi 3,15,14
rotrdi 4,15,18
and 5,8,15
xor 3,3,4
add 10,10,0
andc 0,9,15
rotrdi 4,4,23
or 5,5,0
add 10,10,29
xor 3,3,4
add 10,10,5
add 10,10,3
rotrdi 3,11,28
rotrdi 4,11,34
and 5,11,12
and 0,11,6
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,12,6
xor 3,3,4
add 14,14,10
xor 5,5,0
ld 0,112(7)
add 10,10,3
add 10,10,5
lwz 5,112(31)
lwz 30,116(31)
insrdi 30,5,32,0
rotrdi 3,14,14
rotrdi 4,14,18
and 5,15,14
xor 3,3,4
add 9,9,0
andc 0,8,14
rotrdi 4,4,23
or 5,5,0
add 9,9,30
xor 3,3,4
add 9,9,5
add 9,9,3
rotrdi 3,10,28
rotrdi 4,10,34
and 5,10,11
and 0,10,12
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,11,12
xor 3,3,4
add 6,6,9
xor 5,5,0
ld 0,120(7)
add 9,9,3
add 9,9,5
lwz 5,120(31)
lwz 31,124(31)
insrdi 31,5,32,0
rotrdi 3,6,14
rotrdi 4,6,18
and 5,14,6
xor 3,3,4
add 8,8,0
andc 0,15,6
rotrdi 4,4,23
or 5,5,0
add 8,8,31
xor 3,3,4
add 8,8,5
add 8,8,3
rotrdi 3,9,28
rotrdi 4,9,34
and 5,9,10
and 0,9,11
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,10,11
xor 3,3,4
add 12,12,8
xor 5,5,0
add 8,8,3
add 8,8,5
li 5,4
mtctr 5
.align 4
.Lrounds:
addi 7,7,128
rotrdi 3,17,1
rotrdi 4,17,8
rotrdi 5,30,19
rotrdi 0,30,61
xor 3,3,4
srdi 4,17,7
xor 5,5,0
srdi 0,30,6
add 16,16,25
xor 3,3,4
xor 5,5,0
ld 0,0(7)
add 16,16,3
add 16,16,5
rotrdi 3,12,14
rotrdi 4,12,18
and 5,6,12
xor 3,3,4
add 15,15,0
andc 0,14,12
rotrdi 4,4,23
or 5,5,0
add 15,15,16
xor 3,3,4
add 15,15,5
add 15,15,3
rotrdi 3,8,28
rotrdi 4,8,34
and 5,8,9
and 0,8,10
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,9,10
xor 3,3,4
add 11,11,15
xor 5,5,0
add 15,15,3
add 15,15,5
rotrdi 3,18,1
rotrdi 4,18,8
rotrdi 5,31,19
rotrdi 0,31,61
xor 3,3,4
srdi 4,18,7
xor 5,5,0
srdi 0,31,6
add 17,17,26
xor 3,3,4
xor 5,5,0
ld 0,8(7)
add 17,17,3
add 17,17,5
rotrdi 3,11,14
rotrdi 4,11,18
and 5,12,11
xor 3,3,4
add 14,14,0
andc 0,6,11
rotrdi 4,4,23
or 5,5,0
add 14,14,17
xor 3,3,4
add 14,14,5
add 14,14,3
rotrdi 3,15,28
rotrdi 4,15,34
and 5,15,8
and 0,15,9
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,8,9
xor 3,3,4
add 10,10,14
xor 5,5,0
add 14,14,3
add 14,14,5
rotrdi 3,19,1
rotrdi 4,19,8
rotrdi 5,16,19
rotrdi 0,16,61
xor 3,3,4
srdi 4,19,7
xor 5,5,0
srdi 0,16,6
add 18,18,27
xor 3,3,4
xor 5,5,0
ld 0,16(7)
add 18,18,3
add 18,18,5
rotrdi 3,10,14
rotrdi 4,10,18
and 5,11,10
xor 3,3,4
add 6,6,0
andc 0,12,10
rotrdi 4,4,23
or 5,5,0
add 6,6,18
xor 3,3,4
add 6,6,5
add 6,6,3
rotrdi 3,14,28
rotrdi 4,14,34
and 5,14,15
and 0,14,8
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,15,8
xor 3,3,4
add 9,9,6
xor 5,5,0
add 6,6,3
add 6,6,5
rotrdi 3,20,1
rotrdi 4,20,8
rotrdi 5,17,19
rotrdi 0,17,61
xor 3,3,4
srdi 4,20,7
xor 5,5,0
srdi 0,17,6
add 19,19,28
xor 3,3,4
xor 5,5,0
ld 0,24(7)
add 19,19,3
add 19,19,5
rotrdi 3,9,14
rotrdi 4,9,18
and 5,10,9
xor 3,3,4
add 12,12,0
andc 0,11,9
rotrdi 4,4,23
or 5,5,0
add 12,12,19
xor 3,3,4
add 12,12,5
add 12,12,3
rotrdi 3,6,28
rotrdi 4,6,34
and 5,6,14
and 0,6,15
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,14,15
xor 3,3,4
add 8,8,12
xor 5,5,0
add 12,12,3
add 12,12,5
rotrdi 3,21,1
rotrdi 4,21,8
rotrdi 5,18,19
rotrdi 0,18,61
xor 3,3,4
srdi 4,21,7
xor 5,5,0
srdi 0,18,6
add 20,20,29
xor 3,3,4
xor 5,5,0
ld 0,32(7)
add 20,20,3
add 20,20,5
rotrdi 3,8,14
rotrdi 4,8,18
and 5,9,8
xor 3,3,4
add 11,11,0
andc 0,10,8
rotrdi 4,4,23
or 5,5,0
add 11,11,20
xor 3,3,4
add 11,11,5
add 11,11,3
rotrdi 3,12,28
rotrdi 4,12,34
and 5,12,6
and 0,12,14
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,6,14
xor 3,3,4
add 15,15,11
xor 5,5,0
add 11,11,3
add 11,11,5
rotrdi 3,22,1
rotrdi 4,22,8
rotrdi 5,19,19
rotrdi 0,19,61
xor 3,3,4
srdi 4,22,7
xor 5,5,0
srdi 0,19,6
add 21,21,30
xor 3,3,4
xor 5,5,0
ld 0,40(7)
add 21,21,3
add 21,21,5
rotrdi 3,15,14
rotrdi 4,15,18
and 5,8,15
xor 3,3,4
add 10,10,0
andc 0,9,15
rotrdi 4,4,23
or 5,5,0
add 10,10,21
xor 3,3,4
add 10,10,5
add 10,10,3
rotrdi 3,11,28
rotrdi 4,11,34
and 5,11,12
and 0,11,6
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,12,6
xor 3,3,4
add 14,14,10
xor 5,5,0
add 10,10,3
add 10,10,5
rotrdi 3,23,1
rotrdi 4,23,8
rotrdi 5,20,19
rotrdi 0,20,61
xor 3,3,4
srdi 4,23,7
xor 5,5,0
srdi 0,20,6
add 22,22,31
xor 3,3,4
xor 5,5,0
ld 0,48(7)
add 22,22,3
add 22,22,5
rotrdi 3,14,14
rotrdi 4,14,18
and 5,15,14
xor 3,3,4
add 9,9,0
andc 0,8,14
rotrdi 4,4,23
or 5,5,0
add 9,9,22
xor 3,3,4
add 9,9,5
add 9,9,3
rotrdi 3,10,28
rotrdi 4,10,34
and 5,10,11
and 0,10,12
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,11,12
xor 3,3,4
add 6,6,9
xor 5,5,0
add 9,9,3
add 9,9,5
rotrdi 3,24,1
rotrdi 4,24,8
rotrdi 5,21,19
rotrdi 0,21,61
xor 3,3,4
srdi 4,24,7
xor 5,5,0
srdi 0,21,6
add 23,23,16
xor 3,3,4
xor 5,5,0
ld 0,56(7)
add 23,23,3
add 23,23,5
rotrdi 3,6,14
rotrdi 4,6,18
and 5,14,6
xor 3,3,4
add 8,8,0
andc 0,15,6
rotrdi 4,4,23
or 5,5,0
add 8,8,23
xor 3,3,4
add 8,8,5
add 8,8,3
rotrdi 3,9,28
rotrdi 4,9,34
and 5,9,10
and 0,9,11
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,10,11
xor 3,3,4
add 12,12,8
xor 5,5,0
add 8,8,3
add 8,8,5
rotrdi 3,25,1
rotrdi 4,25,8
rotrdi 5,22,19
rotrdi 0,22,61
xor 3,3,4
srdi 4,25,7
xor 5,5,0
srdi 0,22,6
add 24,24,17
xor 3,3,4
xor 5,5,0
ld 0,64(7)
add 24,24,3
add 24,24,5
rotrdi 3,12,14
rotrdi 4,12,18
and 5,6,12
xor 3,3,4
add 15,15,0
andc 0,14,12
rotrdi 4,4,23
or 5,5,0
add 15,15,24
xor 3,3,4
add 15,15,5
add 15,15,3
rotrdi 3,8,28
rotrdi 4,8,34
and 5,8,9
and 0,8,10
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,9,10
xor 3,3,4
add 11,11,15
xor 5,5,0
add 15,15,3
add 15,15,5
rotrdi 3,26,1
rotrdi 4,26,8
rotrdi 5,23,19
rotrdi 0,23,61
xor 3,3,4
srdi 4,26,7
xor 5,5,0
srdi 0,23,6
add 25,25,18
xor 3,3,4
xor 5,5,0
ld 0,72(7)
add 25,25,3
add 25,25,5
rotrdi 3,11,14
rotrdi 4,11,18
and 5,12,11
xor 3,3,4
add 14,14,0
andc 0,6,11
rotrdi 4,4,23
or 5,5,0
add 14,14,25
xor 3,3,4
add 14,14,5
add 14,14,3
rotrdi 3,15,28
rotrdi 4,15,34
and 5,15,8
and 0,15,9
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,8,9
xor 3,3,4
add 10,10,14
xor 5,5,0
add 14,14,3
add 14,14,5
rotrdi 3,27,1
rotrdi 4,27,8
rotrdi 5,24,19
rotrdi 0,24,61
xor 3,3,4
srdi 4,27,7
xor 5,5,0
srdi 0,24,6
add 26,26,19
xor 3,3,4
xor 5,5,0
ld 0,80(7)
add 26,26,3
add 26,26,5
rotrdi 3,10,14
rotrdi 4,10,18
and 5,11,10
xor 3,3,4
add 6,6,0
andc 0,12,10
rotrdi 4,4,23
or 5,5,0
add 6,6,26
xor 3,3,4
add 6,6,5
add 6,6,3
rotrdi 3,14,28
rotrdi 4,14,34
and 5,14,15
and 0,14,8
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,15,8
xor 3,3,4
add 9,9,6
xor 5,5,0
add 6,6,3
add 6,6,5
rotrdi 3,28,1
rotrdi 4,28,8
rotrdi 5,25,19
rotrdi 0,25,61
xor 3,3,4
srdi 4,28,7
xor 5,5,0
srdi 0,25,6
add 27,27,20
xor 3,3,4
xor 5,5,0
ld 0,88(7)
add 27,27,3
add 27,27,5
rotrdi 3,9,14
rotrdi 4,9,18
and 5,10,9
xor 3,3,4
add 12,12,0
andc 0,11,9
rotrdi 4,4,23
or 5,5,0
add 12,12,27
xor 3,3,4
add 12,12,5
add 12,12,3
rotrdi 3,6,28
rotrdi 4,6,34
and 5,6,14
and 0,6,15
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,14,15
xor 3,3,4
add 8,8,12
xor 5,5,0
add 12,12,3
add 12,12,5
rotrdi 3,29,1
rotrdi 4,29,8
rotrdi 5,26,19
rotrdi 0,26,61
xor 3,3,4
srdi 4,29,7
xor 5,5,0
srdi 0,26,6
add 28,28,21
xor 3,3,4
xor 5,5,0
ld 0,96(7)
add 28,28,3
add 28,28,5
rotrdi 3,8,14
rotrdi 4,8,18
and 5,9,8
xor 3,3,4
add 11,11,0
andc 0,10,8
rotrdi 4,4,23
or 5,5,0
add 11,11,28
xor 3,3,4
add 11,11,5
add 11,11,3
rotrdi 3,12,28
rotrdi 4,12,34
and 5,12,6
and 0,12,14
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,6,14
xor 3,3,4
add 15,15,11
xor 5,5,0
add 11,11,3
add 11,11,5
rotrdi 3,30,1
rotrdi 4,30,8
rotrdi 5,27,19
rotrdi 0,27,61
xor 3,3,4
srdi 4,30,7
xor 5,5,0
srdi 0,27,6
add 29,29,22
xor 3,3,4
xor 5,5,0
ld 0,104(7)
add 29,29,3
add 29,29,5
rotrdi 3,15,14
rotrdi 4,15,18
and 5,8,15
xor 3,3,4
add 10,10,0
andc 0,9,15
rotrdi 4,4,23
or 5,5,0
add 10,10,29
xor 3,3,4
add 10,10,5
add 10,10,3
rotrdi 3,11,28
rotrdi 4,11,34
and 5,11,12
and 0,11,6
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,12,6
xor 3,3,4
add 14,14,10
xor 5,5,0
add 10,10,3
add 10,10,5
rotrdi 3,31,1
rotrdi 4,31,8
rotrdi 5,28,19
rotrdi 0,28,61
xor 3,3,4
srdi 4,31,7
xor 5,5,0
srdi 0,28,6
add 30,30,23
xor 3,3,4
xor 5,5,0
ld 0,112(7)
add 30,30,3
add 30,30,5
rotrdi 3,14,14
rotrdi 4,14,18
and 5,15,14
xor 3,3,4
add 9,9,0
andc 0,8,14
rotrdi 4,4,23
or 5,5,0
add 9,9,30
xor 3,3,4
add 9,9,5
add 9,9,3
rotrdi 3,10,28
rotrdi 4,10,34
and 5,10,11
and 0,10,12
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,11,12
xor 3,3,4
add 6,6,9
xor 5,5,0
add 9,9,3
add 9,9,5
rotrdi 3,16,1
rotrdi 4,16,8
rotrdi 5,29,19
rotrdi 0,29,61
xor 3,3,4
srdi 4,16,7
xor 5,5,0
srdi 0,29,6
add 31,31,24
xor 3,3,4
xor 5,5,0
ld 0,120(7)
add 31,31,3
add 31,31,5
rotrdi 3,6,14
rotrdi 4,6,18
and 5,14,6
xor 3,3,4
add 8,8,0
andc 0,15,6
rotrdi 4,4,23
or 5,5,0
add 8,8,31
xor 3,3,4
add 8,8,5
add 8,8,3
rotrdi 3,9,28
rotrdi 4,9,34
and 5,9,10
and 0,9,11
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,10,11
xor 3,3,4
add 12,12,8
xor 5,5,0
add 8,8,3
add 8,8,5
bdnz .Lrounds
ld 3,208(1)
ld 31,200(1)
ld 5,192(1)
subi 7,7,512
ld 16,0(3)
ld 17,8(3)
ld 18,16(3)
ld 19,24(3)
ld 20,32(3)
ld 21,40(3)
ld 22,48(3)
addi 31,31,128
ld 23,56(3)
add 8,8,16
add 9,9,17
std 31,200(1)
add 10,10,18
std 8,0(3)
add 11,11,19
std 9,8(3)
add 12,12,20
std 10,16(3)
add 6,6,21
std 11,24(3)
add 14,14,22
std 12,32(3)
add 15,15,23
std 6,40(3)
std 14,48(3)
cmpld 31,5
std 15,56(3)
bne .Lsha2_block_private
blr
.long 0
.byte 0,12,0x14,0,0,0,0,0
.size .zfs_sha512_ppc,.-.zfs_sha512_ppc
.size zfs_sha512_ppc,.-.zfs_sha512_ppc
.align 6
.LPICmeup:
mflr 0
bcl 20,31,$+4
mflr 7
addi 7,7,56
mtlr 0
blr
.long 0
.byte 0,12,0x14,0,0,0,0,0
.space 28
.long 0x428a2f98,0xd728ae22
.long 0x71374491,0x23ef65cd
.long 0xb5c0fbcf,0xec4d3b2f
.long 0xe9b5dba5,0x8189dbbc
.long 0x3956c25b,0xf348b538
.long 0x59f111f1,0xb605d019
.long 0x923f82a4,0xaf194f9b
.long 0xab1c5ed5,0xda6d8118
.long 0xd807aa98,0xa3030242
.long 0x12835b01,0x45706fbe
.long 0x243185be,0x4ee4b28c
.long 0x550c7dc3,0xd5ffb4e2
.long 0x72be5d74,0xf27b896f
.long 0x80deb1fe,0x3b1696b1
.long 0x9bdc06a7,0x25c71235
.long 0xc19bf174,0xcf692694
.long 0xe49b69c1,0x9ef14ad2
.long 0xefbe4786,0x384f25e3
.long 0x0fc19dc6,0x8b8cd5b5
.long 0x240ca1cc,0x77ac9c65
.long 0x2de92c6f,0x592b0275
.long 0x4a7484aa,0x6ea6e483
.long 0x5cb0a9dc,0xbd41fbd4
.long 0x76f988da,0x831153b5
.long 0x983e5152,0xee66dfab
.long 0xa831c66d,0x2db43210
.long 0xb00327c8,0x98fb213f
.long 0xbf597fc7,0xbeef0ee4
.long 0xc6e00bf3,0x3da88fc2
.long 0xd5a79147,0x930aa725
.long 0x06ca6351,0xe003826f
.long 0x14292967,0x0a0e6e70
.long 0x27b70a85,0x46d22ffc
.long 0x2e1b2138,0x5c26c926
.long 0x4d2c6dfc,0x5ac42aed
.long 0x53380d13,0x9d95b3df
.long 0x650a7354,0x8baf63de
.long 0x766a0abb,0x3c77b2a8
.long 0x81c2c92e,0x47edaee6
.long 0x92722c85,0x1482353b
.long 0xa2bfe8a1,0x4cf10364
.long 0xa81a664b,0xbc423001
.long 0xc24b8b70,0xd0f89791
.long 0xc76c51a3,0x0654be30
.long 0xd192e819,0xd6ef5218
.long 0xd6990624,0x5565a910
.long 0xf40e3585,0x5771202a
.long 0x106aa070,0x32bbd1b8
.long 0x19a4c116,0xb8d2d0c8
.long 0x1e376c08,0x5141ab53
.long 0x2748774c,0xdf8eeb99
.long 0x34b0bcb5,0xe19b48a8
.long 0x391c0cb3,0xc5c95a63
.long 0x4ed8aa4a,0xe3418acb
.long 0x5b9cca4f,0x7763e373
.long 0x682e6ff3,0xd6b2b8a3
.long 0x748f82ee,0x5defb2fc
.long 0x78a5636f,0x43172f60
.long 0x84c87814,0xa1f0ab72
.long 0x8cc70208,0x1a6439ec
.long 0x90befffa,0x23631e28
.long 0xa4506ceb,0xde82bde9
.long 0xbef9a3f7,0xb2c67915
.long 0xc67178f2,0xe372532b
.long 0xca273ece,0xea26619c
.long 0xd186b8c7,0x21c0c207
.long 0xeada7dd6,0xcde0eb1e
.long 0xf57d4f7f,0xee6ed178
.long 0x06f067aa,0x72176fba
.long 0x0a637dc5,0xa2c898a6
.long 0x113f9804,0xbef90dae
.long 0x1b710b35,0x131c471b
.long 0x28db77f5,0x23047d84
.long 0x32caab7b,0x40c72493
.long 0x3c9ebe0a,0x15c9bebc
.long 0x431d67c4,0x9c100d4c
.long 0x4cc5d4be,0xcb3e42b6
.long 0x597f299c,0xfc657e2a
.long 0x5fcb6fab,0x3ad6faec
.long 0x6c44198c,0x4a475817
#elif (defined(__PPC64__) && defined(__LITTLE_ENDIAN__))
.abiversion 2
.text
.globl zfs_sha512_ppc
.type zfs_sha512_ppc,@function
.align 6
zfs_sha512_ppc:
.localentry zfs_sha512_ppc,0
stdu 1,-384(1)
mflr 0
sldi 5,5,7
std 3,208(1)
std 14,240(1)
std 15,248(1)
std 16,256(1)
std 17,264(1)
std 18,272(1)
std 19,280(1)
std 20,288(1)
std 21,296(1)
std 22,304(1)
std 23,312(1)
std 24,320(1)
std 25,328(1)
std 26,336(1)
std 27,344(1)
std 28,352(1)
std 29,360(1)
std 30,368(1)
std 31,376(1)
std 0,400(1)
ld 8,0(3)
mr 31,4
ld 9,8(3)
ld 10,16(3)
ld 11,24(3)
ld 12,32(3)
ld 6,40(3)
ld 14,48(3)
ld 15,56(3)
bl .LPICmeup
.LPICedup:
andi. 0,31,3
bne .Lunaligned
.Laligned:
add 5,31,5
std 5,192(1)
std 31,200(1)
bl .Lsha2_block_private
b .Ldone
.align 4
.Lunaligned:
subfic 0,31,4096
andi. 0,0,3968
beq .Lcross_page
cmpld 5,0
ble .Laligned
subfc 5,0,5
add 0,31,0
std 5,184(1)
std 0,192(1)
std 31,200(1)
bl .Lsha2_block_private
ld 5,184(1)
.Lcross_page:
li 0,32
mtctr 0
addi 20,1,48
.Lmemcpy:
lbz 16,0(31)
lbz 17,1(31)
lbz 18,2(31)
lbz 19,3(31)
addi 31,31,4
stb 16,0(20)
stb 17,1(20)
stb 18,2(20)
stb 19,3(20)
addi 20,20,4
bdnz .Lmemcpy
std 31,176(1)
addi 0,1,176
addi 31,1,48
std 5,184(1)
std 0,192(1)
std 31,200(1)
bl .Lsha2_block_private
ld 31,176(1)
ld 5,184(1)
addic. 5,5,-128
bne .Lunaligned
.Ldone:
ld 0,400(1)
ld 14,240(1)
ld 15,248(1)
ld 16,256(1)
ld 17,264(1)
ld 18,272(1)
ld 19,280(1)
ld 20,288(1)
ld 21,296(1)
ld 22,304(1)
ld 23,312(1)
ld 24,320(1)
ld 25,328(1)
ld 26,336(1)
ld 27,344(1)
ld 28,352(1)
ld 29,360(1)
ld 30,368(1)
ld 31,376(1)
mtlr 0
addi 1,1,384
blr
.long 0
.byte 0,12,4,1,0x80,18,3,0
.long 0
.align 4
.Lsha2_block_private:
ld 0,0(7)
lwz 3,0(31)
lwz 4,4(31)
rotlwi 5,3,8
rotlwi 16,4,8
rlwimi 5,3,24,0,7
rlwimi 16,4,24,0,7
rlwimi 5,3,24,16,23
rlwimi 16,4,24,16,23
insrdi 16,5,32,0
rotrdi 3,12,14
rotrdi 4,12,18
and 5,6,12
xor 3,3,4
add 15,15,0
andc 0,14,12
rotrdi 4,4,23
or 5,5,0
add 15,15,16
xor 3,3,4
add 15,15,5
add 15,15,3
rotrdi 3,8,28
rotrdi 4,8,34
and 5,8,9
and 0,8,10
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,9,10
xor 3,3,4
add 11,11,15
xor 5,5,0
ld 0,8(7)
add 15,15,3
add 15,15,5
lwz 3,8(31)
lwz 4,12(31)
rotlwi 5,3,8
rotlwi 17,4,8
rlwimi 5,3,24,0,7
rlwimi 17,4,24,0,7
rlwimi 5,3,24,16,23
rlwimi 17,4,24,16,23
insrdi 17,5,32,0
rotrdi 3,11,14
rotrdi 4,11,18
and 5,12,11
xor 3,3,4
add 14,14,0
andc 0,6,11
rotrdi 4,4,23
or 5,5,0
add 14,14,17
xor 3,3,4
add 14,14,5
add 14,14,3
rotrdi 3,15,28
rotrdi 4,15,34
and 5,15,8
and 0,15,9
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,8,9
xor 3,3,4
add 10,10,14
xor 5,5,0
ld 0,16(7)
add 14,14,3
add 14,14,5
lwz 3,16(31)
lwz 4,20(31)
rotlwi 5,3,8
rotlwi 18,4,8
rlwimi 5,3,24,0,7
rlwimi 18,4,24,0,7
rlwimi 5,3,24,16,23
rlwimi 18,4,24,16,23
insrdi 18,5,32,0
rotrdi 3,10,14
rotrdi 4,10,18
and 5,11,10
xor 3,3,4
add 6,6,0
andc 0,12,10
rotrdi 4,4,23
or 5,5,0
add 6,6,18
xor 3,3,4
add 6,6,5
add 6,6,3
rotrdi 3,14,28
rotrdi 4,14,34
and 5,14,15
and 0,14,8
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,15,8
xor 3,3,4
add 9,9,6
xor 5,5,0
ld 0,24(7)
add 6,6,3
add 6,6,5
lwz 3,24(31)
lwz 4,28(31)
rotlwi 5,3,8
rotlwi 19,4,8
rlwimi 5,3,24,0,7
rlwimi 19,4,24,0,7
rlwimi 5,3,24,16,23
rlwimi 19,4,24,16,23
insrdi 19,5,32,0
rotrdi 3,9,14
rotrdi 4,9,18
and 5,10,9
xor 3,3,4
add 12,12,0
andc 0,11,9
rotrdi 4,4,23
or 5,5,0
add 12,12,19
xor 3,3,4
add 12,12,5
add 12,12,3
rotrdi 3,6,28
rotrdi 4,6,34
and 5,6,14
and 0,6,15
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,14,15
xor 3,3,4
add 8,8,12
xor 5,5,0
ld 0,32(7)
add 12,12,3
add 12,12,5
lwz 3,32(31)
lwz 4,36(31)
rotlwi 5,3,8
rotlwi 20,4,8
rlwimi 5,3,24,0,7
rlwimi 20,4,24,0,7
rlwimi 5,3,24,16,23
rlwimi 20,4,24,16,23
insrdi 20,5,32,0
rotrdi 3,8,14
rotrdi 4,8,18
and 5,9,8
xor 3,3,4
add 11,11,0
andc 0,10,8
rotrdi 4,4,23
or 5,5,0
add 11,11,20
xor 3,3,4
add 11,11,5
add 11,11,3
rotrdi 3,12,28
rotrdi 4,12,34
and 5,12,6
and 0,12,14
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,6,14
xor 3,3,4
add 15,15,11
xor 5,5,0
ld 0,40(7)
add 11,11,3
add 11,11,5
lwz 3,40(31)
lwz 4,44(31)
rotlwi 5,3,8
rotlwi 21,4,8
rlwimi 5,3,24,0,7
rlwimi 21,4,24,0,7
rlwimi 5,3,24,16,23
rlwimi 21,4,24,16,23
insrdi 21,5,32,0
rotrdi 3,15,14
rotrdi 4,15,18
and 5,8,15
xor 3,3,4
add 10,10,0
andc 0,9,15
rotrdi 4,4,23
or 5,5,0
add 10,10,21
xor 3,3,4
add 10,10,5
add 10,10,3
rotrdi 3,11,28
rotrdi 4,11,34
and 5,11,12
and 0,11,6
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,12,6
xor 3,3,4
add 14,14,10
xor 5,5,0
ld 0,48(7)
add 10,10,3
add 10,10,5
lwz 3,48(31)
lwz 4,52(31)
rotlwi 5,3,8
rotlwi 22,4,8
rlwimi 5,3,24,0,7
rlwimi 22,4,24,0,7
rlwimi 5,3,24,16,23
rlwimi 22,4,24,16,23
insrdi 22,5,32,0
rotrdi 3,14,14
rotrdi 4,14,18
and 5,15,14
xor 3,3,4
add 9,9,0
andc 0,8,14
rotrdi 4,4,23
or 5,5,0
add 9,9,22
xor 3,3,4
add 9,9,5
add 9,9,3
rotrdi 3,10,28
rotrdi 4,10,34
and 5,10,11
and 0,10,12
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,11,12
xor 3,3,4
add 6,6,9
xor 5,5,0
ld 0,56(7)
add 9,9,3
add 9,9,5
lwz 3,56(31)
lwz 4,60(31)
rotlwi 5,3,8
rotlwi 23,4,8
rlwimi 5,3,24,0,7
rlwimi 23,4,24,0,7
rlwimi 5,3,24,16,23
rlwimi 23,4,24,16,23
insrdi 23,5,32,0
rotrdi 3,6,14
rotrdi 4,6,18
and 5,14,6
xor 3,3,4
add 8,8,0
andc 0,15,6
rotrdi 4,4,23
or 5,5,0
add 8,8,23
xor 3,3,4
add 8,8,5
add 8,8,3
rotrdi 3,9,28
rotrdi 4,9,34
and 5,9,10
and 0,9,11
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,10,11
xor 3,3,4
add 12,12,8
xor 5,5,0
ld 0,64(7)
add 8,8,3
add 8,8,5
lwz 3,64(31)
lwz 4,68(31)
rotlwi 5,3,8
rotlwi 24,4,8
rlwimi 5,3,24,0,7
rlwimi 24,4,24,0,7
rlwimi 5,3,24,16,23
rlwimi 24,4,24,16,23
insrdi 24,5,32,0
rotrdi 3,12,14
rotrdi 4,12,18
and 5,6,12
xor 3,3,4
add 15,15,0
andc 0,14,12
rotrdi 4,4,23
or 5,5,0
add 15,15,24
xor 3,3,4
add 15,15,5
add 15,15,3
rotrdi 3,8,28
rotrdi 4,8,34
and 5,8,9
and 0,8,10
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,9,10
xor 3,3,4
add 11,11,15
xor 5,5,0
ld 0,72(7)
add 15,15,3
add 15,15,5
lwz 3,72(31)
lwz 4,76(31)
rotlwi 5,3,8
rotlwi 25,4,8
rlwimi 5,3,24,0,7
rlwimi 25,4,24,0,7
rlwimi 5,3,24,16,23
rlwimi 25,4,24,16,23
insrdi 25,5,32,0
rotrdi 3,11,14
rotrdi 4,11,18
and 5,12,11
xor 3,3,4
add 14,14,0
andc 0,6,11
rotrdi 4,4,23
or 5,5,0
add 14,14,25
xor 3,3,4
add 14,14,5
add 14,14,3
rotrdi 3,15,28
rotrdi 4,15,34
and 5,15,8
and 0,15,9
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,8,9
xor 3,3,4
add 10,10,14
xor 5,5,0
ld 0,80(7)
add 14,14,3
add 14,14,5
lwz 3,80(31)
lwz 4,84(31)
rotlwi 5,3,8
rotlwi 26,4,8
rlwimi 5,3,24,0,7
rlwimi 26,4,24,0,7
rlwimi 5,3,24,16,23
rlwimi 26,4,24,16,23
insrdi 26,5,32,0
rotrdi 3,10,14
rotrdi 4,10,18
and 5,11,10
xor 3,3,4
add 6,6,0
andc 0,12,10
rotrdi 4,4,23
or 5,5,0
add 6,6,26
xor 3,3,4
add 6,6,5
add 6,6,3
rotrdi 3,14,28
rotrdi 4,14,34
and 5,14,15
and 0,14,8
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,15,8
xor 3,3,4
add 9,9,6
xor 5,5,0
ld 0,88(7)
add 6,6,3
add 6,6,5
lwz 3,88(31)
lwz 4,92(31)
rotlwi 5,3,8
rotlwi 27,4,8
rlwimi 5,3,24,0,7
rlwimi 27,4,24,0,7
rlwimi 5,3,24,16,23
rlwimi 27,4,24,16,23
insrdi 27,5,32,0
rotrdi 3,9,14
rotrdi 4,9,18
and 5,10,9
xor 3,3,4
add 12,12,0
andc 0,11,9
rotrdi 4,4,23
or 5,5,0
add 12,12,27
xor 3,3,4
add 12,12,5
add 12,12,3
rotrdi 3,6,28
rotrdi 4,6,34
and 5,6,14
and 0,6,15
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,14,15
xor 3,3,4
add 8,8,12
xor 5,5,0
ld 0,96(7)
add 12,12,3
add 12,12,5
lwz 3,96(31)
lwz 4,100(31)
rotlwi 5,3,8
rotlwi 28,4,8
rlwimi 5,3,24,0,7
rlwimi 28,4,24,0,7
rlwimi 5,3,24,16,23
rlwimi 28,4,24,16,23
insrdi 28,5,32,0
rotrdi 3,8,14
rotrdi 4,8,18
and 5,9,8
xor 3,3,4
add 11,11,0
andc 0,10,8
rotrdi 4,4,23
or 5,5,0
add 11,11,28
xor 3,3,4
add 11,11,5
add 11,11,3
rotrdi 3,12,28
rotrdi 4,12,34
and 5,12,6
and 0,12,14
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,6,14
xor 3,3,4
add 15,15,11
xor 5,5,0
ld 0,104(7)
add 11,11,3
add 11,11,5
lwz 3,104(31)
lwz 4,108(31)
rotlwi 5,3,8
rotlwi 29,4,8
rlwimi 5,3,24,0,7
rlwimi 29,4,24,0,7
rlwimi 5,3,24,16,23
rlwimi 29,4,24,16,23
insrdi 29,5,32,0
rotrdi 3,15,14
rotrdi 4,15,18
and 5,8,15
xor 3,3,4
add 10,10,0
andc 0,9,15
rotrdi 4,4,23
or 5,5,0
add 10,10,29
xor 3,3,4
add 10,10,5
add 10,10,3
rotrdi 3,11,28
rotrdi 4,11,34
and 5,11,12
and 0,11,6
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,12,6
xor 3,3,4
add 14,14,10
xor 5,5,0
ld 0,112(7)
add 10,10,3
add 10,10,5
lwz 3,112(31)
lwz 4,116(31)
rotlwi 5,3,8
rotlwi 30,4,8
rlwimi 5,3,24,0,7
rlwimi 30,4,24,0,7
rlwimi 5,3,24,16,23
rlwimi 30,4,24,16,23
insrdi 30,5,32,0
rotrdi 3,14,14
rotrdi 4,14,18
and 5,15,14
xor 3,3,4
add 9,9,0
andc 0,8,14
rotrdi 4,4,23
or 5,5,0
add 9,9,30
xor 3,3,4
add 9,9,5
add 9,9,3
rotrdi 3,10,28
rotrdi 4,10,34
and 5,10,11
and 0,10,12
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,11,12
xor 3,3,4
add 6,6,9
xor 5,5,0
ld 0,120(7)
add 9,9,3
add 9,9,5
lwz 3,120(31)
lwz 4,124(31)
rotlwi 5,3,8
rotlwi 31,4,8
rlwimi 5,3,24,0,7
rlwimi 31,4,24,0,7
rlwimi 5,3,24,16,23
rlwimi 31,4,24,16,23
insrdi 31,5,32,0
rotrdi 3,6,14
rotrdi 4,6,18
and 5,14,6
xor 3,3,4
add 8,8,0
andc 0,15,6
rotrdi 4,4,23
or 5,5,0
add 8,8,31
xor 3,3,4
add 8,8,5
add 8,8,3
rotrdi 3,9,28
rotrdi 4,9,34
and 5,9,10
and 0,9,11
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,10,11
xor 3,3,4
add 12,12,8
xor 5,5,0
add 8,8,3
add 8,8,5
li 5,4
mtctr 5
.align 4
.Lrounds:
addi 7,7,128
rotrdi 3,17,1
rotrdi 4,17,8
rotrdi 5,30,19
rotrdi 0,30,61
xor 3,3,4
srdi 4,17,7
xor 5,5,0
srdi 0,30,6
add 16,16,25
xor 3,3,4
xor 5,5,0
ld 0,0(7)
add 16,16,3
add 16,16,5
rotrdi 3,12,14
rotrdi 4,12,18
and 5,6,12
xor 3,3,4
add 15,15,0
andc 0,14,12
rotrdi 4,4,23
or 5,5,0
add 15,15,16
xor 3,3,4
add 15,15,5
add 15,15,3
rotrdi 3,8,28
rotrdi 4,8,34
and 5,8,9
and 0,8,10
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,9,10
xor 3,3,4
add 11,11,15
xor 5,5,0
add 15,15,3
add 15,15,5
rotrdi 3,18,1
rotrdi 4,18,8
rotrdi 5,31,19
rotrdi 0,31,61
xor 3,3,4
srdi 4,18,7
xor 5,5,0
srdi 0,31,6
add 17,17,26
xor 3,3,4
xor 5,5,0
ld 0,8(7)
add 17,17,3
add 17,17,5
rotrdi 3,11,14
rotrdi 4,11,18
and 5,12,11
xor 3,3,4
add 14,14,0
andc 0,6,11
rotrdi 4,4,23
or 5,5,0
add 14,14,17
xor 3,3,4
add 14,14,5
add 14,14,3
rotrdi 3,15,28
rotrdi 4,15,34
and 5,15,8
and 0,15,9
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,8,9
xor 3,3,4
add 10,10,14
xor 5,5,0
add 14,14,3
add 14,14,5
rotrdi 3,19,1
rotrdi 4,19,8
rotrdi 5,16,19
rotrdi 0,16,61
xor 3,3,4
srdi 4,19,7
xor 5,5,0
srdi 0,16,6
add 18,18,27
xor 3,3,4
xor 5,5,0
ld 0,16(7)
add 18,18,3
add 18,18,5
rotrdi 3,10,14
rotrdi 4,10,18
and 5,11,10
xor 3,3,4
add 6,6,0
andc 0,12,10
rotrdi 4,4,23
or 5,5,0
add 6,6,18
xor 3,3,4
add 6,6,5
add 6,6,3
rotrdi 3,14,28
rotrdi 4,14,34
and 5,14,15
and 0,14,8
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,15,8
xor 3,3,4
add 9,9,6
xor 5,5,0
add 6,6,3
add 6,6,5
rotrdi 3,20,1
rotrdi 4,20,8
rotrdi 5,17,19
rotrdi 0,17,61
xor 3,3,4
srdi 4,20,7
xor 5,5,0
srdi 0,17,6
add 19,19,28
xor 3,3,4
xor 5,5,0
ld 0,24(7)
add 19,19,3
add 19,19,5
rotrdi 3,9,14
rotrdi 4,9,18
and 5,10,9
xor 3,3,4
add 12,12,0
andc 0,11,9
rotrdi 4,4,23
or 5,5,0
add 12,12,19
xor 3,3,4
add 12,12,5
add 12,12,3
rotrdi 3,6,28
rotrdi 4,6,34
and 5,6,14
and 0,6,15
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,14,15
xor 3,3,4
add 8,8,12
xor 5,5,0
add 12,12,3
add 12,12,5
rotrdi 3,21,1
rotrdi 4,21,8
rotrdi 5,18,19
rotrdi 0,18,61
xor 3,3,4
srdi 4,21,7
xor 5,5,0
srdi 0,18,6
add 20,20,29
xor 3,3,4
xor 5,5,0
ld 0,32(7)
add 20,20,3
add 20,20,5
rotrdi 3,8,14
rotrdi 4,8,18
and 5,9,8
xor 3,3,4
add 11,11,0
andc 0,10,8
rotrdi 4,4,23
or 5,5,0
add 11,11,20
xor 3,3,4
add 11,11,5
add 11,11,3
rotrdi 3,12,28
rotrdi 4,12,34
and 5,12,6
and 0,12,14
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,6,14
xor 3,3,4
add 15,15,11
xor 5,5,0
add 11,11,3
add 11,11,5
rotrdi 3,22,1
rotrdi 4,22,8
rotrdi 5,19,19
rotrdi 0,19,61
xor 3,3,4
srdi 4,22,7
xor 5,5,0
srdi 0,19,6
add 21,21,30
xor 3,3,4
xor 5,5,0
ld 0,40(7)
add 21,21,3
add 21,21,5
rotrdi 3,15,14
rotrdi 4,15,18
and 5,8,15
xor 3,3,4
add 10,10,0
andc 0,9,15
rotrdi 4,4,23
or 5,5,0
add 10,10,21
xor 3,3,4
add 10,10,5
add 10,10,3
rotrdi 3,11,28
rotrdi 4,11,34
and 5,11,12
and 0,11,6
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,12,6
xor 3,3,4
add 14,14,10
xor 5,5,0
add 10,10,3
add 10,10,5
rotrdi 3,23,1
rotrdi 4,23,8
rotrdi 5,20,19
rotrdi 0,20,61
xor 3,3,4
srdi 4,23,7
xor 5,5,0
srdi 0,20,6
add 22,22,31
xor 3,3,4
xor 5,5,0
ld 0,48(7)
add 22,22,3
add 22,22,5
rotrdi 3,14,14
rotrdi 4,14,18
and 5,15,14
xor 3,3,4
add 9,9,0
andc 0,8,14
rotrdi 4,4,23
or 5,5,0
add 9,9,22
xor 3,3,4
add 9,9,5
add 9,9,3
rotrdi 3,10,28
rotrdi 4,10,34
and 5,10,11
and 0,10,12
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,11,12
xor 3,3,4
add 6,6,9
xor 5,5,0
add 9,9,3
add 9,9,5
rotrdi 3,24,1
rotrdi 4,24,8
rotrdi 5,21,19
rotrdi 0,21,61
xor 3,3,4
srdi 4,24,7
xor 5,5,0
srdi 0,21,6
add 23,23,16
xor 3,3,4
xor 5,5,0
ld 0,56(7)
add 23,23,3
add 23,23,5
rotrdi 3,6,14
rotrdi 4,6,18
and 5,14,6
xor 3,3,4
add 8,8,0
andc 0,15,6
rotrdi 4,4,23
or 5,5,0
add 8,8,23
xor 3,3,4
add 8,8,5
add 8,8,3
rotrdi 3,9,28
rotrdi 4,9,34
and 5,9,10
and 0,9,11
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,10,11
xor 3,3,4
add 12,12,8
xor 5,5,0
add 8,8,3
add 8,8,5
rotrdi 3,25,1
rotrdi 4,25,8
rotrdi 5,22,19
rotrdi 0,22,61
xor 3,3,4
srdi 4,25,7
xor 5,5,0
srdi 0,22,6
add 24,24,17
xor 3,3,4
xor 5,5,0
ld 0,64(7)
add 24,24,3
add 24,24,5
rotrdi 3,12,14
rotrdi 4,12,18
and 5,6,12
xor 3,3,4
add 15,15,0
andc 0,14,12
rotrdi 4,4,23
or 5,5,0
add 15,15,24
xor 3,3,4
add 15,15,5
add 15,15,3
rotrdi 3,8,28
rotrdi 4,8,34
and 5,8,9
and 0,8,10
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,9,10
xor 3,3,4
add 11,11,15
xor 5,5,0
add 15,15,3
add 15,15,5
rotrdi 3,26,1
rotrdi 4,26,8
rotrdi 5,23,19
rotrdi 0,23,61
xor 3,3,4
srdi 4,26,7
xor 5,5,0
srdi 0,23,6
add 25,25,18
xor 3,3,4
xor 5,5,0
ld 0,72(7)
add 25,25,3
add 25,25,5
rotrdi 3,11,14
rotrdi 4,11,18
and 5,12,11
xor 3,3,4
add 14,14,0
andc 0,6,11
rotrdi 4,4,23
or 5,5,0
add 14,14,25
xor 3,3,4
add 14,14,5
add 14,14,3
rotrdi 3,15,28
rotrdi 4,15,34
and 5,15,8
and 0,15,9
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,8,9
xor 3,3,4
add 10,10,14
xor 5,5,0
add 14,14,3
add 14,14,5
rotrdi 3,27,1
rotrdi 4,27,8
rotrdi 5,24,19
rotrdi 0,24,61
xor 3,3,4
srdi 4,27,7
xor 5,5,0
srdi 0,24,6
add 26,26,19
xor 3,3,4
xor 5,5,0
ld 0,80(7)
add 26,26,3
add 26,26,5
rotrdi 3,10,14
rotrdi 4,10,18
and 5,11,10
xor 3,3,4
add 6,6,0
andc 0,12,10
rotrdi 4,4,23
or 5,5,0
add 6,6,26
xor 3,3,4
add 6,6,5
add 6,6,3
rotrdi 3,14,28
rotrdi 4,14,34
and 5,14,15
and 0,14,8
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,15,8
xor 3,3,4
add 9,9,6
xor 5,5,0
add 6,6,3
add 6,6,5
rotrdi 3,28,1
rotrdi 4,28,8
rotrdi 5,25,19
rotrdi 0,25,61
xor 3,3,4
srdi 4,28,7
xor 5,5,0
srdi 0,25,6
add 27,27,20
xor 3,3,4
xor 5,5,0
ld 0,88(7)
add 27,27,3
add 27,27,5
rotrdi 3,9,14
rotrdi 4,9,18
and 5,10,9
xor 3,3,4
add 12,12,0
andc 0,11,9
rotrdi 4,4,23
or 5,5,0
add 12,12,27
xor 3,3,4
add 12,12,5
add 12,12,3
rotrdi 3,6,28
rotrdi 4,6,34
and 5,6,14
and 0,6,15
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,14,15
xor 3,3,4
add 8,8,12
xor 5,5,0
add 12,12,3
add 12,12,5
rotrdi 3,29,1
rotrdi 4,29,8
rotrdi 5,26,19
rotrdi 0,26,61
xor 3,3,4
srdi 4,29,7
xor 5,5,0
srdi 0,26,6
add 28,28,21
xor 3,3,4
xor 5,5,0
ld 0,96(7)
add 28,28,3
add 28,28,5
rotrdi 3,8,14
rotrdi 4,8,18
and 5,9,8
xor 3,3,4
add 11,11,0
andc 0,10,8
rotrdi 4,4,23
or 5,5,0
add 11,11,28
xor 3,3,4
add 11,11,5
add 11,11,3
rotrdi 3,12,28
rotrdi 4,12,34
and 5,12,6
and 0,12,14
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,6,14
xor 3,3,4
add 15,15,11
xor 5,5,0
add 11,11,3
add 11,11,5
rotrdi 3,30,1
rotrdi 4,30,8
rotrdi 5,27,19
rotrdi 0,27,61
xor 3,3,4
srdi 4,30,7
xor 5,5,0
srdi 0,27,6
add 29,29,22
xor 3,3,4
xor 5,5,0
ld 0,104(7)
add 29,29,3
add 29,29,5
rotrdi 3,15,14
rotrdi 4,15,18
and 5,8,15
xor 3,3,4
add 10,10,0
andc 0,9,15
rotrdi 4,4,23
or 5,5,0
add 10,10,29
xor 3,3,4
add 10,10,5
add 10,10,3
rotrdi 3,11,28
rotrdi 4,11,34
and 5,11,12
and 0,11,6
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,12,6
xor 3,3,4
add 14,14,10
xor 5,5,0
add 10,10,3
add 10,10,5
rotrdi 3,31,1
rotrdi 4,31,8
rotrdi 5,28,19
rotrdi 0,28,61
xor 3,3,4
srdi 4,31,7
xor 5,5,0
srdi 0,28,6
add 30,30,23
xor 3,3,4
xor 5,5,0
ld 0,112(7)
add 30,30,3
add 30,30,5
rotrdi 3,14,14
rotrdi 4,14,18
and 5,15,14
xor 3,3,4
add 9,9,0
andc 0,8,14
rotrdi 4,4,23
or 5,5,0
add 9,9,30
xor 3,3,4
add 9,9,5
add 9,9,3
rotrdi 3,10,28
rotrdi 4,10,34
and 5,10,11
and 0,10,12
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,11,12
xor 3,3,4
add 6,6,9
xor 5,5,0
add 9,9,3
add 9,9,5
rotrdi 3,16,1
rotrdi 4,16,8
rotrdi 5,29,19
rotrdi 0,29,61
xor 3,3,4
srdi 4,16,7
xor 5,5,0
srdi 0,29,6
add 31,31,24
xor 3,3,4
xor 5,5,0
ld 0,120(7)
add 31,31,3
add 31,31,5
rotrdi 3,6,14
rotrdi 4,6,18
and 5,14,6
xor 3,3,4
add 8,8,0
andc 0,15,6
rotrdi 4,4,23
or 5,5,0
add 8,8,31
xor 3,3,4
add 8,8,5
add 8,8,3
rotrdi 3,9,28
rotrdi 4,9,34
and 5,9,10
and 0,9,11
xor 3,3,4
rotrdi 4,4,5
xor 5,5,0
and 0,10,11
xor 3,3,4
add 12,12,8
xor 5,5,0
add 8,8,3
add 8,8,5
bdnz .Lrounds
ld 3,208(1)
ld 31,200(1)
ld 5,192(1)
subi 7,7,512
ld 16,0(3)
ld 17,8(3)
ld 18,16(3)
ld 19,24(3)
ld 20,32(3)
ld 21,40(3)
ld 22,48(3)
addi 31,31,128
ld 23,56(3)
add 8,8,16
add 9,9,17
std 31,200(1)
add 10,10,18
std 8,0(3)
add 11,11,19
std 9,8(3)
add 12,12,20
std 10,16(3)
add 6,6,21
std 11,24(3)
add 14,14,22
std 12,32(3)
add 15,15,23
std 6,40(3)
std 14,48(3)
cmpld 31,5
std 15,56(3)
bne .Lsha2_block_private
blr
.long 0
.byte 0,12,0x14,0,0,0,0,0
.size zfs_sha512_ppc,.-zfs_sha512_ppc
.align 6
.LPICmeup:
mflr 0
bcl 20,31,$+4
mflr 7
addi 7,7,56
mtlr 0
blr
.long 0
.byte 0,12,0x14,0,0,0,0,0
.space 28
.long 0xd728ae22,0x428a2f98
.long 0x23ef65cd,0x71374491
.long 0xec4d3b2f,0xb5c0fbcf
.long 0x8189dbbc,0xe9b5dba5
.long 0xf348b538,0x3956c25b
.long 0xb605d019,0x59f111f1
.long 0xaf194f9b,0x923f82a4
.long 0xda6d8118,0xab1c5ed5
.long 0xa3030242,0xd807aa98
.long 0x45706fbe,0x12835b01
.long 0x4ee4b28c,0x243185be
.long 0xd5ffb4e2,0x550c7dc3
.long 0xf27b896f,0x72be5d74
.long 0x3b1696b1,0x80deb1fe
.long 0x25c71235,0x9bdc06a7
.long 0xcf692694,0xc19bf174
.long 0x9ef14ad2,0xe49b69c1
.long 0x384f25e3,0xefbe4786
.long 0x8b8cd5b5,0x0fc19dc6
.long 0x77ac9c65,0x240ca1cc
.long 0x592b0275,0x2de92c6f
.long 0x6ea6e483,0x4a7484aa
.long 0xbd41fbd4,0x5cb0a9dc
.long 0x831153b5,0x76f988da
.long 0xee66dfab,0x983e5152
.long 0x2db43210,0xa831c66d
.long 0x98fb213f,0xb00327c8
.long 0xbeef0ee4,0xbf597fc7
.long 0x3da88fc2,0xc6e00bf3
.long 0x930aa725,0xd5a79147
.long 0xe003826f,0x06ca6351
.long 0x0a0e6e70,0x14292967
.long 0x46d22ffc,0x27b70a85
.long 0x5c26c926,0x2e1b2138
.long 0x5ac42aed,0x4d2c6dfc
.long 0x9d95b3df,0x53380d13
.long 0x8baf63de,0x650a7354
.long 0x3c77b2a8,0x766a0abb
.long 0x47edaee6,0x81c2c92e
.long 0x1482353b,0x92722c85
.long 0x4cf10364,0xa2bfe8a1
.long 0xbc423001,0xa81a664b
.long 0xd0f89791,0xc24b8b70
.long 0x0654be30,0xc76c51a3
.long 0xd6ef5218,0xd192e819
.long 0x5565a910,0xd6990624
.long 0x5771202a,0xf40e3585
.long 0x32bbd1b8,0x106aa070
.long 0xb8d2d0c8,0x19a4c116
.long 0x5141ab53,0x1e376c08
.long 0xdf8eeb99,0x2748774c
.long 0xe19b48a8,0x34b0bcb5
.long 0xc5c95a63,0x391c0cb3
.long 0xe3418acb,0x4ed8aa4a
.long 0x7763e373,0x5b9cca4f
.long 0xd6b2b8a3,0x682e6ff3
.long 0x5defb2fc,0x748f82ee
.long 0x43172f60,0x78a5636f
.long 0xa1f0ab72,0x84c87814
.long 0x1a6439ec,0x8cc70208
.long 0x23631e28,0x90befffa
.long 0xde82bde9,0xa4506ceb
.long 0xb2c67915,0xbef9a3f7
.long 0xe372532b,0xc67178f2
.long 0xea26619c,0xca273ece
.long 0x21c0c207,0xd186b8c7
.long 0xcde0eb1e,0xeada7dd6
.long 0xee6ed178,0xf57d4f7f
.long 0x72176fba,0x06f067aa
.long 0xa2c898a6,0x0a637dc5
.long 0xbef90dae,0x113f9804
.long 0x131c471b,0x1b710b35
.long 0x23047d84,0x28db77f5
.long 0x40c72493,0x32caab7b
.long 0x15c9bebc,0x3c9ebe0a
.long 0x9c100d4c,0x431d67c4
.long 0xcb3e42b6,0x4cc5d4be
.long 0xfc657e2a,0x597f299c
.long 0x3ad6faec,0x5fcb6fab
.long 0x4a475817,0x6c44198c
#endif