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