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

Side by Side Diff: openssl/crypto/chacha/chacha_vec_arm.S

Issue 2072073002: Delete bundled copy of OpenSSL and replace with README. (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/openssl@master
Patch Set: Delete bundled copy of OpenSSL and replace with README. Created 4 years, 6 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
« no previous file with comments | « openssl/crypto/chacha/chacha_vec.c ('k') | openssl/crypto/chacha/chachatest.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # This file contains a pre-compiled version of chacha_vec.c for ARM. This is
2 # needed to support switching on NEON code at runtime. If the whole of OpenSSL
3 # were to be compiled with the needed flags to build chacha_vec.c, then it
4 # wouldn't be possible to run on non-NEON systems.
5 #
6 # This file was generated by:
7 #
8 # /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2012.10-20121022_linux/bin/arm-lin ux-gnueabihf-gcc -O3 -mcpu=cortex-a8 -mfpu=neon -S chacha_vec.c -I ../../include -fpic -o chacha_vec_arm.S
9 #
10 # And then EABI attribute 28 was set to zero to allow linking with soft-float
11 # code.
12
13 .syntax unified
14 .cpu cortex-a8
15 .eabi_attribute 27, 3
16 .eabi_attribute 28, 0
17 .fpu neon
18 .eabi_attribute 20, 1
19 .eabi_attribute 21, 1
20 .eabi_attribute 23, 3
21 .eabi_attribute 24, 1
22 .eabi_attribute 25, 1
23 .eabi_attribute 26, 2
24 .eabi_attribute 30, 2
25 .eabi_attribute 34, 1
26 .eabi_attribute 18, 4
27 .thumb
28 .file "chacha_vec.c"
29 .text
30 .align 2
31 .global CRYPTO_chacha_20_neon
32 .thumb
33 .thumb_func
34 .type CRYPTO_chacha_20_neon, %function
35 CRYPTO_chacha_20_neon:
36 @ args = 8, pretend = 0, frame = 304
37 @ frame_needed = 1, uses_anonymous_args = 0
38 @ link register save eliminated.
39 push {r4, r5, r6, r7, r8, r9, sl, fp}
40 fstmfdd sp!, {d8, d9, d10, d11, d12, d13, d14, d15}
41 sub sp, sp, #304
42 add r7, sp, #0
43 movw ip, #43691
44 movt ip, 43690
45 str r2, [r7, #196]
46 sub sp, sp, #96
47 ldr r4, [r7, #196]
48 ldr r6, [r7, #400]
49 ldr r2, .L38+16
50 umull r4, ip, ip, r4
51 ldr r6, [r6, #0]
52 ldr r8, [r7, #400]
53 .LPIC24:
54 add r2, pc
55 add r4, sp, #15
56 str r3, [r7, #244]
57 str r6, [r7, #176]
58 bic r4, r4, #15
59 str r0, [r7, #188]
60 str r4, [r7, #200]
61 lsrs ip, ip, #7
62 str r1, [r7, #184]
63 ldmia r2, {r0, r1, r2, r3}
64 ldr r4, [r8, #4]
65 ldr r5, [r7, #244]
66 vld1.64 {d24-d25}, [r5:64]
67 vldr d26, [r5, #16]
68 vldr d27, [r5, #24]
69 ldr r9, [r7, #200]
70 ldr r8, [r7, #404]
71 ldr r5, [r7, #176]
72 add r6, r9, #64
73 str r4, [r7, #300]
74 mov r4, #0
75 str r8, [r7, #288]
76 str r5, [r7, #296]
77 str r4, [r7, #292]
78 stmia r6, {r0, r1, r2, r3}
79 vldr d22, [r9, #64]
80 vldr d23, [r9, #72]
81 vldr d20, [r7, #288]
82 vldr d21, [r7, #296]
83 str ip, [r7, #192]
84 beq .L20
85 lsl r6, ip, #1
86 ldr r1, [r9, #68]
87 add r3, r6, ip
88 str r6, [r7, #180]
89 ldr r2, [r9, #72]
90 add r8, r8, #2
91 ldr r5, [r9, #76]
92 vldr d18, .L38
93 vldr d19, .L38+8
94 str r4, [r7, #240]
95 ldr r6, [r7, #184]
96 ldr r4, [r7, #188]
97 str r0, [r7, #224]
98 str r1, [r7, #220]
99 str r8, [r7, #208]
100 str r2, [r7, #216]
101 str r3, [r7, #204]
102 str r5, [r7, #212]
103 str r6, [r7, #252]
104 str r4, [r7, #248]
105 .L4:
106 ldr r2, [r7, #244]
107 add r9, r7, #216
108 ldr r3, [r7, #244]
109 vadd.i32 q8, q10, q9
110 ldr r6, [r7, #208]
111 vmov q15, q13 @ v4si
112 ldr r5, [r7, #240]
113 vmov q3, q12 @ v4si
114 ldr r4, [r7, #244]
115 vmov q2, q11 @ v4si
116 adds r5, r5, r6
117 ldr r2, [r2, #8]
118 ldr r6, [r7, #400]
119 vmov q5, q10 @ v4si
120 ldr r3, [r3, #12]
121 vmov q1, q13 @ v4si
122 ldr r0, [r7, #244]
123 vmov q0, q12 @ v4si
124 ldr r1, [r7, #244]
125 vmov q4, q11 @ v4si
126 ldmia r9, {r9, sl, fp}
127 str r5, [r7, #228]
128 ldr r5, [r4, #24]
129 ldr r0, [r0, #0]
130 ldr r1, [r1, #4]
131 str r2, [r7, #264]
132 str r3, [r7, #236]
133 ldr r2, [r6, #4]
134 ldr r3, [r4, #28]
135 str r5, [r7, #280]
136 ldr r5, [r6, #0]
137 movs r6, #0
138 ldr ip, [r7, #228]
139 ldr r8, [r7, #212]
140 str r0, [r7, #232]
141 str r1, [r7, #268]
142 ldr r0, [r4, #16]
143 ldr r1, [r4, #20]
144 movs r4, #10
145 str r2, [r7, #24]
146 str r3, [r7, #284]
147 str r4, [r7, #256]
148 ldr r2, [r7, #264]
149 str r9, [r7, #276]
150 mov r9, r6
151 ldr r6, [r7, #280]
152 str r8, [r7, #260]
153 mov r8, sl
154 str r1, [r7, #272]
155 mov sl, ip
156 str r6, [r7, #264]
157 mov r6, r5
158 ldr r3, [r7, #236]
159 mov r5, r0
160 ldr ip, [r7, #24]
161 ldr r1, [r7, #268]
162 ldr r0, [r7, #232]
163 b .L39
164 .L40:
165 .align 3
166 .L38:
167 .word 1
168 .word 0
169 .word 0
170 .word 0
171 .word .LANCHOR0-(.LPIC24+4)
172 .L39:
173 .L3:
174 vadd.i32 q4, q4, q0
175 add r8, r8, r1
176 vadd.i32 q2, q2, q3
177 str r8, [r7, #268]
178 veor q5, q5, q4
179 ldr r8, [r7, #276]
180 veor q8, q8, q2
181 add fp, fp, r0
182 str fp, [r7, #280]
183 add r8, r8, r2
184 vrev32.16 q5, q5
185 str r8, [r7, #276]
186 vrev32.16 q8, q8
187 vadd.i32 q1, q1, q5
188 vadd.i32 q15, q15, q8
189 ldr r8, [r7, #280]
190 veor q0, q1, q0
191 ldr r4, [r7, #260]
192 veor q3, q15, q3
193 eor sl, sl, r8
194 ldr r8, [r7, #276]
195 add fp, r4, r3
196 vshl.i32 q7, q0, #12
197 ldr r4, [r7, #268]
198 vshl.i32 q6, q3, #12
199 eor r6, r6, r8
200 eor r9, r9, r4
201 ldr r4, [r7, #272]
202 vsri.32 q7, q0, #20
203 ror r8, r6, #16
204 ldr r6, [r7, #264]
205 eor ip, ip, fp
206 vsri.32 q6, q3, #20
207 ror sl, sl, #16
208 ror r9, r9, #16
209 add r5, r5, sl
210 vadd.i32 q4, q4, q7
211 str r5, [r7, #236]
212 vadd.i32 q2, q2, q6
213 add r5, r4, r9
214 add r4, r6, r8
215 ldr r6, [r7, #284]
216 ror ip, ip, #16
217 veor q5, q4, q5
218 veor q8, q2, q8
219 add r6, r6, ip
220 str r6, [r7, #264]
221 eors r1, r1, r5
222 ldr r6, [r7, #236]
223 vshl.i32 q3, q5, #8
224 vshl.i32 q14, q8, #8
225 eors r2, r2, r4
226 eors r0, r0, r6
227 ldr r6, [r7, #264]
228 vsri.32 q3, q5, #24
229 ror r1, r1, #20
230 eors r3, r3, r6
231 ldr r6, [r7, #280]
232 ror r0, r0, #20
233 vsri.32 q14, q8, #24
234 adds r6, r0, r6
235 str r6, [r7, #284]
236 ldr r6, [r7, #268]
237 vadd.i32 q1, q1, q3
238 vadd.i32 q15, q15, q14
239 ror r2, r2, #20
240 adds r6, r1, r6
241 str r6, [r7, #260]
242 ldr r6, [r7, #276]
243 veor q6, q15, q6
244 veor q7, q1, q7
245 ror r3, r3, #20
246 adds r6, r2, r6
247 str r6, [r7, #280]
248 ldr r6, [r7, #284]
249 vshl.i32 q0, q6, #7
250 vshl.i32 q5, q7, #7
251 add fp, r3, fp
252 eor sl, r6, sl
253 ldr r6, [r7, #260]
254 eor ip, fp, ip
255 vsri.32 q0, q6, #25
256 eor r9, r6, r9
257 ldr r6, [r7, #280]
258 ror sl, sl, #24
259 vsri.32 q5, q7, #25
260 eor r8, r6, r8
261 ldr r6, [r7, #236]
262 ror r9, r9, #24
263 ror ip, ip, #24
264 add r6, sl, r6
265 str r6, [r7, #276]
266 ldr r6, [r7, #264]
267 add r5, r9, r5
268 str r5, [r7, #272]
269 vext.32 q5, q5, q5, #1
270 add r5, ip, r6
271 ldr r6, [r7, #276]
272 vext.32 q0, q0, q0, #1
273 vadd.i32 q4, q4, q5
274 eors r0, r0, r6
275 ldr r6, [r7, #272]
276 vadd.i32 q2, q2, q0
277 vext.32 q3, q3, q3, #3
278 ror r8, r8, #24
279 eors r1, r1, r6
280 vext.32 q14, q14, q14, #3
281 add r4, r8, r4
282 ldr r6, [r7, #284]
283 veor q3, q4, q3
284 veor q14, q2, q14
285 eors r2, r2, r4
286 ror r1, r1, #25
287 vext.32 q1, q1, q1, #2
288 adds r6, r1, r6
289 str r6, [r7, #284]
290 vext.32 q15, q15, q15, #2
291 ldr r6, [r7, #260]
292 eors r3, r3, r5
293 ror r2, r2, #25
294 vrev32.16 q8, q14
295 adds r6, r2, r6
296 vrev32.16 q3, q3
297 str r6, [r7, #268]
298 vadd.i32 q1, q1, q3
299 ldr r6, [r7, #280]
300 vadd.i32 q15, q15, q8
301 ror r3, r3, #25
302 veor q5, q1, q5
303 adds r6, r3, r6
304 veor q0, q15, q0
305 str r6, [r7, #264]
306 ldr r6, [r7, #268]
307 ror r0, r0, #25
308 add fp, r0, fp
309 vshl.i32 q6, q5, #12
310 eor sl, r6, sl
311 ldr r6, [r7, #284]
312 vshl.i32 q14, q0, #12
313 eor r8, fp, r8
314 eor ip, r6, ip
315 ldr r6, [r7, #264]
316 vsri.32 q6, q5, #20
317 ror sl, sl, #16
318 eor r9, r6, r9
319 ror r6, r8, #16
320 vsri.32 q14, q0, #20
321 ldr r8, [r7, #272]
322 ror ip, ip, #16
323 add r5, sl, r5
324 add r8, r6, r8
325 add r4, ip, r4
326 str r4, [r7, #236]
327 eor r0, r8, r0
328 str r5, [r7, #280]
329 vadd.i32 q4, q4, q6
330 ldr r5, [r7, #236]
331 vadd.i32 q2, q2, q14
332 ldr r4, [r7, #276]
333 ror r0, r0, #20
334 veor q3, q4, q3
335 eors r1, r1, r5
336 veor q0, q2, q8
337 str r8, [r7, #272]
338 str r0, [r7, #24]
339 add fp, r0, fp
340 ldr r8, [r7, #280]
341 ror r9, r9, #16
342 ldr r0, [r7, #284]
343 add r4, r9, r4
344 str fp, [r7, #260]
345 ror r1, r1, #20
346 add fp, r1, r0
347 eor r2, r8, r2
348 ldr r0, [r7, #260]
349 eors r3, r3, r4
350 vshl.i32 q5, q3, #8
351 str r4, [r7, #232]
352 vshl.i32 q8, q0, #8
353 ldr r4, [r7, #268]
354 ldr r5, [r7, #264]
355 ror r2, r2, #20
356 ror r3, r3, #20
357 eors r6, r6, r0
358 adds r5, r3, r5
359 add r8, r2, r4
360 vsri.32 q5, q3, #24
361 ldr r4, [r7, #272]
362 eor r9, r5, r9
363 eor ip, fp, ip
364 vsri.32 q8, q0, #24
365 eor sl, r8, sl
366 ror r6, r6, #24
367 ldr r0, [r7, #280]
368 str r5, [r7, #276]
369 adds r4, r6, r4
370 ldr r5, [r7, #236]
371 vadd.i32 q1, q1, q5
372 str r4, [r7, #272]
373 vadd.i32 q15, q15, q8
374 ldr r4, [r7, #232]
375 ror ip, ip, #24
376 ror sl, sl, #24
377 ror r9, r9, #24
378 add r5, ip, r5
379 add r0, sl, r0
380 str r5, [r7, #264]
381 add r5, r9, r4
382 str r0, [r7, #284]
383 veor q6, q1, q6
384 ldr r4, [r7, #24]
385 veor q14, q15, q14
386 ldr r0, [r7, #272]
387 eors r3, r3, r5
388 vshl.i32 q0, q6, #7
389 vext.32 q1, q1, q1, #2
390 eors r0, r0, r4
391 ldr r4, [r7, #284]
392 str r0, [r7, #280]
393 vshl.i32 q3, q14, #7
394 eors r2, r2, r4
395 ldr r4, [r7, #280]
396 ldr r0, [r7, #264]
397 vsri.32 q0, q6, #25
398 ror r2, r2, #25
399 ror r3, r3, #25
400 eors r1, r1, r0
401 vsri.32 q3, q14, #25
402 ror r0, r4, #25
403 ldr r4, [r7, #256]
404 ror r1, r1, #25
405 vext.32 q5, q5, q5, #1
406 subs r4, r4, #1
407 str r4, [r7, #256]
408 vext.32 q15, q15, q15, #2
409 vext.32 q8, q8, q8, #1
410 vext.32 q0, q0, q0, #3
411 vext.32 q3, q3, q3, #3
412 bne .L3
413 ldr r4, [r7, #264]
414 vadd.i32 q14, q10, q9
415 str r2, [r7, #264]
416 vadd.i32 q10, q10, q5
417 ldr r2, [r7, #252]
418 vld1.64 {d12-d13}, [r2:64]
419 ldr r2, [r7, #220]
420 vadd.i32 q4, q11, q4
421 str ip, [r7, #24]
422 mov ip, sl
423 mov sl, r8
424 ldr r8, [r7, #260]
425 add sl, sl, r2
426 ldr r2, [r7, #212]
427 str r4, [r7, #280]
428 vadd.i32 q0, q12, q0
429 ldr r4, [r7, #224]
430 add r8, r8, r2
431 ldr r2, [r7, #240]
432 vadd.i32 q1, q13, q1
433 str r0, [r7, #232]
434 add fp, fp, r4
435 mov r0, r5
436 ldr r4, [r7, #216]
437 mov r5, r6
438 mov r6, r9
439 ldr r9, [r7, #276]
440 adds r2, r2, #3
441 str r2, [r7, #240]
442 vadd.i32 q2, q11, q2
443 ldr r2, [r7, #252]
444 add r9, r9, r4
445 vadd.i32 q3, q12, q3
446 ldr r4, [r7, #228]
447 vadd.i32 q15, q13, q15
448 str r1, [r7, #268]
449 vadd.i32 q8, q14, q8
450 str r3, [r7, #236]
451 veor q4, q4, q6
452 ldr r3, [r7, #284]
453 ldr r1, [r7, #272]
454 add ip, r4, ip
455 ldr r4, [r7, #248]
456 vst1.64 {d8-d9}, [r4:64]
457 vldr d8, [r2, #16]
458 vldr d9, [r2, #24]
459 veor q0, q0, q4
460 vstr d0, [r4, #16]
461 vstr d1, [r4, #24]
462 vldr d0, [r2, #32]
463 vldr d1, [r2, #40]
464 veor q1, q1, q0
465 vstr d2, [r4, #32]
466 vstr d3, [r4, #40]
467 vldr d2, [r2, #48]
468 vldr d3, [r2, #56]
469 veor q10, q10, q1
470 vstr d20, [r4, #48]
471 vstr d21, [r4, #56]
472 vldr d8, [r2, #64]
473 vldr d9, [r2, #72]
474 veor q2, q2, q4
475 vstr d4, [r4, #64]
476 vstr d5, [r4, #72]
477 vldr d10, [r2, #80]
478 vldr d11, [r2, #88]
479 veor q3, q3, q5
480 vstr d6, [r4, #80]
481 vstr d7, [r4, #88]
482 vldr d12, [r2, #96]
483 vldr d13, [r2, #104]
484 veor q15, q15, q6
485 vstr d30, [r4, #96]
486 vstr d31, [r4, #104]
487 vldr d20, [r2, #112]
488 vldr d21, [r2, #120]
489 veor q8, q8, q10
490 vstr d16, [r4, #112]
491 vstr d17, [r4, #120]
492 ldr r4, [r2, #128]
493 ldr r2, [r7, #248]
494 vadd.i32 q10, q14, q9
495 eor r4, fp, r4
496 vadd.i32 q10, q10, q9
497 str r4, [r2, #128]
498 ldr r4, [r7, #252]
499 ldr r2, [r4, #132]
500 eor r2, sl, r2
501 ldr sl, [r7, #248]
502 str r2, [sl, #132]
503 ldr r2, [r4, #136]
504 eor r2, r9, r2
505 str r2, [sl, #136]
506 ldr r2, [r4, #140]
507 eor r2, r8, r2
508 str r2, [sl, #140]
509 ldr r2, [r7, #244]
510 ldr r4, [r4, #144]
511 ldr r2, [r2, #0]
512 str r4, [r7, #44]
513 ldr r4, [r7, #232]
514 add r8, r4, r2
515 ldr r2, [r7, #44]
516 ldr r4, [r7, #244]
517 eor r8, r8, r2
518 ldr r2, [r7, #252]
519 str r8, [sl, #144]
520 ldr r4, [r4, #4]
521 ldr r2, [r2, #148]
522 str r2, [r7, #40]
523 ldr r2, [r7, #268]
524 add r8, r2, r4
525 ldr r4, [r7, #40]
526 ldr r2, [r7, #244]
527 eor r8, r8, r4
528 ldr r4, [r7, #252]
529 str r8, [sl, #148]
530 ldr r2, [r2, #8]
531 ldr r4, [r4, #152]
532 str r4, [r7, #36]
533 ldr r4, [r7, #264]
534 add r8, r4, r2
535 ldr r2, [r7, #36]
536 eor r8, r8, r2
537 str r8, [sl, #152]
538 ldr r2, [r7, #252]
539 ldr r4, [r7, #244]
540 ldr r2, [r2, #156]
541 ldr r4, [r4, #12]
542 str r2, [r7, #32]
543 ldr r2, [r7, #236]
544 add r8, r2, r4
545 ldr r4, [r7, #32]
546 ldr r2, [r7, #252]
547 eor r8, r8, r4
548 str r8, [sl, #156]
549 ldr r8, [r7, #244]
550 ldr r2, [r2, #160]
551 ldr r4, [r8, #16]
552 adds r0, r0, r4
553 ldr r4, [r7, #252]
554 eors r0, r0, r2
555 str r0, [sl, #160]
556 ldr r0, [r8, #20]
557 ldr r2, [r4, #164]
558 adds r1, r1, r0
559 ldr r0, [r7, #280]
560 eors r1, r1, r2
561 str r1, [sl, #164]
562 ldr r2, [r8, #24]
563 ldr r1, [r4, #168]
564 adds r2, r0, r2
565 eors r2, r2, r1
566 str r2, [sl, #168]
567 ldr r1, [r8, #28]
568 ldr r2, [r4, #172]
569 adds r3, r3, r1
570 eors r3, r3, r2
571 str r3, [sl, #172]
572 ldr r3, [r4, #176]
573 eor r3, ip, r3
574 str r3, [sl, #176]
575 ldr r3, [r4, #180]
576 ldr r4, [r7, #400]
577 eors r6, r6, r3
578 str r6, [sl, #180]
579 ldr r6, [r7, #252]
580 ldr r2, [r4, #0]
581 ldr r3, [r6, #184]
582 adds r5, r5, r2
583 eors r5, r5, r3
584 str r5, [sl, #184]
585 ldr r2, [r6, #188]
586 adds r6, r6, #192
587 ldr r3, [r4, #4]
588 str r6, [r7, #252]
589 ldr r0, [r7, #24]
590 ldr r1, [r7, #240]
591 adds r4, r0, r3
592 eors r4, r4, r2
593 ldr r2, [r7, #204]
594 str r4, [sl, #188]
595 add sl, sl, #192
596 cmp r1, r2
597 str sl, [r7, #248]
598 bne .L4
599 ldr r4, [r7, #192]
600 ldr r3, [r7, #180]
601 ldr r6, [r7, #188]
602 adds r5, r3, r4
603 ldr r8, [r7, #184]
604 lsls r5, r5, #6
605 adds r4, r6, r5
606 add r5, r8, r5
607 .L2:
608 ldr r9, [r7, #196]
609 movw r3, #43691
610 movt r3, 43690
611 ldr sl, [r7, #196]
612 umull r9, r3, r3, r9
613 lsrs r3, r3, #7
614 add r3, r3, r3, lsl #1
615 sub r3, sl, r3, lsl #6
616 lsrs r6, r3, #6
617 beq .L5
618 add r1, r5, #16
619 add r2, r4, #16
620 mov r0, r6
621 vldr d30, .L41
622 vldr d31, .L41+8
623 .L6:
624 vmov q8, q10 @ v4si
625 movs r3, #10
626 vmov q1, q13 @ v4si
627 vmov q14, q12 @ v4si
628 vmov q3, q11 @ v4si
629 .L7:
630 vadd.i32 q3, q3, q14
631 subs r3, r3, #1
632 veor q2, q8, q3
633 vrev32.16 q2, q2
634 vadd.i32 q8, q1, q2
635 veor q9, q8, q14
636 vshl.i32 q14, q9, #12
637 vsri.32 q14, q9, #20
638 vadd.i32 q3, q3, q14
639 veor q2, q3, q2
640 vshl.i32 q9, q2, #8
641 vsri.32 q9, q2, #24
642 vadd.i32 q8, q8, q9
643 vext.32 q9, q9, q9, #3
644 veor q14, q8, q14
645 vext.32 q1, q8, q8, #2
646 vshl.i32 q8, q14, #7
647 vsri.32 q8, q14, #25
648 vext.32 q8, q8, q8, #1
649 vadd.i32 q3, q3, q8
650 veor q2, q3, q9
651 vrev32.16 q2, q2
652 vadd.i32 q9, q1, q2
653 veor q8, q9, q8
654 vshl.i32 q14, q8, #12
655 vsri.32 q14, q8, #20
656 vadd.i32 q3, q3, q14
657 veor q2, q3, q2
658 vshl.i32 q8, q2, #8
659 vsri.32 q8, q2, #24
660 vadd.i32 q9, q9, q8
661 vext.32 q8, q8, q8, #1
662 veor q14, q9, q14
663 vext.32 q1, q9, q9, #2
664 vshl.i32 q9, q14, #7
665 vsri.32 q9, q14, #25
666 vext.32 q14, q9, q9, #3
667 bne .L7
668 vadd.i32 q8, q10, q8
669 subs r0, r0, #1
670 vadd.i32 q3, q11, q3
671 vldr d0, [r1, #-16]
672 vldr d1, [r1, #-8]
673 vadd.i32 q14, q12, q14
674 vadd.i32 q1, q13, q1
675 veor q3, q3, q0
676 vstr d6, [r2, #-16]
677 vstr d7, [r2, #-8]
678 vadd.i32 q10, q10, q15
679 vld1.64 {d8-d9}, [r1:64]
680 veor q14, q14, q4
681 vst1.64 {d28-d29}, [r2:64]
682 vldr d10, [r1, #16]
683 vldr d11, [r1, #24]
684 veor q1, q1, q5
685 vstr d2, [r2, #16]
686 vstr d3, [r2, #24]
687 vldr d18, [r1, #32]
688 vldr d19, [r1, #40]
689 add r1, r1, #64
690 veor q8, q8, q9
691 vstr d16, [r2, #32]
692 vstr d17, [r2, #40]
693 add r2, r2, #64
694 bne .L6
695 lsls r6, r6, #6
696 adds r4, r4, r6
697 adds r5, r5, r6
698 .L5:
699 ldr r6, [r7, #196]
700 ands ip, r6, #63
701 beq .L1
702 vmov q8, q10 @ v4si
703 movs r3, #10
704 vmov q14, q13 @ v4si
705 vmov q9, q12 @ v4si
706 vmov q15, q11 @ v4si
707 .L10:
708 vadd.i32 q15, q15, q9
709 subs r3, r3, #1
710 veor q8, q8, q15
711 vrev32.16 q8, q8
712 vadd.i32 q3, q14, q8
713 veor q9, q3, q9
714 vshl.i32 q14, q9, #12
715 vsri.32 q14, q9, #20
716 vadd.i32 q15, q15, q14
717 veor q9, q15, q8
718 vshl.i32 q8, q9, #8
719 vsri.32 q8, q9, #24
720 vadd.i32 q9, q3, q8
721 vext.32 q8, q8, q8, #3
722 veor q2, q9, q14
723 vext.32 q14, q9, q9, #2
724 vshl.i32 q9, q2, #7
725 vsri.32 q9, q2, #25
726 vext.32 q9, q9, q9, #1
727 vadd.i32 q15, q15, q9
728 veor q3, q15, q8
729 vrev32.16 q3, q3
730 vadd.i32 q14, q14, q3
731 veor q8, q14, q9
732 vshl.i32 q9, q8, #12
733 vsri.32 q9, q8, #20
734 vadd.i32 q15, q15, q9
735 veor q3, q15, q3
736 vshl.i32 q8, q3, #8
737 vsri.32 q8, q3, #24
738 vadd.i32 q14, q14, q8
739 vext.32 q8, q8, q8, #1
740 veor q3, q14, q9
741 vext.32 q14, q14, q14, #2
742 vshl.i32 q9, q3, #7
743 vsri.32 q9, q3, #25
744 vext.32 q9, q9, q9, #3
745 bne .L10
746 cmp ip, #15
747 vadd.i32 q11, q11, q15
748 bhi .L37
749 ldr r9, [r7, #200]
750 vst1.64 {d22-d23}, [r9:128]
751 .L14:
752 ldr sl, [r7, #196]
753 and r3, sl, #48
754 cmp ip, r3
755 bls .L1
756 adds r0, r5, r3
757 adds r1, r4, r3
758 add r2, r0, #16
759 add r6, r1, #16
760 cmp r1, r2
761 it cc
762 cmpcc r0, r6
763 rsb r9, r3, ip
764 ite cc
765 movcc r2, #0
766 movcs r2, #1
767 cmp r9, #15
768 ite ls
769 movls r2, #0
770 andhi r2, r2, #1
771 lsr r8, r9, #4
772 eor r2, r2, #1
773 cmp r8, #0
774 it eq
775 orreq r2, r2, #1
776 lsl sl, r8, #4
777 cbnz r2, .L35
778 ldr fp, [r7, #200]
779 add r6, fp, r3
780 .L17:
781 vld1.8 {q8}, [r0]!
782 adds r2, r2, #1
783 cmp r8, r2
784 vld1.8 {q9}, [r6]!
785 veor q8, q9, q8
786 vst1.8 {q8}, [r1]!
787 bhi .L17
788 cmp r9, sl
789 add r3, r3, sl
790 beq .L1
791 .L35:
792 ldr r0, [r7, #200]
793 .L25:
794 ldrb r2, [r5, r3] @ zero_extendqisi2
795 ldrb r1, [r3, r0] @ zero_extendqisi2
796 eors r2, r2, r1
797 strb r2, [r4, r3]
798 adds r3, r3, #1
799 cmp ip, r3
800 bhi .L25
801 .L1:
802 add r7, r7, #304
803 mov sp, r7
804 fldmfdd sp!, {d8, d9, d10, d11, d12, d13, d14, d15}
805 pop {r4, r5, r6, r7, r8, r9, sl, fp}
806 bx lr
807 .L37:
808 cmp ip, #31
809 vld1.64 {d0-d1}, [r5:64]
810 vadd.i32 q9, q12, q9
811 veor q11, q11, q0
812 vst1.64 {d22-d23}, [r4:64]
813 bls .L12
814 cmp ip, #47
815 vldr d2, [r5, #16]
816 vldr d3, [r5, #24]
817 vadd.i32 q13, q13, q14
818 veor q9, q9, q1
819 vstr d18, [r4, #16]
820 vstr d19, [r4, #24]
821 bls .L13
822 vadd.i32 q8, q8, q10
823 vldr d0, [r5, #32]
824 vldr d1, [r5, #40]
825 ldr r6, [r7, #200]
826 vstr d16, [r6, #48]
827 vstr d17, [r6, #56]
828 veor q8, q13, q0
829 vstr d16, [r4, #32]
830 vstr d17, [r4, #40]
831 b .L14
832 .L12:
833 ldr r8, [r7, #200]
834 vstr d18, [r8, #16]
835 vstr d19, [r8, #24]
836 b .L14
837 .L20:
838 ldr r5, [r7, #184]
839 ldr r4, [r7, #188]
840 b .L2
841 .L13:
842 ldr r6, [r7, #200]
843 vstr d26, [r6, #32]
844 vstr d27, [r6, #40]
845 b .L14
846 .L42:
847 .align 3
848 .L41:
849 .word 1
850 .word 0
851 .word 0
852 .word 0
853 .size CRYPTO_chacha_20_neon, .-CRYPTO_chacha_20_neon
854 .section .rodata
855 .align 3
856 .LANCHOR0 = . + 0
857 .LC0:
858 .word 1634760805
859 .word 857760878
860 .word 2036477234
861 .word 1797285236
862 .ident "GCC: (crosstool-NG linaro-1.13.1-4.7-2012.10-20121022 - Linaro GCC 2012.10) 4.7.3 20121001 (prerelease)"
863 .section .note.GNU-stack,"",%progbits
OLDNEW
« no previous file with comments | « openssl/crypto/chacha/chacha_vec.c ('k') | openssl/crypto/chacha/chachatest.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698