Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/crypto/openssl/arm/sha1-armv4-large.S
39482 views
1
/* Do not modify. This file is auto-generated from sha1-armv4-large.pl. */
2
#include "arm_arch.h"
3
4
#if defined(__thumb2__)
5
.syntax unified
6
.thumb
7
#else
8
.code 32
9
#endif
10
11
.text
12
13
.globl sha1_block_data_order
14
.type sha1_block_data_order,%function
15
16
.align 5
17
sha1_block_data_order:
18
#if __ARM_MAX_ARCH__>=7
19
.Lsha1_block:
20
ldr r12,.LOPENSSL_armcap
21
# if !defined(_WIN32)
22
adr r3,.Lsha1_block
23
ldr r12,[r3,r12] @ OPENSSL_armcap_P
24
# endif
25
# if defined(__APPLE__) || defined(_WIN32)
26
ldr r12,[r12]
27
# endif
28
tst r12,#ARMV8_SHA1
29
bne .LARMv8
30
tst r12,#ARMV7_NEON
31
bne .LNEON
32
#endif
33
stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr}
34
add r2,r1,r2,lsl#6 @ r2 to point at the end of r1
35
ldmia r0,{r3,r4,r5,r6,r7}
36
.Lloop:
37
ldr r8,.LK_00_19
38
mov r14,sp
39
sub sp,sp,#15*4
40
mov r5,r5,ror#30
41
mov r6,r6,ror#30
42
mov r7,r7,ror#30 @ [6]
43
.L_00_15:
44
#if __ARM_ARCH__<7
45
ldrb r10,[r1,#2]
46
ldrb r9,[r1,#3]
47
ldrb r11,[r1,#1]
48
add r7,r8,r7,ror#2 @ E+=K_00_19
49
ldrb r12,[r1],#4
50
orr r9,r9,r10,lsl#8
51
eor r10,r5,r6 @ F_xx_xx
52
orr r9,r9,r11,lsl#16
53
add r7,r7,r3,ror#27 @ E+=ROR(A,27)
54
orr r9,r9,r12,lsl#24
55
#else
56
ldr r9,[r1],#4 @ handles unaligned
57
add r7,r8,r7,ror#2 @ E+=K_00_19
58
eor r10,r5,r6 @ F_xx_xx
59
add r7,r7,r3,ror#27 @ E+=ROR(A,27)
60
#ifdef __ARMEL__
61
rev r9,r9 @ byte swap
62
#endif
63
#endif
64
and r10,r4,r10,ror#2
65
add r7,r7,r9 @ E+=X[i]
66
eor r10,r10,r6,ror#2 @ F_00_19(B,C,D)
67
str r9,[r14,#-4]!
68
add r7,r7,r10 @ E+=F_00_19(B,C,D)
69
#if __ARM_ARCH__<7
70
ldrb r10,[r1,#2]
71
ldrb r9,[r1,#3]
72
ldrb r11,[r1,#1]
73
add r6,r8,r6,ror#2 @ E+=K_00_19
74
ldrb r12,[r1],#4
75
orr r9,r9,r10,lsl#8
76
eor r10,r4,r5 @ F_xx_xx
77
orr r9,r9,r11,lsl#16
78
add r6,r6,r7,ror#27 @ E+=ROR(A,27)
79
orr r9,r9,r12,lsl#24
80
#else
81
ldr r9,[r1],#4 @ handles unaligned
82
add r6,r8,r6,ror#2 @ E+=K_00_19
83
eor r10,r4,r5 @ F_xx_xx
84
add r6,r6,r7,ror#27 @ E+=ROR(A,27)
85
#ifdef __ARMEL__
86
rev r9,r9 @ byte swap
87
#endif
88
#endif
89
and r10,r3,r10,ror#2
90
add r6,r6,r9 @ E+=X[i]
91
eor r10,r10,r5,ror#2 @ F_00_19(B,C,D)
92
str r9,[r14,#-4]!
93
add r6,r6,r10 @ E+=F_00_19(B,C,D)
94
#if __ARM_ARCH__<7
95
ldrb r10,[r1,#2]
96
ldrb r9,[r1,#3]
97
ldrb r11,[r1,#1]
98
add r5,r8,r5,ror#2 @ E+=K_00_19
99
ldrb r12,[r1],#4
100
orr r9,r9,r10,lsl#8
101
eor r10,r3,r4 @ F_xx_xx
102
orr r9,r9,r11,lsl#16
103
add r5,r5,r6,ror#27 @ E+=ROR(A,27)
104
orr r9,r9,r12,lsl#24
105
#else
106
ldr r9,[r1],#4 @ handles unaligned
107
add r5,r8,r5,ror#2 @ E+=K_00_19
108
eor r10,r3,r4 @ F_xx_xx
109
add r5,r5,r6,ror#27 @ E+=ROR(A,27)
110
#ifdef __ARMEL__
111
rev r9,r9 @ byte swap
112
#endif
113
#endif
114
and r10,r7,r10,ror#2
115
add r5,r5,r9 @ E+=X[i]
116
eor r10,r10,r4,ror#2 @ F_00_19(B,C,D)
117
str r9,[r14,#-4]!
118
add r5,r5,r10 @ E+=F_00_19(B,C,D)
119
#if __ARM_ARCH__<7
120
ldrb r10,[r1,#2]
121
ldrb r9,[r1,#3]
122
ldrb r11,[r1,#1]
123
add r4,r8,r4,ror#2 @ E+=K_00_19
124
ldrb r12,[r1],#4
125
orr r9,r9,r10,lsl#8
126
eor r10,r7,r3 @ F_xx_xx
127
orr r9,r9,r11,lsl#16
128
add r4,r4,r5,ror#27 @ E+=ROR(A,27)
129
orr r9,r9,r12,lsl#24
130
#else
131
ldr r9,[r1],#4 @ handles unaligned
132
add r4,r8,r4,ror#2 @ E+=K_00_19
133
eor r10,r7,r3 @ F_xx_xx
134
add r4,r4,r5,ror#27 @ E+=ROR(A,27)
135
#ifdef __ARMEL__
136
rev r9,r9 @ byte swap
137
#endif
138
#endif
139
and r10,r6,r10,ror#2
140
add r4,r4,r9 @ E+=X[i]
141
eor r10,r10,r3,ror#2 @ F_00_19(B,C,D)
142
str r9,[r14,#-4]!
143
add r4,r4,r10 @ E+=F_00_19(B,C,D)
144
#if __ARM_ARCH__<7
145
ldrb r10,[r1,#2]
146
ldrb r9,[r1,#3]
147
ldrb r11,[r1,#1]
148
add r3,r8,r3,ror#2 @ E+=K_00_19
149
ldrb r12,[r1],#4
150
orr r9,r9,r10,lsl#8
151
eor r10,r6,r7 @ F_xx_xx
152
orr r9,r9,r11,lsl#16
153
add r3,r3,r4,ror#27 @ E+=ROR(A,27)
154
orr r9,r9,r12,lsl#24
155
#else
156
ldr r9,[r1],#4 @ handles unaligned
157
add r3,r8,r3,ror#2 @ E+=K_00_19
158
eor r10,r6,r7 @ F_xx_xx
159
add r3,r3,r4,ror#27 @ E+=ROR(A,27)
160
#ifdef __ARMEL__
161
rev r9,r9 @ byte swap
162
#endif
163
#endif
164
and r10,r5,r10,ror#2
165
add r3,r3,r9 @ E+=X[i]
166
eor r10,r10,r7,ror#2 @ F_00_19(B,C,D)
167
str r9,[r14,#-4]!
168
add r3,r3,r10 @ E+=F_00_19(B,C,D)
169
#if defined(__thumb2__)
170
mov r12,sp
171
teq r14,r12
172
#else
173
teq r14,sp
174
#endif
175
bne .L_00_15 @ [((11+4)*5+2)*3]
176
sub sp,sp,#25*4
177
#if __ARM_ARCH__<7
178
ldrb r10,[r1,#2]
179
ldrb r9,[r1,#3]
180
ldrb r11,[r1,#1]
181
add r7,r8,r7,ror#2 @ E+=K_00_19
182
ldrb r12,[r1],#4
183
orr r9,r9,r10,lsl#8
184
eor r10,r5,r6 @ F_xx_xx
185
orr r9,r9,r11,lsl#16
186
add r7,r7,r3,ror#27 @ E+=ROR(A,27)
187
orr r9,r9,r12,lsl#24
188
#else
189
ldr r9,[r1],#4 @ handles unaligned
190
add r7,r8,r7,ror#2 @ E+=K_00_19
191
eor r10,r5,r6 @ F_xx_xx
192
add r7,r7,r3,ror#27 @ E+=ROR(A,27)
193
#ifdef __ARMEL__
194
rev r9,r9 @ byte swap
195
#endif
196
#endif
197
and r10,r4,r10,ror#2
198
add r7,r7,r9 @ E+=X[i]
199
eor r10,r10,r6,ror#2 @ F_00_19(B,C,D)
200
str r9,[r14,#-4]!
201
add r7,r7,r10 @ E+=F_00_19(B,C,D)
202
ldr r9,[r14,#15*4]
203
ldr r10,[r14,#13*4]
204
ldr r11,[r14,#7*4]
205
add r6,r8,r6,ror#2 @ E+=K_xx_xx
206
ldr r12,[r14,#2*4]
207
eor r9,r9,r10
208
eor r11,r11,r12 @ 1 cycle stall
209
eor r10,r4,r5 @ F_xx_xx
210
mov r9,r9,ror#31
211
add r6,r6,r7,ror#27 @ E+=ROR(A,27)
212
eor r9,r9,r11,ror#31
213
str r9,[r14,#-4]!
214
and r10,r3,r10,ror#2 @ F_xx_xx
215
@ F_xx_xx
216
add r6,r6,r9 @ E+=X[i]
217
eor r10,r10,r5,ror#2 @ F_00_19(B,C,D)
218
add r6,r6,r10 @ E+=F_00_19(B,C,D)
219
ldr r9,[r14,#15*4]
220
ldr r10,[r14,#13*4]
221
ldr r11,[r14,#7*4]
222
add r5,r8,r5,ror#2 @ E+=K_xx_xx
223
ldr r12,[r14,#2*4]
224
eor r9,r9,r10
225
eor r11,r11,r12 @ 1 cycle stall
226
eor r10,r3,r4 @ F_xx_xx
227
mov r9,r9,ror#31
228
add r5,r5,r6,ror#27 @ E+=ROR(A,27)
229
eor r9,r9,r11,ror#31
230
str r9,[r14,#-4]!
231
and r10,r7,r10,ror#2 @ F_xx_xx
232
@ F_xx_xx
233
add r5,r5,r9 @ E+=X[i]
234
eor r10,r10,r4,ror#2 @ F_00_19(B,C,D)
235
add r5,r5,r10 @ E+=F_00_19(B,C,D)
236
ldr r9,[r14,#15*4]
237
ldr r10,[r14,#13*4]
238
ldr r11,[r14,#7*4]
239
add r4,r8,r4,ror#2 @ E+=K_xx_xx
240
ldr r12,[r14,#2*4]
241
eor r9,r9,r10
242
eor r11,r11,r12 @ 1 cycle stall
243
eor r10,r7,r3 @ F_xx_xx
244
mov r9,r9,ror#31
245
add r4,r4,r5,ror#27 @ E+=ROR(A,27)
246
eor r9,r9,r11,ror#31
247
str r9,[r14,#-4]!
248
and r10,r6,r10,ror#2 @ F_xx_xx
249
@ F_xx_xx
250
add r4,r4,r9 @ E+=X[i]
251
eor r10,r10,r3,ror#2 @ F_00_19(B,C,D)
252
add r4,r4,r10 @ E+=F_00_19(B,C,D)
253
ldr r9,[r14,#15*4]
254
ldr r10,[r14,#13*4]
255
ldr r11,[r14,#7*4]
256
add r3,r8,r3,ror#2 @ E+=K_xx_xx
257
ldr r12,[r14,#2*4]
258
eor r9,r9,r10
259
eor r11,r11,r12 @ 1 cycle stall
260
eor r10,r6,r7 @ F_xx_xx
261
mov r9,r9,ror#31
262
add r3,r3,r4,ror#27 @ E+=ROR(A,27)
263
eor r9,r9,r11,ror#31
264
str r9,[r14,#-4]!
265
and r10,r5,r10,ror#2 @ F_xx_xx
266
@ F_xx_xx
267
add r3,r3,r9 @ E+=X[i]
268
eor r10,r10,r7,ror#2 @ F_00_19(B,C,D)
269
add r3,r3,r10 @ E+=F_00_19(B,C,D)
270
271
ldr r8,.LK_20_39 @ [+15+16*4]
272
cmn sp,#0 @ [+3], clear carry to denote 20_39
273
.L_20_39_or_60_79:
274
ldr r9,[r14,#15*4]
275
ldr r10,[r14,#13*4]
276
ldr r11,[r14,#7*4]
277
add r7,r8,r7,ror#2 @ E+=K_xx_xx
278
ldr r12,[r14,#2*4]
279
eor r9,r9,r10
280
eor r11,r11,r12 @ 1 cycle stall
281
eor r10,r5,r6 @ F_xx_xx
282
mov r9,r9,ror#31
283
add r7,r7,r3,ror#27 @ E+=ROR(A,27)
284
eor r9,r9,r11,ror#31
285
str r9,[r14,#-4]!
286
eor r10,r4,r10,ror#2 @ F_xx_xx
287
@ F_xx_xx
288
add r7,r7,r9 @ E+=X[i]
289
add r7,r7,r10 @ E+=F_20_39(B,C,D)
290
ldr r9,[r14,#15*4]
291
ldr r10,[r14,#13*4]
292
ldr r11,[r14,#7*4]
293
add r6,r8,r6,ror#2 @ E+=K_xx_xx
294
ldr r12,[r14,#2*4]
295
eor r9,r9,r10
296
eor r11,r11,r12 @ 1 cycle stall
297
eor r10,r4,r5 @ F_xx_xx
298
mov r9,r9,ror#31
299
add r6,r6,r7,ror#27 @ E+=ROR(A,27)
300
eor r9,r9,r11,ror#31
301
str r9,[r14,#-4]!
302
eor r10,r3,r10,ror#2 @ F_xx_xx
303
@ F_xx_xx
304
add r6,r6,r9 @ E+=X[i]
305
add r6,r6,r10 @ E+=F_20_39(B,C,D)
306
ldr r9,[r14,#15*4]
307
ldr r10,[r14,#13*4]
308
ldr r11,[r14,#7*4]
309
add r5,r8,r5,ror#2 @ E+=K_xx_xx
310
ldr r12,[r14,#2*4]
311
eor r9,r9,r10
312
eor r11,r11,r12 @ 1 cycle stall
313
eor r10,r3,r4 @ F_xx_xx
314
mov r9,r9,ror#31
315
add r5,r5,r6,ror#27 @ E+=ROR(A,27)
316
eor r9,r9,r11,ror#31
317
str r9,[r14,#-4]!
318
eor r10,r7,r10,ror#2 @ F_xx_xx
319
@ F_xx_xx
320
add r5,r5,r9 @ E+=X[i]
321
add r5,r5,r10 @ E+=F_20_39(B,C,D)
322
ldr r9,[r14,#15*4]
323
ldr r10,[r14,#13*4]
324
ldr r11,[r14,#7*4]
325
add r4,r8,r4,ror#2 @ E+=K_xx_xx
326
ldr r12,[r14,#2*4]
327
eor r9,r9,r10
328
eor r11,r11,r12 @ 1 cycle stall
329
eor r10,r7,r3 @ F_xx_xx
330
mov r9,r9,ror#31
331
add r4,r4,r5,ror#27 @ E+=ROR(A,27)
332
eor r9,r9,r11,ror#31
333
str r9,[r14,#-4]!
334
eor r10,r6,r10,ror#2 @ F_xx_xx
335
@ F_xx_xx
336
add r4,r4,r9 @ E+=X[i]
337
add r4,r4,r10 @ E+=F_20_39(B,C,D)
338
ldr r9,[r14,#15*4]
339
ldr r10,[r14,#13*4]
340
ldr r11,[r14,#7*4]
341
add r3,r8,r3,ror#2 @ E+=K_xx_xx
342
ldr r12,[r14,#2*4]
343
eor r9,r9,r10
344
eor r11,r11,r12 @ 1 cycle stall
345
eor r10,r6,r7 @ F_xx_xx
346
mov r9,r9,ror#31
347
add r3,r3,r4,ror#27 @ E+=ROR(A,27)
348
eor r9,r9,r11,ror#31
349
str r9,[r14,#-4]!
350
eor r10,r5,r10,ror#2 @ F_xx_xx
351
@ F_xx_xx
352
add r3,r3,r9 @ E+=X[i]
353
add r3,r3,r10 @ E+=F_20_39(B,C,D)
354
#if defined(__thumb2__)
355
mov r12,sp
356
teq r14,r12
357
#else
358
teq r14,sp @ preserve carry
359
#endif
360
bne .L_20_39_or_60_79 @ [+((12+3)*5+2)*4]
361
bcs .L_done @ [+((12+3)*5+2)*4], spare 300 bytes
362
363
ldr r8,.LK_40_59
364
sub sp,sp,#20*4 @ [+2]
365
.L_40_59:
366
ldr r9,[r14,#15*4]
367
ldr r10,[r14,#13*4]
368
ldr r11,[r14,#7*4]
369
add r7,r8,r7,ror#2 @ E+=K_xx_xx
370
ldr r12,[r14,#2*4]
371
eor r9,r9,r10
372
eor r11,r11,r12 @ 1 cycle stall
373
eor r10,r5,r6 @ F_xx_xx
374
mov r9,r9,ror#31
375
add r7,r7,r3,ror#27 @ E+=ROR(A,27)
376
eor r9,r9,r11,ror#31
377
str r9,[r14,#-4]!
378
and r10,r4,r10,ror#2 @ F_xx_xx
379
and r11,r5,r6 @ F_xx_xx
380
add r7,r7,r9 @ E+=X[i]
381
add r7,r7,r10 @ E+=F_40_59(B,C,D)
382
add r7,r7,r11,ror#2
383
ldr r9,[r14,#15*4]
384
ldr r10,[r14,#13*4]
385
ldr r11,[r14,#7*4]
386
add r6,r8,r6,ror#2 @ E+=K_xx_xx
387
ldr r12,[r14,#2*4]
388
eor r9,r9,r10
389
eor r11,r11,r12 @ 1 cycle stall
390
eor r10,r4,r5 @ F_xx_xx
391
mov r9,r9,ror#31
392
add r6,r6,r7,ror#27 @ E+=ROR(A,27)
393
eor r9,r9,r11,ror#31
394
str r9,[r14,#-4]!
395
and r10,r3,r10,ror#2 @ F_xx_xx
396
and r11,r4,r5 @ F_xx_xx
397
add r6,r6,r9 @ E+=X[i]
398
add r6,r6,r10 @ E+=F_40_59(B,C,D)
399
add r6,r6,r11,ror#2
400
ldr r9,[r14,#15*4]
401
ldr r10,[r14,#13*4]
402
ldr r11,[r14,#7*4]
403
add r5,r8,r5,ror#2 @ E+=K_xx_xx
404
ldr r12,[r14,#2*4]
405
eor r9,r9,r10
406
eor r11,r11,r12 @ 1 cycle stall
407
eor r10,r3,r4 @ F_xx_xx
408
mov r9,r9,ror#31
409
add r5,r5,r6,ror#27 @ E+=ROR(A,27)
410
eor r9,r9,r11,ror#31
411
str r9,[r14,#-4]!
412
and r10,r7,r10,ror#2 @ F_xx_xx
413
and r11,r3,r4 @ F_xx_xx
414
add r5,r5,r9 @ E+=X[i]
415
add r5,r5,r10 @ E+=F_40_59(B,C,D)
416
add r5,r5,r11,ror#2
417
ldr r9,[r14,#15*4]
418
ldr r10,[r14,#13*4]
419
ldr r11,[r14,#7*4]
420
add r4,r8,r4,ror#2 @ E+=K_xx_xx
421
ldr r12,[r14,#2*4]
422
eor r9,r9,r10
423
eor r11,r11,r12 @ 1 cycle stall
424
eor r10,r7,r3 @ F_xx_xx
425
mov r9,r9,ror#31
426
add r4,r4,r5,ror#27 @ E+=ROR(A,27)
427
eor r9,r9,r11,ror#31
428
str r9,[r14,#-4]!
429
and r10,r6,r10,ror#2 @ F_xx_xx
430
and r11,r7,r3 @ F_xx_xx
431
add r4,r4,r9 @ E+=X[i]
432
add r4,r4,r10 @ E+=F_40_59(B,C,D)
433
add r4,r4,r11,ror#2
434
ldr r9,[r14,#15*4]
435
ldr r10,[r14,#13*4]
436
ldr r11,[r14,#7*4]
437
add r3,r8,r3,ror#2 @ E+=K_xx_xx
438
ldr r12,[r14,#2*4]
439
eor r9,r9,r10
440
eor r11,r11,r12 @ 1 cycle stall
441
eor r10,r6,r7 @ F_xx_xx
442
mov r9,r9,ror#31
443
add r3,r3,r4,ror#27 @ E+=ROR(A,27)
444
eor r9,r9,r11,ror#31
445
str r9,[r14,#-4]!
446
and r10,r5,r10,ror#2 @ F_xx_xx
447
and r11,r6,r7 @ F_xx_xx
448
add r3,r3,r9 @ E+=X[i]
449
add r3,r3,r10 @ E+=F_40_59(B,C,D)
450
add r3,r3,r11,ror#2
451
#if defined(__thumb2__)
452
mov r12,sp
453
teq r14,r12
454
#else
455
teq r14,sp
456
#endif
457
bne .L_40_59 @ [+((12+5)*5+2)*4]
458
459
ldr r8,.LK_60_79
460
sub sp,sp,#20*4
461
cmp sp,#0 @ set carry to denote 60_79
462
b .L_20_39_or_60_79 @ [+4], spare 300 bytes
463
.L_done:
464
add sp,sp,#80*4 @ "deallocate" stack frame
465
ldmia r0,{r8,r9,r10,r11,r12}
466
add r3,r8,r3
467
add r4,r9,r4
468
add r5,r10,r5,ror#2
469
add r6,r11,r6,ror#2
470
add r7,r12,r7,ror#2
471
stmia r0,{r3,r4,r5,r6,r7}
472
teq r1,r2
473
bne .Lloop @ [+18], total 1307
474
475
#if __ARM_ARCH__>=5
476
ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc}
477
#else
478
ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr}
479
tst lr,#1
480
moveq pc,lr @ be binary compatible with V4, yet
481
.word 0xe12fff1e @ interoperable with Thumb ISA:-)
482
#endif
483
.size sha1_block_data_order,.-sha1_block_data_order
484
485
.align 5
486
.LK_00_19:.word 0x5a827999
487
.LK_20_39:.word 0x6ed9eba1
488
.LK_40_59:.word 0x8f1bbcdc
489
.LK_60_79:.word 0xca62c1d6
490
#if __ARM_MAX_ARCH__>=7
491
.LOPENSSL_armcap:
492
# ifdef _WIN32
493
.word OPENSSL_armcap_P
494
# else
495
.word OPENSSL_armcap_P-.Lsha1_block
496
# endif
497
#endif
498
.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,52,47,78,69,79,78,47,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
499
.align 2
500
.align 5
501
#if __ARM_MAX_ARCH__>=7
502
.arch armv7-a
503
.fpu neon
504
505
.type sha1_block_data_order_neon,%function
506
.align 4
507
sha1_block_data_order_neon:
508
.LNEON:
509
stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr}
510
add r2,r1,r2,lsl#6 @ r2 to point at the end of r1
511
@ dmb @ errata #451034 on early Cortex A8
512
@ vstmdb sp!,{d8-d15} @ ABI specification says so
513
mov r14,sp
514
sub r12,sp,#64
515
adr r8,.LK_00_19
516
bic r12,r12,#15 @ align for 128-bit stores
517
518
ldmia r0,{r3,r4,r5,r6,r7} @ load context
519
mov sp,r12 @ alloca
520
521
vld1.8 {q0,q1},[r1]! @ handles unaligned
522
veor q15,q15,q15
523
vld1.8 {q2,q3},[r1]!
524
vld1.32 {d28[],d29[]},[r8,:32]! @ load K_00_19
525
vrev32.8 q0,q0 @ yes, even on
526
vrev32.8 q1,q1 @ big-endian...
527
vrev32.8 q2,q2
528
vadd.i32 q8,q0,q14
529
vrev32.8 q3,q3
530
vadd.i32 q9,q1,q14
531
vst1.32 {q8},[r12,:128]!
532
vadd.i32 q10,q2,q14
533
vst1.32 {q9},[r12,:128]!
534
vst1.32 {q10},[r12,:128]!
535
ldr r9,[sp] @ big RAW stall
536
537
.Loop_neon:
538
vext.8 q8,q0,q1,#8
539
bic r10,r6,r4
540
add r7,r7,r9
541
and r11,r5,r4
542
vadd.i32 q13,q3,q14
543
ldr r9,[sp,#4]
544
add r7,r7,r3,ror#27
545
vext.8 q12,q3,q15,#4
546
eor r11,r11,r10
547
mov r4,r4,ror#2
548
add r7,r7,r11
549
veor q8,q8,q0
550
bic r10,r5,r3
551
add r6,r6,r9
552
veor q12,q12,q2
553
and r11,r4,r3
554
ldr r9,[sp,#8]
555
veor q12,q12,q8
556
add r6,r6,r7,ror#27
557
eor r11,r11,r10
558
vst1.32 {q13},[r12,:128]!
559
sub r12,r12,#64
560
mov r3,r3,ror#2
561
add r6,r6,r11
562
vext.8 q13,q15,q12,#4
563
bic r10,r4,r7
564
add r5,r5,r9
565
vadd.i32 q8,q12,q12
566
and r11,r3,r7
567
ldr r9,[sp,#12]
568
vsri.32 q8,q12,#31
569
add r5,r5,r6,ror#27
570
eor r11,r11,r10
571
mov r7,r7,ror#2
572
vshr.u32 q12,q13,#30
573
add r5,r5,r11
574
bic r10,r3,r6
575
vshl.u32 q13,q13,#2
576
add r4,r4,r9
577
and r11,r7,r6
578
veor q8,q8,q12
579
ldr r9,[sp,#16]
580
add r4,r4,r5,ror#27
581
veor q8,q8,q13
582
eor r11,r11,r10
583
mov r6,r6,ror#2
584
add r4,r4,r11
585
vext.8 q9,q1,q2,#8
586
bic r10,r7,r5
587
add r3,r3,r9
588
and r11,r6,r5
589
vadd.i32 q13,q8,q14
590
ldr r9,[sp,#20]
591
vld1.32 {d28[],d29[]},[r8,:32]!
592
add r3,r3,r4,ror#27
593
vext.8 q12,q8,q15,#4
594
eor r11,r11,r10
595
mov r5,r5,ror#2
596
add r3,r3,r11
597
veor q9,q9,q1
598
bic r10,r6,r4
599
add r7,r7,r9
600
veor q12,q12,q3
601
and r11,r5,r4
602
ldr r9,[sp,#24]
603
veor q12,q12,q9
604
add r7,r7,r3,ror#27
605
eor r11,r11,r10
606
vst1.32 {q13},[r12,:128]!
607
mov r4,r4,ror#2
608
add r7,r7,r11
609
vext.8 q13,q15,q12,#4
610
bic r10,r5,r3
611
add r6,r6,r9
612
vadd.i32 q9,q12,q12
613
and r11,r4,r3
614
ldr r9,[sp,#28]
615
vsri.32 q9,q12,#31
616
add r6,r6,r7,ror#27
617
eor r11,r11,r10
618
mov r3,r3,ror#2
619
vshr.u32 q12,q13,#30
620
add r6,r6,r11
621
bic r10,r4,r7
622
vshl.u32 q13,q13,#2
623
add r5,r5,r9
624
and r11,r3,r7
625
veor q9,q9,q12
626
ldr r9,[sp,#32]
627
add r5,r5,r6,ror#27
628
veor q9,q9,q13
629
eor r11,r11,r10
630
mov r7,r7,ror#2
631
add r5,r5,r11
632
vext.8 q10,q2,q3,#8
633
bic r10,r3,r6
634
add r4,r4,r9
635
and r11,r7,r6
636
vadd.i32 q13,q9,q14
637
ldr r9,[sp,#36]
638
add r4,r4,r5,ror#27
639
vext.8 q12,q9,q15,#4
640
eor r11,r11,r10
641
mov r6,r6,ror#2
642
add r4,r4,r11
643
veor q10,q10,q2
644
bic r10,r7,r5
645
add r3,r3,r9
646
veor q12,q12,q8
647
and r11,r6,r5
648
ldr r9,[sp,#40]
649
veor q12,q12,q10
650
add r3,r3,r4,ror#27
651
eor r11,r11,r10
652
vst1.32 {q13},[r12,:128]!
653
mov r5,r5,ror#2
654
add r3,r3,r11
655
vext.8 q13,q15,q12,#4
656
bic r10,r6,r4
657
add r7,r7,r9
658
vadd.i32 q10,q12,q12
659
and r11,r5,r4
660
ldr r9,[sp,#44]
661
vsri.32 q10,q12,#31
662
add r7,r7,r3,ror#27
663
eor r11,r11,r10
664
mov r4,r4,ror#2
665
vshr.u32 q12,q13,#30
666
add r7,r7,r11
667
bic r10,r5,r3
668
vshl.u32 q13,q13,#2
669
add r6,r6,r9
670
and r11,r4,r3
671
veor q10,q10,q12
672
ldr r9,[sp,#48]
673
add r6,r6,r7,ror#27
674
veor q10,q10,q13
675
eor r11,r11,r10
676
mov r3,r3,ror#2
677
add r6,r6,r11
678
vext.8 q11,q3,q8,#8
679
bic r10,r4,r7
680
add r5,r5,r9
681
and r11,r3,r7
682
vadd.i32 q13,q10,q14
683
ldr r9,[sp,#52]
684
add r5,r5,r6,ror#27
685
vext.8 q12,q10,q15,#4
686
eor r11,r11,r10
687
mov r7,r7,ror#2
688
add r5,r5,r11
689
veor q11,q11,q3
690
bic r10,r3,r6
691
add r4,r4,r9
692
veor q12,q12,q9
693
and r11,r7,r6
694
ldr r9,[sp,#56]
695
veor q12,q12,q11
696
add r4,r4,r5,ror#27
697
eor r11,r11,r10
698
vst1.32 {q13},[r12,:128]!
699
mov r6,r6,ror#2
700
add r4,r4,r11
701
vext.8 q13,q15,q12,#4
702
bic r10,r7,r5
703
add r3,r3,r9
704
vadd.i32 q11,q12,q12
705
and r11,r6,r5
706
ldr r9,[sp,#60]
707
vsri.32 q11,q12,#31
708
add r3,r3,r4,ror#27
709
eor r11,r11,r10
710
mov r5,r5,ror#2
711
vshr.u32 q12,q13,#30
712
add r3,r3,r11
713
bic r10,r6,r4
714
vshl.u32 q13,q13,#2
715
add r7,r7,r9
716
and r11,r5,r4
717
veor q11,q11,q12
718
ldr r9,[sp,#0]
719
add r7,r7,r3,ror#27
720
veor q11,q11,q13
721
eor r11,r11,r10
722
mov r4,r4,ror#2
723
add r7,r7,r11
724
vext.8 q12,q10,q11,#8
725
bic r10,r5,r3
726
add r6,r6,r9
727
and r11,r4,r3
728
veor q0,q0,q8
729
ldr r9,[sp,#4]
730
add r6,r6,r7,ror#27
731
veor q0,q0,q1
732
eor r11,r11,r10
733
mov r3,r3,ror#2
734
vadd.i32 q13,q11,q14
735
add r6,r6,r11
736
bic r10,r4,r7
737
veor q12,q12,q0
738
add r5,r5,r9
739
and r11,r3,r7
740
vshr.u32 q0,q12,#30
741
ldr r9,[sp,#8]
742
add r5,r5,r6,ror#27
743
vst1.32 {q13},[r12,:128]!
744
sub r12,r12,#64
745
eor r11,r11,r10
746
mov r7,r7,ror#2
747
vsli.32 q0,q12,#2
748
add r5,r5,r11
749
bic r10,r3,r6
750
add r4,r4,r9
751
and r11,r7,r6
752
ldr r9,[sp,#12]
753
add r4,r4,r5,ror#27
754
eor r11,r11,r10
755
mov r6,r6,ror#2
756
add r4,r4,r11
757
bic r10,r7,r5
758
add r3,r3,r9
759
and r11,r6,r5
760
ldr r9,[sp,#16]
761
add r3,r3,r4,ror#27
762
eor r11,r11,r10
763
mov r5,r5,ror#2
764
add r3,r3,r11
765
vext.8 q12,q11,q0,#8
766
eor r10,r4,r6
767
add r7,r7,r9
768
ldr r9,[sp,#20]
769
veor q1,q1,q9
770
eor r11,r10,r5
771
add r7,r7,r3,ror#27
772
veor q1,q1,q2
773
mov r4,r4,ror#2
774
add r7,r7,r11
775
vadd.i32 q13,q0,q14
776
eor r10,r3,r5
777
add r6,r6,r9
778
veor q12,q12,q1
779
ldr r9,[sp,#24]
780
eor r11,r10,r4
781
vshr.u32 q1,q12,#30
782
add r6,r6,r7,ror#27
783
mov r3,r3,ror#2
784
vst1.32 {q13},[r12,:128]!
785
add r6,r6,r11
786
eor r10,r7,r4
787
vsli.32 q1,q12,#2
788
add r5,r5,r9
789
ldr r9,[sp,#28]
790
eor r11,r10,r3
791
add r5,r5,r6,ror#27
792
mov r7,r7,ror#2
793
add r5,r5,r11
794
eor r10,r6,r3
795
add r4,r4,r9
796
ldr r9,[sp,#32]
797
eor r11,r10,r7
798
add r4,r4,r5,ror#27
799
mov r6,r6,ror#2
800
add r4,r4,r11
801
vext.8 q12,q0,q1,#8
802
eor r10,r5,r7
803
add r3,r3,r9
804
ldr r9,[sp,#36]
805
veor q2,q2,q10
806
eor r11,r10,r6
807
add r3,r3,r4,ror#27
808
veor q2,q2,q3
809
mov r5,r5,ror#2
810
add r3,r3,r11
811
vadd.i32 q13,q1,q14
812
eor r10,r4,r6
813
vld1.32 {d28[],d29[]},[r8,:32]!
814
add r7,r7,r9
815
veor q12,q12,q2
816
ldr r9,[sp,#40]
817
eor r11,r10,r5
818
vshr.u32 q2,q12,#30
819
add r7,r7,r3,ror#27
820
mov r4,r4,ror#2
821
vst1.32 {q13},[r12,:128]!
822
add r7,r7,r11
823
eor r10,r3,r5
824
vsli.32 q2,q12,#2
825
add r6,r6,r9
826
ldr r9,[sp,#44]
827
eor r11,r10,r4
828
add r6,r6,r7,ror#27
829
mov r3,r3,ror#2
830
add r6,r6,r11
831
eor r10,r7,r4
832
add r5,r5,r9
833
ldr r9,[sp,#48]
834
eor r11,r10,r3
835
add r5,r5,r6,ror#27
836
mov r7,r7,ror#2
837
add r5,r5,r11
838
vext.8 q12,q1,q2,#8
839
eor r10,r6,r3
840
add r4,r4,r9
841
ldr r9,[sp,#52]
842
veor q3,q3,q11
843
eor r11,r10,r7
844
add r4,r4,r5,ror#27
845
veor q3,q3,q8
846
mov r6,r6,ror#2
847
add r4,r4,r11
848
vadd.i32 q13,q2,q14
849
eor r10,r5,r7
850
add r3,r3,r9
851
veor q12,q12,q3
852
ldr r9,[sp,#56]
853
eor r11,r10,r6
854
vshr.u32 q3,q12,#30
855
add r3,r3,r4,ror#27
856
mov r5,r5,ror#2
857
vst1.32 {q13},[r12,:128]!
858
add r3,r3,r11
859
eor r10,r4,r6
860
vsli.32 q3,q12,#2
861
add r7,r7,r9
862
ldr r9,[sp,#60]
863
eor r11,r10,r5
864
add r7,r7,r3,ror#27
865
mov r4,r4,ror#2
866
add r7,r7,r11
867
eor r10,r3,r5
868
add r6,r6,r9
869
ldr r9,[sp,#0]
870
eor r11,r10,r4
871
add r6,r6,r7,ror#27
872
mov r3,r3,ror#2
873
add r6,r6,r11
874
vext.8 q12,q2,q3,#8
875
eor r10,r7,r4
876
add r5,r5,r9
877
ldr r9,[sp,#4]
878
veor q8,q8,q0
879
eor r11,r10,r3
880
add r5,r5,r6,ror#27
881
veor q8,q8,q9
882
mov r7,r7,ror#2
883
add r5,r5,r11
884
vadd.i32 q13,q3,q14
885
eor r10,r6,r3
886
add r4,r4,r9
887
veor q12,q12,q8
888
ldr r9,[sp,#8]
889
eor r11,r10,r7
890
vshr.u32 q8,q12,#30
891
add r4,r4,r5,ror#27
892
mov r6,r6,ror#2
893
vst1.32 {q13},[r12,:128]!
894
sub r12,r12,#64
895
add r4,r4,r11
896
eor r10,r5,r7
897
vsli.32 q8,q12,#2
898
add r3,r3,r9
899
ldr r9,[sp,#12]
900
eor r11,r10,r6
901
add r3,r3,r4,ror#27
902
mov r5,r5,ror#2
903
add r3,r3,r11
904
eor r10,r4,r6
905
add r7,r7,r9
906
ldr r9,[sp,#16]
907
eor r11,r10,r5
908
add r7,r7,r3,ror#27
909
mov r4,r4,ror#2
910
add r7,r7,r11
911
vext.8 q12,q3,q8,#8
912
eor r10,r3,r5
913
add r6,r6,r9
914
ldr r9,[sp,#20]
915
veor q9,q9,q1
916
eor r11,r10,r4
917
add r6,r6,r7,ror#27
918
veor q9,q9,q10
919
mov r3,r3,ror#2
920
add r6,r6,r11
921
vadd.i32 q13,q8,q14
922
eor r10,r7,r4
923
add r5,r5,r9
924
veor q12,q12,q9
925
ldr r9,[sp,#24]
926
eor r11,r10,r3
927
vshr.u32 q9,q12,#30
928
add r5,r5,r6,ror#27
929
mov r7,r7,ror#2
930
vst1.32 {q13},[r12,:128]!
931
add r5,r5,r11
932
eor r10,r6,r3
933
vsli.32 q9,q12,#2
934
add r4,r4,r9
935
ldr r9,[sp,#28]
936
eor r11,r10,r7
937
add r4,r4,r5,ror#27
938
mov r6,r6,ror#2
939
add r4,r4,r11
940
eor r10,r5,r7
941
add r3,r3,r9
942
ldr r9,[sp,#32]
943
eor r11,r10,r6
944
add r3,r3,r4,ror#27
945
mov r5,r5,ror#2
946
add r3,r3,r11
947
vext.8 q12,q8,q9,#8
948
add r7,r7,r9
949
and r10,r5,r6
950
ldr r9,[sp,#36]
951
veor q10,q10,q2
952
add r7,r7,r3,ror#27
953
eor r11,r5,r6
954
veor q10,q10,q11
955
add r7,r7,r10
956
and r11,r11,r4
957
vadd.i32 q13,q9,q14
958
mov r4,r4,ror#2
959
add r7,r7,r11
960
veor q12,q12,q10
961
add r6,r6,r9
962
and r10,r4,r5
963
vshr.u32 q10,q12,#30
964
ldr r9,[sp,#40]
965
add r6,r6,r7,ror#27
966
vst1.32 {q13},[r12,:128]!
967
eor r11,r4,r5
968
add r6,r6,r10
969
vsli.32 q10,q12,#2
970
and r11,r11,r3
971
mov r3,r3,ror#2
972
add r6,r6,r11
973
add r5,r5,r9
974
and r10,r3,r4
975
ldr r9,[sp,#44]
976
add r5,r5,r6,ror#27
977
eor r11,r3,r4
978
add r5,r5,r10
979
and r11,r11,r7
980
mov r7,r7,ror#2
981
add r5,r5,r11
982
add r4,r4,r9
983
and r10,r7,r3
984
ldr r9,[sp,#48]
985
add r4,r4,r5,ror#27
986
eor r11,r7,r3
987
add r4,r4,r10
988
and r11,r11,r6
989
mov r6,r6,ror#2
990
add r4,r4,r11
991
vext.8 q12,q9,q10,#8
992
add r3,r3,r9
993
and r10,r6,r7
994
ldr r9,[sp,#52]
995
veor q11,q11,q3
996
add r3,r3,r4,ror#27
997
eor r11,r6,r7
998
veor q11,q11,q0
999
add r3,r3,r10
1000
and r11,r11,r5
1001
vadd.i32 q13,q10,q14
1002
mov r5,r5,ror#2
1003
vld1.32 {d28[],d29[]},[r8,:32]!
1004
add r3,r3,r11
1005
veor q12,q12,q11
1006
add r7,r7,r9
1007
and r10,r5,r6
1008
vshr.u32 q11,q12,#30
1009
ldr r9,[sp,#56]
1010
add r7,r7,r3,ror#27
1011
vst1.32 {q13},[r12,:128]!
1012
eor r11,r5,r6
1013
add r7,r7,r10
1014
vsli.32 q11,q12,#2
1015
and r11,r11,r4
1016
mov r4,r4,ror#2
1017
add r7,r7,r11
1018
add r6,r6,r9
1019
and r10,r4,r5
1020
ldr r9,[sp,#60]
1021
add r6,r6,r7,ror#27
1022
eor r11,r4,r5
1023
add r6,r6,r10
1024
and r11,r11,r3
1025
mov r3,r3,ror#2
1026
add r6,r6,r11
1027
add r5,r5,r9
1028
and r10,r3,r4
1029
ldr r9,[sp,#0]
1030
add r5,r5,r6,ror#27
1031
eor r11,r3,r4
1032
add r5,r5,r10
1033
and r11,r11,r7
1034
mov r7,r7,ror#2
1035
add r5,r5,r11
1036
vext.8 q12,q10,q11,#8
1037
add r4,r4,r9
1038
and r10,r7,r3
1039
ldr r9,[sp,#4]
1040
veor q0,q0,q8
1041
add r4,r4,r5,ror#27
1042
eor r11,r7,r3
1043
veor q0,q0,q1
1044
add r4,r4,r10
1045
and r11,r11,r6
1046
vadd.i32 q13,q11,q14
1047
mov r6,r6,ror#2
1048
add r4,r4,r11
1049
veor q12,q12,q0
1050
add r3,r3,r9
1051
and r10,r6,r7
1052
vshr.u32 q0,q12,#30
1053
ldr r9,[sp,#8]
1054
add r3,r3,r4,ror#27
1055
vst1.32 {q13},[r12,:128]!
1056
sub r12,r12,#64
1057
eor r11,r6,r7
1058
add r3,r3,r10
1059
vsli.32 q0,q12,#2
1060
and r11,r11,r5
1061
mov r5,r5,ror#2
1062
add r3,r3,r11
1063
add r7,r7,r9
1064
and r10,r5,r6
1065
ldr r9,[sp,#12]
1066
add r7,r7,r3,ror#27
1067
eor r11,r5,r6
1068
add r7,r7,r10
1069
and r11,r11,r4
1070
mov r4,r4,ror#2
1071
add r7,r7,r11
1072
add r6,r6,r9
1073
and r10,r4,r5
1074
ldr r9,[sp,#16]
1075
add r6,r6,r7,ror#27
1076
eor r11,r4,r5
1077
add r6,r6,r10
1078
and r11,r11,r3
1079
mov r3,r3,ror#2
1080
add r6,r6,r11
1081
vext.8 q12,q11,q0,#8
1082
add r5,r5,r9
1083
and r10,r3,r4
1084
ldr r9,[sp,#20]
1085
veor q1,q1,q9
1086
add r5,r5,r6,ror#27
1087
eor r11,r3,r4
1088
veor q1,q1,q2
1089
add r5,r5,r10
1090
and r11,r11,r7
1091
vadd.i32 q13,q0,q14
1092
mov r7,r7,ror#2
1093
add r5,r5,r11
1094
veor q12,q12,q1
1095
add r4,r4,r9
1096
and r10,r7,r3
1097
vshr.u32 q1,q12,#30
1098
ldr r9,[sp,#24]
1099
add r4,r4,r5,ror#27
1100
vst1.32 {q13},[r12,:128]!
1101
eor r11,r7,r3
1102
add r4,r4,r10
1103
vsli.32 q1,q12,#2
1104
and r11,r11,r6
1105
mov r6,r6,ror#2
1106
add r4,r4,r11
1107
add r3,r3,r9
1108
and r10,r6,r7
1109
ldr r9,[sp,#28]
1110
add r3,r3,r4,ror#27
1111
eor r11,r6,r7
1112
add r3,r3,r10
1113
and r11,r11,r5
1114
mov r5,r5,ror#2
1115
add r3,r3,r11
1116
add r7,r7,r9
1117
and r10,r5,r6
1118
ldr r9,[sp,#32]
1119
add r7,r7,r3,ror#27
1120
eor r11,r5,r6
1121
add r7,r7,r10
1122
and r11,r11,r4
1123
mov r4,r4,ror#2
1124
add r7,r7,r11
1125
vext.8 q12,q0,q1,#8
1126
add r6,r6,r9
1127
and r10,r4,r5
1128
ldr r9,[sp,#36]
1129
veor q2,q2,q10
1130
add r6,r6,r7,ror#27
1131
eor r11,r4,r5
1132
veor q2,q2,q3
1133
add r6,r6,r10
1134
and r11,r11,r3
1135
vadd.i32 q13,q1,q14
1136
mov r3,r3,ror#2
1137
add r6,r6,r11
1138
veor q12,q12,q2
1139
add r5,r5,r9
1140
and r10,r3,r4
1141
vshr.u32 q2,q12,#30
1142
ldr r9,[sp,#40]
1143
add r5,r5,r6,ror#27
1144
vst1.32 {q13},[r12,:128]!
1145
eor r11,r3,r4
1146
add r5,r5,r10
1147
vsli.32 q2,q12,#2
1148
and r11,r11,r7
1149
mov r7,r7,ror#2
1150
add r5,r5,r11
1151
add r4,r4,r9
1152
and r10,r7,r3
1153
ldr r9,[sp,#44]
1154
add r4,r4,r5,ror#27
1155
eor r11,r7,r3
1156
add r4,r4,r10
1157
and r11,r11,r6
1158
mov r6,r6,ror#2
1159
add r4,r4,r11
1160
add r3,r3,r9
1161
and r10,r6,r7
1162
ldr r9,[sp,#48]
1163
add r3,r3,r4,ror#27
1164
eor r11,r6,r7
1165
add r3,r3,r10
1166
and r11,r11,r5
1167
mov r5,r5,ror#2
1168
add r3,r3,r11
1169
vext.8 q12,q1,q2,#8
1170
eor r10,r4,r6
1171
add r7,r7,r9
1172
ldr r9,[sp,#52]
1173
veor q3,q3,q11
1174
eor r11,r10,r5
1175
add r7,r7,r3,ror#27
1176
veor q3,q3,q8
1177
mov r4,r4,ror#2
1178
add r7,r7,r11
1179
vadd.i32 q13,q2,q14
1180
eor r10,r3,r5
1181
add r6,r6,r9
1182
veor q12,q12,q3
1183
ldr r9,[sp,#56]
1184
eor r11,r10,r4
1185
vshr.u32 q3,q12,#30
1186
add r6,r6,r7,ror#27
1187
mov r3,r3,ror#2
1188
vst1.32 {q13},[r12,:128]!
1189
add r6,r6,r11
1190
eor r10,r7,r4
1191
vsli.32 q3,q12,#2
1192
add r5,r5,r9
1193
ldr r9,[sp,#60]
1194
eor r11,r10,r3
1195
add r5,r5,r6,ror#27
1196
mov r7,r7,ror#2
1197
add r5,r5,r11
1198
eor r10,r6,r3
1199
add r4,r4,r9
1200
ldr r9,[sp,#0]
1201
eor r11,r10,r7
1202
add r4,r4,r5,ror#27
1203
mov r6,r6,ror#2
1204
add r4,r4,r11
1205
vadd.i32 q13,q3,q14
1206
eor r10,r5,r7
1207
add r3,r3,r9
1208
vst1.32 {q13},[r12,:128]!
1209
sub r12,r12,#64
1210
teq r1,r2
1211
sub r8,r8,#16
1212
it eq
1213
subeq r1,r1,#64
1214
vld1.8 {q0,q1},[r1]!
1215
ldr r9,[sp,#4]
1216
eor r11,r10,r6
1217
vld1.8 {q2,q3},[r1]!
1218
add r3,r3,r4,ror#27
1219
mov r5,r5,ror#2
1220
vld1.32 {d28[],d29[]},[r8,:32]!
1221
add r3,r3,r11
1222
eor r10,r4,r6
1223
vrev32.8 q0,q0
1224
add r7,r7,r9
1225
ldr r9,[sp,#8]
1226
eor r11,r10,r5
1227
add r7,r7,r3,ror#27
1228
mov r4,r4,ror#2
1229
add r7,r7,r11
1230
eor r10,r3,r5
1231
add r6,r6,r9
1232
ldr r9,[sp,#12]
1233
eor r11,r10,r4
1234
add r6,r6,r7,ror#27
1235
mov r3,r3,ror#2
1236
add r6,r6,r11
1237
eor r10,r7,r4
1238
add r5,r5,r9
1239
ldr r9,[sp,#16]
1240
eor r11,r10,r3
1241
add r5,r5,r6,ror#27
1242
mov r7,r7,ror#2
1243
add r5,r5,r11
1244
vrev32.8 q1,q1
1245
eor r10,r6,r3
1246
add r4,r4,r9
1247
vadd.i32 q8,q0,q14
1248
ldr r9,[sp,#20]
1249
eor r11,r10,r7
1250
vst1.32 {q8},[r12,:128]!
1251
add r4,r4,r5,ror#27
1252
mov r6,r6,ror#2
1253
add r4,r4,r11
1254
eor r10,r5,r7
1255
add r3,r3,r9
1256
ldr r9,[sp,#24]
1257
eor r11,r10,r6
1258
add r3,r3,r4,ror#27
1259
mov r5,r5,ror#2
1260
add r3,r3,r11
1261
eor r10,r4,r6
1262
add r7,r7,r9
1263
ldr r9,[sp,#28]
1264
eor r11,r10,r5
1265
add r7,r7,r3,ror#27
1266
mov r4,r4,ror#2
1267
add r7,r7,r11
1268
eor r10,r3,r5
1269
add r6,r6,r9
1270
ldr r9,[sp,#32]
1271
eor r11,r10,r4
1272
add r6,r6,r7,ror#27
1273
mov r3,r3,ror#2
1274
add r6,r6,r11
1275
vrev32.8 q2,q2
1276
eor r10,r7,r4
1277
add r5,r5,r9
1278
vadd.i32 q9,q1,q14
1279
ldr r9,[sp,#36]
1280
eor r11,r10,r3
1281
vst1.32 {q9},[r12,:128]!
1282
add r5,r5,r6,ror#27
1283
mov r7,r7,ror#2
1284
add r5,r5,r11
1285
eor r10,r6,r3
1286
add r4,r4,r9
1287
ldr r9,[sp,#40]
1288
eor r11,r10,r7
1289
add r4,r4,r5,ror#27
1290
mov r6,r6,ror#2
1291
add r4,r4,r11
1292
eor r10,r5,r7
1293
add r3,r3,r9
1294
ldr r9,[sp,#44]
1295
eor r11,r10,r6
1296
add r3,r3,r4,ror#27
1297
mov r5,r5,ror#2
1298
add r3,r3,r11
1299
eor r10,r4,r6
1300
add r7,r7,r9
1301
ldr r9,[sp,#48]
1302
eor r11,r10,r5
1303
add r7,r7,r3,ror#27
1304
mov r4,r4,ror#2
1305
add r7,r7,r11
1306
vrev32.8 q3,q3
1307
eor r10,r3,r5
1308
add r6,r6,r9
1309
vadd.i32 q10,q2,q14
1310
ldr r9,[sp,#52]
1311
eor r11,r10,r4
1312
vst1.32 {q10},[r12,:128]!
1313
add r6,r6,r7,ror#27
1314
mov r3,r3,ror#2
1315
add r6,r6,r11
1316
eor r10,r7,r4
1317
add r5,r5,r9
1318
ldr r9,[sp,#56]
1319
eor r11,r10,r3
1320
add r5,r5,r6,ror#27
1321
mov r7,r7,ror#2
1322
add r5,r5,r11
1323
eor r10,r6,r3
1324
add r4,r4,r9
1325
ldr r9,[sp,#60]
1326
eor r11,r10,r7
1327
add r4,r4,r5,ror#27
1328
mov r6,r6,ror#2
1329
add r4,r4,r11
1330
eor r10,r5,r7
1331
add r3,r3,r9
1332
eor r11,r10,r6
1333
add r3,r3,r4,ror#27
1334
mov r5,r5,ror#2
1335
add r3,r3,r11
1336
ldmia r0,{r9,r10,r11,r12} @ accumulate context
1337
add r3,r3,r9
1338
ldr r9,[r0,#16]
1339
add r4,r4,r10
1340
add r5,r5,r11
1341
add r6,r6,r12
1342
it eq
1343
moveq sp,r14
1344
add r7,r7,r9
1345
it ne
1346
ldrne r9,[sp]
1347
stmia r0,{r3,r4,r5,r6,r7}
1348
itt ne
1349
addne r12,sp,#3*16
1350
bne .Loop_neon
1351
1352
@ vldmia sp!,{d8-d15}
1353
ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc}
1354
.size sha1_block_data_order_neon,.-sha1_block_data_order_neon
1355
#endif
1356
#if __ARM_MAX_ARCH__>=7
1357
1358
# if defined(__thumb2__)
1359
# define INST(a,b,c,d) .byte c,d|0xf,a,b
1360
# else
1361
# define INST(a,b,c,d) .byte a,b,c,d|0x10
1362
# endif
1363
1364
.type sha1_block_data_order_armv8,%function
1365
.align 5
1366
sha1_block_data_order_armv8:
1367
.LARMv8:
1368
vstmdb sp!,{d8,d9,d10,d11,d12,d13,d14,d15} @ ABI specification says so
1369
1370
veor q1,q1,q1
1371
adr r3,.LK_00_19
1372
vld1.32 {q0},[r0]!
1373
vld1.32 {d2[0]},[r0]
1374
sub r0,r0,#16
1375
vld1.32 {d16[],d17[]},[r3,:32]!
1376
vld1.32 {d18[],d19[]},[r3,:32]!
1377
vld1.32 {d20[],d21[]},[r3,:32]!
1378
vld1.32 {d22[],d23[]},[r3,:32]
1379
1380
.Loop_v8:
1381
vld1.8 {q4,q5},[r1]!
1382
vld1.8 {q6,q7},[r1]!
1383
vrev32.8 q4,q4
1384
vrev32.8 q5,q5
1385
1386
vadd.i32 q12,q8,q4
1387
vrev32.8 q6,q6
1388
vmov q14,q0 @ offload
1389
subs r2,r2,#1
1390
1391
vadd.i32 q13,q8,q5
1392
vrev32.8 q7,q7
1393
INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 0
1394
INST(0x68,0x0c,0x02,0xe2) @ sha1c q0,q1,q12
1395
vadd.i32 q12,q8,q6
1396
INST(0x4c,0x8c,0x3a,0xe2) @ sha1su0 q4,q5,q6
1397
INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 1
1398
INST(0x6a,0x0c,0x06,0xe2) @ sha1c q0,q3,q13
1399
vadd.i32 q13,q8,q7
1400
INST(0x8e,0x83,0xba,0xf3) @ sha1su1 q4,q7
1401
INST(0x4e,0xac,0x3c,0xe2) @ sha1su0 q5,q6,q7
1402
INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 2
1403
INST(0x68,0x0c,0x04,0xe2) @ sha1c q0,q2,q12
1404
vadd.i32 q12,q8,q4
1405
INST(0x88,0xa3,0xba,0xf3) @ sha1su1 q5,q4
1406
INST(0x48,0xcc,0x3e,0xe2) @ sha1su0 q6,q7,q4
1407
INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 3
1408
INST(0x6a,0x0c,0x06,0xe2) @ sha1c q0,q3,q13
1409
vadd.i32 q13,q9,q5
1410
INST(0x8a,0xc3,0xba,0xf3) @ sha1su1 q6,q5
1411
INST(0x4a,0xec,0x38,0xe2) @ sha1su0 q7,q4,q5
1412
INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 4
1413
INST(0x68,0x0c,0x04,0xe2) @ sha1c q0,q2,q12
1414
vadd.i32 q12,q9,q6
1415
INST(0x8c,0xe3,0xba,0xf3) @ sha1su1 q7,q6
1416
INST(0x4c,0x8c,0x3a,0xe2) @ sha1su0 q4,q5,q6
1417
INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 5
1418
INST(0x6a,0x0c,0x16,0xe2) @ sha1p q0,q3,q13
1419
vadd.i32 q13,q9,q7
1420
INST(0x8e,0x83,0xba,0xf3) @ sha1su1 q4,q7
1421
INST(0x4e,0xac,0x3c,0xe2) @ sha1su0 q5,q6,q7
1422
INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 6
1423
INST(0x68,0x0c,0x14,0xe2) @ sha1p q0,q2,q12
1424
vadd.i32 q12,q9,q4
1425
INST(0x88,0xa3,0xba,0xf3) @ sha1su1 q5,q4
1426
INST(0x48,0xcc,0x3e,0xe2) @ sha1su0 q6,q7,q4
1427
INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 7
1428
INST(0x6a,0x0c,0x16,0xe2) @ sha1p q0,q3,q13
1429
vadd.i32 q13,q9,q5
1430
INST(0x8a,0xc3,0xba,0xf3) @ sha1su1 q6,q5
1431
INST(0x4a,0xec,0x38,0xe2) @ sha1su0 q7,q4,q5
1432
INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 8
1433
INST(0x68,0x0c,0x14,0xe2) @ sha1p q0,q2,q12
1434
vadd.i32 q12,q10,q6
1435
INST(0x8c,0xe3,0xba,0xf3) @ sha1su1 q7,q6
1436
INST(0x4c,0x8c,0x3a,0xe2) @ sha1su0 q4,q5,q6
1437
INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 9
1438
INST(0x6a,0x0c,0x16,0xe2) @ sha1p q0,q3,q13
1439
vadd.i32 q13,q10,q7
1440
INST(0x8e,0x83,0xba,0xf3) @ sha1su1 q4,q7
1441
INST(0x4e,0xac,0x3c,0xe2) @ sha1su0 q5,q6,q7
1442
INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 10
1443
INST(0x68,0x0c,0x24,0xe2) @ sha1m q0,q2,q12
1444
vadd.i32 q12,q10,q4
1445
INST(0x88,0xa3,0xba,0xf3) @ sha1su1 q5,q4
1446
INST(0x48,0xcc,0x3e,0xe2) @ sha1su0 q6,q7,q4
1447
INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 11
1448
INST(0x6a,0x0c,0x26,0xe2) @ sha1m q0,q3,q13
1449
vadd.i32 q13,q10,q5
1450
INST(0x8a,0xc3,0xba,0xf3) @ sha1su1 q6,q5
1451
INST(0x4a,0xec,0x38,0xe2) @ sha1su0 q7,q4,q5
1452
INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 12
1453
INST(0x68,0x0c,0x24,0xe2) @ sha1m q0,q2,q12
1454
vadd.i32 q12,q10,q6
1455
INST(0x8c,0xe3,0xba,0xf3) @ sha1su1 q7,q6
1456
INST(0x4c,0x8c,0x3a,0xe2) @ sha1su0 q4,q5,q6
1457
INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 13
1458
INST(0x6a,0x0c,0x26,0xe2) @ sha1m q0,q3,q13
1459
vadd.i32 q13,q11,q7
1460
INST(0x8e,0x83,0xba,0xf3) @ sha1su1 q4,q7
1461
INST(0x4e,0xac,0x3c,0xe2) @ sha1su0 q5,q6,q7
1462
INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 14
1463
INST(0x68,0x0c,0x24,0xe2) @ sha1m q0,q2,q12
1464
vadd.i32 q12,q11,q4
1465
INST(0x88,0xa3,0xba,0xf3) @ sha1su1 q5,q4
1466
INST(0x48,0xcc,0x3e,0xe2) @ sha1su0 q6,q7,q4
1467
INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 15
1468
INST(0x6a,0x0c,0x16,0xe2) @ sha1p q0,q3,q13
1469
vadd.i32 q13,q11,q5
1470
INST(0x8a,0xc3,0xba,0xf3) @ sha1su1 q6,q5
1471
INST(0x4a,0xec,0x38,0xe2) @ sha1su0 q7,q4,q5
1472
INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 16
1473
INST(0x68,0x0c,0x14,0xe2) @ sha1p q0,q2,q12
1474
vadd.i32 q12,q11,q6
1475
INST(0x8c,0xe3,0xba,0xf3) @ sha1su1 q7,q6
1476
INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 17
1477
INST(0x6a,0x0c,0x16,0xe2) @ sha1p q0,q3,q13
1478
vadd.i32 q13,q11,q7
1479
1480
INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 18
1481
INST(0x68,0x0c,0x14,0xe2) @ sha1p q0,q2,q12
1482
1483
INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 19
1484
INST(0x6a,0x0c,0x16,0xe2) @ sha1p q0,q3,q13
1485
1486
vadd.i32 q1,q1,q2
1487
vadd.i32 q0,q0,q14
1488
bne .Loop_v8
1489
1490
vst1.32 {q0},[r0]!
1491
vst1.32 {d2[0]},[r0]
1492
1493
vldmia sp!,{d8,d9,d10,d11,d12,d13,d14,d15}
1494
bx lr @ bx lr
1495
.size sha1_block_data_order_armv8,.-sha1_block_data_order_armv8
1496
#endif
1497
#if __ARM_MAX_ARCH__>=7
1498
1499
.hidden OPENSSL_armcap_P
1500
#endif
1501
1502