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

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

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

Powered by Google App Engine
This is Rietveld 408576698