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