Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(219)

Side by Side Diff: third_party/boringssl/linux-arm/crypto/sha/sha1-armv4-large.S

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

Powered by Google App Engine
This is Rietveld 408576698