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