Module Name: src
Committed By: martin
Date: Tue Jun 27 07:25:55 UTC 2023
Modified Files:
src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64: Makefile
sha512-sparcv9.S
Added Files:
src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64:
sha256-sparcv9.S
Log Message:
The sha512 generator perl script can output a sha256 version too, but
needs a special cased invocation to do so. Fix the regen script
and update the output.
To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 \
src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/Makefile
cvs rdiff -u -r0 -r1.1 \
src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/sha256-sparcv9.S
cvs rdiff -u -r1.8 -r1.9 \
src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/sha512-sparcv9.S
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/Makefile
diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/Makefile:1.6 src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/Makefile:1.7
--- src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/Makefile:1.6 Sun Feb 18 23:38:47 2018
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/Makefile Tue Jun 27 07:25:55 2023
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.6 2018/02/18 23:38:47 christos Exp $
+# $NetBSD: Makefile,v 1.7 2023/06/27 07:25:55 martin Exp $
.include "bsd.own.mk"
@@ -12,6 +12,7 @@ regen:
j=$$(basename $$i .pl).S; \
case $$j in \
sparc*_modes.pl|sha1-*) perl $$i $$j;; \
+ sha512-*) perl $$i $$j; perl $$i $${j:S/512/256/};; \
*) perl $$i > $$j;; \
esac; \
done
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/sha512-sparcv9.S
diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/sha512-sparcv9.S:1.8 src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/sha512-sparcv9.S:1.9
--- src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/sha512-sparcv9.S:1.8 Tue May 9 17:21:17 2023
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/sha512-sparcv9.S Tue Jun 27 07:25:55 2023
@@ -11,1938 +11,2348 @@
.section ".text",#alloc,#execinstr
.align 64
-K256:
-.type K256,#object
- .long 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5
- .long 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5
- .long 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3
- .long 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174
- .long 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc
- .long 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da
- .long 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7
- .long 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967
- .long 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13
- .long 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85
- .long 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3
- .long 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070
- .long 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5
- .long 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3
- .long 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208
- .long 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
-.size K256,.-K256
+K512:
+.type K512,#object
+ .long 0x428a2f98,0xd728ae22, 0x71374491,0x23ef65cd
+ .long 0xb5c0fbcf,0xec4d3b2f, 0xe9b5dba5,0x8189dbbc
+ .long 0x3956c25b,0xf348b538, 0x59f111f1,0xb605d019
+ .long 0x923f82a4,0xaf194f9b, 0xab1c5ed5,0xda6d8118
+ .long 0xd807aa98,0xa3030242, 0x12835b01,0x45706fbe
+ .long 0x243185be,0x4ee4b28c, 0x550c7dc3,0xd5ffb4e2
+ .long 0x72be5d74,0xf27b896f, 0x80deb1fe,0x3b1696b1
+ .long 0x9bdc06a7,0x25c71235, 0xc19bf174,0xcf692694
+ .long 0xe49b69c1,0x9ef14ad2, 0xefbe4786,0x384f25e3
+ .long 0x0fc19dc6,0x8b8cd5b5, 0x240ca1cc,0x77ac9c65
+ .long 0x2de92c6f,0x592b0275, 0x4a7484aa,0x6ea6e483
+ .long 0x5cb0a9dc,0xbd41fbd4, 0x76f988da,0x831153b5
+ .long 0x983e5152,0xee66dfab, 0xa831c66d,0x2db43210
+ .long 0xb00327c8,0x98fb213f, 0xbf597fc7,0xbeef0ee4
+ .long 0xc6e00bf3,0x3da88fc2, 0xd5a79147,0x930aa725
+ .long 0x06ca6351,0xe003826f, 0x14292967,0x0a0e6e70
+ .long 0x27b70a85,0x46d22ffc, 0x2e1b2138,0x5c26c926
+ .long 0x4d2c6dfc,0x5ac42aed, 0x53380d13,0x9d95b3df
+ .long 0x650a7354,0x8baf63de, 0x766a0abb,0x3c77b2a8
+ .long 0x81c2c92e,0x47edaee6, 0x92722c85,0x1482353b
+ .long 0xa2bfe8a1,0x4cf10364, 0xa81a664b,0xbc423001
+ .long 0xc24b8b70,0xd0f89791, 0xc76c51a3,0x0654be30
+ .long 0xd192e819,0xd6ef5218, 0xd6990624,0x5565a910
+ .long 0xf40e3585,0x5771202a, 0x106aa070,0x32bbd1b8
+ .long 0x19a4c116,0xb8d2d0c8, 0x1e376c08,0x5141ab53
+ .long 0x2748774c,0xdf8eeb99, 0x34b0bcb5,0xe19b48a8
+ .long 0x391c0cb3,0xc5c95a63, 0x4ed8aa4a,0xe3418acb
+ .long 0x5b9cca4f,0x7763e373, 0x682e6ff3,0xd6b2b8a3
+ .long 0x748f82ee,0x5defb2fc, 0x78a5636f,0x43172f60
+ .long 0x84c87814,0xa1f0ab72, 0x8cc70208,0x1a6439ec
+ .long 0x90befffa,0x23631e28, 0xa4506ceb,0xde82bde9
+ .long 0xbef9a3f7,0xb2c67915, 0xc67178f2,0xe372532b
+ .long 0xca273ece,0xea26619c, 0xd186b8c7,0x21c0c207
+ .long 0xeada7dd6,0xcde0eb1e, 0xf57d4f7f,0xee6ed178
+ .long 0x06f067aa,0x72176fba, 0x0a637dc5,0xa2c898a6
+ .long 0x113f9804,0xbef90dae, 0x1b710b35,0x131c471b
+ .long 0x28db77f5,0x23047d84, 0x32caab7b,0x40c72493
+ .long 0x3c9ebe0a,0x15c9bebc, 0x431d67c4,0x9c100d4c
+ .long 0x4cc5d4be,0xcb3e42b6, 0x597f299c,0xfc657e2a
+ .long 0x5fcb6fab,0x3ad6faec, 0x6c44198c,0x4a475817
+.size K512,.-K512
#ifdef __PIC__
SPARC_PIC_THUNK(%g1)
#endif
-.globl sha256_block_data_order
+.globl sha512_block_data_order
.align 32
-sha256_block_data_order:
+sha512_block_data_order:
SPARC_LOAD_ADDRESS_LEAF(OPENSSL_sparcv9cap_P,%g1,%g5)
ld [%g1+4],%g1 ! OPENSSL_sparcv9cap_P[1]
- andcc %g1, CFR_SHA256, %g0
+ andcc %g1, CFR_SHA512, %g0
be .Lsoftware
nop
- ld [%o0 + 0x00], %f0
- ld [%o0 + 0x04], %f1
- ld [%o0 + 0x08], %f2
- ld [%o0 + 0x0c], %f3
- ld [%o0 + 0x10], %f4
- ld [%o0 + 0x14], %f5
+ ldd [%o0 + 0x00], %f0 ! load context
+ ldd [%o0 + 0x08], %f2
+ ldd [%o0 + 0x10], %f4
+ ldd [%o0 + 0x18], %f6
+ ldd [%o0 + 0x20], %f8
+ ldd [%o0 + 0x28], %f10
andcc %o1, 0x7, %g0
- ld [%o0 + 0x18], %f6
+ ldd [%o0 + 0x30], %f12
bne,pn %icc, .Lhwunaligned
- ld [%o0 + 0x1c], %f7
+ ldd [%o0 + 0x38], %f14
-.Lhwloop:
- ldd [%o1 + 0x00], %f8
- ldd [%o1 + 0x08], %f10
- ldd [%o1 + 0x10], %f12
- ldd [%o1 + 0x18], %f14
- ldd [%o1 + 0x20], %f16
- ldd [%o1 + 0x28], %f18
- ldd [%o1 + 0x30], %f20
+.Lhwaligned_loop:
+ ldd [%o1 + 0x00], %f16
+ ldd [%o1 + 0x08], %f18
+ ldd [%o1 + 0x10], %f20
+ ldd [%o1 + 0x18], %f22
+ ldd [%o1 + 0x20], %f24
+ ldd [%o1 + 0x28], %f26
+ ldd [%o1 + 0x30], %f28
+ ldd [%o1 + 0x38], %f30
+ ldd [%o1 + 0x40], %f32
+ ldd [%o1 + 0x48], %f34
+ ldd [%o1 + 0x50], %f36
+ ldd [%o1 + 0x58], %f38
+ ldd [%o1 + 0x60], %f40
+ ldd [%o1 + 0x68], %f42
+ ldd [%o1 + 0x70], %f44
subcc %o2, 1, %o2 ! done yet?
- ldd [%o1 + 0x38], %f22
- add %o1, 0x40, %o1
+ ldd [%o1 + 0x78], %f46
+ add %o1, 0x80, %o1
prefetch [%o1 + 63], 20
+ prefetch [%o1 + 64+63], 20
- .word 0x81b02840 ! SHA256
+ .word 0x81b02860 ! SHA512
- bne,pt SIZE_T_CC, .Lhwloop
+ bne,pt SIZE_T_CC, .Lhwaligned_loop
nop
.Lhwfinish:
- st %f0, [%o0 + 0x00] ! store context
- st %f1, [%o0 + 0x04]
- st %f2, [%o0 + 0x08]
- st %f3, [%o0 + 0x0c]
- st %f4, [%o0 + 0x10]
- st %f5, [%o0 + 0x14]
- st %f6, [%o0 + 0x18]
+ std %f0, [%o0 + 0x00] ! store context
+ std %f2, [%o0 + 0x08]
+ std %f4, [%o0 + 0x10]
+ std %f6, [%o0 + 0x18]
+ std %f8, [%o0 + 0x20]
+ std %f10, [%o0 + 0x28]
+ std %f12, [%o0 + 0x30]
retl
- st %f7, [%o0 + 0x1c]
+ std %f14, [%o0 + 0x38]
-.align 8
+.align 16
.Lhwunaligned:
.word 0x93b24300 !alignaddr %o1,%g0,%o1
- ldd [%o1 + 0x00], %f10
+ ldd [%o1 + 0x00], %f18
.Lhwunaligned_loop:
- ldd [%o1 + 0x08], %f12
- ldd [%o1 + 0x10], %f14
- ldd [%o1 + 0x18], %f16
- ldd [%o1 + 0x20], %f18
- ldd [%o1 + 0x28], %f20
- ldd [%o1 + 0x30], %f22
- ldd [%o1 + 0x38], %f24
+ ldd [%o1 + 0x08], %f20
+ ldd [%o1 + 0x10], %f22
+ ldd [%o1 + 0x18], %f24
+ ldd [%o1 + 0x20], %f26
+ ldd [%o1 + 0x28], %f28
+ ldd [%o1 + 0x30], %f30
+ ldd [%o1 + 0x38], %f32
+ ldd [%o1 + 0x40], %f34
+ ldd [%o1 + 0x48], %f36
+ ldd [%o1 + 0x50], %f38
+ ldd [%o1 + 0x58], %f40
+ ldd [%o1 + 0x60], %f42
+ ldd [%o1 + 0x68], %f44
+ ldd [%o1 + 0x70], %f46
+ ldd [%o1 + 0x78], %f48
subcc %o2, 1, %o2 ! done yet?
- ldd [%o1 + 0x40], %f26
- add %o1, 0x40, %o1
+ ldd [%o1 + 0x80], %f50
+ add %o1, 0x80, %o1
prefetch [%o1 + 63], 20
+ prefetch [%o1 + 64+63], 20
- .word 0x91b2890c !faligndata %f10,%f12,%f8
- .word 0x95b3090e !faligndata %f12,%f14,%f10
- .word 0x99b38910 !faligndata %f14,%f16,%f12
- .word 0x9db40912 !faligndata %f16,%f18,%f14
.word 0xa1b48914 !faligndata %f18,%f20,%f16
.word 0xa5b50916 !faligndata %f20,%f22,%f18
.word 0xa9b58918 !faligndata %f22,%f24,%f20
.word 0xadb6091a !faligndata %f24,%f26,%f22
+ .word 0xb1b6891c !faligndata %f26,%f28,%f24
+ .word 0xb5b7091e !faligndata %f28,%f30,%f26
+ .word 0xb9b78901 !faligndata %f30,%f32,%f28
+ .word 0xbdb04903 !faligndata %f32,%f34,%f30
+ .word 0x83b0c905 !faligndata %f34,%f36,%f32
+ .word 0x87b14907 !faligndata %f36,%f38,%f34
+ .word 0x8bb1c909 !faligndata %f38,%f40,%f36
+ .word 0x8fb2490b !faligndata %f40,%f42,%f38
+ .word 0x93b2c90d !faligndata %f42,%f44,%f40
+ .word 0x97b3490f !faligndata %f44,%f46,%f42
+ .word 0x9bb3c911 !faligndata %f46,%f48,%f44
+ .word 0x9fb44913 !faligndata %f48,%f50,%f46
- .word 0x81b02840 ! SHA256
+ .word 0x81b02860 ! SHA512
bne,pt SIZE_T_CC, .Lhwunaligned_loop
- .word 0x95b68f9a !for %f26,%f26,%f10 ! %f10=%f26
+ .word 0xa5b4cf93 !for %f50,%f50,%f18 ! %f18=%f50
ba .Lhwfinish
nop
.align 16
.Lsoftware:
- save %sp,-STACK_FRAME-0,%sp
- and %i1,7,%i4
- sllx %i2,6,%i2
- andn %i1,7,%i1
+ save %sp,-STACK_FRAME-128,%sp
+ and %i1,3,%i4
+ sllx %i2,7,%i2
+ andn %i1,3,%i1
sll %i4,3,%i4
add %i1,%i2,%i2
+ mov 32,%i5
+ sub %i5,%i4,%i5
.Lpic: call .+8
- add %o7,K256-.Lpic,%i3
+ add %o7,K512-.Lpic,%i3
- ld [%i0+0],%l0
- ld [%i0+4],%l1
- ld [%i0+8],%l2
- ld [%i0+12],%l3
- ld [%i0+16],%l4
- ld [%i0+20],%l5
- ld [%i0+24],%l6
- ld [%i0+28],%l7
+ ldx [%i0+0],%o0
+ ldx [%i0+8],%o1
+ ldx [%i0+16],%o2
+ ldx [%i0+24],%o3
+ ldx [%i0+32],%o4
+ ldx [%i0+40],%o5
+ ldx [%i0+48],%g1
+ ldx [%i0+56],%o7
.Lloop:
- ldx [%i1+0],%o0
- ldx [%i1+16],%o2
- ldx [%i1+32],%o4
- ldx [%i1+48],%g1
- ldx [%i1+8],%o1
- ldx [%i1+24],%o3
- subcc %g0,%i4,%i5 ! should be 64-%i4, but -%i4 works too
- ldx [%i1+40],%o5
- bz,pt %icc,.Laligned
- ldx [%i1+56],%o7
-
- sllx %o0,%i4,%o0
- ldx [%i1+64],%g2
- srlx %o1,%i5,%g4
- sllx %o1,%i4,%o1
- or %g4,%o0,%o0
- srlx %o2,%i5,%g4
- sllx %o2,%i4,%o2
- or %g4,%o1,%o1
- srlx %o3,%i5,%g4
- sllx %o3,%i4,%o3
- or %g4,%o2,%o2
- srlx %o4,%i5,%g4
- sllx %o4,%i4,%o4
- or %g4,%o3,%o3
- srlx %o5,%i5,%g4
- sllx %o5,%i4,%o5
- or %g4,%o4,%o4
- srlx %g1,%i5,%g4
- sllx %g1,%i4,%g1
- or %g4,%o5,%o5
- srlx %o7,%i5,%g4
- sllx %o7,%i4,%o7
- or %g4,%g1,%g1
- srlx %g2,%i5,%g2
- or %g2,%o7,%o7
-.Laligned:
- srlx %o0,32,%g2
- add %l7,%g2,%g2
- srl %l4,6,%l7 !! 0
- xor %l5,%l6,%g5
- sll %l4,7,%g4
- and %l4,%g5,%g5
- srl %l4,11,%g3
- xor %g4,%l7,%l7
- sll %l4,21,%g4
- xor %g3,%l7,%l7
- srl %l4,25,%g3
- xor %g4,%l7,%l7
- sll %l4,26,%g4
- xor %g3,%l7,%l7
- xor %l6,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l7,%g3 ! Sigma1(e)
-
- srl %l0,2,%l7
- add %g5,%g2,%g2
- ld [%i3+0],%g5 ! K[0]
- sll %l0,10,%g4
- add %g3,%g2,%g2
- srl %l0,13,%g3
- xor %g4,%l7,%l7
- sll %l0,19,%g4
- xor %g3,%l7,%l7
- srl %l0,22,%g3
- xor %g4,%l7,%l7
- sll %l0,30,%g4
- xor %g3,%l7,%l7
- xor %g4,%l7,%l7 ! Sigma0(a)
-
- or %l0,%l1,%g3
- and %l0,%l1,%g4
- and %l2,%g3,%g3
+ ld [%i1+0],%l0
+ ld [%i1+4],%l1
+ ld [%i1+8],%l2
+ ld [%i1+12],%l3
+ ld [%i1+16],%l4
+ ld [%i1+20],%l5
+ ld [%i1+24],%l6
+ cmp %i4,0
+ ld [%i1+28],%l7
+ sllx %l1,%i4,%g5 ! Xload(0)
+ add %i4,32,%g3
+ sllx %l0,%g3,%g4
+ ld [%i1+32],%l0
+ srlx %l2,%i5,%l1
+ or %g4,%g5,%g5
+ or %l1,%g5,%g5
+ ld [%i1+36],%l1
+ add %o7,%g5,%g2
+ stx %g5,[%sp+STACK_BIAS+STACK_FRAME+0]
+ srlx %o4,14,%o7 !! 0
+ xor %o5,%g1,%g5
+ sllx %o4,23,%g4
+ and %o4,%g5,%g5
+ srlx %o4,18,%g3
+ xor %g4,%o7,%o7
+ sllx %o4,46,%g4
+ xor %g3,%o7,%o7
+ srlx %o4,41,%g3
+ xor %g4,%o7,%o7
+ sllx %o4,50,%g4
+ xor %g3,%o7,%o7
+ xor %g1,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o7,%g3 ! Sigma1(e)
+
+ srlx %o0,28,%o7
+ add %g5,%g2,%g2
+ ldx [%i3+0],%g5 ! K[0]
+ sllx %o0,25,%g4
+ add %g3,%g2,%g2
+ srlx %o0,34,%g3
+ xor %g4,%o7,%o7
+ sllx %o0,30,%g4
+ xor %g3,%o7,%o7
+ srlx %o0,39,%g3
+ xor %g4,%o7,%o7
+ sllx %o0,36,%g4
+ xor %g3,%o7,%o7
+ xor %g4,%o7,%o7 ! Sigma0(a)
+
+ or %o0,%o1,%g3
+ and %o0,%o1,%g4
+ and %o2,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[0]
- add %g4,%l7,%l7
+ add %g4,%o7,%o7
+
+ add %g2,%o3,%o3
+ add %g2,%o7,%o7
+ sllx %l3,%i4,%g5 ! Xload(1)
+ add %i4,32,%g3
+ sllx %l2,%g3,%g4
+ ld [%i1+40],%l2
+ srlx %l4,%i5,%l3
+ or %g4,%g5,%g5
+ or %l3,%g5,%g5
+ ld [%i1+44],%l3
+ add %g1,%g5,%g2
+ stx %g5,[%sp+STACK_BIAS+STACK_FRAME+8]
+ srlx %o3,14,%g1 !! 1
+ xor %o4,%o5,%g5
+ sllx %o3,23,%g4
+ and %o3,%g5,%g5
+ srlx %o3,18,%g3
+ xor %g4,%g1,%g1
+ sllx %o3,46,%g4
+ xor %g3,%g1,%g1
+ srlx %o3,41,%g3
+ xor %g4,%g1,%g1
+ sllx %o3,50,%g4
+ xor %g3,%g1,%g1
+ xor %o5,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%g1,%g3 ! Sigma1(e)
- add %g2,%l3,%l3
- add %g2,%l7,%l7
- add %o0,%l6,%g2
- srl %l3,6,%l6 !! 1
- xor %l4,%l5,%g5
- sll %l3,7,%g4
- and %l3,%g5,%g5
- srl %l3,11,%g3
- xor %g4,%l6,%l6
- sll %l3,21,%g4
- xor %g3,%l6,%l6
- srl %l3,25,%g3
- xor %g4,%l6,%l6
- sll %l3,26,%g4
- xor %g3,%l6,%l6
- xor %l5,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l6,%g3 ! Sigma1(e)
-
- srl %l7,2,%l6
- add %g5,%g2,%g2
- ld [%i3+4],%g5 ! K[1]
- sll %l7,10,%g4
- add %g3,%g2,%g2
- srl %l7,13,%g3
- xor %g4,%l6,%l6
- sll %l7,19,%g4
- xor %g3,%l6,%l6
- srl %l7,22,%g3
- xor %g4,%l6,%l6
- sll %l7,30,%g4
- xor %g3,%l6,%l6
- xor %g4,%l6,%l6 ! Sigma0(a)
-
- or %l7,%l0,%g3
- and %l7,%l0,%g4
- and %l1,%g3,%g3
+ srlx %o7,28,%g1
+ add %g5,%g2,%g2
+ ldx [%i3+8],%g5 ! K[1]
+ sllx %o7,25,%g4
+ add %g3,%g2,%g2
+ srlx %o7,34,%g3
+ xor %g4,%g1,%g1
+ sllx %o7,30,%g4
+ xor %g3,%g1,%g1
+ srlx %o7,39,%g3
+ xor %g4,%g1,%g1
+ sllx %o7,36,%g4
+ xor %g3,%g1,%g1
+ xor %g4,%g1,%g1 ! Sigma0(a)
+
+ or %o7,%o0,%g3
+ and %o7,%o0,%g4
+ and %o1,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[1]
- add %g4,%l6,%l6
+ add %g4,%g1,%g1
+
+ add %g2,%o2,%o2
+ add %g2,%g1,%g1
+ sllx %l5,%i4,%g5 ! Xload(2)
+ add %i4,32,%g3
+ sllx %l4,%g3,%g4
+ ld [%i1+48],%l4
+ srlx %l6,%i5,%l5
+ or %g4,%g5,%g5
+ or %l5,%g5,%g5
+ ld [%i1+52],%l5
+ add %o5,%g5,%g2
+ stx %g5,[%sp+STACK_BIAS+STACK_FRAME+16]
+ srlx %o2,14,%o5 !! 2
+ xor %o3,%o4,%g5
+ sllx %o2,23,%g4
+ and %o2,%g5,%g5
+ srlx %o2,18,%g3
+ xor %g4,%o5,%o5
+ sllx %o2,46,%g4
+ xor %g3,%o5,%o5
+ srlx %o2,41,%g3
+ xor %g4,%o5,%o5
+ sllx %o2,50,%g4
+ xor %g3,%o5,%o5
+ xor %o4,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o5,%g3 ! Sigma1(e)
- add %g2,%l2,%l2
- add %g2,%l6,%l6
- srlx %o1,32,%g2
- add %l5,%g2,%g2
- srl %l2,6,%l5 !! 2
- xor %l3,%l4,%g5
- sll %l2,7,%g4
- and %l2,%g5,%g5
- srl %l2,11,%g3
- xor %g4,%l5,%l5
- sll %l2,21,%g4
- xor %g3,%l5,%l5
- srl %l2,25,%g3
- xor %g4,%l5,%l5
- sll %l2,26,%g4
- xor %g3,%l5,%l5
- xor %l4,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l5,%g3 ! Sigma1(e)
-
- srl %l6,2,%l5
- add %g5,%g2,%g2
- ld [%i3+8],%g5 ! K[2]
- sll %l6,10,%g4
- add %g3,%g2,%g2
- srl %l6,13,%g3
- xor %g4,%l5,%l5
- sll %l6,19,%g4
- xor %g3,%l5,%l5
- srl %l6,22,%g3
- xor %g4,%l5,%l5
- sll %l6,30,%g4
- xor %g3,%l5,%l5
- xor %g4,%l5,%l5 ! Sigma0(a)
-
- or %l6,%l7,%g3
- and %l6,%l7,%g4
- and %l0,%g3,%g3
+ srlx %g1,28,%o5
+ add %g5,%g2,%g2
+ ldx [%i3+16],%g5 ! K[2]
+ sllx %g1,25,%g4
+ add %g3,%g2,%g2
+ srlx %g1,34,%g3
+ xor %g4,%o5,%o5
+ sllx %g1,30,%g4
+ xor %g3,%o5,%o5
+ srlx %g1,39,%g3
+ xor %g4,%o5,%o5
+ sllx %g1,36,%g4
+ xor %g3,%o5,%o5
+ xor %g4,%o5,%o5 ! Sigma0(a)
+
+ or %g1,%o7,%g3
+ and %g1,%o7,%g4
+ and %o0,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[2]
- add %g4,%l5,%l5
+ add %g4,%o5,%o5
+
+ add %g2,%o1,%o1
+ add %g2,%o5,%o5
+ sllx %l7,%i4,%g5 ! Xload(3)
+ add %i4,32,%g3
+ sllx %l6,%g3,%g4
+ ld [%i1+56],%l6
+ srlx %l0,%i5,%l7
+ or %g4,%g5,%g5
+ or %l7,%g5,%g5
+ ld [%i1+60],%l7
+ add %o4,%g5,%g2
+ stx %g5,[%sp+STACK_BIAS+STACK_FRAME+24]
+ srlx %o1,14,%o4 !! 3
+ xor %o2,%o3,%g5
+ sllx %o1,23,%g4
+ and %o1,%g5,%g5
+ srlx %o1,18,%g3
+ xor %g4,%o4,%o4
+ sllx %o1,46,%g4
+ xor %g3,%o4,%o4
+ srlx %o1,41,%g3
+ xor %g4,%o4,%o4
+ sllx %o1,50,%g4
+ xor %g3,%o4,%o4
+ xor %o3,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o4,%g3 ! Sigma1(e)
- add %g2,%l1,%l1
- add %g2,%l5,%l5
- add %o1,%l4,%g2
- srl %l1,6,%l4 !! 3
- xor %l2,%l3,%g5
- sll %l1,7,%g4
- and %l1,%g5,%g5
- srl %l1,11,%g3
- xor %g4,%l4,%l4
- sll %l1,21,%g4
- xor %g3,%l4,%l4
- srl %l1,25,%g3
- xor %g4,%l4,%l4
- sll %l1,26,%g4
- xor %g3,%l4,%l4
- xor %l3,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l4,%g3 ! Sigma1(e)
-
- srl %l5,2,%l4
- add %g5,%g2,%g2
- ld [%i3+12],%g5 ! K[3]
- sll %l5,10,%g4
- add %g3,%g2,%g2
- srl %l5,13,%g3
- xor %g4,%l4,%l4
- sll %l5,19,%g4
- xor %g3,%l4,%l4
- srl %l5,22,%g3
- xor %g4,%l4,%l4
- sll %l5,30,%g4
- xor %g3,%l4,%l4
- xor %g4,%l4,%l4 ! Sigma0(a)
-
- or %l5,%l6,%g3
- and %l5,%l6,%g4
- and %l7,%g3,%g3
+ srlx %o5,28,%o4
+ add %g5,%g2,%g2
+ ldx [%i3+24],%g5 ! K[3]
+ sllx %o5,25,%g4
+ add %g3,%g2,%g2
+ srlx %o5,34,%g3
+ xor %g4,%o4,%o4
+ sllx %o5,30,%g4
+ xor %g3,%o4,%o4
+ srlx %o5,39,%g3
+ xor %g4,%o4,%o4
+ sllx %o5,36,%g4
+ xor %g3,%o4,%o4
+ xor %g4,%o4,%o4 ! Sigma0(a)
+
+ or %o5,%g1,%g3
+ and %o5,%g1,%g4
+ and %o7,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[3]
- add %g4,%l4,%l4
+ add %g4,%o4,%o4
+
+ add %g2,%o0,%o0
+ add %g2,%o4,%o4
+ sllx %l1,%i4,%g5 ! Xload(4)
+ add %i4,32,%g3
+ sllx %l0,%g3,%g4
+ ld [%i1+64],%l0
+ srlx %l2,%i5,%l1
+ or %g4,%g5,%g5
+ or %l1,%g5,%g5
+ ld [%i1+68],%l1
+ add %o3,%g5,%g2
+ stx %g5,[%sp+STACK_BIAS+STACK_FRAME+32]
+ srlx %o0,14,%o3 !! 4
+ xor %o1,%o2,%g5
+ sllx %o0,23,%g4
+ and %o0,%g5,%g5
+ srlx %o0,18,%g3
+ xor %g4,%o3,%o3
+ sllx %o0,46,%g4
+ xor %g3,%o3,%o3
+ srlx %o0,41,%g3
+ xor %g4,%o3,%o3
+ sllx %o0,50,%g4
+ xor %g3,%o3,%o3
+ xor %o2,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o3,%g3 ! Sigma1(e)
+
+ srlx %o4,28,%o3
+ add %g5,%g2,%g2
+ ldx [%i3+32],%g5 ! K[4]
+ sllx %o4,25,%g4
+ add %g3,%g2,%g2
+ srlx %o4,34,%g3
+ xor %g4,%o3,%o3
+ sllx %o4,30,%g4
+ xor %g3,%o3,%o3
+ srlx %o4,39,%g3
+ xor %g4,%o3,%o3
+ sllx %o4,36,%g4
+ xor %g3,%o3,%o3
+ xor %g4,%o3,%o3 ! Sigma0(a)
- add %g2,%l0,%l0
- add %g2,%l4,%l4
- srlx %o2,32,%g2
- add %l3,%g2,%g2
- srl %l0,6,%l3 !! 4
- xor %l1,%l2,%g5
- sll %l0,7,%g4
- and %l0,%g5,%g5
- srl %l0,11,%g3
- xor %g4,%l3,%l3
- sll %l0,21,%g4
- xor %g3,%l3,%l3
- srl %l0,25,%g3
- xor %g4,%l3,%l3
- sll %l0,26,%g4
- xor %g3,%l3,%l3
- xor %l2,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l3,%g3 ! Sigma1(e)
-
- srl %l4,2,%l3
- add %g5,%g2,%g2
- ld [%i3+16],%g5 ! K[4]
- sll %l4,10,%g4
- add %g3,%g2,%g2
- srl %l4,13,%g3
- xor %g4,%l3,%l3
- sll %l4,19,%g4
- xor %g3,%l3,%l3
- srl %l4,22,%g3
- xor %g4,%l3,%l3
- sll %l4,30,%g4
- xor %g3,%l3,%l3
- xor %g4,%l3,%l3 ! Sigma0(a)
-
- or %l4,%l5,%g3
- and %l4,%l5,%g4
- and %l6,%g3,%g3
+ or %o4,%o5,%g3
+ and %o4,%o5,%g4
+ and %g1,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[4]
- add %g4,%l3,%l3
+ add %g4,%o3,%o3
- add %g2,%l7,%l7
- add %g2,%l3,%l3
- add %o2,%l2,%g2
- srl %l7,6,%l2 !! 5
- xor %l0,%l1,%g5
- sll %l7,7,%g4
- and %l7,%g5,%g5
- srl %l7,11,%g3
- xor %g4,%l2,%l2
- sll %l7,21,%g4
- xor %g3,%l2,%l2
- srl %l7,25,%g3
- xor %g4,%l2,%l2
- sll %l7,26,%g4
- xor %g3,%l2,%l2
- xor %l1,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l2,%g3 ! Sigma1(e)
-
- srl %l3,2,%l2
- add %g5,%g2,%g2
- ld [%i3+20],%g5 ! K[5]
- sll %l3,10,%g4
- add %g3,%g2,%g2
- srl %l3,13,%g3
- xor %g4,%l2,%l2
- sll %l3,19,%g4
- xor %g3,%l2,%l2
- srl %l3,22,%g3
- xor %g4,%l2,%l2
- sll %l3,30,%g4
- xor %g3,%l2,%l2
- xor %g4,%l2,%l2 ! Sigma0(a)
-
- or %l3,%l4,%g3
- and %l3,%l4,%g4
- and %l5,%g3,%g3
+ add %g2,%o7,%o7
+ add %g2,%o3,%o3
+ sllx %l3,%i4,%g5 ! Xload(5)
+ add %i4,32,%g3
+ sllx %l2,%g3,%g4
+ ld [%i1+72],%l2
+ srlx %l4,%i5,%l3
+ or %g4,%g5,%g5
+ or %l3,%g5,%g5
+ ld [%i1+76],%l3
+ add %o2,%g5,%g2
+ stx %g5,[%sp+STACK_BIAS+STACK_FRAME+40]
+ srlx %o7,14,%o2 !! 5
+ xor %o0,%o1,%g5
+ sllx %o7,23,%g4
+ and %o7,%g5,%g5
+ srlx %o7,18,%g3
+ xor %g4,%o2,%o2
+ sllx %o7,46,%g4
+ xor %g3,%o2,%o2
+ srlx %o7,41,%g3
+ xor %g4,%o2,%o2
+ sllx %o7,50,%g4
+ xor %g3,%o2,%o2
+ xor %o1,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o2,%g3 ! Sigma1(e)
+
+ srlx %o3,28,%o2
+ add %g5,%g2,%g2
+ ldx [%i3+40],%g5 ! K[5]
+ sllx %o3,25,%g4
+ add %g3,%g2,%g2
+ srlx %o3,34,%g3
+ xor %g4,%o2,%o2
+ sllx %o3,30,%g4
+ xor %g3,%o2,%o2
+ srlx %o3,39,%g3
+ xor %g4,%o2,%o2
+ sllx %o3,36,%g4
+ xor %g3,%o2,%o2
+ xor %g4,%o2,%o2 ! Sigma0(a)
+
+ or %o3,%o4,%g3
+ and %o3,%o4,%g4
+ and %o5,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[5]
- add %g4,%l2,%l2
+ add %g4,%o2,%o2
- add %g2,%l6,%l6
- add %g2,%l2,%l2
- srlx %o3,32,%g2
- add %l1,%g2,%g2
- srl %l6,6,%l1 !! 6
- xor %l7,%l0,%g5
- sll %l6,7,%g4
- and %l6,%g5,%g5
- srl %l6,11,%g3
- xor %g4,%l1,%l1
- sll %l6,21,%g4
- xor %g3,%l1,%l1
- srl %l6,25,%g3
- xor %g4,%l1,%l1
- sll %l6,26,%g4
- xor %g3,%l1,%l1
- xor %l0,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l1,%g3 ! Sigma1(e)
-
- srl %l2,2,%l1
- add %g5,%g2,%g2
- ld [%i3+24],%g5 ! K[6]
- sll %l2,10,%g4
- add %g3,%g2,%g2
- srl %l2,13,%g3
- xor %g4,%l1,%l1
- sll %l2,19,%g4
- xor %g3,%l1,%l1
- srl %l2,22,%g3
- xor %g4,%l1,%l1
- sll %l2,30,%g4
- xor %g3,%l1,%l1
- xor %g4,%l1,%l1 ! Sigma0(a)
-
- or %l2,%l3,%g3
- and %l2,%l3,%g4
- and %l4,%g3,%g3
+ add %g2,%g1,%g1
+ add %g2,%o2,%o2
+ sllx %l5,%i4,%g5 ! Xload(6)
+ add %i4,32,%g3
+ sllx %l4,%g3,%g4
+ ld [%i1+80],%l4
+ srlx %l6,%i5,%l5
+ or %g4,%g5,%g5
+ or %l5,%g5,%g5
+ ld [%i1+84],%l5
+ add %o1,%g5,%g2
+ stx %g5,[%sp+STACK_BIAS+STACK_FRAME+48]
+ srlx %g1,14,%o1 !! 6
+ xor %o7,%o0,%g5
+ sllx %g1,23,%g4
+ and %g1,%g5,%g5
+ srlx %g1,18,%g3
+ xor %g4,%o1,%o1
+ sllx %g1,46,%g4
+ xor %g3,%o1,%o1
+ srlx %g1,41,%g3
+ xor %g4,%o1,%o1
+ sllx %g1,50,%g4
+ xor %g3,%o1,%o1
+ xor %o0,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o1,%g3 ! Sigma1(e)
+
+ srlx %o2,28,%o1
+ add %g5,%g2,%g2
+ ldx [%i3+48],%g5 ! K[6]
+ sllx %o2,25,%g4
+ add %g3,%g2,%g2
+ srlx %o2,34,%g3
+ xor %g4,%o1,%o1
+ sllx %o2,30,%g4
+ xor %g3,%o1,%o1
+ srlx %o2,39,%g3
+ xor %g4,%o1,%o1
+ sllx %o2,36,%g4
+ xor %g3,%o1,%o1
+ xor %g4,%o1,%o1 ! Sigma0(a)
+
+ or %o2,%o3,%g3
+ and %o2,%o3,%g4
+ and %o4,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[6]
- add %g4,%l1,%l1
+ add %g4,%o1,%o1
+
+ add %g2,%o5,%o5
+ add %g2,%o1,%o1
+ sllx %l7,%i4,%g5 ! Xload(7)
+ add %i4,32,%g3
+ sllx %l6,%g3,%g4
+ ld [%i1+88],%l6
+ srlx %l0,%i5,%l7
+ or %g4,%g5,%g5
+ or %l7,%g5,%g5
+ ld [%i1+92],%l7
+ add %o0,%g5,%g2
+ stx %g5,[%sp+STACK_BIAS+STACK_FRAME+56]
+ srlx %o5,14,%o0 !! 7
+ xor %g1,%o7,%g5
+ sllx %o5,23,%g4
+ and %o5,%g5,%g5
+ srlx %o5,18,%g3
+ xor %g4,%o0,%o0
+ sllx %o5,46,%g4
+ xor %g3,%o0,%o0
+ srlx %o5,41,%g3
+ xor %g4,%o0,%o0
+ sllx %o5,50,%g4
+ xor %g3,%o0,%o0
+ xor %o7,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o0,%g3 ! Sigma1(e)
+
+ srlx %o1,28,%o0
+ add %g5,%g2,%g2
+ ldx [%i3+56],%g5 ! K[7]
+ sllx %o1,25,%g4
+ add %g3,%g2,%g2
+ srlx %o1,34,%g3
+ xor %g4,%o0,%o0
+ sllx %o1,30,%g4
+ xor %g3,%o0,%o0
+ srlx %o1,39,%g3
+ xor %g4,%o0,%o0
+ sllx %o1,36,%g4
+ xor %g3,%o0,%o0
+ xor %g4,%o0,%o0 ! Sigma0(a)
- add %g2,%l5,%l5
- add %g2,%l1,%l1
- add %o3,%l0,%g2
- srl %l5,6,%l0 !! 7
- xor %l6,%l7,%g5
- sll %l5,7,%g4
- and %l5,%g5,%g5
- srl %l5,11,%g3
- xor %g4,%l0,%l0
- sll %l5,21,%g4
- xor %g3,%l0,%l0
- srl %l5,25,%g3
- xor %g4,%l0,%l0
- sll %l5,26,%g4
- xor %g3,%l0,%l0
- xor %l7,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l0,%g3 ! Sigma1(e)
-
- srl %l1,2,%l0
- add %g5,%g2,%g2
- ld [%i3+28],%g5 ! K[7]
- sll %l1,10,%g4
- add %g3,%g2,%g2
- srl %l1,13,%g3
- xor %g4,%l0,%l0
- sll %l1,19,%g4
- xor %g3,%l0,%l0
- srl %l1,22,%g3
- xor %g4,%l0,%l0
- sll %l1,30,%g4
- xor %g3,%l0,%l0
- xor %g4,%l0,%l0 ! Sigma0(a)
-
- or %l1,%l2,%g3
- and %l1,%l2,%g4
- and %l3,%g3,%g3
+ or %o1,%o2,%g3
+ and %o1,%o2,%g4
+ and %o3,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[7]
- add %g4,%l0,%l0
+ add %g4,%o0,%o0
+
+ add %g2,%o4,%o4
+ add %g2,%o0,%o0
+ sllx %l1,%i4,%g5 ! Xload(8)
+ add %i4,32,%g3
+ sllx %l0,%g3,%g4
+ ld [%i1+96],%l0
+ srlx %l2,%i5,%l1
+ or %g4,%g5,%g5
+ or %l1,%g5,%g5
+ ld [%i1+100],%l1
+ add %o7,%g5,%g2
+ stx %g5,[%sp+STACK_BIAS+STACK_FRAME+64]
+ srlx %o4,14,%o7 !! 8
+ xor %o5,%g1,%g5
+ sllx %o4,23,%g4
+ and %o4,%g5,%g5
+ srlx %o4,18,%g3
+ xor %g4,%o7,%o7
+ sllx %o4,46,%g4
+ xor %g3,%o7,%o7
+ srlx %o4,41,%g3
+ xor %g4,%o7,%o7
+ sllx %o4,50,%g4
+ xor %g3,%o7,%o7
+ xor %g1,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o7,%g3 ! Sigma1(e)
+
+ srlx %o0,28,%o7
+ add %g5,%g2,%g2
+ ldx [%i3+64],%g5 ! K[8]
+ sllx %o0,25,%g4
+ add %g3,%g2,%g2
+ srlx %o0,34,%g3
+ xor %g4,%o7,%o7
+ sllx %o0,30,%g4
+ xor %g3,%o7,%o7
+ srlx %o0,39,%g3
+ xor %g4,%o7,%o7
+ sllx %o0,36,%g4
+ xor %g3,%o7,%o7
+ xor %g4,%o7,%o7 ! Sigma0(a)
- add %g2,%l4,%l4
- add %g2,%l0,%l0
- srlx %o4,32,%g2
- add %l7,%g2,%g2
- srl %l4,6,%l7 !! 8
- xor %l5,%l6,%g5
- sll %l4,7,%g4
- and %l4,%g5,%g5
- srl %l4,11,%g3
- xor %g4,%l7,%l7
- sll %l4,21,%g4
- xor %g3,%l7,%l7
- srl %l4,25,%g3
- xor %g4,%l7,%l7
- sll %l4,26,%g4
- xor %g3,%l7,%l7
- xor %l6,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l7,%g3 ! Sigma1(e)
-
- srl %l0,2,%l7
- add %g5,%g2,%g2
- ld [%i3+32],%g5 ! K[8]
- sll %l0,10,%g4
- add %g3,%g2,%g2
- srl %l0,13,%g3
- xor %g4,%l7,%l7
- sll %l0,19,%g4
- xor %g3,%l7,%l7
- srl %l0,22,%g3
- xor %g4,%l7,%l7
- sll %l0,30,%g4
- xor %g3,%l7,%l7
- xor %g4,%l7,%l7 ! Sigma0(a)
-
- or %l0,%l1,%g3
- and %l0,%l1,%g4
- and %l2,%g3,%g3
+ or %o0,%o1,%g3
+ and %o0,%o1,%g4
+ and %o2,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[8]
- add %g4,%l7,%l7
+ add %g4,%o7,%o7
+
+ add %g2,%o3,%o3
+ add %g2,%o7,%o7
+ sllx %l3,%i4,%g5 ! Xload(9)
+ add %i4,32,%g3
+ sllx %l2,%g3,%g4
+ ld [%i1+104],%l2
+ srlx %l4,%i5,%l3
+ or %g4,%g5,%g5
+ or %l3,%g5,%g5
+ ld [%i1+108],%l3
+ add %g1,%g5,%g2
+ stx %g5,[%sp+STACK_BIAS+STACK_FRAME+72]
+ srlx %o3,14,%g1 !! 9
+ xor %o4,%o5,%g5
+ sllx %o3,23,%g4
+ and %o3,%g5,%g5
+ srlx %o3,18,%g3
+ xor %g4,%g1,%g1
+ sllx %o3,46,%g4
+ xor %g3,%g1,%g1
+ srlx %o3,41,%g3
+ xor %g4,%g1,%g1
+ sllx %o3,50,%g4
+ xor %g3,%g1,%g1
+ xor %o5,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%g1,%g3 ! Sigma1(e)
+
+ srlx %o7,28,%g1
+ add %g5,%g2,%g2
+ ldx [%i3+72],%g5 ! K[9]
+ sllx %o7,25,%g4
+ add %g3,%g2,%g2
+ srlx %o7,34,%g3
+ xor %g4,%g1,%g1
+ sllx %o7,30,%g4
+ xor %g3,%g1,%g1
+ srlx %o7,39,%g3
+ xor %g4,%g1,%g1
+ sllx %o7,36,%g4
+ xor %g3,%g1,%g1
+ xor %g4,%g1,%g1 ! Sigma0(a)
- add %g2,%l3,%l3
- add %g2,%l7,%l7
- add %o4,%l6,%g2
- srl %l3,6,%l6 !! 9
- xor %l4,%l5,%g5
- sll %l3,7,%g4
- and %l3,%g5,%g5
- srl %l3,11,%g3
- xor %g4,%l6,%l6
- sll %l3,21,%g4
- xor %g3,%l6,%l6
- srl %l3,25,%g3
- xor %g4,%l6,%l6
- sll %l3,26,%g4
- xor %g3,%l6,%l6
- xor %l5,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l6,%g3 ! Sigma1(e)
-
- srl %l7,2,%l6
- add %g5,%g2,%g2
- ld [%i3+36],%g5 ! K[9]
- sll %l7,10,%g4
- add %g3,%g2,%g2
- srl %l7,13,%g3
- xor %g4,%l6,%l6
- sll %l7,19,%g4
- xor %g3,%l6,%l6
- srl %l7,22,%g3
- xor %g4,%l6,%l6
- sll %l7,30,%g4
- xor %g3,%l6,%l6
- xor %g4,%l6,%l6 ! Sigma0(a)
-
- or %l7,%l0,%g3
- and %l7,%l0,%g4
- and %l1,%g3,%g3
+ or %o7,%o0,%g3
+ and %o7,%o0,%g4
+ and %o1,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[9]
- add %g4,%l6,%l6
+ add %g4,%g1,%g1
- add %g2,%l2,%l2
- add %g2,%l6,%l6
- srlx %o5,32,%g2
- add %l5,%g2,%g2
- srl %l2,6,%l5 !! 10
- xor %l3,%l4,%g5
- sll %l2,7,%g4
- and %l2,%g5,%g5
- srl %l2,11,%g3
- xor %g4,%l5,%l5
- sll %l2,21,%g4
- xor %g3,%l5,%l5
- srl %l2,25,%g3
- xor %g4,%l5,%l5
- sll %l2,26,%g4
- xor %g3,%l5,%l5
- xor %l4,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l5,%g3 ! Sigma1(e)
-
- srl %l6,2,%l5
- add %g5,%g2,%g2
- ld [%i3+40],%g5 ! K[10]
- sll %l6,10,%g4
- add %g3,%g2,%g2
- srl %l6,13,%g3
- xor %g4,%l5,%l5
- sll %l6,19,%g4
- xor %g3,%l5,%l5
- srl %l6,22,%g3
- xor %g4,%l5,%l5
- sll %l6,30,%g4
- xor %g3,%l5,%l5
- xor %g4,%l5,%l5 ! Sigma0(a)
-
- or %l6,%l7,%g3
- and %l6,%l7,%g4
- and %l0,%g3,%g3
+ add %g2,%o2,%o2
+ add %g2,%g1,%g1
+ sllx %l5,%i4,%g5 ! Xload(10)
+ add %i4,32,%g3
+ sllx %l4,%g3,%g4
+ ld [%i1+112],%l4
+ srlx %l6,%i5,%l5
+ or %g4,%g5,%g5
+ or %l5,%g5,%g5
+ ld [%i1+116],%l5
+ add %o5,%g5,%g2
+ stx %g5,[%sp+STACK_BIAS+STACK_FRAME+80]
+ srlx %o2,14,%o5 !! 10
+ xor %o3,%o4,%g5
+ sllx %o2,23,%g4
+ and %o2,%g5,%g5
+ srlx %o2,18,%g3
+ xor %g4,%o5,%o5
+ sllx %o2,46,%g4
+ xor %g3,%o5,%o5
+ srlx %o2,41,%g3
+ xor %g4,%o5,%o5
+ sllx %o2,50,%g4
+ xor %g3,%o5,%o5
+ xor %o4,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o5,%g3 ! Sigma1(e)
+
+ srlx %g1,28,%o5
+ add %g5,%g2,%g2
+ ldx [%i3+80],%g5 ! K[10]
+ sllx %g1,25,%g4
+ add %g3,%g2,%g2
+ srlx %g1,34,%g3
+ xor %g4,%o5,%o5
+ sllx %g1,30,%g4
+ xor %g3,%o5,%o5
+ srlx %g1,39,%g3
+ xor %g4,%o5,%o5
+ sllx %g1,36,%g4
+ xor %g3,%o5,%o5
+ xor %g4,%o5,%o5 ! Sigma0(a)
+
+ or %g1,%o7,%g3
+ and %g1,%o7,%g4
+ and %o0,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[10]
- add %g4,%l5,%l5
+ add %g4,%o5,%o5
+
+ add %g2,%o1,%o1
+ add %g2,%o5,%o5
+ sllx %l7,%i4,%g5 ! Xload(11)
+ add %i4,32,%g3
+ sllx %l6,%g3,%g4
+ ld [%i1+120],%l6
+ srlx %l0,%i5,%l7
+ or %g4,%g5,%g5
+ or %l7,%g5,%g5
+ ld [%i1+124],%l7
+ add %o4,%g5,%g2
+ stx %g5,[%sp+STACK_BIAS+STACK_FRAME+88]
+ srlx %o1,14,%o4 !! 11
+ xor %o2,%o3,%g5
+ sllx %o1,23,%g4
+ and %o1,%g5,%g5
+ srlx %o1,18,%g3
+ xor %g4,%o4,%o4
+ sllx %o1,46,%g4
+ xor %g3,%o4,%o4
+ srlx %o1,41,%g3
+ xor %g4,%o4,%o4
+ sllx %o1,50,%g4
+ xor %g3,%o4,%o4
+ xor %o3,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o4,%g3 ! Sigma1(e)
- add %g2,%l1,%l1
- add %g2,%l5,%l5
- add %o5,%l4,%g2
- srl %l1,6,%l4 !! 11
- xor %l2,%l3,%g5
- sll %l1,7,%g4
- and %l1,%g5,%g5
- srl %l1,11,%g3
- xor %g4,%l4,%l4
- sll %l1,21,%g4
- xor %g3,%l4,%l4
- srl %l1,25,%g3
- xor %g4,%l4,%l4
- sll %l1,26,%g4
- xor %g3,%l4,%l4
- xor %l3,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l4,%g3 ! Sigma1(e)
-
- srl %l5,2,%l4
- add %g5,%g2,%g2
- ld [%i3+44],%g5 ! K[11]
- sll %l5,10,%g4
- add %g3,%g2,%g2
- srl %l5,13,%g3
- xor %g4,%l4,%l4
- sll %l5,19,%g4
- xor %g3,%l4,%l4
- srl %l5,22,%g3
- xor %g4,%l4,%l4
- sll %l5,30,%g4
- xor %g3,%l4,%l4
- xor %g4,%l4,%l4 ! Sigma0(a)
-
- or %l5,%l6,%g3
- and %l5,%l6,%g4
- and %l7,%g3,%g3
+ srlx %o5,28,%o4
+ add %g5,%g2,%g2
+ ldx [%i3+88],%g5 ! K[11]
+ sllx %o5,25,%g4
+ add %g3,%g2,%g2
+ srlx %o5,34,%g3
+ xor %g4,%o4,%o4
+ sllx %o5,30,%g4
+ xor %g3,%o4,%o4
+ srlx %o5,39,%g3
+ xor %g4,%o4,%o4
+ sllx %o5,36,%g4
+ xor %g3,%o4,%o4
+ xor %g4,%o4,%o4 ! Sigma0(a)
+
+ or %o5,%g1,%g3
+ and %o5,%g1,%g4
+ and %o7,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[11]
- add %g4,%l4,%l4
+ add %g4,%o4,%o4
- add %g2,%l0,%l0
- add %g2,%l4,%l4
- srlx %g1,32,%g2
- add %l3,%g2,%g2
- srl %l0,6,%l3 !! 12
- xor %l1,%l2,%g5
- sll %l0,7,%g4
- and %l0,%g5,%g5
- srl %l0,11,%g3
- xor %g4,%l3,%l3
- sll %l0,21,%g4
- xor %g3,%l3,%l3
- srl %l0,25,%g3
- xor %g4,%l3,%l3
- sll %l0,26,%g4
- xor %g3,%l3,%l3
- xor %l2,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l3,%g3 ! Sigma1(e)
-
- srl %l4,2,%l3
- add %g5,%g2,%g2
- ld [%i3+48],%g5 ! K[12]
- sll %l4,10,%g4
- add %g3,%g2,%g2
- srl %l4,13,%g3
- xor %g4,%l3,%l3
- sll %l4,19,%g4
- xor %g3,%l3,%l3
- srl %l4,22,%g3
- xor %g4,%l3,%l3
- sll %l4,30,%g4
- xor %g3,%l3,%l3
- xor %g4,%l3,%l3 ! Sigma0(a)
-
- or %l4,%l5,%g3
- and %l4,%l5,%g4
- and %l6,%g3,%g3
+ add %g2,%o0,%o0
+ add %g2,%o4,%o4
+ sllx %l1,%i4,%g5 ! Xload(12)
+ add %i4,32,%g3
+ sllx %l0,%g3,%g4
+
+ srlx %l2,%i5,%l1
+ or %g4,%g5,%g5
+ or %l1,%g5,%g5
+
+ add %o3,%g5,%g2
+ stx %g5,[%sp+STACK_BIAS+STACK_FRAME+96]
+ bnz,a,pn %icc,.+8
+ ld [%i1+128],%l0
+ srlx %o0,14,%o3 !! 12
+ xor %o1,%o2,%g5
+ sllx %o0,23,%g4
+ and %o0,%g5,%g5
+ srlx %o0,18,%g3
+ xor %g4,%o3,%o3
+ sllx %o0,46,%g4
+ xor %g3,%o3,%o3
+ srlx %o0,41,%g3
+ xor %g4,%o3,%o3
+ sllx %o0,50,%g4
+ xor %g3,%o3,%o3
+ xor %o2,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o3,%g3 ! Sigma1(e)
+
+ srlx %o4,28,%o3
+ add %g5,%g2,%g2
+ ldx [%i3+96],%g5 ! K[12]
+ sllx %o4,25,%g4
+ add %g3,%g2,%g2
+ srlx %o4,34,%g3
+ xor %g4,%o3,%o3
+ sllx %o4,30,%g4
+ xor %g3,%o3,%o3
+ srlx %o4,39,%g3
+ xor %g4,%o3,%o3
+ sllx %o4,36,%g4
+ xor %g3,%o3,%o3
+ xor %g4,%o3,%o3 ! Sigma0(a)
+
+ or %o4,%o5,%g3
+ and %o4,%o5,%g4
+ and %g1,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[12]
- add %g4,%l3,%l3
+ add %g4,%o3,%o3
+
+ add %g2,%o7,%o7
+ add %g2,%o3,%o3
+ sllx %l3,%i4,%g5 ! Xload(13)
+ add %i4,32,%g3
+ sllx %l2,%g3,%g4
+
+ srlx %l4,%i5,%l3
+ or %g4,%g5,%g5
+ or %l3,%g5,%g5
+
+ add %o2,%g5,%g2
+ stx %g5,[%sp+STACK_BIAS+STACK_FRAME+104]
+ srlx %o7,14,%o2 !! 13
+ xor %o0,%o1,%g5
+ sllx %o7,23,%g4
+ and %o7,%g5,%g5
+ srlx %o7,18,%g3
+ xor %g4,%o2,%o2
+ sllx %o7,46,%g4
+ xor %g3,%o2,%o2
+ srlx %o7,41,%g3
+ xor %g4,%o2,%o2
+ sllx %o7,50,%g4
+ xor %g3,%o2,%o2
+ xor %o1,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o2,%g3 ! Sigma1(e)
- add %g2,%l7,%l7
- add %g2,%l3,%l3
- add %g1,%l2,%g2
- srl %l7,6,%l2 !! 13
- xor %l0,%l1,%g5
- sll %l7,7,%g4
- and %l7,%g5,%g5
- srl %l7,11,%g3
- xor %g4,%l2,%l2
- sll %l7,21,%g4
- xor %g3,%l2,%l2
- srl %l7,25,%g3
- xor %g4,%l2,%l2
- sll %l7,26,%g4
- xor %g3,%l2,%l2
- xor %l1,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l2,%g3 ! Sigma1(e)
-
- srl %l3,2,%l2
- add %g5,%g2,%g2
- ld [%i3+52],%g5 ! K[13]
- sll %l3,10,%g4
- add %g3,%g2,%g2
- srl %l3,13,%g3
- xor %g4,%l2,%l2
- sll %l3,19,%g4
- xor %g3,%l2,%l2
- srl %l3,22,%g3
- xor %g4,%l2,%l2
- sll %l3,30,%g4
- xor %g3,%l2,%l2
- xor %g4,%l2,%l2 ! Sigma0(a)
-
- or %l3,%l4,%g3
- and %l3,%l4,%g4
- and %l5,%g3,%g3
+ srlx %o3,28,%o2
+ add %g5,%g2,%g2
+ ldx [%i3+104],%g5 ! K[13]
+ sllx %o3,25,%g4
+ add %g3,%g2,%g2
+ srlx %o3,34,%g3
+ xor %g4,%o2,%o2
+ sllx %o3,30,%g4
+ xor %g3,%o2,%o2
+ srlx %o3,39,%g3
+ xor %g4,%o2,%o2
+ sllx %o3,36,%g4
+ xor %g3,%o2,%o2
+ xor %g4,%o2,%o2 ! Sigma0(a)
+
+ or %o3,%o4,%g3
+ and %o3,%o4,%g4
+ and %o5,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[13]
- add %g4,%l2,%l2
+ add %g4,%o2,%o2
- add %g2,%l6,%l6
- add %g2,%l2,%l2
- srlx %o7,32,%g2
- add %l1,%g2,%g2
- srl %l6,6,%l1 !! 14
- xor %l7,%l0,%g5
- sll %l6,7,%g4
- and %l6,%g5,%g5
- srl %l6,11,%g3
- xor %g4,%l1,%l1
- sll %l6,21,%g4
- xor %g3,%l1,%l1
- srl %l6,25,%g3
- xor %g4,%l1,%l1
- sll %l6,26,%g4
- xor %g3,%l1,%l1
- xor %l0,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l1,%g3 ! Sigma1(e)
-
- srl %l2,2,%l1
- add %g5,%g2,%g2
- ld [%i3+56],%g5 ! K[14]
- sll %l2,10,%g4
- add %g3,%g2,%g2
- srl %l2,13,%g3
- xor %g4,%l1,%l1
- sll %l2,19,%g4
- xor %g3,%l1,%l1
- srl %l2,22,%g3
- xor %g4,%l1,%l1
- sll %l2,30,%g4
- xor %g3,%l1,%l1
- xor %g4,%l1,%l1 ! Sigma0(a)
-
- or %l2,%l3,%g3
- and %l2,%l3,%g4
- and %l4,%g3,%g3
+ add %g2,%g1,%g1
+ add %g2,%o2,%o2
+ sllx %l5,%i4,%g5 ! Xload(14)
+ add %i4,32,%g3
+ sllx %l4,%g3,%g4
+
+ srlx %l6,%i5,%l5
+ or %g4,%g5,%g5
+ or %l5,%g5,%g5
+
+ add %o1,%g5,%g2
+ stx %g5,[%sp+STACK_BIAS+STACK_FRAME+112]
+ srlx %g1,14,%o1 !! 14
+ xor %o7,%o0,%g5
+ sllx %g1,23,%g4
+ and %g1,%g5,%g5
+ srlx %g1,18,%g3
+ xor %g4,%o1,%o1
+ sllx %g1,46,%g4
+ xor %g3,%o1,%o1
+ srlx %g1,41,%g3
+ xor %g4,%o1,%o1
+ sllx %g1,50,%g4
+ xor %g3,%o1,%o1
+ xor %o0,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o1,%g3 ! Sigma1(e)
+
+ srlx %o2,28,%o1
+ add %g5,%g2,%g2
+ ldx [%i3+112],%g5 ! K[14]
+ sllx %o2,25,%g4
+ add %g3,%g2,%g2
+ srlx %o2,34,%g3
+ xor %g4,%o1,%o1
+ sllx %o2,30,%g4
+ xor %g3,%o1,%o1
+ srlx %o2,39,%g3
+ xor %g4,%o1,%o1
+ sllx %o2,36,%g4
+ xor %g3,%o1,%o1
+ xor %g4,%o1,%o1 ! Sigma0(a)
+
+ or %o2,%o3,%g3
+ and %o2,%o3,%g4
+ and %o4,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[14]
- add %g4,%l1,%l1
+ add %g4,%o1,%o1
- add %g2,%l5,%l5
- add %g2,%l1,%l1
- add %o7,%l0,%g2
- srl %l5,6,%l0 !! 15
- xor %l6,%l7,%g5
- sll %l5,7,%g4
- and %l5,%g5,%g5
- srl %l5,11,%g3
- xor %g4,%l0,%l0
- sll %l5,21,%g4
- xor %g3,%l0,%l0
- srl %l5,25,%g3
- xor %g4,%l0,%l0
- sll %l5,26,%g4
- xor %g3,%l0,%l0
- xor %l7,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l0,%g3 ! Sigma1(e)
-
- srl %l1,2,%l0
- add %g5,%g2,%g2
- ld [%i3+60],%g5 ! K[15]
- sll %l1,10,%g4
- add %g3,%g2,%g2
- srl %l1,13,%g3
- xor %g4,%l0,%l0
- sll %l1,19,%g4
- xor %g3,%l0,%l0
- srl %l1,22,%g3
- xor %g4,%l0,%l0
- sll %l1,30,%g4
- xor %g3,%l0,%l0
- xor %g4,%l0,%l0 ! Sigma0(a)
-
- or %l1,%l2,%g3
- and %l1,%l2,%g4
- and %l3,%g3,%g3
+ add %g2,%o5,%o5
+ add %g2,%o1,%o1
+ ld [%sp+STACK_BIAS+STACK_FRAME+8],%l2
+ sllx %l7,%i4,%g5 ! Xload(15)
+ add %i4,32,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+12],%l3
+ sllx %l6,%g3,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+72],%l4
+ srlx %l0,%i5,%l7
+ or %g4,%g5,%g5
+ ld [%sp+STACK_BIAS+STACK_FRAME+76],%l5
+ or %l7,%g5,%g5
+ ld [%sp+STACK_BIAS+STACK_FRAME+112],%l6
+ add %o0,%g5,%g2
+ stx %g5,[%sp+STACK_BIAS+STACK_FRAME+120]
+ ld [%sp+STACK_BIAS+STACK_FRAME+116],%l7
+ ld [%sp+STACK_BIAS+STACK_FRAME+0],%l0
+ ld [%sp+STACK_BIAS+STACK_FRAME+4],%l1
+ srlx %o5,14,%o0 !! 15
+ xor %g1,%o7,%g5
+ sllx %o5,23,%g4
+ and %o5,%g5,%g5
+ srlx %o5,18,%g3
+ xor %g4,%o0,%o0
+ sllx %o5,46,%g4
+ xor %g3,%o0,%o0
+ srlx %o5,41,%g3
+ xor %g4,%o0,%o0
+ sllx %o5,50,%g4
+ xor %g3,%o0,%o0
+ xor %o7,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o0,%g3 ! Sigma1(e)
+
+ srlx %o1,28,%o0
+ add %g5,%g2,%g2
+ ldx [%i3+120],%g5 ! K[15]
+ sllx %o1,25,%g4
+ add %g3,%g2,%g2
+ srlx %o1,34,%g3
+ xor %g4,%o0,%o0
+ sllx %o1,30,%g4
+ xor %g3,%o0,%o0
+ srlx %o1,39,%g3
+ xor %g4,%o0,%o0
+ sllx %o1,36,%g4
+ xor %g3,%o0,%o0
+ xor %g4,%o0,%o0 ! Sigma0(a)
+
+ or %o1,%o2,%g3
+ and %o1,%o2,%g4
+ and %o3,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[15]
- add %g4,%l0,%l0
+ add %g4,%o0,%o0
- add %g2,%l4,%l4
- add %g2,%l0,%l0
+ add %g2,%o4,%o4
+ add %g2,%o0,%o0
.L16_xx:
- srl %o0,3,%g2 !! Xupdate(16)
- sll %o0,14,%g4
- srl %o0,7,%g3
+ sllx %l2,32,%g3 !! Xupdate(16)
+ or %l3,%g3,%g3
+
+ srlx %g3,7,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+16],%l2
+ sllx %g3,56,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+20],%l3
+ srlx %g3,1,%g3
xor %g4,%g2,%g2
- sll %g4,11,%g4
+ sllx %g4,7,%g4
xor %g3,%g2,%g2
- srl %o0,18,%g3
+ srlx %g3,7,%g3
xor %g4,%g2,%g2
- srlx %o7,32,%i5
- srl %i5,10,%g5
- xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
- sll %i5,13,%g4
- srl %i5,17,%g3
- xor %g4,%g5,%g5
- sll %g4,2,%g4
- xor %g3,%g5,%g5
- srl %i5,19,%g3
- xor %g4,%g5,%g5
- srlx %o0,32,%g4 ! X[i]
- xor %g3,%g5,%g5 ! sigma1(X[i+14])
- add %o4,%g2,%g2 ! +=X[i+9]
- add %g5,%g4,%g4
- srl %o0,0,%o0
+ sllx %l6,32,%g5
+ xor %g3,%g2,%g2 ! sigma0(X[16+1])
+ or %l7,%g5,%g5
+
+ srlx %g5,6,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+120],%l6
+ sllx %g5,3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+124],%l7
+ srlx %g5,19,%g5
+ xor %g3,%g4,%g4
+ sllx %g3,42,%g3
+ xor %g5,%g4,%g4
+ srlx %g5,42,%g5
+ xor %g3,%g4,%g4
+ sllx %l4,32,%g3
+ xor %g5,%g4,%g4 ! sigma1(X[16+14])
+ ld [%sp+STACK_BIAS+STACK_FRAME+80],%l4
+ or %l5,%g3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+84],%l5
+
+ sllx %l0,32,%g5
add %g4,%g2,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+8],%l0
+ or %l1,%g5,%g5
+ add %g3,%g2,%g2 ! +=X[16+9]
+ ld [%sp+STACK_BIAS+STACK_FRAME+12],%l1
+ add %g5,%g2,%g2 ! +=X[16]
+ stx %g2,[%sp+STACK_BIAS+STACK_FRAME+0]
+ add %o7,%g2,%g2
+ srlx %o4,14,%o7 !! 16
+ xor %o5,%g1,%g5
+ sllx %o4,23,%g4
+ and %o4,%g5,%g5
+ srlx %o4,18,%g3
+ xor %g4,%o7,%o7
+ sllx %o4,46,%g4
+ xor %g3,%o7,%o7
+ srlx %o4,41,%g3
+ xor %g4,%o7,%o7
+ sllx %o4,50,%g4
+ xor %g3,%o7,%o7
+ xor %g1,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o7,%g3 ! Sigma1(e)
- sllx %g2,32,%g3
- or %g3,%o0,%o0
- add %l7,%g2,%g2
- srl %l4,6,%l7 !! 16
- xor %l5,%l6,%g5
- sll %l4,7,%g4
- and %l4,%g5,%g5
- srl %l4,11,%g3
- xor %g4,%l7,%l7
- sll %l4,21,%g4
- xor %g3,%l7,%l7
- srl %l4,25,%g3
- xor %g4,%l7,%l7
- sll %l4,26,%g4
- xor %g3,%l7,%l7
- xor %l6,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l7,%g3 ! Sigma1(e)
-
- srl %l0,2,%l7
- add %g5,%g2,%g2
- ld [%i3+64],%g5 ! K[16]
- sll %l0,10,%g4
- add %g3,%g2,%g2
- srl %l0,13,%g3
- xor %g4,%l7,%l7
- sll %l0,19,%g4
- xor %g3,%l7,%l7
- srl %l0,22,%g3
- xor %g4,%l7,%l7
- sll %l0,30,%g4
- xor %g3,%l7,%l7
- xor %g4,%l7,%l7 ! Sigma0(a)
-
- or %l0,%l1,%g3
- and %l0,%l1,%g4
- and %l2,%g3,%g3
+ srlx %o0,28,%o7
+ add %g5,%g2,%g2
+ ldx [%i3+128],%g5 ! K[16]
+ sllx %o0,25,%g4
+ add %g3,%g2,%g2
+ srlx %o0,34,%g3
+ xor %g4,%o7,%o7
+ sllx %o0,30,%g4
+ xor %g3,%o7,%o7
+ srlx %o0,39,%g3
+ xor %g4,%o7,%o7
+ sllx %o0,36,%g4
+ xor %g3,%o7,%o7
+ xor %g4,%o7,%o7 ! Sigma0(a)
+
+ or %o0,%o1,%g3
+ and %o0,%o1,%g4
+ and %o2,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[16]
- add %g4,%l7,%l7
+ add %g4,%o7,%o7
- add %g2,%l3,%l3
- add %g2,%l7,%l7
- srlx %o1,32,%i5
- srl %i5,3,%g2 !! Xupdate(17)
- sll %i5,14,%g4
- srl %i5,7,%g3
+ add %g2,%o3,%o3
+ add %g2,%o7,%o7
+ sllx %l2,32,%g3 !! Xupdate(17)
+ or %l3,%g3,%g3
+
+ srlx %g3,7,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+24],%l2
+ sllx %g3,56,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+28],%l3
+ srlx %g3,1,%g3
xor %g4,%g2,%g2
- sll %g4,11,%g4
+ sllx %g4,7,%g4
xor %g3,%g2,%g2
- srl %i5,18,%g3
+ srlx %g3,7,%g3
xor %g4,%g2,%g2
- srl %o7,10,%g5
- xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
- sll %o7,13,%g4
- srl %o7,17,%g3
- xor %g4,%g5,%g5
- sll %g4,2,%g4
- xor %g3,%g5,%g5
- srl %o7,19,%g3
- xor %g4,%g5,%g5
- srlx %o5,32,%g4 ! X[i+9]
- xor %g3,%g5,%g5 ! sigma1(X[i+14])
- srl %o0,0,%g3
- add %g5,%g4,%g4
- add %o0,%g2,%g2 ! +=X[i]
- xor %g3,%o0,%o0
+ sllx %l6,32,%g5
+ xor %g3,%g2,%g2 ! sigma0(X[17+1])
+ or %l7,%g5,%g5
+
+ srlx %g5,6,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+0],%l6
+ sllx %g5,3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+4],%l7
+ srlx %g5,19,%g5
+ xor %g3,%g4,%g4
+ sllx %g3,42,%g3
+ xor %g5,%g4,%g4
+ srlx %g5,42,%g5
+ xor %g3,%g4,%g4
+ sllx %l4,32,%g3
+ xor %g5,%g4,%g4 ! sigma1(X[17+14])
+ ld [%sp+STACK_BIAS+STACK_FRAME+88],%l4
+ or %l5,%g3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+92],%l5
+
+ sllx %l0,32,%g5
add %g4,%g2,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+16],%l0
+ or %l1,%g5,%g5
+ add %g3,%g2,%g2 ! +=X[17+9]
+ ld [%sp+STACK_BIAS+STACK_FRAME+20],%l1
+ add %g5,%g2,%g2 ! +=X[17]
+ stx %g2,[%sp+STACK_BIAS+STACK_FRAME+8]
+ add %g1,%g2,%g2
+ srlx %o3,14,%g1 !! 17
+ xor %o4,%o5,%g5
+ sllx %o3,23,%g4
+ and %o3,%g5,%g5
+ srlx %o3,18,%g3
+ xor %g4,%g1,%g1
+ sllx %o3,46,%g4
+ xor %g3,%g1,%g1
+ srlx %o3,41,%g3
+ xor %g4,%g1,%g1
+ sllx %o3,50,%g4
+ xor %g3,%g1,%g1
+ xor %o5,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%g1,%g3 ! Sigma1(e)
+
+ srlx %o7,28,%g1
+ add %g5,%g2,%g2
+ ldx [%i3+136],%g5 ! K[17]
+ sllx %o7,25,%g4
+ add %g3,%g2,%g2
+ srlx %o7,34,%g3
+ xor %g4,%g1,%g1
+ sllx %o7,30,%g4
+ xor %g3,%g1,%g1
+ srlx %o7,39,%g3
+ xor %g4,%g1,%g1
+ sllx %o7,36,%g4
+ xor %g3,%g1,%g1
+ xor %g4,%g1,%g1 ! Sigma0(a)
- srl %g2,0,%g2
- or %g2,%o0,%o0
- add %l6,%g2,%g2
- srl %l3,6,%l6 !! 17
- xor %l4,%l5,%g5
- sll %l3,7,%g4
- and %l3,%g5,%g5
- srl %l3,11,%g3
- xor %g4,%l6,%l6
- sll %l3,21,%g4
- xor %g3,%l6,%l6
- srl %l3,25,%g3
- xor %g4,%l6,%l6
- sll %l3,26,%g4
- xor %g3,%l6,%l6
- xor %l5,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l6,%g3 ! Sigma1(e)
-
- srl %l7,2,%l6
- add %g5,%g2,%g2
- ld [%i3+68],%g5 ! K[17]
- sll %l7,10,%g4
- add %g3,%g2,%g2
- srl %l7,13,%g3
- xor %g4,%l6,%l6
- sll %l7,19,%g4
- xor %g3,%l6,%l6
- srl %l7,22,%g3
- xor %g4,%l6,%l6
- sll %l7,30,%g4
- xor %g3,%l6,%l6
- xor %g4,%l6,%l6 ! Sigma0(a)
-
- or %l7,%l0,%g3
- and %l7,%l0,%g4
- and %l1,%g3,%g3
+ or %o7,%o0,%g3
+ and %o7,%o0,%g4
+ and %o1,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[17]
- add %g4,%l6,%l6
+ add %g4,%g1,%g1
- add %g2,%l2,%l2
- add %g2,%l6,%l6
- srl %o1,3,%g2 !! Xupdate(18)
- sll %o1,14,%g4
- srl %o1,7,%g3
+ add %g2,%o2,%o2
+ add %g2,%g1,%g1
+ sllx %l2,32,%g3 !! Xupdate(18)
+ or %l3,%g3,%g3
+
+ srlx %g3,7,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+32],%l2
+ sllx %g3,56,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+36],%l3
+ srlx %g3,1,%g3
xor %g4,%g2,%g2
- sll %g4,11,%g4
+ sllx %g4,7,%g4
xor %g3,%g2,%g2
- srl %o1,18,%g3
+ srlx %g3,7,%g3
xor %g4,%g2,%g2
- srlx %o0,32,%i5
- srl %i5,10,%g5
- xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
- sll %i5,13,%g4
- srl %i5,17,%g3
- xor %g4,%g5,%g5
- sll %g4,2,%g4
- xor %g3,%g5,%g5
- srl %i5,19,%g3
- xor %g4,%g5,%g5
- srlx %o1,32,%g4 ! X[i]
- xor %g3,%g5,%g5 ! sigma1(X[i+14])
- add %o5,%g2,%g2 ! +=X[i+9]
- add %g5,%g4,%g4
- srl %o1,0,%o1
+ sllx %l6,32,%g5
+ xor %g3,%g2,%g2 ! sigma0(X[18+1])
+ or %l7,%g5,%g5
+
+ srlx %g5,6,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+8],%l6
+ sllx %g5,3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+12],%l7
+ srlx %g5,19,%g5
+ xor %g3,%g4,%g4
+ sllx %g3,42,%g3
+ xor %g5,%g4,%g4
+ srlx %g5,42,%g5
+ xor %g3,%g4,%g4
+ sllx %l4,32,%g3
+ xor %g5,%g4,%g4 ! sigma1(X[18+14])
+ ld [%sp+STACK_BIAS+STACK_FRAME+96],%l4
+ or %l5,%g3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+100],%l5
+
+ sllx %l0,32,%g5
add %g4,%g2,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+24],%l0
+ or %l1,%g5,%g5
+ add %g3,%g2,%g2 ! +=X[18+9]
+ ld [%sp+STACK_BIAS+STACK_FRAME+28],%l1
+ add %g5,%g2,%g2 ! +=X[18]
+ stx %g2,[%sp+STACK_BIAS+STACK_FRAME+16]
+ add %o5,%g2,%g2
+ srlx %o2,14,%o5 !! 18
+ xor %o3,%o4,%g5
+ sllx %o2,23,%g4
+ and %o2,%g5,%g5
+ srlx %o2,18,%g3
+ xor %g4,%o5,%o5
+ sllx %o2,46,%g4
+ xor %g3,%o5,%o5
+ srlx %o2,41,%g3
+ xor %g4,%o5,%o5
+ sllx %o2,50,%g4
+ xor %g3,%o5,%o5
+ xor %o4,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o5,%g3 ! Sigma1(e)
+
+ srlx %g1,28,%o5
+ add %g5,%g2,%g2
+ ldx [%i3+144],%g5 ! K[18]
+ sllx %g1,25,%g4
+ add %g3,%g2,%g2
+ srlx %g1,34,%g3
+ xor %g4,%o5,%o5
+ sllx %g1,30,%g4
+ xor %g3,%o5,%o5
+ srlx %g1,39,%g3
+ xor %g4,%o5,%o5
+ sllx %g1,36,%g4
+ xor %g3,%o5,%o5
+ xor %g4,%o5,%o5 ! Sigma0(a)
- sllx %g2,32,%g3
- or %g3,%o1,%o1
- add %l5,%g2,%g2
- srl %l2,6,%l5 !! 18
- xor %l3,%l4,%g5
- sll %l2,7,%g4
- and %l2,%g5,%g5
- srl %l2,11,%g3
- xor %g4,%l5,%l5
- sll %l2,21,%g4
- xor %g3,%l5,%l5
- srl %l2,25,%g3
- xor %g4,%l5,%l5
- sll %l2,26,%g4
- xor %g3,%l5,%l5
- xor %l4,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l5,%g3 ! Sigma1(e)
-
- srl %l6,2,%l5
- add %g5,%g2,%g2
- ld [%i3+72],%g5 ! K[18]
- sll %l6,10,%g4
- add %g3,%g2,%g2
- srl %l6,13,%g3
- xor %g4,%l5,%l5
- sll %l6,19,%g4
- xor %g3,%l5,%l5
- srl %l6,22,%g3
- xor %g4,%l5,%l5
- sll %l6,30,%g4
- xor %g3,%l5,%l5
- xor %g4,%l5,%l5 ! Sigma0(a)
-
- or %l6,%l7,%g3
- and %l6,%l7,%g4
- and %l0,%g3,%g3
+ or %g1,%o7,%g3
+ and %g1,%o7,%g4
+ and %o0,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[18]
- add %g4,%l5,%l5
+ add %g4,%o5,%o5
- add %g2,%l1,%l1
- add %g2,%l5,%l5
- srlx %o2,32,%i5
- srl %i5,3,%g2 !! Xupdate(19)
- sll %i5,14,%g4
- srl %i5,7,%g3
+ add %g2,%o1,%o1
+ add %g2,%o5,%o5
+ sllx %l2,32,%g3 !! Xupdate(19)
+ or %l3,%g3,%g3
+
+ srlx %g3,7,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+40],%l2
+ sllx %g3,56,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+44],%l3
+ srlx %g3,1,%g3
xor %g4,%g2,%g2
- sll %g4,11,%g4
+ sllx %g4,7,%g4
xor %g3,%g2,%g2
- srl %i5,18,%g3
+ srlx %g3,7,%g3
xor %g4,%g2,%g2
- srl %o0,10,%g5
- xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
- sll %o0,13,%g4
- srl %o0,17,%g3
- xor %g4,%g5,%g5
- sll %g4,2,%g4
- xor %g3,%g5,%g5
- srl %o0,19,%g3
- xor %g4,%g5,%g5
- srlx %g1,32,%g4 ! X[i+9]
- xor %g3,%g5,%g5 ! sigma1(X[i+14])
- srl %o1,0,%g3
- add %g5,%g4,%g4
- add %o1,%g2,%g2 ! +=X[i]
- xor %g3,%o1,%o1
+ sllx %l6,32,%g5
+ xor %g3,%g2,%g2 ! sigma0(X[19+1])
+ or %l7,%g5,%g5
+
+ srlx %g5,6,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+16],%l6
+ sllx %g5,3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+20],%l7
+ srlx %g5,19,%g5
+ xor %g3,%g4,%g4
+ sllx %g3,42,%g3
+ xor %g5,%g4,%g4
+ srlx %g5,42,%g5
+ xor %g3,%g4,%g4
+ sllx %l4,32,%g3
+ xor %g5,%g4,%g4 ! sigma1(X[19+14])
+ ld [%sp+STACK_BIAS+STACK_FRAME+104],%l4
+ or %l5,%g3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+108],%l5
+
+ sllx %l0,32,%g5
add %g4,%g2,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+32],%l0
+ or %l1,%g5,%g5
+ add %g3,%g2,%g2 ! +=X[19+9]
+ ld [%sp+STACK_BIAS+STACK_FRAME+36],%l1
+ add %g5,%g2,%g2 ! +=X[19]
+ stx %g2,[%sp+STACK_BIAS+STACK_FRAME+24]
+ add %o4,%g2,%g2
+ srlx %o1,14,%o4 !! 19
+ xor %o2,%o3,%g5
+ sllx %o1,23,%g4
+ and %o1,%g5,%g5
+ srlx %o1,18,%g3
+ xor %g4,%o4,%o4
+ sllx %o1,46,%g4
+ xor %g3,%o4,%o4
+ srlx %o1,41,%g3
+ xor %g4,%o4,%o4
+ sllx %o1,50,%g4
+ xor %g3,%o4,%o4
+ xor %o3,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o4,%g3 ! Sigma1(e)
+
+ srlx %o5,28,%o4
+ add %g5,%g2,%g2
+ ldx [%i3+152],%g5 ! K[19]
+ sllx %o5,25,%g4
+ add %g3,%g2,%g2
+ srlx %o5,34,%g3
+ xor %g4,%o4,%o4
+ sllx %o5,30,%g4
+ xor %g3,%o4,%o4
+ srlx %o5,39,%g3
+ xor %g4,%o4,%o4
+ sllx %o5,36,%g4
+ xor %g3,%o4,%o4
+ xor %g4,%o4,%o4 ! Sigma0(a)
- srl %g2,0,%g2
- or %g2,%o1,%o1
- add %l4,%g2,%g2
- srl %l1,6,%l4 !! 19
- xor %l2,%l3,%g5
- sll %l1,7,%g4
- and %l1,%g5,%g5
- srl %l1,11,%g3
- xor %g4,%l4,%l4
- sll %l1,21,%g4
- xor %g3,%l4,%l4
- srl %l1,25,%g3
- xor %g4,%l4,%l4
- sll %l1,26,%g4
- xor %g3,%l4,%l4
- xor %l3,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l4,%g3 ! Sigma1(e)
-
- srl %l5,2,%l4
- add %g5,%g2,%g2
- ld [%i3+76],%g5 ! K[19]
- sll %l5,10,%g4
- add %g3,%g2,%g2
- srl %l5,13,%g3
- xor %g4,%l4,%l4
- sll %l5,19,%g4
- xor %g3,%l4,%l4
- srl %l5,22,%g3
- xor %g4,%l4,%l4
- sll %l5,30,%g4
- xor %g3,%l4,%l4
- xor %g4,%l4,%l4 ! Sigma0(a)
-
- or %l5,%l6,%g3
- and %l5,%l6,%g4
- and %l7,%g3,%g3
+ or %o5,%g1,%g3
+ and %o5,%g1,%g4
+ and %o7,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[19]
- add %g4,%l4,%l4
+ add %g4,%o4,%o4
- add %g2,%l0,%l0
- add %g2,%l4,%l4
- srl %o2,3,%g2 !! Xupdate(20)
- sll %o2,14,%g4
- srl %o2,7,%g3
+ add %g2,%o0,%o0
+ add %g2,%o4,%o4
+ sllx %l2,32,%g3 !! Xupdate(20)
+ or %l3,%g3,%g3
+
+ srlx %g3,7,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+48],%l2
+ sllx %g3,56,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+52],%l3
+ srlx %g3,1,%g3
xor %g4,%g2,%g2
- sll %g4,11,%g4
+ sllx %g4,7,%g4
xor %g3,%g2,%g2
- srl %o2,18,%g3
+ srlx %g3,7,%g3
xor %g4,%g2,%g2
- srlx %o1,32,%i5
- srl %i5,10,%g5
- xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
- sll %i5,13,%g4
- srl %i5,17,%g3
- xor %g4,%g5,%g5
- sll %g4,2,%g4
- xor %g3,%g5,%g5
- srl %i5,19,%g3
- xor %g4,%g5,%g5
- srlx %o2,32,%g4 ! X[i]
- xor %g3,%g5,%g5 ! sigma1(X[i+14])
- add %g1,%g2,%g2 ! +=X[i+9]
- add %g5,%g4,%g4
- srl %o2,0,%o2
+ sllx %l6,32,%g5
+ xor %g3,%g2,%g2 ! sigma0(X[20+1])
+ or %l7,%g5,%g5
+
+ srlx %g5,6,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+24],%l6
+ sllx %g5,3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+28],%l7
+ srlx %g5,19,%g5
+ xor %g3,%g4,%g4
+ sllx %g3,42,%g3
+ xor %g5,%g4,%g4
+ srlx %g5,42,%g5
+ xor %g3,%g4,%g4
+ sllx %l4,32,%g3
+ xor %g5,%g4,%g4 ! sigma1(X[20+14])
+ ld [%sp+STACK_BIAS+STACK_FRAME+112],%l4
+ or %l5,%g3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+116],%l5
+
+ sllx %l0,32,%g5
add %g4,%g2,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+40],%l0
+ or %l1,%g5,%g5
+ add %g3,%g2,%g2 ! +=X[20+9]
+ ld [%sp+STACK_BIAS+STACK_FRAME+44],%l1
+ add %g5,%g2,%g2 ! +=X[20]
+ stx %g2,[%sp+STACK_BIAS+STACK_FRAME+32]
+ add %o3,%g2,%g2
+ srlx %o0,14,%o3 !! 20
+ xor %o1,%o2,%g5
+ sllx %o0,23,%g4
+ and %o0,%g5,%g5
+ srlx %o0,18,%g3
+ xor %g4,%o3,%o3
+ sllx %o0,46,%g4
+ xor %g3,%o3,%o3
+ srlx %o0,41,%g3
+ xor %g4,%o3,%o3
+ sllx %o0,50,%g4
+ xor %g3,%o3,%o3
+ xor %o2,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o3,%g3 ! Sigma1(e)
- sllx %g2,32,%g3
- or %g3,%o2,%o2
- add %l3,%g2,%g2
- srl %l0,6,%l3 !! 20
- xor %l1,%l2,%g5
- sll %l0,7,%g4
- and %l0,%g5,%g5
- srl %l0,11,%g3
- xor %g4,%l3,%l3
- sll %l0,21,%g4
- xor %g3,%l3,%l3
- srl %l0,25,%g3
- xor %g4,%l3,%l3
- sll %l0,26,%g4
- xor %g3,%l3,%l3
- xor %l2,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l3,%g3 ! Sigma1(e)
-
- srl %l4,2,%l3
- add %g5,%g2,%g2
- ld [%i3+80],%g5 ! K[20]
- sll %l4,10,%g4
- add %g3,%g2,%g2
- srl %l4,13,%g3
- xor %g4,%l3,%l3
- sll %l4,19,%g4
- xor %g3,%l3,%l3
- srl %l4,22,%g3
- xor %g4,%l3,%l3
- sll %l4,30,%g4
- xor %g3,%l3,%l3
- xor %g4,%l3,%l3 ! Sigma0(a)
-
- or %l4,%l5,%g3
- and %l4,%l5,%g4
- and %l6,%g3,%g3
+ srlx %o4,28,%o3
+ add %g5,%g2,%g2
+ ldx [%i3+160],%g5 ! K[20]
+ sllx %o4,25,%g4
+ add %g3,%g2,%g2
+ srlx %o4,34,%g3
+ xor %g4,%o3,%o3
+ sllx %o4,30,%g4
+ xor %g3,%o3,%o3
+ srlx %o4,39,%g3
+ xor %g4,%o3,%o3
+ sllx %o4,36,%g4
+ xor %g3,%o3,%o3
+ xor %g4,%o3,%o3 ! Sigma0(a)
+
+ or %o4,%o5,%g3
+ and %o4,%o5,%g4
+ and %g1,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[20]
- add %g4,%l3,%l3
+ add %g4,%o3,%o3
- add %g2,%l7,%l7
- add %g2,%l3,%l3
- srlx %o3,32,%i5
- srl %i5,3,%g2 !! Xupdate(21)
- sll %i5,14,%g4
- srl %i5,7,%g3
+ add %g2,%o7,%o7
+ add %g2,%o3,%o3
+ sllx %l2,32,%g3 !! Xupdate(21)
+ or %l3,%g3,%g3
+
+ srlx %g3,7,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+56],%l2
+ sllx %g3,56,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+60],%l3
+ srlx %g3,1,%g3
xor %g4,%g2,%g2
- sll %g4,11,%g4
+ sllx %g4,7,%g4
xor %g3,%g2,%g2
- srl %i5,18,%g3
+ srlx %g3,7,%g3
xor %g4,%g2,%g2
- srl %o1,10,%g5
- xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
- sll %o1,13,%g4
- srl %o1,17,%g3
- xor %g4,%g5,%g5
- sll %g4,2,%g4
- xor %g3,%g5,%g5
- srl %o1,19,%g3
- xor %g4,%g5,%g5
- srlx %o7,32,%g4 ! X[i+9]
- xor %g3,%g5,%g5 ! sigma1(X[i+14])
- srl %o2,0,%g3
- add %g5,%g4,%g4
- add %o2,%g2,%g2 ! +=X[i]
- xor %g3,%o2,%o2
+ sllx %l6,32,%g5
+ xor %g3,%g2,%g2 ! sigma0(X[21+1])
+ or %l7,%g5,%g5
+
+ srlx %g5,6,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+32],%l6
+ sllx %g5,3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+36],%l7
+ srlx %g5,19,%g5
+ xor %g3,%g4,%g4
+ sllx %g3,42,%g3
+ xor %g5,%g4,%g4
+ srlx %g5,42,%g5
+ xor %g3,%g4,%g4
+ sllx %l4,32,%g3
+ xor %g5,%g4,%g4 ! sigma1(X[21+14])
+ ld [%sp+STACK_BIAS+STACK_FRAME+120],%l4
+ or %l5,%g3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+124],%l5
+
+ sllx %l0,32,%g5
add %g4,%g2,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+48],%l0
+ or %l1,%g5,%g5
+ add %g3,%g2,%g2 ! +=X[21+9]
+ ld [%sp+STACK_BIAS+STACK_FRAME+52],%l1
+ add %g5,%g2,%g2 ! +=X[21]
+ stx %g2,[%sp+STACK_BIAS+STACK_FRAME+40]
+ add %o2,%g2,%g2
+ srlx %o7,14,%o2 !! 21
+ xor %o0,%o1,%g5
+ sllx %o7,23,%g4
+ and %o7,%g5,%g5
+ srlx %o7,18,%g3
+ xor %g4,%o2,%o2
+ sllx %o7,46,%g4
+ xor %g3,%o2,%o2
+ srlx %o7,41,%g3
+ xor %g4,%o2,%o2
+ sllx %o7,50,%g4
+ xor %g3,%o2,%o2
+ xor %o1,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o2,%g3 ! Sigma1(e)
+
+ srlx %o3,28,%o2
+ add %g5,%g2,%g2
+ ldx [%i3+168],%g5 ! K[21]
+ sllx %o3,25,%g4
+ add %g3,%g2,%g2
+ srlx %o3,34,%g3
+ xor %g4,%o2,%o2
+ sllx %o3,30,%g4
+ xor %g3,%o2,%o2
+ srlx %o3,39,%g3
+ xor %g4,%o2,%o2
+ sllx %o3,36,%g4
+ xor %g3,%o2,%o2
+ xor %g4,%o2,%o2 ! Sigma0(a)
- srl %g2,0,%g2
- or %g2,%o2,%o2
- add %l2,%g2,%g2
- srl %l7,6,%l2 !! 21
- xor %l0,%l1,%g5
- sll %l7,7,%g4
- and %l7,%g5,%g5
- srl %l7,11,%g3
- xor %g4,%l2,%l2
- sll %l7,21,%g4
- xor %g3,%l2,%l2
- srl %l7,25,%g3
- xor %g4,%l2,%l2
- sll %l7,26,%g4
- xor %g3,%l2,%l2
- xor %l1,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l2,%g3 ! Sigma1(e)
-
- srl %l3,2,%l2
- add %g5,%g2,%g2
- ld [%i3+84],%g5 ! K[21]
- sll %l3,10,%g4
- add %g3,%g2,%g2
- srl %l3,13,%g3
- xor %g4,%l2,%l2
- sll %l3,19,%g4
- xor %g3,%l2,%l2
- srl %l3,22,%g3
- xor %g4,%l2,%l2
- sll %l3,30,%g4
- xor %g3,%l2,%l2
- xor %g4,%l2,%l2 ! Sigma0(a)
-
- or %l3,%l4,%g3
- and %l3,%l4,%g4
- and %l5,%g3,%g3
+ or %o3,%o4,%g3
+ and %o3,%o4,%g4
+ and %o5,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[21]
- add %g4,%l2,%l2
+ add %g4,%o2,%o2
- add %g2,%l6,%l6
- add %g2,%l2,%l2
- srl %o3,3,%g2 !! Xupdate(22)
- sll %o3,14,%g4
- srl %o3,7,%g3
+ add %g2,%g1,%g1
+ add %g2,%o2,%o2
+ sllx %l2,32,%g3 !! Xupdate(22)
+ or %l3,%g3,%g3
+
+ srlx %g3,7,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+64],%l2
+ sllx %g3,56,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+68],%l3
+ srlx %g3,1,%g3
xor %g4,%g2,%g2
- sll %g4,11,%g4
+ sllx %g4,7,%g4
xor %g3,%g2,%g2
- srl %o3,18,%g3
+ srlx %g3,7,%g3
xor %g4,%g2,%g2
- srlx %o2,32,%i5
- srl %i5,10,%g5
- xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
- sll %i5,13,%g4
- srl %i5,17,%g3
- xor %g4,%g5,%g5
- sll %g4,2,%g4
- xor %g3,%g5,%g5
- srl %i5,19,%g3
- xor %g4,%g5,%g5
- srlx %o3,32,%g4 ! X[i]
- xor %g3,%g5,%g5 ! sigma1(X[i+14])
- add %o7,%g2,%g2 ! +=X[i+9]
- add %g5,%g4,%g4
- srl %o3,0,%o3
+ sllx %l6,32,%g5
+ xor %g3,%g2,%g2 ! sigma0(X[22+1])
+ or %l7,%g5,%g5
+
+ srlx %g5,6,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+40],%l6
+ sllx %g5,3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+44],%l7
+ srlx %g5,19,%g5
+ xor %g3,%g4,%g4
+ sllx %g3,42,%g3
+ xor %g5,%g4,%g4
+ srlx %g5,42,%g5
+ xor %g3,%g4,%g4
+ sllx %l4,32,%g3
+ xor %g5,%g4,%g4 ! sigma1(X[22+14])
+ ld [%sp+STACK_BIAS+STACK_FRAME+0],%l4
+ or %l5,%g3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+4],%l5
+
+ sllx %l0,32,%g5
add %g4,%g2,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+56],%l0
+ or %l1,%g5,%g5
+ add %g3,%g2,%g2 ! +=X[22+9]
+ ld [%sp+STACK_BIAS+STACK_FRAME+60],%l1
+ add %g5,%g2,%g2 ! +=X[22]
+ stx %g2,[%sp+STACK_BIAS+STACK_FRAME+48]
+ add %o1,%g2,%g2
+ srlx %g1,14,%o1 !! 22
+ xor %o7,%o0,%g5
+ sllx %g1,23,%g4
+ and %g1,%g5,%g5
+ srlx %g1,18,%g3
+ xor %g4,%o1,%o1
+ sllx %g1,46,%g4
+ xor %g3,%o1,%o1
+ srlx %g1,41,%g3
+ xor %g4,%o1,%o1
+ sllx %g1,50,%g4
+ xor %g3,%o1,%o1
+ xor %o0,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o1,%g3 ! Sigma1(e)
- sllx %g2,32,%g3
- or %g3,%o3,%o3
- add %l1,%g2,%g2
- srl %l6,6,%l1 !! 22
- xor %l7,%l0,%g5
- sll %l6,7,%g4
- and %l6,%g5,%g5
- srl %l6,11,%g3
- xor %g4,%l1,%l1
- sll %l6,21,%g4
- xor %g3,%l1,%l1
- srl %l6,25,%g3
- xor %g4,%l1,%l1
- sll %l6,26,%g4
- xor %g3,%l1,%l1
- xor %l0,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l1,%g3 ! Sigma1(e)
-
- srl %l2,2,%l1
- add %g5,%g2,%g2
- ld [%i3+88],%g5 ! K[22]
- sll %l2,10,%g4
- add %g3,%g2,%g2
- srl %l2,13,%g3
- xor %g4,%l1,%l1
- sll %l2,19,%g4
- xor %g3,%l1,%l1
- srl %l2,22,%g3
- xor %g4,%l1,%l1
- sll %l2,30,%g4
- xor %g3,%l1,%l1
- xor %g4,%l1,%l1 ! Sigma0(a)
-
- or %l2,%l3,%g3
- and %l2,%l3,%g4
- and %l4,%g3,%g3
+ srlx %o2,28,%o1
+ add %g5,%g2,%g2
+ ldx [%i3+176],%g5 ! K[22]
+ sllx %o2,25,%g4
+ add %g3,%g2,%g2
+ srlx %o2,34,%g3
+ xor %g4,%o1,%o1
+ sllx %o2,30,%g4
+ xor %g3,%o1,%o1
+ srlx %o2,39,%g3
+ xor %g4,%o1,%o1
+ sllx %o2,36,%g4
+ xor %g3,%o1,%o1
+ xor %g4,%o1,%o1 ! Sigma0(a)
+
+ or %o2,%o3,%g3
+ and %o2,%o3,%g4
+ and %o4,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[22]
- add %g4,%l1,%l1
+ add %g4,%o1,%o1
- add %g2,%l5,%l5
- add %g2,%l1,%l1
- srlx %o4,32,%i5
- srl %i5,3,%g2 !! Xupdate(23)
- sll %i5,14,%g4
- srl %i5,7,%g3
+ add %g2,%o5,%o5
+ add %g2,%o1,%o1
+ sllx %l2,32,%g3 !! Xupdate(23)
+ or %l3,%g3,%g3
+
+ srlx %g3,7,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+72],%l2
+ sllx %g3,56,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+76],%l3
+ srlx %g3,1,%g3
xor %g4,%g2,%g2
- sll %g4,11,%g4
+ sllx %g4,7,%g4
xor %g3,%g2,%g2
- srl %i5,18,%g3
+ srlx %g3,7,%g3
xor %g4,%g2,%g2
- srl %o2,10,%g5
- xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
- sll %o2,13,%g4
- srl %o2,17,%g3
- xor %g4,%g5,%g5
- sll %g4,2,%g4
- xor %g3,%g5,%g5
- srl %o2,19,%g3
- xor %g4,%g5,%g5
- srlx %o0,32,%g4 ! X[i+9]
- xor %g3,%g5,%g5 ! sigma1(X[i+14])
- srl %o3,0,%g3
- add %g5,%g4,%g4
- add %o3,%g2,%g2 ! +=X[i]
- xor %g3,%o3,%o3
+ sllx %l6,32,%g5
+ xor %g3,%g2,%g2 ! sigma0(X[23+1])
+ or %l7,%g5,%g5
+
+ srlx %g5,6,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+48],%l6
+ sllx %g5,3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+52],%l7
+ srlx %g5,19,%g5
+ xor %g3,%g4,%g4
+ sllx %g3,42,%g3
+ xor %g5,%g4,%g4
+ srlx %g5,42,%g5
+ xor %g3,%g4,%g4
+ sllx %l4,32,%g3
+ xor %g5,%g4,%g4 ! sigma1(X[23+14])
+ ld [%sp+STACK_BIAS+STACK_FRAME+8],%l4
+ or %l5,%g3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+12],%l5
+
+ sllx %l0,32,%g5
add %g4,%g2,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+64],%l0
+ or %l1,%g5,%g5
+ add %g3,%g2,%g2 ! +=X[23+9]
+ ld [%sp+STACK_BIAS+STACK_FRAME+68],%l1
+ add %g5,%g2,%g2 ! +=X[23]
+ stx %g2,[%sp+STACK_BIAS+STACK_FRAME+56]
+ add %o0,%g2,%g2
+ srlx %o5,14,%o0 !! 23
+ xor %g1,%o7,%g5
+ sllx %o5,23,%g4
+ and %o5,%g5,%g5
+ srlx %o5,18,%g3
+ xor %g4,%o0,%o0
+ sllx %o5,46,%g4
+ xor %g3,%o0,%o0
+ srlx %o5,41,%g3
+ xor %g4,%o0,%o0
+ sllx %o5,50,%g4
+ xor %g3,%o0,%o0
+ xor %o7,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o0,%g3 ! Sigma1(e)
- srl %g2,0,%g2
- or %g2,%o3,%o3
- add %l0,%g2,%g2
- srl %l5,6,%l0 !! 23
- xor %l6,%l7,%g5
- sll %l5,7,%g4
- and %l5,%g5,%g5
- srl %l5,11,%g3
- xor %g4,%l0,%l0
- sll %l5,21,%g4
- xor %g3,%l0,%l0
- srl %l5,25,%g3
- xor %g4,%l0,%l0
- sll %l5,26,%g4
- xor %g3,%l0,%l0
- xor %l7,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l0,%g3 ! Sigma1(e)
-
- srl %l1,2,%l0
- add %g5,%g2,%g2
- ld [%i3+92],%g5 ! K[23]
- sll %l1,10,%g4
- add %g3,%g2,%g2
- srl %l1,13,%g3
- xor %g4,%l0,%l0
- sll %l1,19,%g4
- xor %g3,%l0,%l0
- srl %l1,22,%g3
- xor %g4,%l0,%l0
- sll %l1,30,%g4
- xor %g3,%l0,%l0
- xor %g4,%l0,%l0 ! Sigma0(a)
-
- or %l1,%l2,%g3
- and %l1,%l2,%g4
- and %l3,%g3,%g3
+ srlx %o1,28,%o0
+ add %g5,%g2,%g2
+ ldx [%i3+184],%g5 ! K[23]
+ sllx %o1,25,%g4
+ add %g3,%g2,%g2
+ srlx %o1,34,%g3
+ xor %g4,%o0,%o0
+ sllx %o1,30,%g4
+ xor %g3,%o0,%o0
+ srlx %o1,39,%g3
+ xor %g4,%o0,%o0
+ sllx %o1,36,%g4
+ xor %g3,%o0,%o0
+ xor %g4,%o0,%o0 ! Sigma0(a)
+
+ or %o1,%o2,%g3
+ and %o1,%o2,%g4
+ and %o3,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[23]
- add %g4,%l0,%l0
+ add %g4,%o0,%o0
- add %g2,%l4,%l4
- add %g2,%l0,%l0
- srl %o4,3,%g2 !! Xupdate(24)
- sll %o4,14,%g4
- srl %o4,7,%g3
+ add %g2,%o4,%o4
+ add %g2,%o0,%o0
+ sllx %l2,32,%g3 !! Xupdate(24)
+ or %l3,%g3,%g3
+
+ srlx %g3,7,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+80],%l2
+ sllx %g3,56,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+84],%l3
+ srlx %g3,1,%g3
xor %g4,%g2,%g2
- sll %g4,11,%g4
+ sllx %g4,7,%g4
xor %g3,%g2,%g2
- srl %o4,18,%g3
+ srlx %g3,7,%g3
xor %g4,%g2,%g2
- srlx %o3,32,%i5
- srl %i5,10,%g5
- xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
- sll %i5,13,%g4
- srl %i5,17,%g3
- xor %g4,%g5,%g5
- sll %g4,2,%g4
- xor %g3,%g5,%g5
- srl %i5,19,%g3
- xor %g4,%g5,%g5
- srlx %o4,32,%g4 ! X[i]
- xor %g3,%g5,%g5 ! sigma1(X[i+14])
- add %o0,%g2,%g2 ! +=X[i+9]
- add %g5,%g4,%g4
- srl %o4,0,%o4
+ sllx %l6,32,%g5
+ xor %g3,%g2,%g2 ! sigma0(X[24+1])
+ or %l7,%g5,%g5
+
+ srlx %g5,6,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+56],%l6
+ sllx %g5,3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+60],%l7
+ srlx %g5,19,%g5
+ xor %g3,%g4,%g4
+ sllx %g3,42,%g3
+ xor %g5,%g4,%g4
+ srlx %g5,42,%g5
+ xor %g3,%g4,%g4
+ sllx %l4,32,%g3
+ xor %g5,%g4,%g4 ! sigma1(X[24+14])
+ ld [%sp+STACK_BIAS+STACK_FRAME+16],%l4
+ or %l5,%g3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+20],%l5
+
+ sllx %l0,32,%g5
add %g4,%g2,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+72],%l0
+ or %l1,%g5,%g5
+ add %g3,%g2,%g2 ! +=X[24+9]
+ ld [%sp+STACK_BIAS+STACK_FRAME+76],%l1
+ add %g5,%g2,%g2 ! +=X[24]
+ stx %g2,[%sp+STACK_BIAS+STACK_FRAME+64]
+ add %o7,%g2,%g2
+ srlx %o4,14,%o7 !! 24
+ xor %o5,%g1,%g5
+ sllx %o4,23,%g4
+ and %o4,%g5,%g5
+ srlx %o4,18,%g3
+ xor %g4,%o7,%o7
+ sllx %o4,46,%g4
+ xor %g3,%o7,%o7
+ srlx %o4,41,%g3
+ xor %g4,%o7,%o7
+ sllx %o4,50,%g4
+ xor %g3,%o7,%o7
+ xor %g1,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o7,%g3 ! Sigma1(e)
- sllx %g2,32,%g3
- or %g3,%o4,%o4
- add %l7,%g2,%g2
- srl %l4,6,%l7 !! 24
- xor %l5,%l6,%g5
- sll %l4,7,%g4
- and %l4,%g5,%g5
- srl %l4,11,%g3
- xor %g4,%l7,%l7
- sll %l4,21,%g4
- xor %g3,%l7,%l7
- srl %l4,25,%g3
- xor %g4,%l7,%l7
- sll %l4,26,%g4
- xor %g3,%l7,%l7
- xor %l6,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l7,%g3 ! Sigma1(e)
-
- srl %l0,2,%l7
- add %g5,%g2,%g2
- ld [%i3+96],%g5 ! K[24]
- sll %l0,10,%g4
- add %g3,%g2,%g2
- srl %l0,13,%g3
- xor %g4,%l7,%l7
- sll %l0,19,%g4
- xor %g3,%l7,%l7
- srl %l0,22,%g3
- xor %g4,%l7,%l7
- sll %l0,30,%g4
- xor %g3,%l7,%l7
- xor %g4,%l7,%l7 ! Sigma0(a)
-
- or %l0,%l1,%g3
- and %l0,%l1,%g4
- and %l2,%g3,%g3
+ srlx %o0,28,%o7
+ add %g5,%g2,%g2
+ ldx [%i3+192],%g5 ! K[24]
+ sllx %o0,25,%g4
+ add %g3,%g2,%g2
+ srlx %o0,34,%g3
+ xor %g4,%o7,%o7
+ sllx %o0,30,%g4
+ xor %g3,%o7,%o7
+ srlx %o0,39,%g3
+ xor %g4,%o7,%o7
+ sllx %o0,36,%g4
+ xor %g3,%o7,%o7
+ xor %g4,%o7,%o7 ! Sigma0(a)
+
+ or %o0,%o1,%g3
+ and %o0,%o1,%g4
+ and %o2,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[24]
- add %g4,%l7,%l7
+ add %g4,%o7,%o7
- add %g2,%l3,%l3
- add %g2,%l7,%l7
- srlx %o5,32,%i5
- srl %i5,3,%g2 !! Xupdate(25)
- sll %i5,14,%g4
- srl %i5,7,%g3
+ add %g2,%o3,%o3
+ add %g2,%o7,%o7
+ sllx %l2,32,%g3 !! Xupdate(25)
+ or %l3,%g3,%g3
+
+ srlx %g3,7,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+88],%l2
+ sllx %g3,56,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+92],%l3
+ srlx %g3,1,%g3
xor %g4,%g2,%g2
- sll %g4,11,%g4
+ sllx %g4,7,%g4
xor %g3,%g2,%g2
- srl %i5,18,%g3
+ srlx %g3,7,%g3
xor %g4,%g2,%g2
- srl %o3,10,%g5
- xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
- sll %o3,13,%g4
- srl %o3,17,%g3
- xor %g4,%g5,%g5
- sll %g4,2,%g4
- xor %g3,%g5,%g5
- srl %o3,19,%g3
- xor %g4,%g5,%g5
- srlx %o1,32,%g4 ! X[i+9]
- xor %g3,%g5,%g5 ! sigma1(X[i+14])
- srl %o4,0,%g3
- add %g5,%g4,%g4
- add %o4,%g2,%g2 ! +=X[i]
- xor %g3,%o4,%o4
+ sllx %l6,32,%g5
+ xor %g3,%g2,%g2 ! sigma0(X[25+1])
+ or %l7,%g5,%g5
+
+ srlx %g5,6,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+64],%l6
+ sllx %g5,3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+68],%l7
+ srlx %g5,19,%g5
+ xor %g3,%g4,%g4
+ sllx %g3,42,%g3
+ xor %g5,%g4,%g4
+ srlx %g5,42,%g5
+ xor %g3,%g4,%g4
+ sllx %l4,32,%g3
+ xor %g5,%g4,%g4 ! sigma1(X[25+14])
+ ld [%sp+STACK_BIAS+STACK_FRAME+24],%l4
+ or %l5,%g3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+28],%l5
+
+ sllx %l0,32,%g5
add %g4,%g2,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+80],%l0
+ or %l1,%g5,%g5
+ add %g3,%g2,%g2 ! +=X[25+9]
+ ld [%sp+STACK_BIAS+STACK_FRAME+84],%l1
+ add %g5,%g2,%g2 ! +=X[25]
+ stx %g2,[%sp+STACK_BIAS+STACK_FRAME+72]
+ add %g1,%g2,%g2
+ srlx %o3,14,%g1 !! 25
+ xor %o4,%o5,%g5
+ sllx %o3,23,%g4
+ and %o3,%g5,%g5
+ srlx %o3,18,%g3
+ xor %g4,%g1,%g1
+ sllx %o3,46,%g4
+ xor %g3,%g1,%g1
+ srlx %o3,41,%g3
+ xor %g4,%g1,%g1
+ sllx %o3,50,%g4
+ xor %g3,%g1,%g1
+ xor %o5,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%g1,%g3 ! Sigma1(e)
+
+ srlx %o7,28,%g1
+ add %g5,%g2,%g2
+ ldx [%i3+200],%g5 ! K[25]
+ sllx %o7,25,%g4
+ add %g3,%g2,%g2
+ srlx %o7,34,%g3
+ xor %g4,%g1,%g1
+ sllx %o7,30,%g4
+ xor %g3,%g1,%g1
+ srlx %o7,39,%g3
+ xor %g4,%g1,%g1
+ sllx %o7,36,%g4
+ xor %g3,%g1,%g1
+ xor %g4,%g1,%g1 ! Sigma0(a)
- srl %g2,0,%g2
- or %g2,%o4,%o4
- add %l6,%g2,%g2
- srl %l3,6,%l6 !! 25
- xor %l4,%l5,%g5
- sll %l3,7,%g4
- and %l3,%g5,%g5
- srl %l3,11,%g3
- xor %g4,%l6,%l6
- sll %l3,21,%g4
- xor %g3,%l6,%l6
- srl %l3,25,%g3
- xor %g4,%l6,%l6
- sll %l3,26,%g4
- xor %g3,%l6,%l6
- xor %l5,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l6,%g3 ! Sigma1(e)
-
- srl %l7,2,%l6
- add %g5,%g2,%g2
- ld [%i3+100],%g5 ! K[25]
- sll %l7,10,%g4
- add %g3,%g2,%g2
- srl %l7,13,%g3
- xor %g4,%l6,%l6
- sll %l7,19,%g4
- xor %g3,%l6,%l6
- srl %l7,22,%g3
- xor %g4,%l6,%l6
- sll %l7,30,%g4
- xor %g3,%l6,%l6
- xor %g4,%l6,%l6 ! Sigma0(a)
-
- or %l7,%l0,%g3
- and %l7,%l0,%g4
- and %l1,%g3,%g3
+ or %o7,%o0,%g3
+ and %o7,%o0,%g4
+ and %o1,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[25]
- add %g4,%l6,%l6
+ add %g4,%g1,%g1
- add %g2,%l2,%l2
- add %g2,%l6,%l6
- srl %o5,3,%g2 !! Xupdate(26)
- sll %o5,14,%g4
- srl %o5,7,%g3
+ add %g2,%o2,%o2
+ add %g2,%g1,%g1
+ sllx %l2,32,%g3 !! Xupdate(26)
+ or %l3,%g3,%g3
+
+ srlx %g3,7,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+96],%l2
+ sllx %g3,56,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+100],%l3
+ srlx %g3,1,%g3
xor %g4,%g2,%g2
- sll %g4,11,%g4
+ sllx %g4,7,%g4
xor %g3,%g2,%g2
- srl %o5,18,%g3
+ srlx %g3,7,%g3
xor %g4,%g2,%g2
- srlx %o4,32,%i5
- srl %i5,10,%g5
- xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
- sll %i5,13,%g4
- srl %i5,17,%g3
- xor %g4,%g5,%g5
- sll %g4,2,%g4
- xor %g3,%g5,%g5
- srl %i5,19,%g3
- xor %g4,%g5,%g5
- srlx %o5,32,%g4 ! X[i]
- xor %g3,%g5,%g5 ! sigma1(X[i+14])
- add %o1,%g2,%g2 ! +=X[i+9]
- add %g5,%g4,%g4
- srl %o5,0,%o5
+ sllx %l6,32,%g5
+ xor %g3,%g2,%g2 ! sigma0(X[26+1])
+ or %l7,%g5,%g5
+
+ srlx %g5,6,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+72],%l6
+ sllx %g5,3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+76],%l7
+ srlx %g5,19,%g5
+ xor %g3,%g4,%g4
+ sllx %g3,42,%g3
+ xor %g5,%g4,%g4
+ srlx %g5,42,%g5
+ xor %g3,%g4,%g4
+ sllx %l4,32,%g3
+ xor %g5,%g4,%g4 ! sigma1(X[26+14])
+ ld [%sp+STACK_BIAS+STACK_FRAME+32],%l4
+ or %l5,%g3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+36],%l5
+
+ sllx %l0,32,%g5
add %g4,%g2,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+88],%l0
+ or %l1,%g5,%g5
+ add %g3,%g2,%g2 ! +=X[26+9]
+ ld [%sp+STACK_BIAS+STACK_FRAME+92],%l1
+ add %g5,%g2,%g2 ! +=X[26]
+ stx %g2,[%sp+STACK_BIAS+STACK_FRAME+80]
+ add %o5,%g2,%g2
+ srlx %o2,14,%o5 !! 26
+ xor %o3,%o4,%g5
+ sllx %o2,23,%g4
+ and %o2,%g5,%g5
+ srlx %o2,18,%g3
+ xor %g4,%o5,%o5
+ sllx %o2,46,%g4
+ xor %g3,%o5,%o5
+ srlx %o2,41,%g3
+ xor %g4,%o5,%o5
+ sllx %o2,50,%g4
+ xor %g3,%o5,%o5
+ xor %o4,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o5,%g3 ! Sigma1(e)
+
+ srlx %g1,28,%o5
+ add %g5,%g2,%g2
+ ldx [%i3+208],%g5 ! K[26]
+ sllx %g1,25,%g4
+ add %g3,%g2,%g2
+ srlx %g1,34,%g3
+ xor %g4,%o5,%o5
+ sllx %g1,30,%g4
+ xor %g3,%o5,%o5
+ srlx %g1,39,%g3
+ xor %g4,%o5,%o5
+ sllx %g1,36,%g4
+ xor %g3,%o5,%o5
+ xor %g4,%o5,%o5 ! Sigma0(a)
- sllx %g2,32,%g3
- or %g3,%o5,%o5
- add %l5,%g2,%g2
- srl %l2,6,%l5 !! 26
- xor %l3,%l4,%g5
- sll %l2,7,%g4
- and %l2,%g5,%g5
- srl %l2,11,%g3
- xor %g4,%l5,%l5
- sll %l2,21,%g4
- xor %g3,%l5,%l5
- srl %l2,25,%g3
- xor %g4,%l5,%l5
- sll %l2,26,%g4
- xor %g3,%l5,%l5
- xor %l4,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l5,%g3 ! Sigma1(e)
-
- srl %l6,2,%l5
- add %g5,%g2,%g2
- ld [%i3+104],%g5 ! K[26]
- sll %l6,10,%g4
- add %g3,%g2,%g2
- srl %l6,13,%g3
- xor %g4,%l5,%l5
- sll %l6,19,%g4
- xor %g3,%l5,%l5
- srl %l6,22,%g3
- xor %g4,%l5,%l5
- sll %l6,30,%g4
- xor %g3,%l5,%l5
- xor %g4,%l5,%l5 ! Sigma0(a)
-
- or %l6,%l7,%g3
- and %l6,%l7,%g4
- and %l0,%g3,%g3
+ or %g1,%o7,%g3
+ and %g1,%o7,%g4
+ and %o0,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[26]
- add %g4,%l5,%l5
+ add %g4,%o5,%o5
- add %g2,%l1,%l1
- add %g2,%l5,%l5
- srlx %g1,32,%i5
- srl %i5,3,%g2 !! Xupdate(27)
- sll %i5,14,%g4
- srl %i5,7,%g3
+ add %g2,%o1,%o1
+ add %g2,%o5,%o5
+ sllx %l2,32,%g3 !! Xupdate(27)
+ or %l3,%g3,%g3
+
+ srlx %g3,7,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+104],%l2
+ sllx %g3,56,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+108],%l3
+ srlx %g3,1,%g3
xor %g4,%g2,%g2
- sll %g4,11,%g4
+ sllx %g4,7,%g4
xor %g3,%g2,%g2
- srl %i5,18,%g3
+ srlx %g3,7,%g3
xor %g4,%g2,%g2
- srl %o4,10,%g5
- xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
- sll %o4,13,%g4
- srl %o4,17,%g3
- xor %g4,%g5,%g5
- sll %g4,2,%g4
- xor %g3,%g5,%g5
- srl %o4,19,%g3
- xor %g4,%g5,%g5
- srlx %o2,32,%g4 ! X[i+9]
- xor %g3,%g5,%g5 ! sigma1(X[i+14])
- srl %o5,0,%g3
- add %g5,%g4,%g4
- add %o5,%g2,%g2 ! +=X[i]
- xor %g3,%o5,%o5
+ sllx %l6,32,%g5
+ xor %g3,%g2,%g2 ! sigma0(X[27+1])
+ or %l7,%g5,%g5
+
+ srlx %g5,6,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+80],%l6
+ sllx %g5,3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+84],%l7
+ srlx %g5,19,%g5
+ xor %g3,%g4,%g4
+ sllx %g3,42,%g3
+ xor %g5,%g4,%g4
+ srlx %g5,42,%g5
+ xor %g3,%g4,%g4
+ sllx %l4,32,%g3
+ xor %g5,%g4,%g4 ! sigma1(X[27+14])
+ ld [%sp+STACK_BIAS+STACK_FRAME+40],%l4
+ or %l5,%g3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+44],%l5
+
+ sllx %l0,32,%g5
add %g4,%g2,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+96],%l0
+ or %l1,%g5,%g5
+ add %g3,%g2,%g2 ! +=X[27+9]
+ ld [%sp+STACK_BIAS+STACK_FRAME+100],%l1
+ add %g5,%g2,%g2 ! +=X[27]
+ stx %g2,[%sp+STACK_BIAS+STACK_FRAME+88]
+ add %o4,%g2,%g2
+ srlx %o1,14,%o4 !! 27
+ xor %o2,%o3,%g5
+ sllx %o1,23,%g4
+ and %o1,%g5,%g5
+ srlx %o1,18,%g3
+ xor %g4,%o4,%o4
+ sllx %o1,46,%g4
+ xor %g3,%o4,%o4
+ srlx %o1,41,%g3
+ xor %g4,%o4,%o4
+ sllx %o1,50,%g4
+ xor %g3,%o4,%o4
+ xor %o3,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o4,%g3 ! Sigma1(e)
+
+ srlx %o5,28,%o4
+ add %g5,%g2,%g2
+ ldx [%i3+216],%g5 ! K[27]
+ sllx %o5,25,%g4
+ add %g3,%g2,%g2
+ srlx %o5,34,%g3
+ xor %g4,%o4,%o4
+ sllx %o5,30,%g4
+ xor %g3,%o4,%o4
+ srlx %o5,39,%g3
+ xor %g4,%o4,%o4
+ sllx %o5,36,%g4
+ xor %g3,%o4,%o4
+ xor %g4,%o4,%o4 ! Sigma0(a)
- srl %g2,0,%g2
- or %g2,%o5,%o5
- add %l4,%g2,%g2
- srl %l1,6,%l4 !! 27
- xor %l2,%l3,%g5
- sll %l1,7,%g4
- and %l1,%g5,%g5
- srl %l1,11,%g3
- xor %g4,%l4,%l4
- sll %l1,21,%g4
- xor %g3,%l4,%l4
- srl %l1,25,%g3
- xor %g4,%l4,%l4
- sll %l1,26,%g4
- xor %g3,%l4,%l4
- xor %l3,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l4,%g3 ! Sigma1(e)
-
- srl %l5,2,%l4
- add %g5,%g2,%g2
- ld [%i3+108],%g5 ! K[27]
- sll %l5,10,%g4
- add %g3,%g2,%g2
- srl %l5,13,%g3
- xor %g4,%l4,%l4
- sll %l5,19,%g4
- xor %g3,%l4,%l4
- srl %l5,22,%g3
- xor %g4,%l4,%l4
- sll %l5,30,%g4
- xor %g3,%l4,%l4
- xor %g4,%l4,%l4 ! Sigma0(a)
-
- or %l5,%l6,%g3
- and %l5,%l6,%g4
- and %l7,%g3,%g3
+ or %o5,%g1,%g3
+ and %o5,%g1,%g4
+ and %o7,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[27]
- add %g4,%l4,%l4
+ add %g4,%o4,%o4
- add %g2,%l0,%l0
- add %g2,%l4,%l4
- srl %g1,3,%g2 !! Xupdate(28)
- sll %g1,14,%g4
- srl %g1,7,%g3
+ add %g2,%o0,%o0
+ add %g2,%o4,%o4
+ sllx %l2,32,%g3 !! Xupdate(28)
+ or %l3,%g3,%g3
+
+ srlx %g3,7,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+112],%l2
+ sllx %g3,56,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+116],%l3
+ srlx %g3,1,%g3
xor %g4,%g2,%g2
- sll %g4,11,%g4
+ sllx %g4,7,%g4
xor %g3,%g2,%g2
- srl %g1,18,%g3
+ srlx %g3,7,%g3
xor %g4,%g2,%g2
- srlx %o5,32,%i5
- srl %i5,10,%g5
- xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
- sll %i5,13,%g4
- srl %i5,17,%g3
- xor %g4,%g5,%g5
- sll %g4,2,%g4
- xor %g3,%g5,%g5
- srl %i5,19,%g3
- xor %g4,%g5,%g5
- srlx %g1,32,%g4 ! X[i]
- xor %g3,%g5,%g5 ! sigma1(X[i+14])
- add %o2,%g2,%g2 ! +=X[i+9]
- add %g5,%g4,%g4
- srl %g1,0,%g1
+ sllx %l6,32,%g5
+ xor %g3,%g2,%g2 ! sigma0(X[28+1])
+ or %l7,%g5,%g5
+
+ srlx %g5,6,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+88],%l6
+ sllx %g5,3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+92],%l7
+ srlx %g5,19,%g5
+ xor %g3,%g4,%g4
+ sllx %g3,42,%g3
+ xor %g5,%g4,%g4
+ srlx %g5,42,%g5
+ xor %g3,%g4,%g4
+ sllx %l4,32,%g3
+ xor %g5,%g4,%g4 ! sigma1(X[28+14])
+ ld [%sp+STACK_BIAS+STACK_FRAME+48],%l4
+ or %l5,%g3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+52],%l5
+
+ sllx %l0,32,%g5
add %g4,%g2,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+104],%l0
+ or %l1,%g5,%g5
+ add %g3,%g2,%g2 ! +=X[28+9]
+ ld [%sp+STACK_BIAS+STACK_FRAME+108],%l1
+ add %g5,%g2,%g2 ! +=X[28]
+ stx %g2,[%sp+STACK_BIAS+STACK_FRAME+96]
+ add %o3,%g2,%g2
+ srlx %o0,14,%o3 !! 28
+ xor %o1,%o2,%g5
+ sllx %o0,23,%g4
+ and %o0,%g5,%g5
+ srlx %o0,18,%g3
+ xor %g4,%o3,%o3
+ sllx %o0,46,%g4
+ xor %g3,%o3,%o3
+ srlx %o0,41,%g3
+ xor %g4,%o3,%o3
+ sllx %o0,50,%g4
+ xor %g3,%o3,%o3
+ xor %o2,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o3,%g3 ! Sigma1(e)
+
+ srlx %o4,28,%o3
+ add %g5,%g2,%g2
+ ldx [%i3+224],%g5 ! K[28]
+ sllx %o4,25,%g4
+ add %g3,%g2,%g2
+ srlx %o4,34,%g3
+ xor %g4,%o3,%o3
+ sllx %o4,30,%g4
+ xor %g3,%o3,%o3
+ srlx %o4,39,%g3
+ xor %g4,%o3,%o3
+ sllx %o4,36,%g4
+ xor %g3,%o3,%o3
+ xor %g4,%o3,%o3 ! Sigma0(a)
- sllx %g2,32,%g3
- or %g3,%g1,%g1
- add %l3,%g2,%g2
- srl %l0,6,%l3 !! 28
- xor %l1,%l2,%g5
- sll %l0,7,%g4
- and %l0,%g5,%g5
- srl %l0,11,%g3
- xor %g4,%l3,%l3
- sll %l0,21,%g4
- xor %g3,%l3,%l3
- srl %l0,25,%g3
- xor %g4,%l3,%l3
- sll %l0,26,%g4
- xor %g3,%l3,%l3
- xor %l2,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l3,%g3 ! Sigma1(e)
-
- srl %l4,2,%l3
- add %g5,%g2,%g2
- ld [%i3+112],%g5 ! K[28]
- sll %l4,10,%g4
- add %g3,%g2,%g2
- srl %l4,13,%g3
- xor %g4,%l3,%l3
- sll %l4,19,%g4
- xor %g3,%l3,%l3
- srl %l4,22,%g3
- xor %g4,%l3,%l3
- sll %l4,30,%g4
- xor %g3,%l3,%l3
- xor %g4,%l3,%l3 ! Sigma0(a)
-
- or %l4,%l5,%g3
- and %l4,%l5,%g4
- and %l6,%g3,%g3
+ or %o4,%o5,%g3
+ and %o4,%o5,%g4
+ and %g1,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[28]
- add %g4,%l3,%l3
+ add %g4,%o3,%o3
- add %g2,%l7,%l7
- add %g2,%l3,%l3
- srlx %o7,32,%i5
- srl %i5,3,%g2 !! Xupdate(29)
- sll %i5,14,%g4
- srl %i5,7,%g3
+ add %g2,%o7,%o7
+ add %g2,%o3,%o3
+ sllx %l2,32,%g3 !! Xupdate(29)
+ or %l3,%g3,%g3
+
+ srlx %g3,7,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+120],%l2
+ sllx %g3,56,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+124],%l3
+ srlx %g3,1,%g3
xor %g4,%g2,%g2
- sll %g4,11,%g4
+ sllx %g4,7,%g4
xor %g3,%g2,%g2
- srl %i5,18,%g3
+ srlx %g3,7,%g3
xor %g4,%g2,%g2
- srl %o5,10,%g5
- xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
- sll %o5,13,%g4
- srl %o5,17,%g3
- xor %g4,%g5,%g5
- sll %g4,2,%g4
- xor %g3,%g5,%g5
- srl %o5,19,%g3
- xor %g4,%g5,%g5
- srlx %o3,32,%g4 ! X[i+9]
- xor %g3,%g5,%g5 ! sigma1(X[i+14])
- srl %g1,0,%g3
- add %g5,%g4,%g4
- add %g1,%g2,%g2 ! +=X[i]
- xor %g3,%g1,%g1
+ sllx %l6,32,%g5
+ xor %g3,%g2,%g2 ! sigma0(X[29+1])
+ or %l7,%g5,%g5
+
+ srlx %g5,6,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+96],%l6
+ sllx %g5,3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+100],%l7
+ srlx %g5,19,%g5
+ xor %g3,%g4,%g4
+ sllx %g3,42,%g3
+ xor %g5,%g4,%g4
+ srlx %g5,42,%g5
+ xor %g3,%g4,%g4
+ sllx %l4,32,%g3
+ xor %g5,%g4,%g4 ! sigma1(X[29+14])
+ ld [%sp+STACK_BIAS+STACK_FRAME+56],%l4
+ or %l5,%g3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+60],%l5
+
+ sllx %l0,32,%g5
add %g4,%g2,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+112],%l0
+ or %l1,%g5,%g5
+ add %g3,%g2,%g2 ! +=X[29+9]
+ ld [%sp+STACK_BIAS+STACK_FRAME+116],%l1
+ add %g5,%g2,%g2 ! +=X[29]
+ stx %g2,[%sp+STACK_BIAS+STACK_FRAME+104]
+ add %o2,%g2,%g2
+ srlx %o7,14,%o2 !! 29
+ xor %o0,%o1,%g5
+ sllx %o7,23,%g4
+ and %o7,%g5,%g5
+ srlx %o7,18,%g3
+ xor %g4,%o2,%o2
+ sllx %o7,46,%g4
+ xor %g3,%o2,%o2
+ srlx %o7,41,%g3
+ xor %g4,%o2,%o2
+ sllx %o7,50,%g4
+ xor %g3,%o2,%o2
+ xor %o1,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o2,%g3 ! Sigma1(e)
+
+ srlx %o3,28,%o2
+ add %g5,%g2,%g2
+ ldx [%i3+232],%g5 ! K[29]
+ sllx %o3,25,%g4
+ add %g3,%g2,%g2
+ srlx %o3,34,%g3
+ xor %g4,%o2,%o2
+ sllx %o3,30,%g4
+ xor %g3,%o2,%o2
+ srlx %o3,39,%g3
+ xor %g4,%o2,%o2
+ sllx %o3,36,%g4
+ xor %g3,%o2,%o2
+ xor %g4,%o2,%o2 ! Sigma0(a)
- srl %g2,0,%g2
- or %g2,%g1,%g1
- add %l2,%g2,%g2
- srl %l7,6,%l2 !! 29
- xor %l0,%l1,%g5
- sll %l7,7,%g4
- and %l7,%g5,%g5
- srl %l7,11,%g3
- xor %g4,%l2,%l2
- sll %l7,21,%g4
- xor %g3,%l2,%l2
- srl %l7,25,%g3
- xor %g4,%l2,%l2
- sll %l7,26,%g4
- xor %g3,%l2,%l2
- xor %l1,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l2,%g3 ! Sigma1(e)
-
- srl %l3,2,%l2
- add %g5,%g2,%g2
- ld [%i3+116],%g5 ! K[29]
- sll %l3,10,%g4
- add %g3,%g2,%g2
- srl %l3,13,%g3
- xor %g4,%l2,%l2
- sll %l3,19,%g4
- xor %g3,%l2,%l2
- srl %l3,22,%g3
- xor %g4,%l2,%l2
- sll %l3,30,%g4
- xor %g3,%l2,%l2
- xor %g4,%l2,%l2 ! Sigma0(a)
-
- or %l3,%l4,%g3
- and %l3,%l4,%g4
- and %l5,%g3,%g3
+ or %o3,%o4,%g3
+ and %o3,%o4,%g4
+ and %o5,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[29]
- add %g4,%l2,%l2
+ add %g4,%o2,%o2
- add %g2,%l6,%l6
- add %g2,%l2,%l2
- srl %o7,3,%g2 !! Xupdate(30)
- sll %o7,14,%g4
- srl %o7,7,%g3
+ add %g2,%g1,%g1
+ add %g2,%o2,%o2
+ sllx %l2,32,%g3 !! Xupdate(30)
+ or %l3,%g3,%g3
+
+ srlx %g3,7,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+0],%l2
+ sllx %g3,56,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+4],%l3
+ srlx %g3,1,%g3
xor %g4,%g2,%g2
- sll %g4,11,%g4
+ sllx %g4,7,%g4
xor %g3,%g2,%g2
- srl %o7,18,%g3
+ srlx %g3,7,%g3
xor %g4,%g2,%g2
- srlx %g1,32,%i5
- srl %i5,10,%g5
- xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
- sll %i5,13,%g4
- srl %i5,17,%g3
- xor %g4,%g5,%g5
- sll %g4,2,%g4
- xor %g3,%g5,%g5
- srl %i5,19,%g3
- xor %g4,%g5,%g5
- srlx %o7,32,%g4 ! X[i]
- xor %g3,%g5,%g5 ! sigma1(X[i+14])
- add %o3,%g2,%g2 ! +=X[i+9]
- add %g5,%g4,%g4
- srl %o7,0,%o7
+ sllx %l6,32,%g5
+ xor %g3,%g2,%g2 ! sigma0(X[30+1])
+ or %l7,%g5,%g5
+
+ srlx %g5,6,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+104],%l6
+ sllx %g5,3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+108],%l7
+ srlx %g5,19,%g5
+ xor %g3,%g4,%g4
+ sllx %g3,42,%g3
+ xor %g5,%g4,%g4
+ srlx %g5,42,%g5
+ xor %g3,%g4,%g4
+ sllx %l4,32,%g3
+ xor %g5,%g4,%g4 ! sigma1(X[30+14])
+ ld [%sp+STACK_BIAS+STACK_FRAME+64],%l4
+ or %l5,%g3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+68],%l5
+
+ sllx %l0,32,%g5
add %g4,%g2,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+120],%l0
+ or %l1,%g5,%g5
+ add %g3,%g2,%g2 ! +=X[30+9]
+ ld [%sp+STACK_BIAS+STACK_FRAME+124],%l1
+ add %g5,%g2,%g2 ! +=X[30]
+ stx %g2,[%sp+STACK_BIAS+STACK_FRAME+112]
+ add %o1,%g2,%g2
+ srlx %g1,14,%o1 !! 30
+ xor %o7,%o0,%g5
+ sllx %g1,23,%g4
+ and %g1,%g5,%g5
+ srlx %g1,18,%g3
+ xor %g4,%o1,%o1
+ sllx %g1,46,%g4
+ xor %g3,%o1,%o1
+ srlx %g1,41,%g3
+ xor %g4,%o1,%o1
+ sllx %g1,50,%g4
+ xor %g3,%o1,%o1
+ xor %o0,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o1,%g3 ! Sigma1(e)
- sllx %g2,32,%g3
- or %g3,%o7,%o7
- add %l1,%g2,%g2
- srl %l6,6,%l1 !! 30
- xor %l7,%l0,%g5
- sll %l6,7,%g4
- and %l6,%g5,%g5
- srl %l6,11,%g3
- xor %g4,%l1,%l1
- sll %l6,21,%g4
- xor %g3,%l1,%l1
- srl %l6,25,%g3
- xor %g4,%l1,%l1
- sll %l6,26,%g4
- xor %g3,%l1,%l1
- xor %l0,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l1,%g3 ! Sigma1(e)
-
- srl %l2,2,%l1
- add %g5,%g2,%g2
- ld [%i3+120],%g5 ! K[30]
- sll %l2,10,%g4
- add %g3,%g2,%g2
- srl %l2,13,%g3
- xor %g4,%l1,%l1
- sll %l2,19,%g4
- xor %g3,%l1,%l1
- srl %l2,22,%g3
- xor %g4,%l1,%l1
- sll %l2,30,%g4
- xor %g3,%l1,%l1
- xor %g4,%l1,%l1 ! Sigma0(a)
-
- or %l2,%l3,%g3
- and %l2,%l3,%g4
- and %l4,%g3,%g3
+ srlx %o2,28,%o1
+ add %g5,%g2,%g2
+ ldx [%i3+240],%g5 ! K[30]
+ sllx %o2,25,%g4
+ add %g3,%g2,%g2
+ srlx %o2,34,%g3
+ xor %g4,%o1,%o1
+ sllx %o2,30,%g4
+ xor %g3,%o1,%o1
+ srlx %o2,39,%g3
+ xor %g4,%o1,%o1
+ sllx %o2,36,%g4
+ xor %g3,%o1,%o1
+ xor %g4,%o1,%o1 ! Sigma0(a)
+
+ or %o2,%o3,%g3
+ and %o2,%o3,%g4
+ and %o4,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[30]
- add %g4,%l1,%l1
+ add %g4,%o1,%o1
- add %g2,%l5,%l5
- add %g2,%l1,%l1
- srlx %o0,32,%i5
- srl %i5,3,%g2 !! Xupdate(31)
- sll %i5,14,%g4
- srl %i5,7,%g3
+ add %g2,%o5,%o5
+ add %g2,%o1,%o1
+ sllx %l2,32,%g3 !! Xupdate(31)
+ or %l3,%g3,%g3
+
+ srlx %g3,7,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+8],%l2
+ sllx %g3,56,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+12],%l3
+ srlx %g3,1,%g3
xor %g4,%g2,%g2
- sll %g4,11,%g4
+ sllx %g4,7,%g4
xor %g3,%g2,%g2
- srl %i5,18,%g3
+ srlx %g3,7,%g3
xor %g4,%g2,%g2
- srl %g1,10,%g5
- xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
- sll %g1,13,%g4
- srl %g1,17,%g3
- xor %g4,%g5,%g5
- sll %g4,2,%g4
- xor %g3,%g5,%g5
- srl %g1,19,%g3
- xor %g4,%g5,%g5
- srlx %o4,32,%g4 ! X[i+9]
- xor %g3,%g5,%g5 ! sigma1(X[i+14])
- srl %o7,0,%g3
- add %g5,%g4,%g4
- add %o7,%g2,%g2 ! +=X[i]
- xor %g3,%o7,%o7
+ sllx %l6,32,%g5
+ xor %g3,%g2,%g2 ! sigma0(X[31+1])
+ or %l7,%g5,%g5
+
+ srlx %g5,6,%g4
+ ld [%sp+STACK_BIAS+STACK_FRAME+112],%l6
+ sllx %g5,3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+116],%l7
+ srlx %g5,19,%g5
+ xor %g3,%g4,%g4
+ sllx %g3,42,%g3
+ xor %g5,%g4,%g4
+ srlx %g5,42,%g5
+ xor %g3,%g4,%g4
+ sllx %l4,32,%g3
+ xor %g5,%g4,%g4 ! sigma1(X[31+14])
+ ld [%sp+STACK_BIAS+STACK_FRAME+72],%l4
+ or %l5,%g3,%g3
+ ld [%sp+STACK_BIAS+STACK_FRAME+76],%l5
+
+ sllx %l0,32,%g5
add %g4,%g2,%g2
+ ld [%sp+STACK_BIAS+STACK_FRAME+0],%l0
+ or %l1,%g5,%g5
+ add %g3,%g2,%g2 ! +=X[31+9]
+ ld [%sp+STACK_BIAS+STACK_FRAME+4],%l1
+ add %g5,%g2,%g2 ! +=X[31]
+ stx %g2,[%sp+STACK_BIAS+STACK_FRAME+120]
+ add %o0,%g2,%g2
+ srlx %o5,14,%o0 !! 31
+ xor %g1,%o7,%g5
+ sllx %o5,23,%g4
+ and %o5,%g5,%g5
+ srlx %o5,18,%g3
+ xor %g4,%o0,%o0
+ sllx %o5,46,%g4
+ xor %g3,%o0,%o0
+ srlx %o5,41,%g3
+ xor %g4,%o0,%o0
+ sllx %o5,50,%g4
+ xor %g3,%o0,%o0
+ xor %o7,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%o0,%g3 ! Sigma1(e)
- srl %g2,0,%g2
- or %g2,%o7,%o7
- add %l0,%g2,%g2
- srl %l5,6,%l0 !! 31
- xor %l6,%l7,%g5
- sll %l5,7,%g4
- and %l5,%g5,%g5
- srl %l5,11,%g3
- xor %g4,%l0,%l0
- sll %l5,21,%g4
- xor %g3,%l0,%l0
- srl %l5,25,%g3
- xor %g4,%l0,%l0
- sll %l5,26,%g4
- xor %g3,%l0,%l0
- xor %l7,%g5,%g5 ! Ch(e,f,g)
- xor %g4,%l0,%g3 ! Sigma1(e)
-
- srl %l1,2,%l0
- add %g5,%g2,%g2
- ld [%i3+124],%g5 ! K[31]
- sll %l1,10,%g4
- add %g3,%g2,%g2
- srl %l1,13,%g3
- xor %g4,%l0,%l0
- sll %l1,19,%g4
- xor %g3,%l0,%l0
- srl %l1,22,%g3
- xor %g4,%l0,%l0
- sll %l1,30,%g4
- xor %g3,%l0,%l0
- xor %g4,%l0,%l0 ! Sigma0(a)
-
- or %l1,%l2,%g3
- and %l1,%l2,%g4
- and %l3,%g3,%g3
+ srlx %o1,28,%o0
+ add %g5,%g2,%g2
+ ldx [%i3+248],%g5 ! K[31]
+ sllx %o1,25,%g4
+ add %g3,%g2,%g2
+ srlx %o1,34,%g3
+ xor %g4,%o0,%o0
+ sllx %o1,30,%g4
+ xor %g3,%o0,%o0
+ srlx %o1,39,%g3
+ xor %g4,%o0,%o0
+ sllx %o1,36,%g4
+ xor %g3,%o0,%o0
+ xor %g4,%o0,%o0 ! Sigma0(a)
+
+ or %o1,%o2,%g3
+ and %o1,%o2,%g4
+ and %o3,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[31]
- add %g4,%l0,%l0
+ add %g4,%o0,%o0
- add %g2,%l4,%l4
- add %g2,%l0,%l0
+ add %g2,%o4,%o4
+ add %g2,%o0,%o0
and %g5,0xfff,%g5
- cmp %g5,2290
+ cmp %g5,2071
bne .L16_xx
- add %i3,64,%i3 ! Ktbl+=16
+ add %i3,128,%i3 ! Ktbl+=16
- ld [%i0+0],%o0
- ld [%i0+4],%o1
- ld [%i0+8],%o2
- ld [%i0+12],%o3
- ld [%i0+16],%o4
- ld [%i0+20],%o5
- ld [%i0+24],%g1
- ld [%i0+28],%o7
-
- add %l0,%o0,%l0
- st %l0,[%i0+0]
- add %l1,%o1,%l1
- st %l1,[%i0+4]
- add %l2,%o2,%l2
- st %l2,[%i0+8]
- add %l3,%o3,%l3
- st %l3,[%i0+12]
- add %l4,%o4,%l4
- st %l4,[%i0+16]
- add %l5,%o5,%l5
- st %l5,[%i0+20]
- add %l6,%g1,%l6
- st %l6,[%i0+24]
- add %l7,%o7,%l7
- st %l7,[%i0+28]
- add %i1,64,%i1 ! advance inp
+ ld [%i0+0],%l0
+ ld [%i0+4],%l1
+ ld [%i0+8],%l2
+ ld [%i0+12],%l3
+ ld [%i0+16],%l4
+ ld [%i0+20],%l5
+ ld [%i0+24],%l6
+
+ sllx %l0,32,%g3
+ ld [%i0+28],%l7
+ sllx %l2,32,%g4
+ or %l1,%g3,%g3
+ or %l3,%g4,%g4
+ add %g3,%o0,%o0
+ add %g4,%o1,%o1
+ stx %o0,[%i0+0]
+ sllx %l4,32,%g5
+ stx %o1,[%i0+8]
+ sllx %l6,32,%g2
+ or %l5,%g5,%g5
+ or %l7,%g2,%g2
+ add %g5,%o2,%o2
+ stx %o2,[%i0+16]
+ add %g2,%o3,%o3
+ stx %o3,[%i0+24]
+
+ ld [%i0+32],%l0
+ ld [%i0+36],%l1
+ ld [%i0+40],%l2
+ ld [%i0+44],%l3
+ ld [%i0+48],%l4
+ ld [%i0+52],%l5
+ ld [%i0+56],%l6
+
+ sllx %l0,32,%g3
+ ld [%i0+60],%l7
+ sllx %l2,32,%g4
+ or %l1,%g3,%g3
+ or %l3,%g4,%g4
+ add %g3,%o4,%o4
+ add %g4,%o5,%o5
+ stx %o4,[%i0+32]
+ sllx %l4,32,%g5
+ stx %o5,[%i0+40]
+ sllx %l6,32,%g2
+ or %l5,%g5,%g5
+ or %l7,%g2,%g2
+ add %g5,%g1,%g1
+ stx %g1,[%i0+48]
+ add %g2,%o7,%o7
+ stx %o7,[%i0+56]
+ add %i1,128,%i1 ! advance inp
cmp %i1,%i2
bne SIZE_T_CC,.Lloop
- sub %i3,192,%i3 ! rewind Ktbl
+ sub %i3,512,%i3 ! rewind Ktbl
ret
restore
-.type sha256_block_data_order,#function
-.size sha256_block_data_order,(.-sha256_block_data_order)
-.asciz "SHA256 block transform for SPARCv9, CRYPTOGAMS by <[email protected]>"
+.type sha512_block_data_order,#function
+.size sha512_block_data_order,(.-sha512_block_data_order)
+.asciz "SHA512 block transform for SPARCv9, CRYPTOGAMS by <[email protected]>"
.align 4
Added files:
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/sha256-sparcv9.S
diff -u /dev/null src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/sha256-sparcv9.S:1.1
--- /dev/null Tue Jun 27 07:25:55 2023
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/sha256-sparcv9.S Tue Jun 27 07:25:55 2023
@@ -0,0 +1,1948 @@
+#ifndef __ASSEMBLER__
+# define __ASSEMBLER__ 1
+#endif
+#include "crypto/sparc_arch.h"
+
+#ifdef __arch64__
+.register %g2,#scratch
+.register %g3,#scratch
+#endif
+
+.section ".text",#alloc,#execinstr
+
+.align 64
+K256:
+.type K256,#object
+ .long 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5
+ .long 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5
+ .long 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3
+ .long 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174
+ .long 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc
+ .long 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da
+ .long 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7
+ .long 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967
+ .long 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13
+ .long 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85
+ .long 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3
+ .long 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070
+ .long 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5
+ .long 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3
+ .long 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208
+ .long 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
+.size K256,.-K256
+
+#ifdef __PIC__
+SPARC_PIC_THUNK(%g1)
+#endif
+
+.globl sha256_block_data_order
+.align 32
+sha256_block_data_order:
+ SPARC_LOAD_ADDRESS_LEAF(OPENSSL_sparcv9cap_P,%g1,%g5)
+ ld [%g1+4],%g1 ! OPENSSL_sparcv9cap_P[1]
+
+ andcc %g1, CFR_SHA256, %g0
+ be .Lsoftware
+ nop
+ ld [%o0 + 0x00], %f0
+ ld [%o0 + 0x04], %f1
+ ld [%o0 + 0x08], %f2
+ ld [%o0 + 0x0c], %f3
+ ld [%o0 + 0x10], %f4
+ ld [%o0 + 0x14], %f5
+ andcc %o1, 0x7, %g0
+ ld [%o0 + 0x18], %f6
+ bne,pn %icc, .Lhwunaligned
+ ld [%o0 + 0x1c], %f7
+
+.Lhwloop:
+ ldd [%o1 + 0x00], %f8
+ ldd [%o1 + 0x08], %f10
+ ldd [%o1 + 0x10], %f12
+ ldd [%o1 + 0x18], %f14
+ ldd [%o1 + 0x20], %f16
+ ldd [%o1 + 0x28], %f18
+ ldd [%o1 + 0x30], %f20
+ subcc %o2, 1, %o2 ! done yet?
+ ldd [%o1 + 0x38], %f22
+ add %o1, 0x40, %o1
+ prefetch [%o1 + 63], 20
+
+ .word 0x81b02840 ! SHA256
+
+ bne,pt SIZE_T_CC, .Lhwloop
+ nop
+
+.Lhwfinish:
+ st %f0, [%o0 + 0x00] ! store context
+ st %f1, [%o0 + 0x04]
+ st %f2, [%o0 + 0x08]
+ st %f3, [%o0 + 0x0c]
+ st %f4, [%o0 + 0x10]
+ st %f5, [%o0 + 0x14]
+ st %f6, [%o0 + 0x18]
+ retl
+ st %f7, [%o0 + 0x1c]
+
+.align 8
+.Lhwunaligned:
+ .word 0x93b24300 !alignaddr %o1,%g0,%o1
+
+ ldd [%o1 + 0x00], %f10
+.Lhwunaligned_loop:
+ ldd [%o1 + 0x08], %f12
+ ldd [%o1 + 0x10], %f14
+ ldd [%o1 + 0x18], %f16
+ ldd [%o1 + 0x20], %f18
+ ldd [%o1 + 0x28], %f20
+ ldd [%o1 + 0x30], %f22
+ ldd [%o1 + 0x38], %f24
+ subcc %o2, 1, %o2 ! done yet?
+ ldd [%o1 + 0x40], %f26
+ add %o1, 0x40, %o1
+ prefetch [%o1 + 63], 20
+
+ .word 0x91b2890c !faligndata %f10,%f12,%f8
+ .word 0x95b3090e !faligndata %f12,%f14,%f10
+ .word 0x99b38910 !faligndata %f14,%f16,%f12
+ .word 0x9db40912 !faligndata %f16,%f18,%f14
+ .word 0xa1b48914 !faligndata %f18,%f20,%f16
+ .word 0xa5b50916 !faligndata %f20,%f22,%f18
+ .word 0xa9b58918 !faligndata %f22,%f24,%f20
+ .word 0xadb6091a !faligndata %f24,%f26,%f22
+
+ .word 0x81b02840 ! SHA256
+
+ bne,pt SIZE_T_CC, .Lhwunaligned_loop
+ .word 0x95b68f9a !for %f26,%f26,%f10 ! %f10=%f26
+
+ ba .Lhwfinish
+ nop
+.align 16
+.Lsoftware:
+ save %sp,-STACK_FRAME-0,%sp
+ and %i1,7,%i4
+ sllx %i2,6,%i2
+ andn %i1,7,%i1
+ sll %i4,3,%i4
+ add %i1,%i2,%i2
+.Lpic: call .+8
+ add %o7,K256-.Lpic,%i3
+
+ ld [%i0+0],%l0
+ ld [%i0+4],%l1
+ ld [%i0+8],%l2
+ ld [%i0+12],%l3
+ ld [%i0+16],%l4
+ ld [%i0+20],%l5
+ ld [%i0+24],%l6
+ ld [%i0+28],%l7
+
+.Lloop:
+ ldx [%i1+0],%o0
+ ldx [%i1+16],%o2
+ ldx [%i1+32],%o4
+ ldx [%i1+48],%g1
+ ldx [%i1+8],%o1
+ ldx [%i1+24],%o3
+ subcc %g0,%i4,%i5 ! should be 64-%i4, but -%i4 works too
+ ldx [%i1+40],%o5
+ bz,pt %icc,.Laligned
+ ldx [%i1+56],%o7
+
+ sllx %o0,%i4,%o0
+ ldx [%i1+64],%g2
+ srlx %o1,%i5,%g4
+ sllx %o1,%i4,%o1
+ or %g4,%o0,%o0
+ srlx %o2,%i5,%g4
+ sllx %o2,%i4,%o2
+ or %g4,%o1,%o1
+ srlx %o3,%i5,%g4
+ sllx %o3,%i4,%o3
+ or %g4,%o2,%o2
+ srlx %o4,%i5,%g4
+ sllx %o4,%i4,%o4
+ or %g4,%o3,%o3
+ srlx %o5,%i5,%g4
+ sllx %o5,%i4,%o5
+ or %g4,%o4,%o4
+ srlx %g1,%i5,%g4
+ sllx %g1,%i4,%g1
+ or %g4,%o5,%o5
+ srlx %o7,%i5,%g4
+ sllx %o7,%i4,%o7
+ or %g4,%g1,%g1
+ srlx %g2,%i5,%g2
+ or %g2,%o7,%o7
+.Laligned:
+ srlx %o0,32,%g2
+ add %l7,%g2,%g2
+ srl %l4,6,%l7 !! 0
+ xor %l5,%l6,%g5
+ sll %l4,7,%g4
+ and %l4,%g5,%g5
+ srl %l4,11,%g3
+ xor %g4,%l7,%l7
+ sll %l4,21,%g4
+ xor %g3,%l7,%l7
+ srl %l4,25,%g3
+ xor %g4,%l7,%l7
+ sll %l4,26,%g4
+ xor %g3,%l7,%l7
+ xor %l6,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l7,%g3 ! Sigma1(e)
+
+ srl %l0,2,%l7
+ add %g5,%g2,%g2
+ ld [%i3+0],%g5 ! K[0]
+ sll %l0,10,%g4
+ add %g3,%g2,%g2
+ srl %l0,13,%g3
+ xor %g4,%l7,%l7
+ sll %l0,19,%g4
+ xor %g3,%l7,%l7
+ srl %l0,22,%g3
+ xor %g4,%l7,%l7
+ sll %l0,30,%g4
+ xor %g3,%l7,%l7
+ xor %g4,%l7,%l7 ! Sigma0(a)
+
+ or %l0,%l1,%g3
+ and %l0,%l1,%g4
+ and %l2,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[0]
+ add %g4,%l7,%l7
+
+ add %g2,%l3,%l3
+ add %g2,%l7,%l7
+ add %o0,%l6,%g2
+ srl %l3,6,%l6 !! 1
+ xor %l4,%l5,%g5
+ sll %l3,7,%g4
+ and %l3,%g5,%g5
+ srl %l3,11,%g3
+ xor %g4,%l6,%l6
+ sll %l3,21,%g4
+ xor %g3,%l6,%l6
+ srl %l3,25,%g3
+ xor %g4,%l6,%l6
+ sll %l3,26,%g4
+ xor %g3,%l6,%l6
+ xor %l5,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l6,%g3 ! Sigma1(e)
+
+ srl %l7,2,%l6
+ add %g5,%g2,%g2
+ ld [%i3+4],%g5 ! K[1]
+ sll %l7,10,%g4
+ add %g3,%g2,%g2
+ srl %l7,13,%g3
+ xor %g4,%l6,%l6
+ sll %l7,19,%g4
+ xor %g3,%l6,%l6
+ srl %l7,22,%g3
+ xor %g4,%l6,%l6
+ sll %l7,30,%g4
+ xor %g3,%l6,%l6
+ xor %g4,%l6,%l6 ! Sigma0(a)
+
+ or %l7,%l0,%g3
+ and %l7,%l0,%g4
+ and %l1,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[1]
+ add %g4,%l6,%l6
+
+ add %g2,%l2,%l2
+ add %g2,%l6,%l6
+ srlx %o1,32,%g2
+ add %l5,%g2,%g2
+ srl %l2,6,%l5 !! 2
+ xor %l3,%l4,%g5
+ sll %l2,7,%g4
+ and %l2,%g5,%g5
+ srl %l2,11,%g3
+ xor %g4,%l5,%l5
+ sll %l2,21,%g4
+ xor %g3,%l5,%l5
+ srl %l2,25,%g3
+ xor %g4,%l5,%l5
+ sll %l2,26,%g4
+ xor %g3,%l5,%l5
+ xor %l4,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l5,%g3 ! Sigma1(e)
+
+ srl %l6,2,%l5
+ add %g5,%g2,%g2
+ ld [%i3+8],%g5 ! K[2]
+ sll %l6,10,%g4
+ add %g3,%g2,%g2
+ srl %l6,13,%g3
+ xor %g4,%l5,%l5
+ sll %l6,19,%g4
+ xor %g3,%l5,%l5
+ srl %l6,22,%g3
+ xor %g4,%l5,%l5
+ sll %l6,30,%g4
+ xor %g3,%l5,%l5
+ xor %g4,%l5,%l5 ! Sigma0(a)
+
+ or %l6,%l7,%g3
+ and %l6,%l7,%g4
+ and %l0,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[2]
+ add %g4,%l5,%l5
+
+ add %g2,%l1,%l1
+ add %g2,%l5,%l5
+ add %o1,%l4,%g2
+ srl %l1,6,%l4 !! 3
+ xor %l2,%l3,%g5
+ sll %l1,7,%g4
+ and %l1,%g5,%g5
+ srl %l1,11,%g3
+ xor %g4,%l4,%l4
+ sll %l1,21,%g4
+ xor %g3,%l4,%l4
+ srl %l1,25,%g3
+ xor %g4,%l4,%l4
+ sll %l1,26,%g4
+ xor %g3,%l4,%l4
+ xor %l3,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l4,%g3 ! Sigma1(e)
+
+ srl %l5,2,%l4
+ add %g5,%g2,%g2
+ ld [%i3+12],%g5 ! K[3]
+ sll %l5,10,%g4
+ add %g3,%g2,%g2
+ srl %l5,13,%g3
+ xor %g4,%l4,%l4
+ sll %l5,19,%g4
+ xor %g3,%l4,%l4
+ srl %l5,22,%g3
+ xor %g4,%l4,%l4
+ sll %l5,30,%g4
+ xor %g3,%l4,%l4
+ xor %g4,%l4,%l4 ! Sigma0(a)
+
+ or %l5,%l6,%g3
+ and %l5,%l6,%g4
+ and %l7,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[3]
+ add %g4,%l4,%l4
+
+ add %g2,%l0,%l0
+ add %g2,%l4,%l4
+ srlx %o2,32,%g2
+ add %l3,%g2,%g2
+ srl %l0,6,%l3 !! 4
+ xor %l1,%l2,%g5
+ sll %l0,7,%g4
+ and %l0,%g5,%g5
+ srl %l0,11,%g3
+ xor %g4,%l3,%l3
+ sll %l0,21,%g4
+ xor %g3,%l3,%l3
+ srl %l0,25,%g3
+ xor %g4,%l3,%l3
+ sll %l0,26,%g4
+ xor %g3,%l3,%l3
+ xor %l2,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l3,%g3 ! Sigma1(e)
+
+ srl %l4,2,%l3
+ add %g5,%g2,%g2
+ ld [%i3+16],%g5 ! K[4]
+ sll %l4,10,%g4
+ add %g3,%g2,%g2
+ srl %l4,13,%g3
+ xor %g4,%l3,%l3
+ sll %l4,19,%g4
+ xor %g3,%l3,%l3
+ srl %l4,22,%g3
+ xor %g4,%l3,%l3
+ sll %l4,30,%g4
+ xor %g3,%l3,%l3
+ xor %g4,%l3,%l3 ! Sigma0(a)
+
+ or %l4,%l5,%g3
+ and %l4,%l5,%g4
+ and %l6,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[4]
+ add %g4,%l3,%l3
+
+ add %g2,%l7,%l7
+ add %g2,%l3,%l3
+ add %o2,%l2,%g2
+ srl %l7,6,%l2 !! 5
+ xor %l0,%l1,%g5
+ sll %l7,7,%g4
+ and %l7,%g5,%g5
+ srl %l7,11,%g3
+ xor %g4,%l2,%l2
+ sll %l7,21,%g4
+ xor %g3,%l2,%l2
+ srl %l7,25,%g3
+ xor %g4,%l2,%l2
+ sll %l7,26,%g4
+ xor %g3,%l2,%l2
+ xor %l1,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l2,%g3 ! Sigma1(e)
+
+ srl %l3,2,%l2
+ add %g5,%g2,%g2
+ ld [%i3+20],%g5 ! K[5]
+ sll %l3,10,%g4
+ add %g3,%g2,%g2
+ srl %l3,13,%g3
+ xor %g4,%l2,%l2
+ sll %l3,19,%g4
+ xor %g3,%l2,%l2
+ srl %l3,22,%g3
+ xor %g4,%l2,%l2
+ sll %l3,30,%g4
+ xor %g3,%l2,%l2
+ xor %g4,%l2,%l2 ! Sigma0(a)
+
+ or %l3,%l4,%g3
+ and %l3,%l4,%g4
+ and %l5,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[5]
+ add %g4,%l2,%l2
+
+ add %g2,%l6,%l6
+ add %g2,%l2,%l2
+ srlx %o3,32,%g2
+ add %l1,%g2,%g2
+ srl %l6,6,%l1 !! 6
+ xor %l7,%l0,%g5
+ sll %l6,7,%g4
+ and %l6,%g5,%g5
+ srl %l6,11,%g3
+ xor %g4,%l1,%l1
+ sll %l6,21,%g4
+ xor %g3,%l1,%l1
+ srl %l6,25,%g3
+ xor %g4,%l1,%l1
+ sll %l6,26,%g4
+ xor %g3,%l1,%l1
+ xor %l0,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l1,%g3 ! Sigma1(e)
+
+ srl %l2,2,%l1
+ add %g5,%g2,%g2
+ ld [%i3+24],%g5 ! K[6]
+ sll %l2,10,%g4
+ add %g3,%g2,%g2
+ srl %l2,13,%g3
+ xor %g4,%l1,%l1
+ sll %l2,19,%g4
+ xor %g3,%l1,%l1
+ srl %l2,22,%g3
+ xor %g4,%l1,%l1
+ sll %l2,30,%g4
+ xor %g3,%l1,%l1
+ xor %g4,%l1,%l1 ! Sigma0(a)
+
+ or %l2,%l3,%g3
+ and %l2,%l3,%g4
+ and %l4,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[6]
+ add %g4,%l1,%l1
+
+ add %g2,%l5,%l5
+ add %g2,%l1,%l1
+ add %o3,%l0,%g2
+ srl %l5,6,%l0 !! 7
+ xor %l6,%l7,%g5
+ sll %l5,7,%g4
+ and %l5,%g5,%g5
+ srl %l5,11,%g3
+ xor %g4,%l0,%l0
+ sll %l5,21,%g4
+ xor %g3,%l0,%l0
+ srl %l5,25,%g3
+ xor %g4,%l0,%l0
+ sll %l5,26,%g4
+ xor %g3,%l0,%l0
+ xor %l7,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l0,%g3 ! Sigma1(e)
+
+ srl %l1,2,%l0
+ add %g5,%g2,%g2
+ ld [%i3+28],%g5 ! K[7]
+ sll %l1,10,%g4
+ add %g3,%g2,%g2
+ srl %l1,13,%g3
+ xor %g4,%l0,%l0
+ sll %l1,19,%g4
+ xor %g3,%l0,%l0
+ srl %l1,22,%g3
+ xor %g4,%l0,%l0
+ sll %l1,30,%g4
+ xor %g3,%l0,%l0
+ xor %g4,%l0,%l0 ! Sigma0(a)
+
+ or %l1,%l2,%g3
+ and %l1,%l2,%g4
+ and %l3,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[7]
+ add %g4,%l0,%l0
+
+ add %g2,%l4,%l4
+ add %g2,%l0,%l0
+ srlx %o4,32,%g2
+ add %l7,%g2,%g2
+ srl %l4,6,%l7 !! 8
+ xor %l5,%l6,%g5
+ sll %l4,7,%g4
+ and %l4,%g5,%g5
+ srl %l4,11,%g3
+ xor %g4,%l7,%l7
+ sll %l4,21,%g4
+ xor %g3,%l7,%l7
+ srl %l4,25,%g3
+ xor %g4,%l7,%l7
+ sll %l4,26,%g4
+ xor %g3,%l7,%l7
+ xor %l6,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l7,%g3 ! Sigma1(e)
+
+ srl %l0,2,%l7
+ add %g5,%g2,%g2
+ ld [%i3+32],%g5 ! K[8]
+ sll %l0,10,%g4
+ add %g3,%g2,%g2
+ srl %l0,13,%g3
+ xor %g4,%l7,%l7
+ sll %l0,19,%g4
+ xor %g3,%l7,%l7
+ srl %l0,22,%g3
+ xor %g4,%l7,%l7
+ sll %l0,30,%g4
+ xor %g3,%l7,%l7
+ xor %g4,%l7,%l7 ! Sigma0(a)
+
+ or %l0,%l1,%g3
+ and %l0,%l1,%g4
+ and %l2,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[8]
+ add %g4,%l7,%l7
+
+ add %g2,%l3,%l3
+ add %g2,%l7,%l7
+ add %o4,%l6,%g2
+ srl %l3,6,%l6 !! 9
+ xor %l4,%l5,%g5
+ sll %l3,7,%g4
+ and %l3,%g5,%g5
+ srl %l3,11,%g3
+ xor %g4,%l6,%l6
+ sll %l3,21,%g4
+ xor %g3,%l6,%l6
+ srl %l3,25,%g3
+ xor %g4,%l6,%l6
+ sll %l3,26,%g4
+ xor %g3,%l6,%l6
+ xor %l5,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l6,%g3 ! Sigma1(e)
+
+ srl %l7,2,%l6
+ add %g5,%g2,%g2
+ ld [%i3+36],%g5 ! K[9]
+ sll %l7,10,%g4
+ add %g3,%g2,%g2
+ srl %l7,13,%g3
+ xor %g4,%l6,%l6
+ sll %l7,19,%g4
+ xor %g3,%l6,%l6
+ srl %l7,22,%g3
+ xor %g4,%l6,%l6
+ sll %l7,30,%g4
+ xor %g3,%l6,%l6
+ xor %g4,%l6,%l6 ! Sigma0(a)
+
+ or %l7,%l0,%g3
+ and %l7,%l0,%g4
+ and %l1,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[9]
+ add %g4,%l6,%l6
+
+ add %g2,%l2,%l2
+ add %g2,%l6,%l6
+ srlx %o5,32,%g2
+ add %l5,%g2,%g2
+ srl %l2,6,%l5 !! 10
+ xor %l3,%l4,%g5
+ sll %l2,7,%g4
+ and %l2,%g5,%g5
+ srl %l2,11,%g3
+ xor %g4,%l5,%l5
+ sll %l2,21,%g4
+ xor %g3,%l5,%l5
+ srl %l2,25,%g3
+ xor %g4,%l5,%l5
+ sll %l2,26,%g4
+ xor %g3,%l5,%l5
+ xor %l4,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l5,%g3 ! Sigma1(e)
+
+ srl %l6,2,%l5
+ add %g5,%g2,%g2
+ ld [%i3+40],%g5 ! K[10]
+ sll %l6,10,%g4
+ add %g3,%g2,%g2
+ srl %l6,13,%g3
+ xor %g4,%l5,%l5
+ sll %l6,19,%g4
+ xor %g3,%l5,%l5
+ srl %l6,22,%g3
+ xor %g4,%l5,%l5
+ sll %l6,30,%g4
+ xor %g3,%l5,%l5
+ xor %g4,%l5,%l5 ! Sigma0(a)
+
+ or %l6,%l7,%g3
+ and %l6,%l7,%g4
+ and %l0,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[10]
+ add %g4,%l5,%l5
+
+ add %g2,%l1,%l1
+ add %g2,%l5,%l5
+ add %o5,%l4,%g2
+ srl %l1,6,%l4 !! 11
+ xor %l2,%l3,%g5
+ sll %l1,7,%g4
+ and %l1,%g5,%g5
+ srl %l1,11,%g3
+ xor %g4,%l4,%l4
+ sll %l1,21,%g4
+ xor %g3,%l4,%l4
+ srl %l1,25,%g3
+ xor %g4,%l4,%l4
+ sll %l1,26,%g4
+ xor %g3,%l4,%l4
+ xor %l3,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l4,%g3 ! Sigma1(e)
+
+ srl %l5,2,%l4
+ add %g5,%g2,%g2
+ ld [%i3+44],%g5 ! K[11]
+ sll %l5,10,%g4
+ add %g3,%g2,%g2
+ srl %l5,13,%g3
+ xor %g4,%l4,%l4
+ sll %l5,19,%g4
+ xor %g3,%l4,%l4
+ srl %l5,22,%g3
+ xor %g4,%l4,%l4
+ sll %l5,30,%g4
+ xor %g3,%l4,%l4
+ xor %g4,%l4,%l4 ! Sigma0(a)
+
+ or %l5,%l6,%g3
+ and %l5,%l6,%g4
+ and %l7,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[11]
+ add %g4,%l4,%l4
+
+ add %g2,%l0,%l0
+ add %g2,%l4,%l4
+ srlx %g1,32,%g2
+ add %l3,%g2,%g2
+ srl %l0,6,%l3 !! 12
+ xor %l1,%l2,%g5
+ sll %l0,7,%g4
+ and %l0,%g5,%g5
+ srl %l0,11,%g3
+ xor %g4,%l3,%l3
+ sll %l0,21,%g4
+ xor %g3,%l3,%l3
+ srl %l0,25,%g3
+ xor %g4,%l3,%l3
+ sll %l0,26,%g4
+ xor %g3,%l3,%l3
+ xor %l2,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l3,%g3 ! Sigma1(e)
+
+ srl %l4,2,%l3
+ add %g5,%g2,%g2
+ ld [%i3+48],%g5 ! K[12]
+ sll %l4,10,%g4
+ add %g3,%g2,%g2
+ srl %l4,13,%g3
+ xor %g4,%l3,%l3
+ sll %l4,19,%g4
+ xor %g3,%l3,%l3
+ srl %l4,22,%g3
+ xor %g4,%l3,%l3
+ sll %l4,30,%g4
+ xor %g3,%l3,%l3
+ xor %g4,%l3,%l3 ! Sigma0(a)
+
+ or %l4,%l5,%g3
+ and %l4,%l5,%g4
+ and %l6,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[12]
+ add %g4,%l3,%l3
+
+ add %g2,%l7,%l7
+ add %g2,%l3,%l3
+ add %g1,%l2,%g2
+ srl %l7,6,%l2 !! 13
+ xor %l0,%l1,%g5
+ sll %l7,7,%g4
+ and %l7,%g5,%g5
+ srl %l7,11,%g3
+ xor %g4,%l2,%l2
+ sll %l7,21,%g4
+ xor %g3,%l2,%l2
+ srl %l7,25,%g3
+ xor %g4,%l2,%l2
+ sll %l7,26,%g4
+ xor %g3,%l2,%l2
+ xor %l1,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l2,%g3 ! Sigma1(e)
+
+ srl %l3,2,%l2
+ add %g5,%g2,%g2
+ ld [%i3+52],%g5 ! K[13]
+ sll %l3,10,%g4
+ add %g3,%g2,%g2
+ srl %l3,13,%g3
+ xor %g4,%l2,%l2
+ sll %l3,19,%g4
+ xor %g3,%l2,%l2
+ srl %l3,22,%g3
+ xor %g4,%l2,%l2
+ sll %l3,30,%g4
+ xor %g3,%l2,%l2
+ xor %g4,%l2,%l2 ! Sigma0(a)
+
+ or %l3,%l4,%g3
+ and %l3,%l4,%g4
+ and %l5,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[13]
+ add %g4,%l2,%l2
+
+ add %g2,%l6,%l6
+ add %g2,%l2,%l2
+ srlx %o7,32,%g2
+ add %l1,%g2,%g2
+ srl %l6,6,%l1 !! 14
+ xor %l7,%l0,%g5
+ sll %l6,7,%g4
+ and %l6,%g5,%g5
+ srl %l6,11,%g3
+ xor %g4,%l1,%l1
+ sll %l6,21,%g4
+ xor %g3,%l1,%l1
+ srl %l6,25,%g3
+ xor %g4,%l1,%l1
+ sll %l6,26,%g4
+ xor %g3,%l1,%l1
+ xor %l0,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l1,%g3 ! Sigma1(e)
+
+ srl %l2,2,%l1
+ add %g5,%g2,%g2
+ ld [%i3+56],%g5 ! K[14]
+ sll %l2,10,%g4
+ add %g3,%g2,%g2
+ srl %l2,13,%g3
+ xor %g4,%l1,%l1
+ sll %l2,19,%g4
+ xor %g3,%l1,%l1
+ srl %l2,22,%g3
+ xor %g4,%l1,%l1
+ sll %l2,30,%g4
+ xor %g3,%l1,%l1
+ xor %g4,%l1,%l1 ! Sigma0(a)
+
+ or %l2,%l3,%g3
+ and %l2,%l3,%g4
+ and %l4,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[14]
+ add %g4,%l1,%l1
+
+ add %g2,%l5,%l5
+ add %g2,%l1,%l1
+ add %o7,%l0,%g2
+ srl %l5,6,%l0 !! 15
+ xor %l6,%l7,%g5
+ sll %l5,7,%g4
+ and %l5,%g5,%g5
+ srl %l5,11,%g3
+ xor %g4,%l0,%l0
+ sll %l5,21,%g4
+ xor %g3,%l0,%l0
+ srl %l5,25,%g3
+ xor %g4,%l0,%l0
+ sll %l5,26,%g4
+ xor %g3,%l0,%l0
+ xor %l7,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l0,%g3 ! Sigma1(e)
+
+ srl %l1,2,%l0
+ add %g5,%g2,%g2
+ ld [%i3+60],%g5 ! K[15]
+ sll %l1,10,%g4
+ add %g3,%g2,%g2
+ srl %l1,13,%g3
+ xor %g4,%l0,%l0
+ sll %l1,19,%g4
+ xor %g3,%l0,%l0
+ srl %l1,22,%g3
+ xor %g4,%l0,%l0
+ sll %l1,30,%g4
+ xor %g3,%l0,%l0
+ xor %g4,%l0,%l0 ! Sigma0(a)
+
+ or %l1,%l2,%g3
+ and %l1,%l2,%g4
+ and %l3,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[15]
+ add %g4,%l0,%l0
+
+ add %g2,%l4,%l4
+ add %g2,%l0,%l0
+.L16_xx:
+ srl %o0,3,%g2 !! Xupdate(16)
+ sll %o0,14,%g4
+ srl %o0,7,%g3
+ xor %g4,%g2,%g2
+ sll %g4,11,%g4
+ xor %g3,%g2,%g2
+ srl %o0,18,%g3
+ xor %g4,%g2,%g2
+ srlx %o7,32,%i5
+ srl %i5,10,%g5
+ xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
+ sll %i5,13,%g4
+ srl %i5,17,%g3
+ xor %g4,%g5,%g5
+ sll %g4,2,%g4
+ xor %g3,%g5,%g5
+ srl %i5,19,%g3
+ xor %g4,%g5,%g5
+ srlx %o0,32,%g4 ! X[i]
+ xor %g3,%g5,%g5 ! sigma1(X[i+14])
+ add %o4,%g2,%g2 ! +=X[i+9]
+ add %g5,%g4,%g4
+ srl %o0,0,%o0
+ add %g4,%g2,%g2
+
+ sllx %g2,32,%g3
+ or %g3,%o0,%o0
+ add %l7,%g2,%g2
+ srl %l4,6,%l7 !! 16
+ xor %l5,%l6,%g5
+ sll %l4,7,%g4
+ and %l4,%g5,%g5
+ srl %l4,11,%g3
+ xor %g4,%l7,%l7
+ sll %l4,21,%g4
+ xor %g3,%l7,%l7
+ srl %l4,25,%g3
+ xor %g4,%l7,%l7
+ sll %l4,26,%g4
+ xor %g3,%l7,%l7
+ xor %l6,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l7,%g3 ! Sigma1(e)
+
+ srl %l0,2,%l7
+ add %g5,%g2,%g2
+ ld [%i3+64],%g5 ! K[16]
+ sll %l0,10,%g4
+ add %g3,%g2,%g2
+ srl %l0,13,%g3
+ xor %g4,%l7,%l7
+ sll %l0,19,%g4
+ xor %g3,%l7,%l7
+ srl %l0,22,%g3
+ xor %g4,%l7,%l7
+ sll %l0,30,%g4
+ xor %g3,%l7,%l7
+ xor %g4,%l7,%l7 ! Sigma0(a)
+
+ or %l0,%l1,%g3
+ and %l0,%l1,%g4
+ and %l2,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[16]
+ add %g4,%l7,%l7
+
+ add %g2,%l3,%l3
+ add %g2,%l7,%l7
+ srlx %o1,32,%i5
+ srl %i5,3,%g2 !! Xupdate(17)
+ sll %i5,14,%g4
+ srl %i5,7,%g3
+ xor %g4,%g2,%g2
+ sll %g4,11,%g4
+ xor %g3,%g2,%g2
+ srl %i5,18,%g3
+ xor %g4,%g2,%g2
+ srl %o7,10,%g5
+ xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
+ sll %o7,13,%g4
+ srl %o7,17,%g3
+ xor %g4,%g5,%g5
+ sll %g4,2,%g4
+ xor %g3,%g5,%g5
+ srl %o7,19,%g3
+ xor %g4,%g5,%g5
+ srlx %o5,32,%g4 ! X[i+9]
+ xor %g3,%g5,%g5 ! sigma1(X[i+14])
+ srl %o0,0,%g3
+ add %g5,%g4,%g4
+ add %o0,%g2,%g2 ! +=X[i]
+ xor %g3,%o0,%o0
+ add %g4,%g2,%g2
+
+ srl %g2,0,%g2
+ or %g2,%o0,%o0
+ add %l6,%g2,%g2
+ srl %l3,6,%l6 !! 17
+ xor %l4,%l5,%g5
+ sll %l3,7,%g4
+ and %l3,%g5,%g5
+ srl %l3,11,%g3
+ xor %g4,%l6,%l6
+ sll %l3,21,%g4
+ xor %g3,%l6,%l6
+ srl %l3,25,%g3
+ xor %g4,%l6,%l6
+ sll %l3,26,%g4
+ xor %g3,%l6,%l6
+ xor %l5,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l6,%g3 ! Sigma1(e)
+
+ srl %l7,2,%l6
+ add %g5,%g2,%g2
+ ld [%i3+68],%g5 ! K[17]
+ sll %l7,10,%g4
+ add %g3,%g2,%g2
+ srl %l7,13,%g3
+ xor %g4,%l6,%l6
+ sll %l7,19,%g4
+ xor %g3,%l6,%l6
+ srl %l7,22,%g3
+ xor %g4,%l6,%l6
+ sll %l7,30,%g4
+ xor %g3,%l6,%l6
+ xor %g4,%l6,%l6 ! Sigma0(a)
+
+ or %l7,%l0,%g3
+ and %l7,%l0,%g4
+ and %l1,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[17]
+ add %g4,%l6,%l6
+
+ add %g2,%l2,%l2
+ add %g2,%l6,%l6
+ srl %o1,3,%g2 !! Xupdate(18)
+ sll %o1,14,%g4
+ srl %o1,7,%g3
+ xor %g4,%g2,%g2
+ sll %g4,11,%g4
+ xor %g3,%g2,%g2
+ srl %o1,18,%g3
+ xor %g4,%g2,%g2
+ srlx %o0,32,%i5
+ srl %i5,10,%g5
+ xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
+ sll %i5,13,%g4
+ srl %i5,17,%g3
+ xor %g4,%g5,%g5
+ sll %g4,2,%g4
+ xor %g3,%g5,%g5
+ srl %i5,19,%g3
+ xor %g4,%g5,%g5
+ srlx %o1,32,%g4 ! X[i]
+ xor %g3,%g5,%g5 ! sigma1(X[i+14])
+ add %o5,%g2,%g2 ! +=X[i+9]
+ add %g5,%g4,%g4
+ srl %o1,0,%o1
+ add %g4,%g2,%g2
+
+ sllx %g2,32,%g3
+ or %g3,%o1,%o1
+ add %l5,%g2,%g2
+ srl %l2,6,%l5 !! 18
+ xor %l3,%l4,%g5
+ sll %l2,7,%g4
+ and %l2,%g5,%g5
+ srl %l2,11,%g3
+ xor %g4,%l5,%l5
+ sll %l2,21,%g4
+ xor %g3,%l5,%l5
+ srl %l2,25,%g3
+ xor %g4,%l5,%l5
+ sll %l2,26,%g4
+ xor %g3,%l5,%l5
+ xor %l4,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l5,%g3 ! Sigma1(e)
+
+ srl %l6,2,%l5
+ add %g5,%g2,%g2
+ ld [%i3+72],%g5 ! K[18]
+ sll %l6,10,%g4
+ add %g3,%g2,%g2
+ srl %l6,13,%g3
+ xor %g4,%l5,%l5
+ sll %l6,19,%g4
+ xor %g3,%l5,%l5
+ srl %l6,22,%g3
+ xor %g4,%l5,%l5
+ sll %l6,30,%g4
+ xor %g3,%l5,%l5
+ xor %g4,%l5,%l5 ! Sigma0(a)
+
+ or %l6,%l7,%g3
+ and %l6,%l7,%g4
+ and %l0,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[18]
+ add %g4,%l5,%l5
+
+ add %g2,%l1,%l1
+ add %g2,%l5,%l5
+ srlx %o2,32,%i5
+ srl %i5,3,%g2 !! Xupdate(19)
+ sll %i5,14,%g4
+ srl %i5,7,%g3
+ xor %g4,%g2,%g2
+ sll %g4,11,%g4
+ xor %g3,%g2,%g2
+ srl %i5,18,%g3
+ xor %g4,%g2,%g2
+ srl %o0,10,%g5
+ xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
+ sll %o0,13,%g4
+ srl %o0,17,%g3
+ xor %g4,%g5,%g5
+ sll %g4,2,%g4
+ xor %g3,%g5,%g5
+ srl %o0,19,%g3
+ xor %g4,%g5,%g5
+ srlx %g1,32,%g4 ! X[i+9]
+ xor %g3,%g5,%g5 ! sigma1(X[i+14])
+ srl %o1,0,%g3
+ add %g5,%g4,%g4
+ add %o1,%g2,%g2 ! +=X[i]
+ xor %g3,%o1,%o1
+ add %g4,%g2,%g2
+
+ srl %g2,0,%g2
+ or %g2,%o1,%o1
+ add %l4,%g2,%g2
+ srl %l1,6,%l4 !! 19
+ xor %l2,%l3,%g5
+ sll %l1,7,%g4
+ and %l1,%g5,%g5
+ srl %l1,11,%g3
+ xor %g4,%l4,%l4
+ sll %l1,21,%g4
+ xor %g3,%l4,%l4
+ srl %l1,25,%g3
+ xor %g4,%l4,%l4
+ sll %l1,26,%g4
+ xor %g3,%l4,%l4
+ xor %l3,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l4,%g3 ! Sigma1(e)
+
+ srl %l5,2,%l4
+ add %g5,%g2,%g2
+ ld [%i3+76],%g5 ! K[19]
+ sll %l5,10,%g4
+ add %g3,%g2,%g2
+ srl %l5,13,%g3
+ xor %g4,%l4,%l4
+ sll %l5,19,%g4
+ xor %g3,%l4,%l4
+ srl %l5,22,%g3
+ xor %g4,%l4,%l4
+ sll %l5,30,%g4
+ xor %g3,%l4,%l4
+ xor %g4,%l4,%l4 ! Sigma0(a)
+
+ or %l5,%l6,%g3
+ and %l5,%l6,%g4
+ and %l7,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[19]
+ add %g4,%l4,%l4
+
+ add %g2,%l0,%l0
+ add %g2,%l4,%l4
+ srl %o2,3,%g2 !! Xupdate(20)
+ sll %o2,14,%g4
+ srl %o2,7,%g3
+ xor %g4,%g2,%g2
+ sll %g4,11,%g4
+ xor %g3,%g2,%g2
+ srl %o2,18,%g3
+ xor %g4,%g2,%g2
+ srlx %o1,32,%i5
+ srl %i5,10,%g5
+ xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
+ sll %i5,13,%g4
+ srl %i5,17,%g3
+ xor %g4,%g5,%g5
+ sll %g4,2,%g4
+ xor %g3,%g5,%g5
+ srl %i5,19,%g3
+ xor %g4,%g5,%g5
+ srlx %o2,32,%g4 ! X[i]
+ xor %g3,%g5,%g5 ! sigma1(X[i+14])
+ add %g1,%g2,%g2 ! +=X[i+9]
+ add %g5,%g4,%g4
+ srl %o2,0,%o2
+ add %g4,%g2,%g2
+
+ sllx %g2,32,%g3
+ or %g3,%o2,%o2
+ add %l3,%g2,%g2
+ srl %l0,6,%l3 !! 20
+ xor %l1,%l2,%g5
+ sll %l0,7,%g4
+ and %l0,%g5,%g5
+ srl %l0,11,%g3
+ xor %g4,%l3,%l3
+ sll %l0,21,%g4
+ xor %g3,%l3,%l3
+ srl %l0,25,%g3
+ xor %g4,%l3,%l3
+ sll %l0,26,%g4
+ xor %g3,%l3,%l3
+ xor %l2,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l3,%g3 ! Sigma1(e)
+
+ srl %l4,2,%l3
+ add %g5,%g2,%g2
+ ld [%i3+80],%g5 ! K[20]
+ sll %l4,10,%g4
+ add %g3,%g2,%g2
+ srl %l4,13,%g3
+ xor %g4,%l3,%l3
+ sll %l4,19,%g4
+ xor %g3,%l3,%l3
+ srl %l4,22,%g3
+ xor %g4,%l3,%l3
+ sll %l4,30,%g4
+ xor %g3,%l3,%l3
+ xor %g4,%l3,%l3 ! Sigma0(a)
+
+ or %l4,%l5,%g3
+ and %l4,%l5,%g4
+ and %l6,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[20]
+ add %g4,%l3,%l3
+
+ add %g2,%l7,%l7
+ add %g2,%l3,%l3
+ srlx %o3,32,%i5
+ srl %i5,3,%g2 !! Xupdate(21)
+ sll %i5,14,%g4
+ srl %i5,7,%g3
+ xor %g4,%g2,%g2
+ sll %g4,11,%g4
+ xor %g3,%g2,%g2
+ srl %i5,18,%g3
+ xor %g4,%g2,%g2
+ srl %o1,10,%g5
+ xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
+ sll %o1,13,%g4
+ srl %o1,17,%g3
+ xor %g4,%g5,%g5
+ sll %g4,2,%g4
+ xor %g3,%g5,%g5
+ srl %o1,19,%g3
+ xor %g4,%g5,%g5
+ srlx %o7,32,%g4 ! X[i+9]
+ xor %g3,%g5,%g5 ! sigma1(X[i+14])
+ srl %o2,0,%g3
+ add %g5,%g4,%g4
+ add %o2,%g2,%g2 ! +=X[i]
+ xor %g3,%o2,%o2
+ add %g4,%g2,%g2
+
+ srl %g2,0,%g2
+ or %g2,%o2,%o2
+ add %l2,%g2,%g2
+ srl %l7,6,%l2 !! 21
+ xor %l0,%l1,%g5
+ sll %l7,7,%g4
+ and %l7,%g5,%g5
+ srl %l7,11,%g3
+ xor %g4,%l2,%l2
+ sll %l7,21,%g4
+ xor %g3,%l2,%l2
+ srl %l7,25,%g3
+ xor %g4,%l2,%l2
+ sll %l7,26,%g4
+ xor %g3,%l2,%l2
+ xor %l1,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l2,%g3 ! Sigma1(e)
+
+ srl %l3,2,%l2
+ add %g5,%g2,%g2
+ ld [%i3+84],%g5 ! K[21]
+ sll %l3,10,%g4
+ add %g3,%g2,%g2
+ srl %l3,13,%g3
+ xor %g4,%l2,%l2
+ sll %l3,19,%g4
+ xor %g3,%l2,%l2
+ srl %l3,22,%g3
+ xor %g4,%l2,%l2
+ sll %l3,30,%g4
+ xor %g3,%l2,%l2
+ xor %g4,%l2,%l2 ! Sigma0(a)
+
+ or %l3,%l4,%g3
+ and %l3,%l4,%g4
+ and %l5,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[21]
+ add %g4,%l2,%l2
+
+ add %g2,%l6,%l6
+ add %g2,%l2,%l2
+ srl %o3,3,%g2 !! Xupdate(22)
+ sll %o3,14,%g4
+ srl %o3,7,%g3
+ xor %g4,%g2,%g2
+ sll %g4,11,%g4
+ xor %g3,%g2,%g2
+ srl %o3,18,%g3
+ xor %g4,%g2,%g2
+ srlx %o2,32,%i5
+ srl %i5,10,%g5
+ xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
+ sll %i5,13,%g4
+ srl %i5,17,%g3
+ xor %g4,%g5,%g5
+ sll %g4,2,%g4
+ xor %g3,%g5,%g5
+ srl %i5,19,%g3
+ xor %g4,%g5,%g5
+ srlx %o3,32,%g4 ! X[i]
+ xor %g3,%g5,%g5 ! sigma1(X[i+14])
+ add %o7,%g2,%g2 ! +=X[i+9]
+ add %g5,%g4,%g4
+ srl %o3,0,%o3
+ add %g4,%g2,%g2
+
+ sllx %g2,32,%g3
+ or %g3,%o3,%o3
+ add %l1,%g2,%g2
+ srl %l6,6,%l1 !! 22
+ xor %l7,%l0,%g5
+ sll %l6,7,%g4
+ and %l6,%g5,%g5
+ srl %l6,11,%g3
+ xor %g4,%l1,%l1
+ sll %l6,21,%g4
+ xor %g3,%l1,%l1
+ srl %l6,25,%g3
+ xor %g4,%l1,%l1
+ sll %l6,26,%g4
+ xor %g3,%l1,%l1
+ xor %l0,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l1,%g3 ! Sigma1(e)
+
+ srl %l2,2,%l1
+ add %g5,%g2,%g2
+ ld [%i3+88],%g5 ! K[22]
+ sll %l2,10,%g4
+ add %g3,%g2,%g2
+ srl %l2,13,%g3
+ xor %g4,%l1,%l1
+ sll %l2,19,%g4
+ xor %g3,%l1,%l1
+ srl %l2,22,%g3
+ xor %g4,%l1,%l1
+ sll %l2,30,%g4
+ xor %g3,%l1,%l1
+ xor %g4,%l1,%l1 ! Sigma0(a)
+
+ or %l2,%l3,%g3
+ and %l2,%l3,%g4
+ and %l4,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[22]
+ add %g4,%l1,%l1
+
+ add %g2,%l5,%l5
+ add %g2,%l1,%l1
+ srlx %o4,32,%i5
+ srl %i5,3,%g2 !! Xupdate(23)
+ sll %i5,14,%g4
+ srl %i5,7,%g3
+ xor %g4,%g2,%g2
+ sll %g4,11,%g4
+ xor %g3,%g2,%g2
+ srl %i5,18,%g3
+ xor %g4,%g2,%g2
+ srl %o2,10,%g5
+ xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
+ sll %o2,13,%g4
+ srl %o2,17,%g3
+ xor %g4,%g5,%g5
+ sll %g4,2,%g4
+ xor %g3,%g5,%g5
+ srl %o2,19,%g3
+ xor %g4,%g5,%g5
+ srlx %o0,32,%g4 ! X[i+9]
+ xor %g3,%g5,%g5 ! sigma1(X[i+14])
+ srl %o3,0,%g3
+ add %g5,%g4,%g4
+ add %o3,%g2,%g2 ! +=X[i]
+ xor %g3,%o3,%o3
+ add %g4,%g2,%g2
+
+ srl %g2,0,%g2
+ or %g2,%o3,%o3
+ add %l0,%g2,%g2
+ srl %l5,6,%l0 !! 23
+ xor %l6,%l7,%g5
+ sll %l5,7,%g4
+ and %l5,%g5,%g5
+ srl %l5,11,%g3
+ xor %g4,%l0,%l0
+ sll %l5,21,%g4
+ xor %g3,%l0,%l0
+ srl %l5,25,%g3
+ xor %g4,%l0,%l0
+ sll %l5,26,%g4
+ xor %g3,%l0,%l0
+ xor %l7,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l0,%g3 ! Sigma1(e)
+
+ srl %l1,2,%l0
+ add %g5,%g2,%g2
+ ld [%i3+92],%g5 ! K[23]
+ sll %l1,10,%g4
+ add %g3,%g2,%g2
+ srl %l1,13,%g3
+ xor %g4,%l0,%l0
+ sll %l1,19,%g4
+ xor %g3,%l0,%l0
+ srl %l1,22,%g3
+ xor %g4,%l0,%l0
+ sll %l1,30,%g4
+ xor %g3,%l0,%l0
+ xor %g4,%l0,%l0 ! Sigma0(a)
+
+ or %l1,%l2,%g3
+ and %l1,%l2,%g4
+ and %l3,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[23]
+ add %g4,%l0,%l0
+
+ add %g2,%l4,%l4
+ add %g2,%l0,%l0
+ srl %o4,3,%g2 !! Xupdate(24)
+ sll %o4,14,%g4
+ srl %o4,7,%g3
+ xor %g4,%g2,%g2
+ sll %g4,11,%g4
+ xor %g3,%g2,%g2
+ srl %o4,18,%g3
+ xor %g4,%g2,%g2
+ srlx %o3,32,%i5
+ srl %i5,10,%g5
+ xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
+ sll %i5,13,%g4
+ srl %i5,17,%g3
+ xor %g4,%g5,%g5
+ sll %g4,2,%g4
+ xor %g3,%g5,%g5
+ srl %i5,19,%g3
+ xor %g4,%g5,%g5
+ srlx %o4,32,%g4 ! X[i]
+ xor %g3,%g5,%g5 ! sigma1(X[i+14])
+ add %o0,%g2,%g2 ! +=X[i+9]
+ add %g5,%g4,%g4
+ srl %o4,0,%o4
+ add %g4,%g2,%g2
+
+ sllx %g2,32,%g3
+ or %g3,%o4,%o4
+ add %l7,%g2,%g2
+ srl %l4,6,%l7 !! 24
+ xor %l5,%l6,%g5
+ sll %l4,7,%g4
+ and %l4,%g5,%g5
+ srl %l4,11,%g3
+ xor %g4,%l7,%l7
+ sll %l4,21,%g4
+ xor %g3,%l7,%l7
+ srl %l4,25,%g3
+ xor %g4,%l7,%l7
+ sll %l4,26,%g4
+ xor %g3,%l7,%l7
+ xor %l6,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l7,%g3 ! Sigma1(e)
+
+ srl %l0,2,%l7
+ add %g5,%g2,%g2
+ ld [%i3+96],%g5 ! K[24]
+ sll %l0,10,%g4
+ add %g3,%g2,%g2
+ srl %l0,13,%g3
+ xor %g4,%l7,%l7
+ sll %l0,19,%g4
+ xor %g3,%l7,%l7
+ srl %l0,22,%g3
+ xor %g4,%l7,%l7
+ sll %l0,30,%g4
+ xor %g3,%l7,%l7
+ xor %g4,%l7,%l7 ! Sigma0(a)
+
+ or %l0,%l1,%g3
+ and %l0,%l1,%g4
+ and %l2,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[24]
+ add %g4,%l7,%l7
+
+ add %g2,%l3,%l3
+ add %g2,%l7,%l7
+ srlx %o5,32,%i5
+ srl %i5,3,%g2 !! Xupdate(25)
+ sll %i5,14,%g4
+ srl %i5,7,%g3
+ xor %g4,%g2,%g2
+ sll %g4,11,%g4
+ xor %g3,%g2,%g2
+ srl %i5,18,%g3
+ xor %g4,%g2,%g2
+ srl %o3,10,%g5
+ xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
+ sll %o3,13,%g4
+ srl %o3,17,%g3
+ xor %g4,%g5,%g5
+ sll %g4,2,%g4
+ xor %g3,%g5,%g5
+ srl %o3,19,%g3
+ xor %g4,%g5,%g5
+ srlx %o1,32,%g4 ! X[i+9]
+ xor %g3,%g5,%g5 ! sigma1(X[i+14])
+ srl %o4,0,%g3
+ add %g5,%g4,%g4
+ add %o4,%g2,%g2 ! +=X[i]
+ xor %g3,%o4,%o4
+ add %g4,%g2,%g2
+
+ srl %g2,0,%g2
+ or %g2,%o4,%o4
+ add %l6,%g2,%g2
+ srl %l3,6,%l6 !! 25
+ xor %l4,%l5,%g5
+ sll %l3,7,%g4
+ and %l3,%g5,%g5
+ srl %l3,11,%g3
+ xor %g4,%l6,%l6
+ sll %l3,21,%g4
+ xor %g3,%l6,%l6
+ srl %l3,25,%g3
+ xor %g4,%l6,%l6
+ sll %l3,26,%g4
+ xor %g3,%l6,%l6
+ xor %l5,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l6,%g3 ! Sigma1(e)
+
+ srl %l7,2,%l6
+ add %g5,%g2,%g2
+ ld [%i3+100],%g5 ! K[25]
+ sll %l7,10,%g4
+ add %g3,%g2,%g2
+ srl %l7,13,%g3
+ xor %g4,%l6,%l6
+ sll %l7,19,%g4
+ xor %g3,%l6,%l6
+ srl %l7,22,%g3
+ xor %g4,%l6,%l6
+ sll %l7,30,%g4
+ xor %g3,%l6,%l6
+ xor %g4,%l6,%l6 ! Sigma0(a)
+
+ or %l7,%l0,%g3
+ and %l7,%l0,%g4
+ and %l1,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[25]
+ add %g4,%l6,%l6
+
+ add %g2,%l2,%l2
+ add %g2,%l6,%l6
+ srl %o5,3,%g2 !! Xupdate(26)
+ sll %o5,14,%g4
+ srl %o5,7,%g3
+ xor %g4,%g2,%g2
+ sll %g4,11,%g4
+ xor %g3,%g2,%g2
+ srl %o5,18,%g3
+ xor %g4,%g2,%g2
+ srlx %o4,32,%i5
+ srl %i5,10,%g5
+ xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
+ sll %i5,13,%g4
+ srl %i5,17,%g3
+ xor %g4,%g5,%g5
+ sll %g4,2,%g4
+ xor %g3,%g5,%g5
+ srl %i5,19,%g3
+ xor %g4,%g5,%g5
+ srlx %o5,32,%g4 ! X[i]
+ xor %g3,%g5,%g5 ! sigma1(X[i+14])
+ add %o1,%g2,%g2 ! +=X[i+9]
+ add %g5,%g4,%g4
+ srl %o5,0,%o5
+ add %g4,%g2,%g2
+
+ sllx %g2,32,%g3
+ or %g3,%o5,%o5
+ add %l5,%g2,%g2
+ srl %l2,6,%l5 !! 26
+ xor %l3,%l4,%g5
+ sll %l2,7,%g4
+ and %l2,%g5,%g5
+ srl %l2,11,%g3
+ xor %g4,%l5,%l5
+ sll %l2,21,%g4
+ xor %g3,%l5,%l5
+ srl %l2,25,%g3
+ xor %g4,%l5,%l5
+ sll %l2,26,%g4
+ xor %g3,%l5,%l5
+ xor %l4,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l5,%g3 ! Sigma1(e)
+
+ srl %l6,2,%l5
+ add %g5,%g2,%g2
+ ld [%i3+104],%g5 ! K[26]
+ sll %l6,10,%g4
+ add %g3,%g2,%g2
+ srl %l6,13,%g3
+ xor %g4,%l5,%l5
+ sll %l6,19,%g4
+ xor %g3,%l5,%l5
+ srl %l6,22,%g3
+ xor %g4,%l5,%l5
+ sll %l6,30,%g4
+ xor %g3,%l5,%l5
+ xor %g4,%l5,%l5 ! Sigma0(a)
+
+ or %l6,%l7,%g3
+ and %l6,%l7,%g4
+ and %l0,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[26]
+ add %g4,%l5,%l5
+
+ add %g2,%l1,%l1
+ add %g2,%l5,%l5
+ srlx %g1,32,%i5
+ srl %i5,3,%g2 !! Xupdate(27)
+ sll %i5,14,%g4
+ srl %i5,7,%g3
+ xor %g4,%g2,%g2
+ sll %g4,11,%g4
+ xor %g3,%g2,%g2
+ srl %i5,18,%g3
+ xor %g4,%g2,%g2
+ srl %o4,10,%g5
+ xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
+ sll %o4,13,%g4
+ srl %o4,17,%g3
+ xor %g4,%g5,%g5
+ sll %g4,2,%g4
+ xor %g3,%g5,%g5
+ srl %o4,19,%g3
+ xor %g4,%g5,%g5
+ srlx %o2,32,%g4 ! X[i+9]
+ xor %g3,%g5,%g5 ! sigma1(X[i+14])
+ srl %o5,0,%g3
+ add %g5,%g4,%g4
+ add %o5,%g2,%g2 ! +=X[i]
+ xor %g3,%o5,%o5
+ add %g4,%g2,%g2
+
+ srl %g2,0,%g2
+ or %g2,%o5,%o5
+ add %l4,%g2,%g2
+ srl %l1,6,%l4 !! 27
+ xor %l2,%l3,%g5
+ sll %l1,7,%g4
+ and %l1,%g5,%g5
+ srl %l1,11,%g3
+ xor %g4,%l4,%l4
+ sll %l1,21,%g4
+ xor %g3,%l4,%l4
+ srl %l1,25,%g3
+ xor %g4,%l4,%l4
+ sll %l1,26,%g4
+ xor %g3,%l4,%l4
+ xor %l3,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l4,%g3 ! Sigma1(e)
+
+ srl %l5,2,%l4
+ add %g5,%g2,%g2
+ ld [%i3+108],%g5 ! K[27]
+ sll %l5,10,%g4
+ add %g3,%g2,%g2
+ srl %l5,13,%g3
+ xor %g4,%l4,%l4
+ sll %l5,19,%g4
+ xor %g3,%l4,%l4
+ srl %l5,22,%g3
+ xor %g4,%l4,%l4
+ sll %l5,30,%g4
+ xor %g3,%l4,%l4
+ xor %g4,%l4,%l4 ! Sigma0(a)
+
+ or %l5,%l6,%g3
+ and %l5,%l6,%g4
+ and %l7,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[27]
+ add %g4,%l4,%l4
+
+ add %g2,%l0,%l0
+ add %g2,%l4,%l4
+ srl %g1,3,%g2 !! Xupdate(28)
+ sll %g1,14,%g4
+ srl %g1,7,%g3
+ xor %g4,%g2,%g2
+ sll %g4,11,%g4
+ xor %g3,%g2,%g2
+ srl %g1,18,%g3
+ xor %g4,%g2,%g2
+ srlx %o5,32,%i5
+ srl %i5,10,%g5
+ xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
+ sll %i5,13,%g4
+ srl %i5,17,%g3
+ xor %g4,%g5,%g5
+ sll %g4,2,%g4
+ xor %g3,%g5,%g5
+ srl %i5,19,%g3
+ xor %g4,%g5,%g5
+ srlx %g1,32,%g4 ! X[i]
+ xor %g3,%g5,%g5 ! sigma1(X[i+14])
+ add %o2,%g2,%g2 ! +=X[i+9]
+ add %g5,%g4,%g4
+ srl %g1,0,%g1
+ add %g4,%g2,%g2
+
+ sllx %g2,32,%g3
+ or %g3,%g1,%g1
+ add %l3,%g2,%g2
+ srl %l0,6,%l3 !! 28
+ xor %l1,%l2,%g5
+ sll %l0,7,%g4
+ and %l0,%g5,%g5
+ srl %l0,11,%g3
+ xor %g4,%l3,%l3
+ sll %l0,21,%g4
+ xor %g3,%l3,%l3
+ srl %l0,25,%g3
+ xor %g4,%l3,%l3
+ sll %l0,26,%g4
+ xor %g3,%l3,%l3
+ xor %l2,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l3,%g3 ! Sigma1(e)
+
+ srl %l4,2,%l3
+ add %g5,%g2,%g2
+ ld [%i3+112],%g5 ! K[28]
+ sll %l4,10,%g4
+ add %g3,%g2,%g2
+ srl %l4,13,%g3
+ xor %g4,%l3,%l3
+ sll %l4,19,%g4
+ xor %g3,%l3,%l3
+ srl %l4,22,%g3
+ xor %g4,%l3,%l3
+ sll %l4,30,%g4
+ xor %g3,%l3,%l3
+ xor %g4,%l3,%l3 ! Sigma0(a)
+
+ or %l4,%l5,%g3
+ and %l4,%l5,%g4
+ and %l6,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[28]
+ add %g4,%l3,%l3
+
+ add %g2,%l7,%l7
+ add %g2,%l3,%l3
+ srlx %o7,32,%i5
+ srl %i5,3,%g2 !! Xupdate(29)
+ sll %i5,14,%g4
+ srl %i5,7,%g3
+ xor %g4,%g2,%g2
+ sll %g4,11,%g4
+ xor %g3,%g2,%g2
+ srl %i5,18,%g3
+ xor %g4,%g2,%g2
+ srl %o5,10,%g5
+ xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
+ sll %o5,13,%g4
+ srl %o5,17,%g3
+ xor %g4,%g5,%g5
+ sll %g4,2,%g4
+ xor %g3,%g5,%g5
+ srl %o5,19,%g3
+ xor %g4,%g5,%g5
+ srlx %o3,32,%g4 ! X[i+9]
+ xor %g3,%g5,%g5 ! sigma1(X[i+14])
+ srl %g1,0,%g3
+ add %g5,%g4,%g4
+ add %g1,%g2,%g2 ! +=X[i]
+ xor %g3,%g1,%g1
+ add %g4,%g2,%g2
+
+ srl %g2,0,%g2
+ or %g2,%g1,%g1
+ add %l2,%g2,%g2
+ srl %l7,6,%l2 !! 29
+ xor %l0,%l1,%g5
+ sll %l7,7,%g4
+ and %l7,%g5,%g5
+ srl %l7,11,%g3
+ xor %g4,%l2,%l2
+ sll %l7,21,%g4
+ xor %g3,%l2,%l2
+ srl %l7,25,%g3
+ xor %g4,%l2,%l2
+ sll %l7,26,%g4
+ xor %g3,%l2,%l2
+ xor %l1,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l2,%g3 ! Sigma1(e)
+
+ srl %l3,2,%l2
+ add %g5,%g2,%g2
+ ld [%i3+116],%g5 ! K[29]
+ sll %l3,10,%g4
+ add %g3,%g2,%g2
+ srl %l3,13,%g3
+ xor %g4,%l2,%l2
+ sll %l3,19,%g4
+ xor %g3,%l2,%l2
+ srl %l3,22,%g3
+ xor %g4,%l2,%l2
+ sll %l3,30,%g4
+ xor %g3,%l2,%l2
+ xor %g4,%l2,%l2 ! Sigma0(a)
+
+ or %l3,%l4,%g3
+ and %l3,%l4,%g4
+ and %l5,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[29]
+ add %g4,%l2,%l2
+
+ add %g2,%l6,%l6
+ add %g2,%l2,%l2
+ srl %o7,3,%g2 !! Xupdate(30)
+ sll %o7,14,%g4
+ srl %o7,7,%g3
+ xor %g4,%g2,%g2
+ sll %g4,11,%g4
+ xor %g3,%g2,%g2
+ srl %o7,18,%g3
+ xor %g4,%g2,%g2
+ srlx %g1,32,%i5
+ srl %i5,10,%g5
+ xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
+ sll %i5,13,%g4
+ srl %i5,17,%g3
+ xor %g4,%g5,%g5
+ sll %g4,2,%g4
+ xor %g3,%g5,%g5
+ srl %i5,19,%g3
+ xor %g4,%g5,%g5
+ srlx %o7,32,%g4 ! X[i]
+ xor %g3,%g5,%g5 ! sigma1(X[i+14])
+ add %o3,%g2,%g2 ! +=X[i+9]
+ add %g5,%g4,%g4
+ srl %o7,0,%o7
+ add %g4,%g2,%g2
+
+ sllx %g2,32,%g3
+ or %g3,%o7,%o7
+ add %l1,%g2,%g2
+ srl %l6,6,%l1 !! 30
+ xor %l7,%l0,%g5
+ sll %l6,7,%g4
+ and %l6,%g5,%g5
+ srl %l6,11,%g3
+ xor %g4,%l1,%l1
+ sll %l6,21,%g4
+ xor %g3,%l1,%l1
+ srl %l6,25,%g3
+ xor %g4,%l1,%l1
+ sll %l6,26,%g4
+ xor %g3,%l1,%l1
+ xor %l0,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l1,%g3 ! Sigma1(e)
+
+ srl %l2,2,%l1
+ add %g5,%g2,%g2
+ ld [%i3+120],%g5 ! K[30]
+ sll %l2,10,%g4
+ add %g3,%g2,%g2
+ srl %l2,13,%g3
+ xor %g4,%l1,%l1
+ sll %l2,19,%g4
+ xor %g3,%l1,%l1
+ srl %l2,22,%g3
+ xor %g4,%l1,%l1
+ sll %l2,30,%g4
+ xor %g3,%l1,%l1
+ xor %g4,%l1,%l1 ! Sigma0(a)
+
+ or %l2,%l3,%g3
+ and %l2,%l3,%g4
+ and %l4,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[30]
+ add %g4,%l1,%l1
+
+ add %g2,%l5,%l5
+ add %g2,%l1,%l1
+ srlx %o0,32,%i5
+ srl %i5,3,%g2 !! Xupdate(31)
+ sll %i5,14,%g4
+ srl %i5,7,%g3
+ xor %g4,%g2,%g2
+ sll %g4,11,%g4
+ xor %g3,%g2,%g2
+ srl %i5,18,%g3
+ xor %g4,%g2,%g2
+ srl %g1,10,%g5
+ xor %g3,%g2,%g2 ! T1=sigma0(X[i+1])
+ sll %g1,13,%g4
+ srl %g1,17,%g3
+ xor %g4,%g5,%g5
+ sll %g4,2,%g4
+ xor %g3,%g5,%g5
+ srl %g1,19,%g3
+ xor %g4,%g5,%g5
+ srlx %o4,32,%g4 ! X[i+9]
+ xor %g3,%g5,%g5 ! sigma1(X[i+14])
+ srl %o7,0,%g3
+ add %g5,%g4,%g4
+ add %o7,%g2,%g2 ! +=X[i]
+ xor %g3,%o7,%o7
+ add %g4,%g2,%g2
+
+ srl %g2,0,%g2
+ or %g2,%o7,%o7
+ add %l0,%g2,%g2
+ srl %l5,6,%l0 !! 31
+ xor %l6,%l7,%g5
+ sll %l5,7,%g4
+ and %l5,%g5,%g5
+ srl %l5,11,%g3
+ xor %g4,%l0,%l0
+ sll %l5,21,%g4
+ xor %g3,%l0,%l0
+ srl %l5,25,%g3
+ xor %g4,%l0,%l0
+ sll %l5,26,%g4
+ xor %g3,%l0,%l0
+ xor %l7,%g5,%g5 ! Ch(e,f,g)
+ xor %g4,%l0,%g3 ! Sigma1(e)
+
+ srl %l1,2,%l0
+ add %g5,%g2,%g2
+ ld [%i3+124],%g5 ! K[31]
+ sll %l1,10,%g4
+ add %g3,%g2,%g2
+ srl %l1,13,%g3
+ xor %g4,%l0,%l0
+ sll %l1,19,%g4
+ xor %g3,%l0,%l0
+ srl %l1,22,%g3
+ xor %g4,%l0,%l0
+ sll %l1,30,%g4
+ xor %g3,%l0,%l0
+ xor %g4,%l0,%l0 ! Sigma0(a)
+
+ or %l1,%l2,%g3
+ and %l1,%l2,%g4
+ and %l3,%g3,%g3
+ or %g3,%g4,%g4 ! Maj(a,b,c)
+ add %g5,%g2,%g2 ! +=K[31]
+ add %g4,%l0,%l0
+
+ add %g2,%l4,%l4
+ add %g2,%l0,%l0
+ and %g5,0xfff,%g5
+ cmp %g5,2290
+ bne .L16_xx
+ add %i3,64,%i3 ! Ktbl+=16
+
+ ld [%i0+0],%o0
+ ld [%i0+4],%o1
+ ld [%i0+8],%o2
+ ld [%i0+12],%o3
+ ld [%i0+16],%o4
+ ld [%i0+20],%o5
+ ld [%i0+24],%g1
+ ld [%i0+28],%o7
+
+ add %l0,%o0,%l0
+ st %l0,[%i0+0]
+ add %l1,%o1,%l1
+ st %l1,[%i0+4]
+ add %l2,%o2,%l2
+ st %l2,[%i0+8]
+ add %l3,%o3,%l3
+ st %l3,[%i0+12]
+ add %l4,%o4,%l4
+ st %l4,[%i0+16]
+ add %l5,%o5,%l5
+ st %l5,[%i0+20]
+ add %l6,%g1,%l6
+ st %l6,[%i0+24]
+ add %l7,%o7,%l7
+ st %l7,[%i0+28]
+ add %i1,64,%i1 ! advance inp
+ cmp %i1,%i2
+ bne SIZE_T_CC,.Lloop
+ sub %i3,192,%i3 ! rewind Ktbl
+
+ ret
+ restore
+.type sha256_block_data_order,#function
+.size sha256_block_data_order,(.-sha256_block_data_order)
+.asciz "SHA256 block transform for SPARCv9, CRYPTOGAMS by <[email protected]>"
+.align 4