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