OLD | NEW |
| (Empty) |
1 #if defined(__aarch64__) | |
2 #include <openssl/arm_arch.h> | |
3 | |
4 .text | |
5 | |
6 | |
7 .globl sha1_block_data_order | |
8 .hidden sha1_block_data_order | |
9 .type sha1_block_data_order,%function | |
10 .align 6 | |
11 sha1_block_data_order: | |
12 ldr x16,.LOPENSSL_armcap_P | |
13 adr x17,.LOPENSSL_armcap_P | |
14 add x16,x16,x17 | |
15 ldr w16,[x16] | |
16 tst w16,#ARMV8_SHA1 | |
17 b.ne .Lv8_entry | |
18 | |
19 stp x29,x30,[sp,#-96]! | |
20 add x29,sp,#0 | |
21 stp x19,x20,[sp,#16] | |
22 stp x21,x22,[sp,#32] | |
23 stp x23,x24,[sp,#48] | |
24 stp x25,x26,[sp,#64] | |
25 stp x27,x28,[sp,#80] | |
26 | |
27 ldp w20,w21,[x0] | |
28 ldp w22,w23,[x0,#8] | |
29 ldr w24,[x0,#16] | |
30 | |
31 .Loop: | |
32 ldr x3,[x1],#64 | |
33 movz w28,#0x7999 | |
34 sub x2,x2,#1 | |
35 movk w28,#0x5a82,lsl#16 | |
36 #ifdef __ARMEB__ | |
37 ror x3,x3,#32 | |
38 #else | |
39 rev32 x3,x3 | |
40 #endif | |
41 add w24,w24,w28 // warm it up | |
42 add w24,w24,w3 | |
43 lsr x4,x3,#32 | |
44 ldr x5,[x1,#-56] | |
45 bic w25,w23,w21 | |
46 and w26,w22,w21 | |
47 ror w27,w20,#27 | |
48 add w23,w23,w28 // future e+=K | |
49 orr w25,w25,w26 | |
50 add w24,w24,w27 // e+=rot(a,5) | |
51 ror w21,w21,#2 | |
52 add w23,w23,w4 // future e+=X[i] | |
53 add w24,w24,w25 // e+=F(b,c,d) | |
54 #ifdef __ARMEB__ | |
55 ror x5,x5,#32 | |
56 #else | |
57 rev32 x5,x5 | |
58 #endif | |
59 bic w25,w22,w20 | |
60 and w26,w21,w20 | |
61 ror w27,w24,#27 | |
62 add w22,w22,w28 // future e+=K | |
63 orr w25,w25,w26 | |
64 add w23,w23,w27 // e+=rot(a,5) | |
65 ror w20,w20,#2 | |
66 add w22,w22,w5 // future e+=X[i] | |
67 add w23,w23,w25 // e+=F(b,c,d) | |
68 lsr x6,x5,#32 | |
69 ldr x7,[x1,#-48] | |
70 bic w25,w21,w24 | |
71 and w26,w20,w24 | |
72 ror w27,w23,#27 | |
73 add w21,w21,w28 // future e+=K | |
74 orr w25,w25,w26 | |
75 add w22,w22,w27 // e+=rot(a,5) | |
76 ror w24,w24,#2 | |
77 add w21,w21,w6 // future e+=X[i] | |
78 add w22,w22,w25 // e+=F(b,c,d) | |
79 #ifdef __ARMEB__ | |
80 ror x7,x7,#32 | |
81 #else | |
82 rev32 x7,x7 | |
83 #endif | |
84 bic w25,w20,w23 | |
85 and w26,w24,w23 | |
86 ror w27,w22,#27 | |
87 add w20,w20,w28 // future e+=K | |
88 orr w25,w25,w26 | |
89 add w21,w21,w27 // e+=rot(a,5) | |
90 ror w23,w23,#2 | |
91 add w20,w20,w7 // future e+=X[i] | |
92 add w21,w21,w25 // e+=F(b,c,d) | |
93 lsr x8,x7,#32 | |
94 ldr x9,[x1,#-40] | |
95 bic w25,w24,w22 | |
96 and w26,w23,w22 | |
97 ror w27,w21,#27 | |
98 add w24,w24,w28 // future e+=K | |
99 orr w25,w25,w26 | |
100 add w20,w20,w27 // e+=rot(a,5) | |
101 ror w22,w22,#2 | |
102 add w24,w24,w8 // future e+=X[i] | |
103 add w20,w20,w25 // e+=F(b,c,d) | |
104 #ifdef __ARMEB__ | |
105 ror x9,x9,#32 | |
106 #else | |
107 rev32 x9,x9 | |
108 #endif | |
109 bic w25,w23,w21 | |
110 and w26,w22,w21 | |
111 ror w27,w20,#27 | |
112 add w23,w23,w28 // future e+=K | |
113 orr w25,w25,w26 | |
114 add w24,w24,w27 // e+=rot(a,5) | |
115 ror w21,w21,#2 | |
116 add w23,w23,w9 // future e+=X[i] | |
117 add w24,w24,w25 // e+=F(b,c,d) | |
118 lsr x10,x9,#32 | |
119 ldr x11,[x1,#-32] | |
120 bic w25,w22,w20 | |
121 and w26,w21,w20 | |
122 ror w27,w24,#27 | |
123 add w22,w22,w28 // future e+=K | |
124 orr w25,w25,w26 | |
125 add w23,w23,w27 // e+=rot(a,5) | |
126 ror w20,w20,#2 | |
127 add w22,w22,w10 // future e+=X[i] | |
128 add w23,w23,w25 // e+=F(b,c,d) | |
129 #ifdef __ARMEB__ | |
130 ror x11,x11,#32 | |
131 #else | |
132 rev32 x11,x11 | |
133 #endif | |
134 bic w25,w21,w24 | |
135 and w26,w20,w24 | |
136 ror w27,w23,#27 | |
137 add w21,w21,w28 // future e+=K | |
138 orr w25,w25,w26 | |
139 add w22,w22,w27 // e+=rot(a,5) | |
140 ror w24,w24,#2 | |
141 add w21,w21,w11 // future e+=X[i] | |
142 add w22,w22,w25 // e+=F(b,c,d) | |
143 lsr x12,x11,#32 | |
144 ldr x13,[x1,#-24] | |
145 bic w25,w20,w23 | |
146 and w26,w24,w23 | |
147 ror w27,w22,#27 | |
148 add w20,w20,w28 // future e+=K | |
149 orr w25,w25,w26 | |
150 add w21,w21,w27 // e+=rot(a,5) | |
151 ror w23,w23,#2 | |
152 add w20,w20,w12 // future e+=X[i] | |
153 add w21,w21,w25 // e+=F(b,c,d) | |
154 #ifdef __ARMEB__ | |
155 ror x13,x13,#32 | |
156 #else | |
157 rev32 x13,x13 | |
158 #endif | |
159 bic w25,w24,w22 | |
160 and w26,w23,w22 | |
161 ror w27,w21,#27 | |
162 add w24,w24,w28 // future e+=K | |
163 orr w25,w25,w26 | |
164 add w20,w20,w27 // e+=rot(a,5) | |
165 ror w22,w22,#2 | |
166 add w24,w24,w13 // future e+=X[i] | |
167 add w20,w20,w25 // e+=F(b,c,d) | |
168 lsr x14,x13,#32 | |
169 ldr x15,[x1,#-16] | |
170 bic w25,w23,w21 | |
171 and w26,w22,w21 | |
172 ror w27,w20,#27 | |
173 add w23,w23,w28 // future e+=K | |
174 orr w25,w25,w26 | |
175 add w24,w24,w27 // e+=rot(a,5) | |
176 ror w21,w21,#2 | |
177 add w23,w23,w14 // future e+=X[i] | |
178 add w24,w24,w25 // e+=F(b,c,d) | |
179 #ifdef __ARMEB__ | |
180 ror x15,x15,#32 | |
181 #else | |
182 rev32 x15,x15 | |
183 #endif | |
184 bic w25,w22,w20 | |
185 and w26,w21,w20 | |
186 ror w27,w24,#27 | |
187 add w22,w22,w28 // future e+=K | |
188 orr w25,w25,w26 | |
189 add w23,w23,w27 // e+=rot(a,5) | |
190 ror w20,w20,#2 | |
191 add w22,w22,w15 // future e+=X[i] | |
192 add w23,w23,w25 // e+=F(b,c,d) | |
193 lsr x16,x15,#32 | |
194 ldr x17,[x1,#-8] | |
195 bic w25,w21,w24 | |
196 and w26,w20,w24 | |
197 ror w27,w23,#27 | |
198 add w21,w21,w28 // future e+=K | |
199 orr w25,w25,w26 | |
200 add w22,w22,w27 // e+=rot(a,5) | |
201 ror w24,w24,#2 | |
202 add w21,w21,w16 // future e+=X[i] | |
203 add w22,w22,w25 // e+=F(b,c,d) | |
204 #ifdef __ARMEB__ | |
205 ror x17,x17,#32 | |
206 #else | |
207 rev32 x17,x17 | |
208 #endif | |
209 bic w25,w20,w23 | |
210 and w26,w24,w23 | |
211 ror w27,w22,#27 | |
212 add w20,w20,w28 // future e+=K | |
213 orr w25,w25,w26 | |
214 add w21,w21,w27 // e+=rot(a,5) | |
215 ror w23,w23,#2 | |
216 add w20,w20,w17 // future e+=X[i] | |
217 add w21,w21,w25 // e+=F(b,c,d) | |
218 lsr x19,x17,#32 | |
219 eor w3,w3,w5 | |
220 bic w25,w24,w22 | |
221 and w26,w23,w22 | |
222 ror w27,w21,#27 | |
223 eor w3,w3,w11 | |
224 add w24,w24,w28 // future e+=K | |
225 orr w25,w25,w26 | |
226 add w20,w20,w27 // e+=rot(a,5) | |
227 eor w3,w3,w16 | |
228 ror w22,w22,#2 | |
229 add w24,w24,w19 // future e+=X[i] | |
230 add w20,w20,w25 // e+=F(b,c,d) | |
231 ror w3,w3,#31 | |
232 eor w4,w4,w6 | |
233 bic w25,w23,w21 | |
234 and w26,w22,w21 | |
235 ror w27,w20,#27 | |
236 eor w4,w4,w12 | |
237 add w23,w23,w28 // future e+=K | |
238 orr w25,w25,w26 | |
239 add w24,w24,w27 // e+=rot(a,5) | |
240 eor w4,w4,w17 | |
241 ror w21,w21,#2 | |
242 add w23,w23,w3 // future e+=X[i] | |
243 add w24,w24,w25 // e+=F(b,c,d) | |
244 ror w4,w4,#31 | |
245 eor w5,w5,w7 | |
246 bic w25,w22,w20 | |
247 and w26,w21,w20 | |
248 ror w27,w24,#27 | |
249 eor w5,w5,w13 | |
250 add w22,w22,w28 // future e+=K | |
251 orr w25,w25,w26 | |
252 add w23,w23,w27 // e+=rot(a,5) | |
253 eor w5,w5,w19 | |
254 ror w20,w20,#2 | |
255 add w22,w22,w4 // future e+=X[i] | |
256 add w23,w23,w25 // e+=F(b,c,d) | |
257 ror w5,w5,#31 | |
258 eor w6,w6,w8 | |
259 bic w25,w21,w24 | |
260 and w26,w20,w24 | |
261 ror w27,w23,#27 | |
262 eor w6,w6,w14 | |
263 add w21,w21,w28 // future e+=K | |
264 orr w25,w25,w26 | |
265 add w22,w22,w27 // e+=rot(a,5) | |
266 eor w6,w6,w3 | |
267 ror w24,w24,#2 | |
268 add w21,w21,w5 // future e+=X[i] | |
269 add w22,w22,w25 // e+=F(b,c,d) | |
270 ror w6,w6,#31 | |
271 eor w7,w7,w9 | |
272 bic w25,w20,w23 | |
273 and w26,w24,w23 | |
274 ror w27,w22,#27 | |
275 eor w7,w7,w15 | |
276 add w20,w20,w28 // future e+=K | |
277 orr w25,w25,w26 | |
278 add w21,w21,w27 // e+=rot(a,5) | |
279 eor w7,w7,w4 | |
280 ror w23,w23,#2 | |
281 add w20,w20,w6 // future e+=X[i] | |
282 add w21,w21,w25 // e+=F(b,c,d) | |
283 ror w7,w7,#31 | |
284 movz w28,#0xeba1 | |
285 movk w28,#0x6ed9,lsl#16 | |
286 eor w8,w8,w10 | |
287 bic w25,w24,w22 | |
288 and w26,w23,w22 | |
289 ror w27,w21,#27 | |
290 eor w8,w8,w16 | |
291 add w24,w24,w28 // future e+=K | |
292 orr w25,w25,w26 | |
293 add w20,w20,w27 // e+=rot(a,5) | |
294 eor w8,w8,w5 | |
295 ror w22,w22,#2 | |
296 add w24,w24,w7 // future e+=X[i] | |
297 add w20,w20,w25 // e+=F(b,c,d) | |
298 ror w8,w8,#31 | |
299 eor w9,w9,w11 | |
300 eor w25,w23,w21 | |
301 ror w27,w20,#27 | |
302 add w23,w23,w28 // future e+=K | |
303 eor w9,w9,w17 | |
304 eor w25,w25,w22 | |
305 add w24,w24,w27 // e+=rot(a,5) | |
306 ror w21,w21,#2 | |
307 eor w9,w9,w6 | |
308 add w23,w23,w8 // future e+=X[i] | |
309 add w24,w24,w25 // e+=F(b,c,d) | |
310 ror w9,w9,#31 | |
311 eor w10,w10,w12 | |
312 eor w25,w22,w20 | |
313 ror w27,w24,#27 | |
314 add w22,w22,w28 // future e+=K | |
315 eor w10,w10,w19 | |
316 eor w25,w25,w21 | |
317 add w23,w23,w27 // e+=rot(a,5) | |
318 ror w20,w20,#2 | |
319 eor w10,w10,w7 | |
320 add w22,w22,w9 // future e+=X[i] | |
321 add w23,w23,w25 // e+=F(b,c,d) | |
322 ror w10,w10,#31 | |
323 eor w11,w11,w13 | |
324 eor w25,w21,w24 | |
325 ror w27,w23,#27 | |
326 add w21,w21,w28 // future e+=K | |
327 eor w11,w11,w3 | |
328 eor w25,w25,w20 | |
329 add w22,w22,w27 // e+=rot(a,5) | |
330 ror w24,w24,#2 | |
331 eor w11,w11,w8 | |
332 add w21,w21,w10 // future e+=X[i] | |
333 add w22,w22,w25 // e+=F(b,c,d) | |
334 ror w11,w11,#31 | |
335 eor w12,w12,w14 | |
336 eor w25,w20,w23 | |
337 ror w27,w22,#27 | |
338 add w20,w20,w28 // future e+=K | |
339 eor w12,w12,w4 | |
340 eor w25,w25,w24 | |
341 add w21,w21,w27 // e+=rot(a,5) | |
342 ror w23,w23,#2 | |
343 eor w12,w12,w9 | |
344 add w20,w20,w11 // future e+=X[i] | |
345 add w21,w21,w25 // e+=F(b,c,d) | |
346 ror w12,w12,#31 | |
347 eor w13,w13,w15 | |
348 eor w25,w24,w22 | |
349 ror w27,w21,#27 | |
350 add w24,w24,w28 // future e+=K | |
351 eor w13,w13,w5 | |
352 eor w25,w25,w23 | |
353 add w20,w20,w27 // e+=rot(a,5) | |
354 ror w22,w22,#2 | |
355 eor w13,w13,w10 | |
356 add w24,w24,w12 // future e+=X[i] | |
357 add w20,w20,w25 // e+=F(b,c,d) | |
358 ror w13,w13,#31 | |
359 eor w14,w14,w16 | |
360 eor w25,w23,w21 | |
361 ror w27,w20,#27 | |
362 add w23,w23,w28 // future e+=K | |
363 eor w14,w14,w6 | |
364 eor w25,w25,w22 | |
365 add w24,w24,w27 // e+=rot(a,5) | |
366 ror w21,w21,#2 | |
367 eor w14,w14,w11 | |
368 add w23,w23,w13 // future e+=X[i] | |
369 add w24,w24,w25 // e+=F(b,c,d) | |
370 ror w14,w14,#31 | |
371 eor w15,w15,w17 | |
372 eor w25,w22,w20 | |
373 ror w27,w24,#27 | |
374 add w22,w22,w28 // future e+=K | |
375 eor w15,w15,w7 | |
376 eor w25,w25,w21 | |
377 add w23,w23,w27 // e+=rot(a,5) | |
378 ror w20,w20,#2 | |
379 eor w15,w15,w12 | |
380 add w22,w22,w14 // future e+=X[i] | |
381 add w23,w23,w25 // e+=F(b,c,d) | |
382 ror w15,w15,#31 | |
383 eor w16,w16,w19 | |
384 eor w25,w21,w24 | |
385 ror w27,w23,#27 | |
386 add w21,w21,w28 // future e+=K | |
387 eor w16,w16,w8 | |
388 eor w25,w25,w20 | |
389 add w22,w22,w27 // e+=rot(a,5) | |
390 ror w24,w24,#2 | |
391 eor w16,w16,w13 | |
392 add w21,w21,w15 // future e+=X[i] | |
393 add w22,w22,w25 // e+=F(b,c,d) | |
394 ror w16,w16,#31 | |
395 eor w17,w17,w3 | |
396 eor w25,w20,w23 | |
397 ror w27,w22,#27 | |
398 add w20,w20,w28 // future e+=K | |
399 eor w17,w17,w9 | |
400 eor w25,w25,w24 | |
401 add w21,w21,w27 // e+=rot(a,5) | |
402 ror w23,w23,#2 | |
403 eor w17,w17,w14 | |
404 add w20,w20,w16 // future e+=X[i] | |
405 add w21,w21,w25 // e+=F(b,c,d) | |
406 ror w17,w17,#31 | |
407 eor w19,w19,w4 | |
408 eor w25,w24,w22 | |
409 ror w27,w21,#27 | |
410 add w24,w24,w28 // future e+=K | |
411 eor w19,w19,w10 | |
412 eor w25,w25,w23 | |
413 add w20,w20,w27 // e+=rot(a,5) | |
414 ror w22,w22,#2 | |
415 eor w19,w19,w15 | |
416 add w24,w24,w17 // future e+=X[i] | |
417 add w20,w20,w25 // e+=F(b,c,d) | |
418 ror w19,w19,#31 | |
419 eor w3,w3,w5 | |
420 eor w25,w23,w21 | |
421 ror w27,w20,#27 | |
422 add w23,w23,w28 // future e+=K | |
423 eor w3,w3,w11 | |
424 eor w25,w25,w22 | |
425 add w24,w24,w27 // e+=rot(a,5) | |
426 ror w21,w21,#2 | |
427 eor w3,w3,w16 | |
428 add w23,w23,w19 // future e+=X[i] | |
429 add w24,w24,w25 // e+=F(b,c,d) | |
430 ror w3,w3,#31 | |
431 eor w4,w4,w6 | |
432 eor w25,w22,w20 | |
433 ror w27,w24,#27 | |
434 add w22,w22,w28 // future e+=K | |
435 eor w4,w4,w12 | |
436 eor w25,w25,w21 | |
437 add w23,w23,w27 // e+=rot(a,5) | |
438 ror w20,w20,#2 | |
439 eor w4,w4,w17 | |
440 add w22,w22,w3 // future e+=X[i] | |
441 add w23,w23,w25 // e+=F(b,c,d) | |
442 ror w4,w4,#31 | |
443 eor w5,w5,w7 | |
444 eor w25,w21,w24 | |
445 ror w27,w23,#27 | |
446 add w21,w21,w28 // future e+=K | |
447 eor w5,w5,w13 | |
448 eor w25,w25,w20 | |
449 add w22,w22,w27 // e+=rot(a,5) | |
450 ror w24,w24,#2 | |
451 eor w5,w5,w19 | |
452 add w21,w21,w4 // future e+=X[i] | |
453 add w22,w22,w25 // e+=F(b,c,d) | |
454 ror w5,w5,#31 | |
455 eor w6,w6,w8 | |
456 eor w25,w20,w23 | |
457 ror w27,w22,#27 | |
458 add w20,w20,w28 // future e+=K | |
459 eor w6,w6,w14 | |
460 eor w25,w25,w24 | |
461 add w21,w21,w27 // e+=rot(a,5) | |
462 ror w23,w23,#2 | |
463 eor w6,w6,w3 | |
464 add w20,w20,w5 // future e+=X[i] | |
465 add w21,w21,w25 // e+=F(b,c,d) | |
466 ror w6,w6,#31 | |
467 eor w7,w7,w9 | |
468 eor w25,w24,w22 | |
469 ror w27,w21,#27 | |
470 add w24,w24,w28 // future e+=K | |
471 eor w7,w7,w15 | |
472 eor w25,w25,w23 | |
473 add w20,w20,w27 // e+=rot(a,5) | |
474 ror w22,w22,#2 | |
475 eor w7,w7,w4 | |
476 add w24,w24,w6 // future e+=X[i] | |
477 add w20,w20,w25 // e+=F(b,c,d) | |
478 ror w7,w7,#31 | |
479 eor w8,w8,w10 | |
480 eor w25,w23,w21 | |
481 ror w27,w20,#27 | |
482 add w23,w23,w28 // future e+=K | |
483 eor w8,w8,w16 | |
484 eor w25,w25,w22 | |
485 add w24,w24,w27 // e+=rot(a,5) | |
486 ror w21,w21,#2 | |
487 eor w8,w8,w5 | |
488 add w23,w23,w7 // future e+=X[i] | |
489 add w24,w24,w25 // e+=F(b,c,d) | |
490 ror w8,w8,#31 | |
491 eor w9,w9,w11 | |
492 eor w25,w22,w20 | |
493 ror w27,w24,#27 | |
494 add w22,w22,w28 // future e+=K | |
495 eor w9,w9,w17 | |
496 eor w25,w25,w21 | |
497 add w23,w23,w27 // e+=rot(a,5) | |
498 ror w20,w20,#2 | |
499 eor w9,w9,w6 | |
500 add w22,w22,w8 // future e+=X[i] | |
501 add w23,w23,w25 // e+=F(b,c,d) | |
502 ror w9,w9,#31 | |
503 eor w10,w10,w12 | |
504 eor w25,w21,w24 | |
505 ror w27,w23,#27 | |
506 add w21,w21,w28 // future e+=K | |
507 eor w10,w10,w19 | |
508 eor w25,w25,w20 | |
509 add w22,w22,w27 // e+=rot(a,5) | |
510 ror w24,w24,#2 | |
511 eor w10,w10,w7 | |
512 add w21,w21,w9 // future e+=X[i] | |
513 add w22,w22,w25 // e+=F(b,c,d) | |
514 ror w10,w10,#31 | |
515 eor w11,w11,w13 | |
516 eor w25,w20,w23 | |
517 ror w27,w22,#27 | |
518 add w20,w20,w28 // future e+=K | |
519 eor w11,w11,w3 | |
520 eor w25,w25,w24 | |
521 add w21,w21,w27 // e+=rot(a,5) | |
522 ror w23,w23,#2 | |
523 eor w11,w11,w8 | |
524 add w20,w20,w10 // future e+=X[i] | |
525 add w21,w21,w25 // e+=F(b,c,d) | |
526 ror w11,w11,#31 | |
527 movz w28,#0xbcdc | |
528 movk w28,#0x8f1b,lsl#16 | |
529 eor w12,w12,w14 | |
530 eor w25,w24,w22 | |
531 ror w27,w21,#27 | |
532 add w24,w24,w28 // future e+=K | |
533 eor w12,w12,w4 | |
534 eor w25,w25,w23 | |
535 add w20,w20,w27 // e+=rot(a,5) | |
536 ror w22,w22,#2 | |
537 eor w12,w12,w9 | |
538 add w24,w24,w11 // future e+=X[i] | |
539 add w20,w20,w25 // e+=F(b,c,d) | |
540 ror w12,w12,#31 | |
541 orr w25,w21,w22 | |
542 and w26,w21,w22 | |
543 eor w13,w13,w15 | |
544 ror w27,w20,#27 | |
545 and w25,w25,w23 | |
546 add w23,w23,w28 // future e+=K | |
547 eor w13,w13,w5 | |
548 add w24,w24,w27 // e+=rot(a,5) | |
549 orr w25,w25,w26 | |
550 ror w21,w21,#2 | |
551 eor w13,w13,w10 | |
552 add w23,w23,w12 // future e+=X[i] | |
553 add w24,w24,w25 // e+=F(b,c,d) | |
554 ror w13,w13,#31 | |
555 orr w25,w20,w21 | |
556 and w26,w20,w21 | |
557 eor w14,w14,w16 | |
558 ror w27,w24,#27 | |
559 and w25,w25,w22 | |
560 add w22,w22,w28 // future e+=K | |
561 eor w14,w14,w6 | |
562 add w23,w23,w27 // e+=rot(a,5) | |
563 orr w25,w25,w26 | |
564 ror w20,w20,#2 | |
565 eor w14,w14,w11 | |
566 add w22,w22,w13 // future e+=X[i] | |
567 add w23,w23,w25 // e+=F(b,c,d) | |
568 ror w14,w14,#31 | |
569 orr w25,w24,w20 | |
570 and w26,w24,w20 | |
571 eor w15,w15,w17 | |
572 ror w27,w23,#27 | |
573 and w25,w25,w21 | |
574 add w21,w21,w28 // future e+=K | |
575 eor w15,w15,w7 | |
576 add w22,w22,w27 // e+=rot(a,5) | |
577 orr w25,w25,w26 | |
578 ror w24,w24,#2 | |
579 eor w15,w15,w12 | |
580 add w21,w21,w14 // future e+=X[i] | |
581 add w22,w22,w25 // e+=F(b,c,d) | |
582 ror w15,w15,#31 | |
583 orr w25,w23,w24 | |
584 and w26,w23,w24 | |
585 eor w16,w16,w19 | |
586 ror w27,w22,#27 | |
587 and w25,w25,w20 | |
588 add w20,w20,w28 // future e+=K | |
589 eor w16,w16,w8 | |
590 add w21,w21,w27 // e+=rot(a,5) | |
591 orr w25,w25,w26 | |
592 ror w23,w23,#2 | |
593 eor w16,w16,w13 | |
594 add w20,w20,w15 // future e+=X[i] | |
595 add w21,w21,w25 // e+=F(b,c,d) | |
596 ror w16,w16,#31 | |
597 orr w25,w22,w23 | |
598 and w26,w22,w23 | |
599 eor w17,w17,w3 | |
600 ror w27,w21,#27 | |
601 and w25,w25,w24 | |
602 add w24,w24,w28 // future e+=K | |
603 eor w17,w17,w9 | |
604 add w20,w20,w27 // e+=rot(a,5) | |
605 orr w25,w25,w26 | |
606 ror w22,w22,#2 | |
607 eor w17,w17,w14 | |
608 add w24,w24,w16 // future e+=X[i] | |
609 add w20,w20,w25 // e+=F(b,c,d) | |
610 ror w17,w17,#31 | |
611 orr w25,w21,w22 | |
612 and w26,w21,w22 | |
613 eor w19,w19,w4 | |
614 ror w27,w20,#27 | |
615 and w25,w25,w23 | |
616 add w23,w23,w28 // future e+=K | |
617 eor w19,w19,w10 | |
618 add w24,w24,w27 // e+=rot(a,5) | |
619 orr w25,w25,w26 | |
620 ror w21,w21,#2 | |
621 eor w19,w19,w15 | |
622 add w23,w23,w17 // future e+=X[i] | |
623 add w24,w24,w25 // e+=F(b,c,d) | |
624 ror w19,w19,#31 | |
625 orr w25,w20,w21 | |
626 and w26,w20,w21 | |
627 eor w3,w3,w5 | |
628 ror w27,w24,#27 | |
629 and w25,w25,w22 | |
630 add w22,w22,w28 // future e+=K | |
631 eor w3,w3,w11 | |
632 add w23,w23,w27 // e+=rot(a,5) | |
633 orr w25,w25,w26 | |
634 ror w20,w20,#2 | |
635 eor w3,w3,w16 | |
636 add w22,w22,w19 // future e+=X[i] | |
637 add w23,w23,w25 // e+=F(b,c,d) | |
638 ror w3,w3,#31 | |
639 orr w25,w24,w20 | |
640 and w26,w24,w20 | |
641 eor w4,w4,w6 | |
642 ror w27,w23,#27 | |
643 and w25,w25,w21 | |
644 add w21,w21,w28 // future e+=K | |
645 eor w4,w4,w12 | |
646 add w22,w22,w27 // e+=rot(a,5) | |
647 orr w25,w25,w26 | |
648 ror w24,w24,#2 | |
649 eor w4,w4,w17 | |
650 add w21,w21,w3 // future e+=X[i] | |
651 add w22,w22,w25 // e+=F(b,c,d) | |
652 ror w4,w4,#31 | |
653 orr w25,w23,w24 | |
654 and w26,w23,w24 | |
655 eor w5,w5,w7 | |
656 ror w27,w22,#27 | |
657 and w25,w25,w20 | |
658 add w20,w20,w28 // future e+=K | |
659 eor w5,w5,w13 | |
660 add w21,w21,w27 // e+=rot(a,5) | |
661 orr w25,w25,w26 | |
662 ror w23,w23,#2 | |
663 eor w5,w5,w19 | |
664 add w20,w20,w4 // future e+=X[i] | |
665 add w21,w21,w25 // e+=F(b,c,d) | |
666 ror w5,w5,#31 | |
667 orr w25,w22,w23 | |
668 and w26,w22,w23 | |
669 eor w6,w6,w8 | |
670 ror w27,w21,#27 | |
671 and w25,w25,w24 | |
672 add w24,w24,w28 // future e+=K | |
673 eor w6,w6,w14 | |
674 add w20,w20,w27 // e+=rot(a,5) | |
675 orr w25,w25,w26 | |
676 ror w22,w22,#2 | |
677 eor w6,w6,w3 | |
678 add w24,w24,w5 // future e+=X[i] | |
679 add w20,w20,w25 // e+=F(b,c,d) | |
680 ror w6,w6,#31 | |
681 orr w25,w21,w22 | |
682 and w26,w21,w22 | |
683 eor w7,w7,w9 | |
684 ror w27,w20,#27 | |
685 and w25,w25,w23 | |
686 add w23,w23,w28 // future e+=K | |
687 eor w7,w7,w15 | |
688 add w24,w24,w27 // e+=rot(a,5) | |
689 orr w25,w25,w26 | |
690 ror w21,w21,#2 | |
691 eor w7,w7,w4 | |
692 add w23,w23,w6 // future e+=X[i] | |
693 add w24,w24,w25 // e+=F(b,c,d) | |
694 ror w7,w7,#31 | |
695 orr w25,w20,w21 | |
696 and w26,w20,w21 | |
697 eor w8,w8,w10 | |
698 ror w27,w24,#27 | |
699 and w25,w25,w22 | |
700 add w22,w22,w28 // future e+=K | |
701 eor w8,w8,w16 | |
702 add w23,w23,w27 // e+=rot(a,5) | |
703 orr w25,w25,w26 | |
704 ror w20,w20,#2 | |
705 eor w8,w8,w5 | |
706 add w22,w22,w7 // future e+=X[i] | |
707 add w23,w23,w25 // e+=F(b,c,d) | |
708 ror w8,w8,#31 | |
709 orr w25,w24,w20 | |
710 and w26,w24,w20 | |
711 eor w9,w9,w11 | |
712 ror w27,w23,#27 | |
713 and w25,w25,w21 | |
714 add w21,w21,w28 // future e+=K | |
715 eor w9,w9,w17 | |
716 add w22,w22,w27 // e+=rot(a,5) | |
717 orr w25,w25,w26 | |
718 ror w24,w24,#2 | |
719 eor w9,w9,w6 | |
720 add w21,w21,w8 // future e+=X[i] | |
721 add w22,w22,w25 // e+=F(b,c,d) | |
722 ror w9,w9,#31 | |
723 orr w25,w23,w24 | |
724 and w26,w23,w24 | |
725 eor w10,w10,w12 | |
726 ror w27,w22,#27 | |
727 and w25,w25,w20 | |
728 add w20,w20,w28 // future e+=K | |
729 eor w10,w10,w19 | |
730 add w21,w21,w27 // e+=rot(a,5) | |
731 orr w25,w25,w26 | |
732 ror w23,w23,#2 | |
733 eor w10,w10,w7 | |
734 add w20,w20,w9 // future e+=X[i] | |
735 add w21,w21,w25 // e+=F(b,c,d) | |
736 ror w10,w10,#31 | |
737 orr w25,w22,w23 | |
738 and w26,w22,w23 | |
739 eor w11,w11,w13 | |
740 ror w27,w21,#27 | |
741 and w25,w25,w24 | |
742 add w24,w24,w28 // future e+=K | |
743 eor w11,w11,w3 | |
744 add w20,w20,w27 // e+=rot(a,5) | |
745 orr w25,w25,w26 | |
746 ror w22,w22,#2 | |
747 eor w11,w11,w8 | |
748 add w24,w24,w10 // future e+=X[i] | |
749 add w20,w20,w25 // e+=F(b,c,d) | |
750 ror w11,w11,#31 | |
751 orr w25,w21,w22 | |
752 and w26,w21,w22 | |
753 eor w12,w12,w14 | |
754 ror w27,w20,#27 | |
755 and w25,w25,w23 | |
756 add w23,w23,w28 // future e+=K | |
757 eor w12,w12,w4 | |
758 add w24,w24,w27 // e+=rot(a,5) | |
759 orr w25,w25,w26 | |
760 ror w21,w21,#2 | |
761 eor w12,w12,w9 | |
762 add w23,w23,w11 // future e+=X[i] | |
763 add w24,w24,w25 // e+=F(b,c,d) | |
764 ror w12,w12,#31 | |
765 orr w25,w20,w21 | |
766 and w26,w20,w21 | |
767 eor w13,w13,w15 | |
768 ror w27,w24,#27 | |
769 and w25,w25,w22 | |
770 add w22,w22,w28 // future e+=K | |
771 eor w13,w13,w5 | |
772 add w23,w23,w27 // e+=rot(a,5) | |
773 orr w25,w25,w26 | |
774 ror w20,w20,#2 | |
775 eor w13,w13,w10 | |
776 add w22,w22,w12 // future e+=X[i] | |
777 add w23,w23,w25 // e+=F(b,c,d) | |
778 ror w13,w13,#31 | |
779 orr w25,w24,w20 | |
780 and w26,w24,w20 | |
781 eor w14,w14,w16 | |
782 ror w27,w23,#27 | |
783 and w25,w25,w21 | |
784 add w21,w21,w28 // future e+=K | |
785 eor w14,w14,w6 | |
786 add w22,w22,w27 // e+=rot(a,5) | |
787 orr w25,w25,w26 | |
788 ror w24,w24,#2 | |
789 eor w14,w14,w11 | |
790 add w21,w21,w13 // future e+=X[i] | |
791 add w22,w22,w25 // e+=F(b,c,d) | |
792 ror w14,w14,#31 | |
793 orr w25,w23,w24 | |
794 and w26,w23,w24 | |
795 eor w15,w15,w17 | |
796 ror w27,w22,#27 | |
797 and w25,w25,w20 | |
798 add w20,w20,w28 // future e+=K | |
799 eor w15,w15,w7 | |
800 add w21,w21,w27 // e+=rot(a,5) | |
801 orr w25,w25,w26 | |
802 ror w23,w23,#2 | |
803 eor w15,w15,w12 | |
804 add w20,w20,w14 // future e+=X[i] | |
805 add w21,w21,w25 // e+=F(b,c,d) | |
806 ror w15,w15,#31 | |
807 movz w28,#0xc1d6 | |
808 movk w28,#0xca62,lsl#16 | |
809 orr w25,w22,w23 | |
810 and w26,w22,w23 | |
811 eor w16,w16,w19 | |
812 ror w27,w21,#27 | |
813 and w25,w25,w24 | |
814 add w24,w24,w28 // future e+=K | |
815 eor w16,w16,w8 | |
816 add w20,w20,w27 // e+=rot(a,5) | |
817 orr w25,w25,w26 | |
818 ror w22,w22,#2 | |
819 eor w16,w16,w13 | |
820 add w24,w24,w15 // future e+=X[i] | |
821 add w20,w20,w25 // e+=F(b,c,d) | |
822 ror w16,w16,#31 | |
823 eor w17,w17,w3 | |
824 eor w25,w23,w21 | |
825 ror w27,w20,#27 | |
826 add w23,w23,w28 // future e+=K | |
827 eor w17,w17,w9 | |
828 eor w25,w25,w22 | |
829 add w24,w24,w27 // e+=rot(a,5) | |
830 ror w21,w21,#2 | |
831 eor w17,w17,w14 | |
832 add w23,w23,w16 // future e+=X[i] | |
833 add w24,w24,w25 // e+=F(b,c,d) | |
834 ror w17,w17,#31 | |
835 eor w19,w19,w4 | |
836 eor w25,w22,w20 | |
837 ror w27,w24,#27 | |
838 add w22,w22,w28 // future e+=K | |
839 eor w19,w19,w10 | |
840 eor w25,w25,w21 | |
841 add w23,w23,w27 // e+=rot(a,5) | |
842 ror w20,w20,#2 | |
843 eor w19,w19,w15 | |
844 add w22,w22,w17 // future e+=X[i] | |
845 add w23,w23,w25 // e+=F(b,c,d) | |
846 ror w19,w19,#31 | |
847 eor w3,w3,w5 | |
848 eor w25,w21,w24 | |
849 ror w27,w23,#27 | |
850 add w21,w21,w28 // future e+=K | |
851 eor w3,w3,w11 | |
852 eor w25,w25,w20 | |
853 add w22,w22,w27 // e+=rot(a,5) | |
854 ror w24,w24,#2 | |
855 eor w3,w3,w16 | |
856 add w21,w21,w19 // future e+=X[i] | |
857 add w22,w22,w25 // e+=F(b,c,d) | |
858 ror w3,w3,#31 | |
859 eor w4,w4,w6 | |
860 eor w25,w20,w23 | |
861 ror w27,w22,#27 | |
862 add w20,w20,w28 // future e+=K | |
863 eor w4,w4,w12 | |
864 eor w25,w25,w24 | |
865 add w21,w21,w27 // e+=rot(a,5) | |
866 ror w23,w23,#2 | |
867 eor w4,w4,w17 | |
868 add w20,w20,w3 // future e+=X[i] | |
869 add w21,w21,w25 // e+=F(b,c,d) | |
870 ror w4,w4,#31 | |
871 eor w5,w5,w7 | |
872 eor w25,w24,w22 | |
873 ror w27,w21,#27 | |
874 add w24,w24,w28 // future e+=K | |
875 eor w5,w5,w13 | |
876 eor w25,w25,w23 | |
877 add w20,w20,w27 // e+=rot(a,5) | |
878 ror w22,w22,#2 | |
879 eor w5,w5,w19 | |
880 add w24,w24,w4 // future e+=X[i] | |
881 add w20,w20,w25 // e+=F(b,c,d) | |
882 ror w5,w5,#31 | |
883 eor w6,w6,w8 | |
884 eor w25,w23,w21 | |
885 ror w27,w20,#27 | |
886 add w23,w23,w28 // future e+=K | |
887 eor w6,w6,w14 | |
888 eor w25,w25,w22 | |
889 add w24,w24,w27 // e+=rot(a,5) | |
890 ror w21,w21,#2 | |
891 eor w6,w6,w3 | |
892 add w23,w23,w5 // future e+=X[i] | |
893 add w24,w24,w25 // e+=F(b,c,d) | |
894 ror w6,w6,#31 | |
895 eor w7,w7,w9 | |
896 eor w25,w22,w20 | |
897 ror w27,w24,#27 | |
898 add w22,w22,w28 // future e+=K | |
899 eor w7,w7,w15 | |
900 eor w25,w25,w21 | |
901 add w23,w23,w27 // e+=rot(a,5) | |
902 ror w20,w20,#2 | |
903 eor w7,w7,w4 | |
904 add w22,w22,w6 // future e+=X[i] | |
905 add w23,w23,w25 // e+=F(b,c,d) | |
906 ror w7,w7,#31 | |
907 eor w8,w8,w10 | |
908 eor w25,w21,w24 | |
909 ror w27,w23,#27 | |
910 add w21,w21,w28 // future e+=K | |
911 eor w8,w8,w16 | |
912 eor w25,w25,w20 | |
913 add w22,w22,w27 // e+=rot(a,5) | |
914 ror w24,w24,#2 | |
915 eor w8,w8,w5 | |
916 add w21,w21,w7 // future e+=X[i] | |
917 add w22,w22,w25 // e+=F(b,c,d) | |
918 ror w8,w8,#31 | |
919 eor w9,w9,w11 | |
920 eor w25,w20,w23 | |
921 ror w27,w22,#27 | |
922 add w20,w20,w28 // future e+=K | |
923 eor w9,w9,w17 | |
924 eor w25,w25,w24 | |
925 add w21,w21,w27 // e+=rot(a,5) | |
926 ror w23,w23,#2 | |
927 eor w9,w9,w6 | |
928 add w20,w20,w8 // future e+=X[i] | |
929 add w21,w21,w25 // e+=F(b,c,d) | |
930 ror w9,w9,#31 | |
931 eor w10,w10,w12 | |
932 eor w25,w24,w22 | |
933 ror w27,w21,#27 | |
934 add w24,w24,w28 // future e+=K | |
935 eor w10,w10,w19 | |
936 eor w25,w25,w23 | |
937 add w20,w20,w27 // e+=rot(a,5) | |
938 ror w22,w22,#2 | |
939 eor w10,w10,w7 | |
940 add w24,w24,w9 // future e+=X[i] | |
941 add w20,w20,w25 // e+=F(b,c,d) | |
942 ror w10,w10,#31 | |
943 eor w11,w11,w13 | |
944 eor w25,w23,w21 | |
945 ror w27,w20,#27 | |
946 add w23,w23,w28 // future e+=K | |
947 eor w11,w11,w3 | |
948 eor w25,w25,w22 | |
949 add w24,w24,w27 // e+=rot(a,5) | |
950 ror w21,w21,#2 | |
951 eor w11,w11,w8 | |
952 add w23,w23,w10 // future e+=X[i] | |
953 add w24,w24,w25 // e+=F(b,c,d) | |
954 ror w11,w11,#31 | |
955 eor w12,w12,w14 | |
956 eor w25,w22,w20 | |
957 ror w27,w24,#27 | |
958 add w22,w22,w28 // future e+=K | |
959 eor w12,w12,w4 | |
960 eor w25,w25,w21 | |
961 add w23,w23,w27 // e+=rot(a,5) | |
962 ror w20,w20,#2 | |
963 eor w12,w12,w9 | |
964 add w22,w22,w11 // future e+=X[i] | |
965 add w23,w23,w25 // e+=F(b,c,d) | |
966 ror w12,w12,#31 | |
967 eor w13,w13,w15 | |
968 eor w25,w21,w24 | |
969 ror w27,w23,#27 | |
970 add w21,w21,w28 // future e+=K | |
971 eor w13,w13,w5 | |
972 eor w25,w25,w20 | |
973 add w22,w22,w27 // e+=rot(a,5) | |
974 ror w24,w24,#2 | |
975 eor w13,w13,w10 | |
976 add w21,w21,w12 // future e+=X[i] | |
977 add w22,w22,w25 // e+=F(b,c,d) | |
978 ror w13,w13,#31 | |
979 eor w14,w14,w16 | |
980 eor w25,w20,w23 | |
981 ror w27,w22,#27 | |
982 add w20,w20,w28 // future e+=K | |
983 eor w14,w14,w6 | |
984 eor w25,w25,w24 | |
985 add w21,w21,w27 // e+=rot(a,5) | |
986 ror w23,w23,#2 | |
987 eor w14,w14,w11 | |
988 add w20,w20,w13 // future e+=X[i] | |
989 add w21,w21,w25 // e+=F(b,c,d) | |
990 ror w14,w14,#31 | |
991 eor w15,w15,w17 | |
992 eor w25,w24,w22 | |
993 ror w27,w21,#27 | |
994 add w24,w24,w28 // future e+=K | |
995 eor w15,w15,w7 | |
996 eor w25,w25,w23 | |
997 add w20,w20,w27 // e+=rot(a,5) | |
998 ror w22,w22,#2 | |
999 eor w15,w15,w12 | |
1000 add w24,w24,w14 // future e+=X[i] | |
1001 add w20,w20,w25 // e+=F(b,c,d) | |
1002 ror w15,w15,#31 | |
1003 eor w16,w16,w19 | |
1004 eor w25,w23,w21 | |
1005 ror w27,w20,#27 | |
1006 add w23,w23,w28 // future e+=K | |
1007 eor w16,w16,w8 | |
1008 eor w25,w25,w22 | |
1009 add w24,w24,w27 // e+=rot(a,5) | |
1010 ror w21,w21,#2 | |
1011 eor w16,w16,w13 | |
1012 add w23,w23,w15 // future e+=X[i] | |
1013 add w24,w24,w25 // e+=F(b,c,d) | |
1014 ror w16,w16,#31 | |
1015 eor w17,w17,w3 | |
1016 eor w25,w22,w20 | |
1017 ror w27,w24,#27 | |
1018 add w22,w22,w28 // future e+=K | |
1019 eor w17,w17,w9 | |
1020 eor w25,w25,w21 | |
1021 add w23,w23,w27 // e+=rot(a,5) | |
1022 ror w20,w20,#2 | |
1023 eor w17,w17,w14 | |
1024 add w22,w22,w16 // future e+=X[i] | |
1025 add w23,w23,w25 // e+=F(b,c,d) | |
1026 ror w17,w17,#31 | |
1027 eor w19,w19,w4 | |
1028 eor w25,w21,w24 | |
1029 ror w27,w23,#27 | |
1030 add w21,w21,w28 // future e+=K | |
1031 eor w19,w19,w10 | |
1032 eor w25,w25,w20 | |
1033 add w22,w22,w27 // e+=rot(a,5) | |
1034 ror w24,w24,#2 | |
1035 eor w19,w19,w15 | |
1036 add w21,w21,w17 // future e+=X[i] | |
1037 add w22,w22,w25 // e+=F(b,c,d) | |
1038 ror w19,w19,#31 | |
1039 ldp w4,w5,[x0] | |
1040 eor w25,w20,w23 | |
1041 ror w27,w22,#27 | |
1042 add w20,w20,w28 // future e+=K | |
1043 eor w25,w25,w24 | |
1044 add w21,w21,w27 // e+=rot(a,5) | |
1045 ror w23,w23,#2 | |
1046 add w20,w20,w19 // future e+=X[i] | |
1047 add w21,w21,w25 // e+=F(b,c,d) | |
1048 ldp w6,w7,[x0,#8] | |
1049 eor w25,w24,w22 | |
1050 ror w27,w21,#27 | |
1051 eor w25,w25,w23 | |
1052 add w20,w20,w27 // e+=rot(a,5) | |
1053 ror w22,w22,#2 | |
1054 ldr w8,[x0,#16] | |
1055 add w20,w20,w25 // e+=F(b,c,d) | |
1056 add w21,w21,w5 | |
1057 add w22,w22,w6 | |
1058 add w20,w20,w4 | |
1059 add w23,w23,w7 | |
1060 add w24,w24,w8 | |
1061 stp w20,w21,[x0] | |
1062 stp w22,w23,[x0,#8] | |
1063 str w24,[x0,#16] | |
1064 cbnz x2,.Loop | |
1065 | |
1066 ldp x19,x20,[sp,#16] | |
1067 ldp x21,x22,[sp,#32] | |
1068 ldp x23,x24,[sp,#48] | |
1069 ldp x25,x26,[sp,#64] | |
1070 ldp x27,x28,[sp,#80] | |
1071 ldr x29,[sp],#96 | |
1072 ret | |
1073 .size sha1_block_data_order,.-sha1_block_data_order | |
1074 .type sha1_block_armv8,%function | |
1075 .align 6 | |
1076 sha1_block_armv8: | |
1077 .Lv8_entry: | |
1078 stp x29,x30,[sp,#-16]! | |
1079 add x29,sp,#0 | |
1080 | |
1081 adr x4,.Lconst | |
1082 eor v1.16b,v1.16b,v1.16b | |
1083 ld1 {v0.4s},[x0],#16 | |
1084 ld1 {v1.s}[0],[x0] | |
1085 sub x0,x0,#16 | |
1086 ld1 {v16.4s,v17.4s,v18.4s,v19.4s},[x4] | |
1087 | |
1088 .Loop_hw: | |
1089 ld1 {v4.16b,v5.16b,v6.16b,v7.16b},[x1],#64 | |
1090 sub x2,x2,#1 | |
1091 rev32 v4.16b,v4.16b | |
1092 rev32 v5.16b,v5.16b | |
1093 | |
1094 add v20.4s,v16.4s,v4.4s | |
1095 rev32 v6.16b,v6.16b | |
1096 orr v22.16b,v0.16b,v0.16b // offload | |
1097 | |
1098 add v21.4s,v16.4s,v5.4s | |
1099 rev32 v7.16b,v7.16b | |
1100 .inst 0x5e280803 //sha1h v3.16b,v0.16b | |
1101 .inst 0x5e140020 //sha1c v0.16b,v1.16b,v20.4s // 0 | |
1102 add v20.4s,v16.4s,v6.4s | |
1103 .inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b | |
1104 .inst 0x5e280802 //sha1h v2.16b,v0.16b // 1 | |
1105 .inst 0x5e150060 //sha1c v0.16b,v3.16b,v21.4s | |
1106 add v21.4s,v16.4s,v7.4s | |
1107 .inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b | |
1108 .inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b | |
1109 .inst 0x5e280803 //sha1h v3.16b,v0.16b // 2 | |
1110 .inst 0x5e140040 //sha1c v0.16b,v2.16b,v20.4s | |
1111 add v20.4s,v16.4s,v4.4s | |
1112 .inst 0x5e281885 //sha1su1 v5.16b,v4.16b | |
1113 .inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b | |
1114 .inst 0x5e280802 //sha1h v2.16b,v0.16b // 3 | |
1115 .inst 0x5e150060 //sha1c v0.16b,v3.16b,v21.4s | |
1116 add v21.4s,v17.4s,v5.4s | |
1117 .inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b | |
1118 .inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b | |
1119 .inst 0x5e280803 //sha1h v3.16b,v0.16b // 4 | |
1120 .inst 0x5e140040 //sha1c v0.16b,v2.16b,v20.4s | |
1121 add v20.4s,v17.4s,v6.4s | |
1122 .inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b | |
1123 .inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b | |
1124 .inst 0x5e280802 //sha1h v2.16b,v0.16b // 5 | |
1125 .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s | |
1126 add v21.4s,v17.4s,v7.4s | |
1127 .inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b | |
1128 .inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b | |
1129 .inst 0x5e280803 //sha1h v3.16b,v0.16b // 6 | |
1130 .inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s | |
1131 add v20.4s,v17.4s,v4.4s | |
1132 .inst 0x5e281885 //sha1su1 v5.16b,v4.16b | |
1133 .inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b | |
1134 .inst 0x5e280802 //sha1h v2.16b,v0.16b // 7 | |
1135 .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s | |
1136 add v21.4s,v17.4s,v5.4s | |
1137 .inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b | |
1138 .inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b | |
1139 .inst 0x5e280803 //sha1h v3.16b,v0.16b // 8 | |
1140 .inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s | |
1141 add v20.4s,v18.4s,v6.4s | |
1142 .inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b | |
1143 .inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b | |
1144 .inst 0x5e280802 //sha1h v2.16b,v0.16b // 9 | |
1145 .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s | |
1146 add v21.4s,v18.4s,v7.4s | |
1147 .inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b | |
1148 .inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b | |
1149 .inst 0x5e280803 //sha1h v3.16b,v0.16b // 10 | |
1150 .inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s | |
1151 add v20.4s,v18.4s,v4.4s | |
1152 .inst 0x5e281885 //sha1su1 v5.16b,v4.16b | |
1153 .inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b | |
1154 .inst 0x5e280802 //sha1h v2.16b,v0.16b // 11 | |
1155 .inst 0x5e152060 //sha1m v0.16b,v3.16b,v21.4s | |
1156 add v21.4s,v18.4s,v5.4s | |
1157 .inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b | |
1158 .inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b | |
1159 .inst 0x5e280803 //sha1h v3.16b,v0.16b // 12 | |
1160 .inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s | |
1161 add v20.4s,v18.4s,v6.4s | |
1162 .inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b | |
1163 .inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b | |
1164 .inst 0x5e280802 //sha1h v2.16b,v0.16b // 13 | |
1165 .inst 0x5e152060 //sha1m v0.16b,v3.16b,v21.4s | |
1166 add v21.4s,v19.4s,v7.4s | |
1167 .inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b | |
1168 .inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b | |
1169 .inst 0x5e280803 //sha1h v3.16b,v0.16b // 14 | |
1170 .inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s | |
1171 add v20.4s,v19.4s,v4.4s | |
1172 .inst 0x5e281885 //sha1su1 v5.16b,v4.16b | |
1173 .inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b | |
1174 .inst 0x5e280802 //sha1h v2.16b,v0.16b // 15 | |
1175 .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s | |
1176 add v21.4s,v19.4s,v5.4s | |
1177 .inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b | |
1178 .inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b | |
1179 .inst 0x5e280803 //sha1h v3.16b,v0.16b // 16 | |
1180 .inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s | |
1181 add v20.4s,v19.4s,v6.4s | |
1182 .inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b | |
1183 .inst 0x5e280802 //sha1h v2.16b,v0.16b // 17 | |
1184 .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s | |
1185 add v21.4s,v19.4s,v7.4s | |
1186 | |
1187 .inst 0x5e280803 //sha1h v3.16b,v0.16b // 18 | |
1188 .inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s | |
1189 | |
1190 .inst 0x5e280802 //sha1h v2.16b,v0.16b // 19 | |
1191 .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s | |
1192 | |
1193 add v1.4s,v1.4s,v2.4s | |
1194 add v0.4s,v0.4s,v22.4s | |
1195 | |
1196 cbnz x2,.Loop_hw | |
1197 | |
1198 st1 {v0.4s},[x0],#16 | |
1199 st1 {v1.s}[0],[x0] | |
1200 | |
1201 ldr x29,[sp],#16 | |
1202 ret | |
1203 .size sha1_block_armv8,.-sha1_block_armv8 | |
1204 .align 6 | |
1205 .Lconst: | |
1206 .long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 //K_00_19 | |
1207 .long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 //K_20_39 | |
1208 .long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc //K_40_59 | |
1209 .long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 //K_60_79 | |
1210 .LOPENSSL_armcap_P: | |
1211 .quad OPENSSL_armcap_P-. | |
1212 .byte 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,3
2,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,3
2,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 | |
1213 .align 2 | |
1214 .align 2 | |
1215 .comm OPENSSL_armcap_P,4,4 | |
1216 #endif | |
OLD | NEW |