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