Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1346)

Side by Side Diff: third_party/boringssl/linux-aarch64/crypto/sha/sha1-armv8.S

Issue 2811393005: Roll src/third_party/boringssl/src c8ff30cbe..bc6a76b0e (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698