2012-08-19 17:11:37 -07:00
# include < l i n u x / l i n k a g e . h >
# include < a s m / v i s a s m . h >
2012-08-31 12:11:51 -07:00
# include " o p c o d e s . h "
2012-08-19 17:11:37 -07:00
ENTRY( s h a25 6 _ s p a r c64 _ t r a n s f o r m )
/* %o0 = digest, %o1 = data, %o2 = rounds */
VISEntryHalf
ld [ % o 0 + 0 x00 ] , % f0
ld [ % o 0 + 0 x04 ] , % f1
ld [ % o 0 + 0 x08 ] , % f2
ld [ % o 0 + 0 x0 c ] , % f3
ld [ % o 0 + 0 x10 ] , % f4
ld [ % o 0 + 0 x14 ] , % f5
andcc % o 1 , 0 x7 , % g 0
ld [ % o 0 + 0 x18 ] , % f6
bne,p n % x c c , 1 0 f
ld [ % o 0 + 0 x1 c ] , % f7
1 :
ldd [ % o 1 + 0 x00 ] , % f8
ldd [ % o 1 + 0 x08 ] , % f10
ldd [ % o 1 + 0 x10 ] , % f12
ldd [ % o 1 + 0 x18 ] , % f14
ldd [ % o 1 + 0 x20 ] , % f16
ldd [ % o 1 + 0 x28 ] , % f18
ldd [ % o 1 + 0 x30 ] , % f20
ldd [ % o 1 + 0 x38 ] , % f22
2012-08-31 12:11:51 -07:00
SHA2 5 6
2012-08-19 17:11:37 -07:00
subcc % o 2 , 1 , % o 2
bne,p t % x c c , 1 b
add % o 1 , 0 x40 , % o 1
5 :
st % f0 , [ % o 0 + 0 x00 ]
st % f1 , [ % o 0 + 0 x04 ]
st % f2 , [ % o 0 + 0 x08 ]
st % f3 , [ % o 0 + 0 x0 c ]
st % f4 , [ % o 0 + 0 x10 ]
st % f5 , [ % o 0 + 0 x14 ]
st % f6 , [ % o 0 + 0 x18 ]
st % f7 , [ % o 0 + 0 x1 c ]
retl
VISExitHalf
10 :
alignaddr % o 1 , % g 0 , % o 1
ldd [ % o 1 + 0 x00 ] , % f10
1 :
ldd [ % o 1 + 0 x08 ] , % f12
ldd [ % o 1 + 0 x10 ] , % f14
ldd [ % o 1 + 0 x18 ] , % f16
ldd [ % o 1 + 0 x20 ] , % f18
ldd [ % o 1 + 0 x28 ] , % f20
ldd [ % o 1 + 0 x30 ] , % f22
ldd [ % o 1 + 0 x38 ] , % f24
ldd [ % o 1 + 0 x40 ] , % f26
faligndata % f10 , % f12 , % f8
faligndata % f12 , % f14 , % f10
faligndata % f14 , % f16 , % f12
faligndata % f16 , % f18 , % f14
faligndata % f18 , % f20 , % f16
faligndata % f20 , % f22 , % f18
faligndata % f22 , % f24 , % f20
faligndata % f24 , % f26 , % f22
2012-08-31 12:11:51 -07:00
SHA2 5 6
2012-08-19 17:11:37 -07:00
subcc % o 2 , 1 , % o 2
2012-08-28 20:55:19 -07:00
fsrc2 % f26 , % f10
2012-08-19 17:11:37 -07:00
bne,p t % x c c , 1 b
add % o 1 , 0 x40 , % o 1
ba,a ,p t % x c c , 5 b
ENDPROC( s h a25 6 _ s p a r c64 _ t r a n s f o r m )