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

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

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

Powered by Google App Engine
This is Rietveld 408576698