14
14
#define REGTMP3 R18
15
15
#define REGTMP4 R7
16
16
#define REGTMP5 R6
17
+ #define REG_KT R19
17
18
18
19
// W[i] = M[i]; for 0 <= i <= 15
19
20
#define LOAD0(index) \
52
53
// Ch(x, y, z) = (x AND y) XOR (NOT x AND z)
53
54
// = ((y XOR z) AND x) XOR z
54
55
// Calculate T1 in REGTMP4
55
- #define SHA512T1(const, e, f, g, h) \
56
- ADDV $const, h; \
56
+ #define SHA512T1(index, e, f, g, h) \
57
+ MOVV (index*8 )(REG_KT), REGTMP5; \
58
+ ADDV REGTMP5, h; \
57
59
ADDV REGTMP4, h; \
58
60
ROTRV $14 , e, REGTMP5; \
59
61
ROTRV $18 , e, REGTMP; \
85
87
86
88
// Calculate T1 and T2, then e = d + T1 and a = T1 + T2.
87
89
// The values for e and a are stored in d and h, ready for rotation.
88
- #define SHA512ROUND(const , a, b, c, d, e, f, g, h) \
89
- SHA512T1(const , e, f, g, h); \
90
+ #define SHA512ROUND(index , a, b, c, d, e, f, g, h) \
91
+ SHA512T1(index , e, f, g, h); \
90
92
SHA512T2(a, b, c); \
91
93
ADDV REGTMP4, d; \
92
94
ADDV REGTMP1, REGTMP4, h
93
95
94
- #define SHA512ROUND0(index, const, a, b, c, d, e, f, g, h) \
96
+ #define SHA512ROUND0(index, a, b, c, d, e, f, g, h) \
95
97
LOAD0(index); \
96
- SHA512ROUND(const , a, b, c, d, e, f, g, h)
98
+ SHA512ROUND(index , a, b, c, d, e, f, g, h)
97
99
98
- #define SHA512ROUND1(index, const, a, b, c, d, e, f, g, h) \
100
+ #define SHA512ROUND1(index, a, b, c, d, e, f, g, h) \
99
101
LOAD1(index); \
100
- SHA512ROUND(const , a, b, c, d, e, f, g, h)
102
+ SHA512ROUND(index , a, b, c, d, e, f, g, h)
101
103
102
104
// A stack frame size of 128 bytes is required here, because
103
105
// the frame size used for data expansion is 128 bytes.
@@ -110,6 +112,8 @@ TEXT ·block(SB),NOSPLIT,$128-32
110
112
AND $~127 , R6
111
113
BEQ R6, end
112
114
115
+ MOVV $·_K(SB), REG_KT // const table
116
+
113
117
// p_len >= 128
114
118
MOVV dig+0 (FP), R4
115
119
ADDV R5, R6, R25
@@ -123,87 +127,87 @@ TEXT ·block(SB),NOSPLIT,$128-32
123
127
MOVV (7*8 )(R4), R15 // h = H7
124
128
125
129
loop:
126
- SHA512ROUND0( 0 , 0x428a2f98d728ae22 , R8, R9, R10, R11, R12, R13, R14, R15)
127
- SHA512ROUND0( 1 , 0x7137449123ef65cd , R15, R8, R9, R10, R11, R12, R13, R14)
128
- SHA512ROUND0( 2 , 0xb5c0fbcfec4d3b2f , R14, R15, R8, R9, R10, R11, R12, R13)
129
- SHA512ROUND0( 3 , 0xe9b5dba58189dbbc , R13, R14, R15, R8, R9, R10, R11, R12)
130
- SHA512ROUND0( 4 , 0x3956c25bf348b538 , R12, R13, R14, R15, R8, R9, R10, R11)
131
- SHA512ROUND0( 5 , 0x59f111f1b605d019 , R11, R12, R13, R14, R15, R8, R9, R10)
132
- SHA512ROUND0( 6 , 0x923f82a4af194f9b , R10, R11, R12, R13, R14, R15, R8, R9)
133
- SHA512ROUND0( 7 , 0xab1c5ed5da6d8118 , R9, R10, R11, R12, R13, R14, R15, R8)
134
- SHA512ROUND0( 8 , 0xd807aa98a3030242 , R8, R9, R10, R11, R12, R13, R14, R15)
135
- SHA512ROUND0( 9 , 0x12835b0145706fbe , R15, R8, R9, R10, R11, R12, R13, R14)
136
- SHA512ROUND0(10 , 0x243185be4ee4b28c , R14, R15, R8, R9, R10, R11, R12, R13)
137
- SHA512ROUND0(11 , 0x550c7dc3d5ffb4e2 , R13, R14, R15, R8, R9, R10, R11, R12)
138
- SHA512ROUND0(12 , 0x72be5d74f27b896f , R12, R13, R14, R15, R8, R9, R10, R11)
139
- SHA512ROUND0(13 , 0x80deb1fe3b1696b1 , R11, R12, R13, R14, R15, R8, R9, R10)
140
- SHA512ROUND0(14 , 0x9bdc06a725c71235 , R10, R11, R12, R13, R14, R15, R8, R9)
141
- SHA512ROUND0(15 , 0xc19bf174cf692694 , R9, R10, R11, R12, R13, R14, R15, R8)
142
-
143
- SHA512ROUND1(16 , 0xe49b69c19ef14ad2 , R8, R9, R10, R11, R12, R13, R14, R15)
144
- SHA512ROUND1(17 , 0xefbe4786384f25e3 , R15, R8, R9, R10, R11, R12, R13, R14)
145
- SHA512ROUND1(18 , 0x0fc19dc68b8cd5b5 , R14, R15, R8, R9, R10, R11, R12, R13)
146
- SHA512ROUND1(19 , 0x240ca1cc77ac9c65 , R13, R14, R15, R8, R9, R10, R11, R12)
147
- SHA512ROUND1(20 , 0x2de92c6f592b0275 , R12, R13, R14, R15, R8, R9, R10, R11)
148
- SHA512ROUND1(21 , 0x4a7484aa6ea6e483 , R11, R12, R13, R14, R15, R8, R9, R10)
149
- SHA512ROUND1(22 , 0x5cb0a9dcbd41fbd4 , R10, R11, R12, R13, R14, R15, R8, R9)
150
- SHA512ROUND1(23 , 0x76f988da831153b5 , R9, R10, R11, R12, R13, R14, R15, R8)
151
- SHA512ROUND1(24 , 0x983e5152ee66dfab , R8, R9, R10, R11, R12, R13, R14, R15)
152
- SHA512ROUND1(25 , 0xa831c66d2db43210 , R15, R8, R9, R10, R11, R12, R13, R14)
153
- SHA512ROUND1(26 , 0xb00327c898fb213f , R14, R15, R8, R9, R10, R11, R12, R13)
154
- SHA512ROUND1(27 , 0xbf597fc7beef0ee4 , R13, R14, R15, R8, R9, R10, R11, R12)
155
- SHA512ROUND1(28 , 0xc6e00bf33da88fc2 , R12, R13, R14, R15, R8, R9, R10, R11)
156
- SHA512ROUND1(29 , 0xd5a79147930aa725 , R11, R12, R13, R14, R15, R8, R9, R10)
157
- SHA512ROUND1(30 , 0x06ca6351e003826f , R10, R11, R12, R13, R14, R15, R8, R9)
158
- SHA512ROUND1(31 , 0x142929670a0e6e70 , R9, R10, R11, R12, R13, R14, R15, R8)
159
- SHA512ROUND1(32 , 0x27b70a8546d22ffc , R8, R9, R10, R11, R12, R13, R14, R15)
160
- SHA512ROUND1(33 , 0x2e1b21385c26c926 , R15, R8, R9, R10, R11, R12, R13, R14)
161
- SHA512ROUND1(34 , 0x4d2c6dfc5ac42aed , R14, R15, R8, R9, R10, R11, R12, R13)
162
- SHA512ROUND1(35 , 0x53380d139d95b3df , R13, R14, R15, R8, R9, R10, R11, R12)
163
- SHA512ROUND1(36 , 0x650a73548baf63de , R12, R13, R14, R15, R8, R9, R10, R11)
164
- SHA512ROUND1(37 , 0x766a0abb3c77b2a8 , R11, R12, R13, R14, R15, R8, R9, R10)
165
- SHA512ROUND1(38 , 0x81c2c92e47edaee6 , R10, R11, R12, R13, R14, R15, R8, R9)
166
- SHA512ROUND1(39 , 0x92722c851482353b , R9, R10, R11, R12, R13, R14, R15, R8)
167
- SHA512ROUND1(40 , 0xa2bfe8a14cf10364 , R8, R9, R10, R11, R12, R13, R14, R15)
168
- SHA512ROUND1(41 , 0xa81a664bbc423001 , R15, R8, R9, R10, R11, R12, R13, R14)
169
- SHA512ROUND1(42 , 0xc24b8b70d0f89791 , R14, R15, R8, R9, R10, R11, R12, R13)
170
- SHA512ROUND1(43 , 0xc76c51a30654be30 , R13, R14, R15, R8, R9, R10, R11, R12)
171
- SHA512ROUND1(44 , 0xd192e819d6ef5218 , R12, R13, R14, R15, R8, R9, R10, R11)
172
- SHA512ROUND1(45 , 0xd69906245565a910 , R11, R12, R13, R14, R15, R8, R9, R10)
173
- SHA512ROUND1(46 , 0xf40e35855771202a , R10, R11, R12, R13, R14, R15, R8, R9)
174
- SHA512ROUND1(47 , 0x106aa07032bbd1b8 , R9, R10, R11, R12, R13, R14, R15, R8)
175
- SHA512ROUND1(48 , 0x19a4c116b8d2d0c8 , R8, R9, R10, R11, R12, R13, R14, R15)
176
- SHA512ROUND1(49 , 0x1e376c085141ab53 , R15, R8, R9, R10, R11, R12, R13, R14)
177
- SHA512ROUND1(50 , 0x2748774cdf8eeb99 , R14, R15, R8, R9, R10, R11, R12, R13)
178
- SHA512ROUND1(51 , 0x34b0bcb5e19b48a8 , R13, R14, R15, R8, R9, R10, R11, R12)
179
- SHA512ROUND1(52 , 0x391c0cb3c5c95a63 , R12, R13, R14, R15, R8, R9, R10, R11)
180
- SHA512ROUND1(53 , 0x4ed8aa4ae3418acb , R11, R12, R13, R14, R15, R8, R9, R10)
181
- SHA512ROUND1(54 , 0x5b9cca4f7763e373 , R10, R11, R12, R13, R14, R15, R8, R9)
182
- SHA512ROUND1(55 , 0x682e6ff3d6b2b8a3 , R9, R10, R11, R12, R13, R14, R15, R8)
183
- SHA512ROUND1(56 , 0x748f82ee5defb2fc , R8, R9, R10, R11, R12, R13, R14, R15)
184
- SHA512ROUND1(57 , 0x78a5636f43172f60 , R15, R8, R9, R10, R11, R12, R13, R14)
185
- SHA512ROUND1(58 , 0x84c87814a1f0ab72 , R14, R15, R8, R9, R10, R11, R12, R13)
186
- SHA512ROUND1(59 , 0x8cc702081a6439ec , R13, R14, R15, R8, R9, R10, R11, R12)
187
- SHA512ROUND1(60 , 0x90befffa23631e28 , R12, R13, R14, R15, R8, R9, R10, R11)
188
- SHA512ROUND1(61 , 0xa4506cebde82bde9 , R11, R12, R13, R14, R15, R8, R9, R10)
189
- SHA512ROUND1(62 , 0xbef9a3f7b2c67915 , R10, R11, R12, R13, R14, R15, R8, R9)
190
- SHA512ROUND1(63 , 0xc67178f2e372532b , R9, R10, R11, R12, R13, R14, R15, R8)
191
- SHA512ROUND1(64 , 0xca273eceea26619c , R8, R9, R10, R11, R12, R13, R14, R15)
192
- SHA512ROUND1(65 , 0xd186b8c721c0c207 , R15, R8, R9, R10, R11, R12, R13, R14)
193
- SHA512ROUND1(66 , 0xeada7dd6cde0eb1e , R14, R15, R8, R9, R10, R11, R12, R13)
194
- SHA512ROUND1(67 , 0xf57d4f7fee6ed178 , R13, R14, R15, R8, R9, R10, R11, R12)
195
- SHA512ROUND1(68 , 0x06f067aa72176fba , R12, R13, R14, R15, R8, R9, R10, R11)
196
- SHA512ROUND1(69 , 0x0a637dc5a2c898a6 , R11, R12, R13, R14, R15, R8, R9, R10)
197
- SHA512ROUND1(70 , 0x113f9804bef90dae , R10, R11, R12, R13, R14, R15, R8, R9)
198
- SHA512ROUND1(71 , 0x1b710b35131c471b , R9, R10, R11, R12, R13, R14, R15, R8)
199
- SHA512ROUND1(72 , 0x28db77f523047d84 , R8, R9, R10, R11, R12, R13, R14, R15)
200
- SHA512ROUND1(73 , 0x32caab7b40c72493 , R15, R8, R9, R10, R11, R12, R13, R14)
201
- SHA512ROUND1(74 , 0x3c9ebe0a15c9bebc , R14, R15, R8, R9, R10, R11, R12, R13)
202
- SHA512ROUND1(75 , 0x431d67c49c100d4c , R13, R14, R15, R8, R9, R10, R11, R12)
203
- SHA512ROUND1(76 , 0x4cc5d4becb3e42b6 , R12, R13, R14, R15, R8, R9, R10, R11)
204
- SHA512ROUND1(77 , 0x597f299cfc657e2a , R11, R12, R13, R14, R15, R8, R9, R10)
205
- SHA512ROUND1(78 , 0x5fcb6fab3ad6faec , R10, R11, R12, R13, R14, R15, R8, R9)
206
- SHA512ROUND1(79 , 0x6c44198c4a475817 , R9, R10, R11, R12, R13, R14, R15, R8)
130
+ SHA512ROUND0( 0 , R8, R9, R10, R11, R12, R13, R14, R15)
131
+ SHA512ROUND0( 1 , R15, R8, R9, R10, R11, R12, R13, R14)
132
+ SHA512ROUND0( 2 , R14, R15, R8, R9, R10, R11, R12, R13)
133
+ SHA512ROUND0( 3 , R13, R14, R15, R8, R9, R10, R11, R12)
134
+ SHA512ROUND0( 4 , R12, R13, R14, R15, R8, R9, R10, R11)
135
+ SHA512ROUND0( 5 , R11, R12, R13, R14, R15, R8, R9, R10)
136
+ SHA512ROUND0( 6 , R10, R11, R12, R13, R14, R15, R8, R9)
137
+ SHA512ROUND0( 7 , R9, R10, R11, R12, R13, R14, R15, R8)
138
+ SHA512ROUND0( 8 , R8, R9, R10, R11, R12, R13, R14, R15)
139
+ SHA512ROUND0( 9 , R15, R8, R9, R10, R11, R12, R13, R14)
140
+ SHA512ROUND0(10 , R14, R15, R8, R9, R10, R11, R12, R13)
141
+ SHA512ROUND0(11 , R13, R14, R15, R8, R9, R10, R11, R12)
142
+ SHA512ROUND0(12 , R12, R13, R14, R15, R8, R9, R10, R11)
143
+ SHA512ROUND0(13 , R11, R12, R13, R14, R15, R8, R9, R10)
144
+ SHA512ROUND0(14 , R10, R11, R12, R13, R14, R15, R8, R9)
145
+ SHA512ROUND0(15 , R9, R10, R11, R12, R13, R14, R15, R8)
146
+
147
+ SHA512ROUND1(16 , R8, R9, R10, R11, R12, R13, R14, R15)
148
+ SHA512ROUND1(17 , R15, R8, R9, R10, R11, R12, R13, R14)
149
+ SHA512ROUND1(18 , R14, R15, R8, R9, R10, R11, R12, R13)
150
+ SHA512ROUND1(19 , R13, R14, R15, R8, R9, R10, R11, R12)
151
+ SHA512ROUND1(20 , R12, R13, R14, R15, R8, R9, R10, R11)
152
+ SHA512ROUND1(21 , R11, R12, R13, R14, R15, R8, R9, R10)
153
+ SHA512ROUND1(22 , R10, R11, R12, R13, R14, R15, R8, R9)
154
+ SHA512ROUND1(23 , R9, R10, R11, R12, R13, R14, R15, R8)
155
+ SHA512ROUND1(24 , R8, R9, R10, R11, R12, R13, R14, R15)
156
+ SHA512ROUND1(25 , R15, R8, R9, R10, R11, R12, R13, R14)
157
+ SHA512ROUND1(26 , R14, R15, R8, R9, R10, R11, R12, R13)
158
+ SHA512ROUND1(27 , R13, R14, R15, R8, R9, R10, R11, R12)
159
+ SHA512ROUND1(28 , R12, R13, R14, R15, R8, R9, R10, R11)
160
+ SHA512ROUND1(29 , R11, R12, R13, R14, R15, R8, R9, R10)
161
+ SHA512ROUND1(30 , R10, R11, R12, R13, R14, R15, R8, R9)
162
+ SHA512ROUND1(31 , R9, R10, R11, R12, R13, R14, R15, R8)
163
+ SHA512ROUND1(32 , R8, R9, R10, R11, R12, R13, R14, R15)
164
+ SHA512ROUND1(33 , R15, R8, R9, R10, R11, R12, R13, R14)
165
+ SHA512ROUND1(34 , R14, R15, R8, R9, R10, R11, R12, R13)
166
+ SHA512ROUND1(35 , R13, R14, R15, R8, R9, R10, R11, R12)
167
+ SHA512ROUND1(36 , R12, R13, R14, R15, R8, R9, R10, R11)
168
+ SHA512ROUND1(37 , R11, R12, R13, R14, R15, R8, R9, R10)
169
+ SHA512ROUND1(38 , R10, R11, R12, R13, R14, R15, R8, R9)
170
+ SHA512ROUND1(39 , R9, R10, R11, R12, R13, R14, R15, R8)
171
+ SHA512ROUND1(40 , R8, R9, R10, R11, R12, R13, R14, R15)
172
+ SHA512ROUND1(41 , R15, R8, R9, R10, R11, R12, R13, R14)
173
+ SHA512ROUND1(42 , R14, R15, R8, R9, R10, R11, R12, R13)
174
+ SHA512ROUND1(43 , R13, R14, R15, R8, R9, R10, R11, R12)
175
+ SHA512ROUND1(44 , R12, R13, R14, R15, R8, R9, R10, R11)
176
+ SHA512ROUND1(45 , R11, R12, R13, R14, R15, R8, R9, R10)
177
+ SHA512ROUND1(46 , R10, R11, R12, R13, R14, R15, R8, R9)
178
+ SHA512ROUND1(47 , R9, R10, R11, R12, R13, R14, R15, R8)
179
+ SHA512ROUND1(48 , R8, R9, R10, R11, R12, R13, R14, R15)
180
+ SHA512ROUND1(49 , R15, R8, R9, R10, R11, R12, R13, R14)
181
+ SHA512ROUND1(50 , R14, R15, R8, R9, R10, R11, R12, R13)
182
+ SHA512ROUND1(51 , R13, R14, R15, R8, R9, R10, R11, R12)
183
+ SHA512ROUND1(52 , R12, R13, R14, R15, R8, R9, R10, R11)
184
+ SHA512ROUND1(53 , R11, R12, R13, R14, R15, R8, R9, R10)
185
+ SHA512ROUND1(54 , R10, R11, R12, R13, R14, R15, R8, R9)
186
+ SHA512ROUND1(55 , R9, R10, R11, R12, R13, R14, R15, R8)
187
+ SHA512ROUND1(56 , R8, R9, R10, R11, R12, R13, R14, R15)
188
+ SHA512ROUND1(57 , R15, R8, R9, R10, R11, R12, R13, R14)
189
+ SHA512ROUND1(58 , R14, R15, R8, R9, R10, R11, R12, R13)
190
+ SHA512ROUND1(59 , R13, R14, R15, R8, R9, R10, R11, R12)
191
+ SHA512ROUND1(60 , R12, R13, R14, R15, R8, R9, R10, R11)
192
+ SHA512ROUND1(61 , R11, R12, R13, R14, R15, R8, R9, R10)
193
+ SHA512ROUND1(62 , R10, R11, R12, R13, R14, R15, R8, R9)
194
+ SHA512ROUND1(63 , R9, R10, R11, R12, R13, R14, R15, R8)
195
+ SHA512ROUND1(64 , R8, R9, R10, R11, R12, R13, R14, R15)
196
+ SHA512ROUND1(65 , R15, R8, R9, R10, R11, R12, R13, R14)
197
+ SHA512ROUND1(66 , R14, R15, R8, R9, R10, R11, R12, R13)
198
+ SHA512ROUND1(67 , R13, R14, R15, R8, R9, R10, R11, R12)
199
+ SHA512ROUND1(68 , R12, R13, R14, R15, R8, R9, R10, R11)
200
+ SHA512ROUND1(69 , R11, R12, R13, R14, R15, R8, R9, R10)
201
+ SHA512ROUND1(70 , R10, R11, R12, R13, R14, R15, R8, R9)
202
+ SHA512ROUND1(71 , R9, R10, R11, R12, R13, R14, R15, R8)
203
+ SHA512ROUND1(72 , R8, R9, R10, R11, R12, R13, R14, R15)
204
+ SHA512ROUND1(73 , R15, R8, R9, R10, R11, R12, R13, R14)
205
+ SHA512ROUND1(74 , R14, R15, R8, R9, R10, R11, R12, R13)
206
+ SHA512ROUND1(75 , R13, R14, R15, R8, R9, R10, R11, R12)
207
+ SHA512ROUND1(76 , R12, R13, R14, R15, R8, R9, R10, R11)
208
+ SHA512ROUND1(77 , R11, R12, R13, R14, R15, R8, R9, R10)
209
+ SHA512ROUND1(78 , R10, R11, R12, R13, R14, R15, R8, R9)
210
+ SHA512ROUND1(79 , R9, R10, R11, R12, R13, R14, R15, R8)
207
211
208
212
MOVV (0 *8 )(R4), REGTMP
209
213
MOVV (1*8 )(R4), REGTMP1
0 commit comments