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