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