1# Copyright (c) 2011-2016, Andy Polyakov <appro@openssl.org>
2# All rights reserved.
3#
4# Redistribution and use in source and binary forms, with or without
5# modification, are permitted provided that the following conditions
6# are met:
7#
8#     * Redistributions of source code must retain copyright notices,
9#      this list of conditions and the following disclaimer.
10#
11#     * Redistributions in binary form must reproduce the above
12#      copyright notice, this list of conditions and the following
13#      disclaimer in the documentation and/or other materials
14#      provided with the distribution.
15#
16#     * Neither the name of the Andy Polyakov nor the names of its
17#      copyright holder and contributors may be used to endorse or
18#      promote products derived from this software without specific
19#      prior written permission.
20#
21# ALTERNATIVELY, provided that this notice is retained in full, this
22# product may be distributed under the terms of the GNU General Public
23# License (GPL), in which case the provisions of the GPL apply INSTEAD OF
24# those given above.
25#
26# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
27# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
29# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
30# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
31# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
33# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
34# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37#
38# *** This file is auto-generated ***
39#
40# 1 "lib/accelerated/aarch64/macosx/sha512-armv8.s.tmp.S"
41# 1 "<built-in>"
42# 1 "<command-line>"
43# 1 "lib/accelerated/aarch64/macosx/sha512-armv8.s.tmp.S"
44# 56 "lib/accelerated/aarch64/macosx/sha512-armv8.s.tmp.S"
45# 1 "lib/accelerated/aarch64/aarch64-common.h" 1
46# 57 "lib/accelerated/aarch64/macosx/sha512-armv8.s.tmp.S" 2
47
48
49.text
50
51
52.globl _sha512_block_data_order
53
54.align 6
55_sha512_block_data_order:
56
57
58
59
60 ldr x16,L_gnutls_arm_cpuid_s
61
62 adr x17,L_gnutls_arm_cpuid_s
63 add x16,x16,x17
64 ldr w16,[x16]
65 tst w16,#(1<<6)
66 b.ne Lv8_entry
67
68.long 0xd503233f
69 stp x29,x30,[sp,#-128]!
70 add x29,sp,#0
71
72 stp x19,x20,[sp,#16]
73 stp x21,x22,[sp,#32]
74 stp x23,x24,[sp,#48]
75 stp x25,x26,[sp,#64]
76 stp x27,x28,[sp,#80]
77 sub sp,sp,#4*8
78
79 ldp x20,x21,[x0]
80 ldp x22,x23,[x0,#2*8]
81 ldp x24,x25,[x0,#4*8]
82 add x2,x1,x2,lsl#7
83 ldp x26,x27,[x0,#6*8]
84 adr x30,LK512
85 stp x0,x2,[x29,#96]
86
87Loop:
88 ldp x3,x4,[x1],#2*8
89 ldr x19,[x30],#8
90 eor x28,x21,x22
91 str x1,[x29,#112]
92
93 rev x3,x3
94
95 ror x16,x24,#14
96 add x27,x27,x19
97 eor x6,x24,x24,ror#23
98 and x17,x25,x24
99 bic x19,x26,x24
100 add x27,x27,x3
101 orr x17,x17,x19
102 eor x19,x20,x21
103 eor x16,x16,x6,ror#18
104 ror x6,x20,#28
105 add x27,x27,x17
106 eor x17,x20,x20,ror#5
107 add x27,x27,x16
108 and x28,x28,x19
109 add x23,x23,x27
110 eor x28,x28,x21
111 eor x17,x6,x17,ror#34
112 add x27,x27,x28
113 ldr x28,[x30],#8
114
115
116 rev x4,x4
117
118 ldp x5,x6,[x1],#2*8
119 add x27,x27,x17
120 ror x16,x23,#14
121 add x26,x26,x28
122 eor x7,x23,x23,ror#23
123 and x17,x24,x23
124 bic x28,x25,x23
125 add x26,x26,x4
126 orr x17,x17,x28
127 eor x28,x27,x20
128 eor x16,x16,x7,ror#18
129 ror x7,x27,#28
130 add x26,x26,x17
131 eor x17,x27,x27,ror#5
132 add x26,x26,x16
133 and x19,x19,x28
134 add x22,x22,x26
135 eor x19,x19,x20
136 eor x17,x7,x17,ror#34
137 add x26,x26,x19
138 ldr x19,[x30],#8
139
140
141 rev x5,x5
142
143 add x26,x26,x17
144 ror x16,x22,#14
145 add x25,x25,x19
146 eor x8,x22,x22,ror#23
147 and x17,x23,x22
148 bic x19,x24,x22
149 add x25,x25,x5
150 orr x17,x17,x19
151 eor x19,x26,x27
152 eor x16,x16,x8,ror#18
153 ror x8,x26,#28
154 add x25,x25,x17
155 eor x17,x26,x26,ror#5
156 add x25,x25,x16
157 and x28,x28,x19
158 add x21,x21,x25
159 eor x28,x28,x27
160 eor x17,x8,x17,ror#34
161 add x25,x25,x28
162 ldr x28,[x30],#8
163
164
165 rev x6,x6
166
167 ldp x7,x8,[x1],#2*8
168 add x25,x25,x17
169 ror x16,x21,#14
170 add x24,x24,x28
171 eor x9,x21,x21,ror#23
172 and x17,x22,x21
173 bic x28,x23,x21
174 add x24,x24,x6
175 orr x17,x17,x28
176 eor x28,x25,x26
177 eor x16,x16,x9,ror#18
178 ror x9,x25,#28
179 add x24,x24,x17
180 eor x17,x25,x25,ror#5
181 add x24,x24,x16
182 and x19,x19,x28
183 add x20,x20,x24
184 eor x19,x19,x26
185 eor x17,x9,x17,ror#34
186 add x24,x24,x19
187 ldr x19,[x30],#8
188
189
190 rev x7,x7
191
192 add x24,x24,x17
193 ror x16,x20,#14
194 add x23,x23,x19
195 eor x10,x20,x20,ror#23
196 and x17,x21,x20
197 bic x19,x22,x20
198 add x23,x23,x7
199 orr x17,x17,x19
200 eor x19,x24,x25
201 eor x16,x16,x10,ror#18
202 ror x10,x24,#28
203 add x23,x23,x17
204 eor x17,x24,x24,ror#5
205 add x23,x23,x16
206 and x28,x28,x19
207 add x27,x27,x23
208 eor x28,x28,x25
209 eor x17,x10,x17,ror#34
210 add x23,x23,x28
211 ldr x28,[x30],#8
212
213
214 rev x8,x8
215
216 ldp x9,x10,[x1],#2*8
217 add x23,x23,x17
218 ror x16,x27,#14
219 add x22,x22,x28
220 eor x11,x27,x27,ror#23
221 and x17,x20,x27
222 bic x28,x21,x27
223 add x22,x22,x8
224 orr x17,x17,x28
225 eor x28,x23,x24
226 eor x16,x16,x11,ror#18
227 ror x11,x23,#28
228 add x22,x22,x17
229 eor x17,x23,x23,ror#5
230 add x22,x22,x16
231 and x19,x19,x28
232 add x26,x26,x22
233 eor x19,x19,x24
234 eor x17,x11,x17,ror#34
235 add x22,x22,x19
236 ldr x19,[x30],#8
237
238
239 rev x9,x9
240
241 add x22,x22,x17
242 ror x16,x26,#14
243 add x21,x21,x19
244 eor x12,x26,x26,ror#23
245 and x17,x27,x26
246 bic x19,x20,x26
247 add x21,x21,x9
248 orr x17,x17,x19
249 eor x19,x22,x23
250 eor x16,x16,x12,ror#18
251 ror x12,x22,#28
252 add x21,x21,x17
253 eor x17,x22,x22,ror#5
254 add x21,x21,x16
255 and x28,x28,x19
256 add x25,x25,x21
257 eor x28,x28,x23
258 eor x17,x12,x17,ror#34
259 add x21,x21,x28
260 ldr x28,[x30],#8
261
262
263 rev x10,x10
264
265 ldp x11,x12,[x1],#2*8
266 add x21,x21,x17
267 ror x16,x25,#14
268 add x20,x20,x28
269 eor x13,x25,x25,ror#23
270 and x17,x26,x25
271 bic x28,x27,x25
272 add x20,x20,x10
273 orr x17,x17,x28
274 eor x28,x21,x22
275 eor x16,x16,x13,ror#18
276 ror x13,x21,#28
277 add x20,x20,x17
278 eor x17,x21,x21,ror#5
279 add x20,x20,x16
280 and x19,x19,x28
281 add x24,x24,x20
282 eor x19,x19,x22
283 eor x17,x13,x17,ror#34
284 add x20,x20,x19
285 ldr x19,[x30],#8
286
287
288 rev x11,x11
289
290 add x20,x20,x17
291 ror x16,x24,#14
292 add x27,x27,x19
293 eor x14,x24,x24,ror#23
294 and x17,x25,x24
295 bic x19,x26,x24
296 add x27,x27,x11
297 orr x17,x17,x19
298 eor x19,x20,x21
299 eor x16,x16,x14,ror#18
300 ror x14,x20,#28
301 add x27,x27,x17
302 eor x17,x20,x20,ror#5
303 add x27,x27,x16
304 and x28,x28,x19
305 add x23,x23,x27
306 eor x28,x28,x21
307 eor x17,x14,x17,ror#34
308 add x27,x27,x28
309 ldr x28,[x30],#8
310
311
312 rev x12,x12
313
314 ldp x13,x14,[x1],#2*8
315 add x27,x27,x17
316 ror x16,x23,#14
317 add x26,x26,x28
318 eor x15,x23,x23,ror#23
319 and x17,x24,x23
320 bic x28,x25,x23
321 add x26,x26,x12
322 orr x17,x17,x28
323 eor x28,x27,x20
324 eor x16,x16,x15,ror#18
325 ror x15,x27,#28
326 add x26,x26,x17
327 eor x17,x27,x27,ror#5
328 add x26,x26,x16
329 and x19,x19,x28
330 add x22,x22,x26
331 eor x19,x19,x20
332 eor x17,x15,x17,ror#34
333 add x26,x26,x19
334 ldr x19,[x30],#8
335
336
337 rev x13,x13
338
339 add x26,x26,x17
340 ror x16,x22,#14
341 add x25,x25,x19
342 eor x0,x22,x22,ror#23
343 and x17,x23,x22
344 bic x19,x24,x22
345 add x25,x25,x13
346 orr x17,x17,x19
347 eor x19,x26,x27
348 eor x16,x16,x0,ror#18
349 ror x0,x26,#28
350 add x25,x25,x17
351 eor x17,x26,x26,ror#5
352 add x25,x25,x16
353 and x28,x28,x19
354 add x21,x21,x25
355 eor x28,x28,x27
356 eor x17,x0,x17,ror#34
357 add x25,x25,x28
358 ldr x28,[x30],#8
359
360
361 rev x14,x14
362
363 ldp x15,x0,[x1],#2*8
364 add x25,x25,x17
365 str x6,[sp,#24]
366 ror x16,x21,#14
367 add x24,x24,x28
368 eor x6,x21,x21,ror#23
369 and x17,x22,x21
370 bic x28,x23,x21
371 add x24,x24,x14
372 orr x17,x17,x28
373 eor x28,x25,x26
374 eor x16,x16,x6,ror#18
375 ror x6,x25,#28
376 add x24,x24,x17
377 eor x17,x25,x25,ror#5
378 add x24,x24,x16
379 and x19,x19,x28
380 add x20,x20,x24
381 eor x19,x19,x26
382 eor x17,x6,x17,ror#34
383 add x24,x24,x19
384 ldr x19,[x30],#8
385
386
387 rev x15,x15
388
389 add x24,x24,x17
390 str x7,[sp,#0]
391 ror x16,x20,#14
392 add x23,x23,x19
393 eor x7,x20,x20,ror#23
394 and x17,x21,x20
395 bic x19,x22,x20
396 add x23,x23,x15
397 orr x17,x17,x19
398 eor x19,x24,x25
399 eor x16,x16,x7,ror#18
400 ror x7,x24,#28
401 add x23,x23,x17
402 eor x17,x24,x24,ror#5
403 add x23,x23,x16
404 and x28,x28,x19
405 add x27,x27,x23
406 eor x28,x28,x25
407 eor x17,x7,x17,ror#34
408 add x23,x23,x28
409 ldr x28,[x30],#8
410
411
412 rev x0,x0
413
414 ldp x1,x2,[x1]
415 add x23,x23,x17
416 str x8,[sp,#8]
417 ror x16,x27,#14
418 add x22,x22,x28
419 eor x8,x27,x27,ror#23
420 and x17,x20,x27
421 bic x28,x21,x27
422 add x22,x22,x0
423 orr x17,x17,x28
424 eor x28,x23,x24
425 eor x16,x16,x8,ror#18
426 ror x8,x23,#28
427 add x22,x22,x17
428 eor x17,x23,x23,ror#5
429 add x22,x22,x16
430 and x19,x19,x28
431 add x26,x26,x22
432 eor x19,x19,x24
433 eor x17,x8,x17,ror#34
434 add x22,x22,x19
435 ldr x19,[x30],#8
436
437
438 rev x1,x1
439
440 ldr x6,[sp,#24]
441 add x22,x22,x17
442 str x9,[sp,#16]
443 ror x16,x26,#14
444 add x21,x21,x19
445 eor x9,x26,x26,ror#23
446 and x17,x27,x26
447 bic x19,x20,x26
448 add x21,x21,x1
449 orr x17,x17,x19
450 eor x19,x22,x23
451 eor x16,x16,x9,ror#18
452 ror x9,x22,#28
453 add x21,x21,x17
454 eor x17,x22,x22,ror#5
455 add x21,x21,x16
456 and x28,x28,x19
457 add x25,x25,x21
458 eor x28,x28,x23
459 eor x17,x9,x17,ror#34
460 add x21,x21,x28
461 ldr x28,[x30],#8
462
463
464 rev x2,x2
465
466 ldr x7,[sp,#0]
467 add x21,x21,x17
468 str x10,[sp,#24]
469 ror x16,x25,#14
470 add x20,x20,x28
471 ror x9,x4,#1
472 and x17,x26,x25
473 ror x8,x1,#19
474 bic x28,x27,x25
475 ror x10,x21,#28
476 add x20,x20,x2
477 eor x16,x16,x25,ror#18
478 eor x9,x9,x4,ror#8
479 orr x17,x17,x28
480 eor x28,x21,x22
481 eor x16,x16,x25,ror#41
482 eor x10,x10,x21,ror#34
483 add x20,x20,x17
484 and x19,x19,x28
485 eor x8,x8,x1,ror#61
486 eor x9,x9,x4,lsr#7
487 add x20,x20,x16
488 eor x19,x19,x22
489 eor x17,x10,x21,ror#39
490 eor x8,x8,x1,lsr#6
491 add x3,x3,x12
492 add x24,x24,x20
493 add x20,x20,x19
494 ldr x19,[x30],#8
495 add x3,x3,x9
496 add x20,x20,x17
497 add x3,x3,x8
498Loop_16_xx:
499 ldr x8,[sp,#8]
500 str x11,[sp,#0]
501 ror x16,x24,#14
502 add x27,x27,x19
503 ror x10,x5,#1
504 and x17,x25,x24
505 ror x9,x2,#19
506 bic x19,x26,x24
507 ror x11,x20,#28
508 add x27,x27,x3
509 eor x16,x16,x24,ror#18
510 eor x10,x10,x5,ror#8
511 orr x17,x17,x19
512 eor x19,x20,x21
513 eor x16,x16,x24,ror#41
514 eor x11,x11,x20,ror#34
515 add x27,x27,x17
516 and x28,x28,x19
517 eor x9,x9,x2,ror#61
518 eor x10,x10,x5,lsr#7
519 add x27,x27,x16
520 eor x28,x28,x21
521 eor x17,x11,x20,ror#39
522 eor x9,x9,x2,lsr#6
523 add x4,x4,x13
524 add x23,x23,x27
525 add x27,x27,x28
526 ldr x28,[x30],#8
527 add x4,x4,x10
528 add x27,x27,x17
529 add x4,x4,x9
530 ldr x9,[sp,#16]
531 str x12,[sp,#8]
532 ror x16,x23,#14
533 add x26,x26,x28
534 ror x11,x6,#1
535 and x17,x24,x23
536 ror x10,x3,#19
537 bic x28,x25,x23
538 ror x12,x27,#28
539 add x26,x26,x4
540 eor x16,x16,x23,ror#18
541 eor x11,x11,x6,ror#8
542 orr x17,x17,x28
543 eor x28,x27,x20
544 eor x16,x16,x23,ror#41
545 eor x12,x12,x27,ror#34
546 add x26,x26,x17
547 and x19,x19,x28
548 eor x10,x10,x3,ror#61
549 eor x11,x11,x6,lsr#7
550 add x26,x26,x16
551 eor x19,x19,x20
552 eor x17,x12,x27,ror#39
553 eor x10,x10,x3,lsr#6
554 add x5,x5,x14
555 add x22,x22,x26
556 add x26,x26,x19
557 ldr x19,[x30],#8
558 add x5,x5,x11
559 add x26,x26,x17
560 add x5,x5,x10
561 ldr x10,[sp,#24]
562 str x13,[sp,#16]
563 ror x16,x22,#14
564 add x25,x25,x19
565 ror x12,x7,#1
566 and x17,x23,x22
567 ror x11,x4,#19
568 bic x19,x24,x22
569 ror x13,x26,#28
570 add x25,x25,x5
571 eor x16,x16,x22,ror#18
572 eor x12,x12,x7,ror#8
573 orr x17,x17,x19
574 eor x19,x26,x27
575 eor x16,x16,x22,ror#41
576 eor x13,x13,x26,ror#34
577 add x25,x25,x17
578 and x28,x28,x19
579 eor x11,x11,x4,ror#61
580 eor x12,x12,x7,lsr#7
581 add x25,x25,x16
582 eor x28,x28,x27
583 eor x17,x13,x26,ror#39
584 eor x11,x11,x4,lsr#6
585 add x6,x6,x15
586 add x21,x21,x25
587 add x25,x25,x28
588 ldr x28,[x30],#8
589 add x6,x6,x12
590 add x25,x25,x17
591 add x6,x6,x11
592 ldr x11,[sp,#0]
593 str x14,[sp,#24]
594 ror x16,x21,#14
595 add x24,x24,x28
596 ror x13,x8,#1
597 and x17,x22,x21
598 ror x12,x5,#19
599 bic x28,x23,x21
600 ror x14,x25,#28
601 add x24,x24,x6
602 eor x16,x16,x21,ror#18
603 eor x13,x13,x8,ror#8
604 orr x17,x17,x28
605 eor x28,x25,x26
606 eor x16,x16,x21,ror#41
607 eor x14,x14,x25,ror#34
608 add x24,x24,x17
609 and x19,x19,x28
610 eor x12,x12,x5,ror#61
611 eor x13,x13,x8,lsr#7
612 add x24,x24,x16
613 eor x19,x19,x26
614 eor x17,x14,x25,ror#39
615 eor x12,x12,x5,lsr#6
616 add x7,x7,x0
617 add x20,x20,x24
618 add x24,x24,x19
619 ldr x19,[x30],#8
620 add x7,x7,x13
621 add x24,x24,x17
622 add x7,x7,x12
623 ldr x12,[sp,#8]
624 str x15,[sp,#0]
625 ror x16,x20,#14
626 add x23,x23,x19
627 ror x14,x9,#1
628 and x17,x21,x20
629 ror x13,x6,#19
630 bic x19,x22,x20
631 ror x15,x24,#28
632 add x23,x23,x7
633 eor x16,x16,x20,ror#18
634 eor x14,x14,x9,ror#8
635 orr x17,x17,x19
636 eor x19,x24,x25
637 eor x16,x16,x20,ror#41
638 eor x15,x15,x24,ror#34
639 add x23,x23,x17
640 and x28,x28,x19
641 eor x13,x13,x6,ror#61
642 eor x14,x14,x9,lsr#7
643 add x23,x23,x16
644 eor x28,x28,x25
645 eor x17,x15,x24,ror#39
646 eor x13,x13,x6,lsr#6
647 add x8,x8,x1
648 add x27,x27,x23
649 add x23,x23,x28
650 ldr x28,[x30],#8
651 add x8,x8,x14
652 add x23,x23,x17
653 add x8,x8,x13
654 ldr x13,[sp,#16]
655 str x0,[sp,#8]
656 ror x16,x27,#14
657 add x22,x22,x28
658 ror x15,x10,#1
659 and x17,x20,x27
660 ror x14,x7,#19
661 bic x28,x21,x27
662 ror x0,x23,#28
663 add x22,x22,x8
664 eor x16,x16,x27,ror#18
665 eor x15,x15,x10,ror#8
666 orr x17,x17,x28
667 eor x28,x23,x24
668 eor x16,x16,x27,ror#41
669 eor x0,x0,x23,ror#34
670 add x22,x22,x17
671 and x19,x19,x28
672 eor x14,x14,x7,ror#61
673 eor x15,x15,x10,lsr#7
674 add x22,x22,x16
675 eor x19,x19,x24
676 eor x17,x0,x23,ror#39
677 eor x14,x14,x7,lsr#6
678 add x9,x9,x2
679 add x26,x26,x22
680 add x22,x22,x19
681 ldr x19,[x30],#8
682 add x9,x9,x15
683 add x22,x22,x17
684 add x9,x9,x14
685 ldr x14,[sp,#24]
686 str x1,[sp,#16]
687 ror x16,x26,#14
688 add x21,x21,x19
689 ror x0,x11,#1
690 and x17,x27,x26
691 ror x15,x8,#19
692 bic x19,x20,x26
693 ror x1,x22,#28
694 add x21,x21,x9
695 eor x16,x16,x26,ror#18
696 eor x0,x0,x11,ror#8
697 orr x17,x17,x19
698 eor x19,x22,x23
699 eor x16,x16,x26,ror#41
700 eor x1,x1,x22,ror#34
701 add x21,x21,x17
702 and x28,x28,x19
703 eor x15,x15,x8,ror#61
704 eor x0,x0,x11,lsr#7
705 add x21,x21,x16
706 eor x28,x28,x23
707 eor x17,x1,x22,ror#39
708 eor x15,x15,x8,lsr#6
709 add x10,x10,x3
710 add x25,x25,x21
711 add x21,x21,x28
712 ldr x28,[x30],#8
713 add x10,x10,x0
714 add x21,x21,x17
715 add x10,x10,x15
716 ldr x15,[sp,#0]
717 str x2,[sp,#24]
718 ror x16,x25,#14
719 add x20,x20,x28
720 ror x1,x12,#1
721 and x17,x26,x25
722 ror x0,x9,#19
723 bic x28,x27,x25
724 ror x2,x21,#28
725 add x20,x20,x10
726 eor x16,x16,x25,ror#18
727 eor x1,x1,x12,ror#8
728 orr x17,x17,x28
729 eor x28,x21,x22
730 eor x16,x16,x25,ror#41
731 eor x2,x2,x21,ror#34
732 add x20,x20,x17
733 and x19,x19,x28
734 eor x0,x0,x9,ror#61
735 eor x1,x1,x12,lsr#7
736 add x20,x20,x16
737 eor x19,x19,x22
738 eor x17,x2,x21,ror#39
739 eor x0,x0,x9,lsr#6
740 add x11,x11,x4
741 add x24,x24,x20
742 add x20,x20,x19
743 ldr x19,[x30],#8
744 add x11,x11,x1
745 add x20,x20,x17
746 add x11,x11,x0
747 ldr x0,[sp,#8]
748 str x3,[sp,#0]
749 ror x16,x24,#14
750 add x27,x27,x19
751 ror x2,x13,#1
752 and x17,x25,x24
753 ror x1,x10,#19
754 bic x19,x26,x24
755 ror x3,x20,#28
756 add x27,x27,x11
757 eor x16,x16,x24,ror#18
758 eor x2,x2,x13,ror#8
759 orr x17,x17,x19
760 eor x19,x20,x21
761 eor x16,x16,x24,ror#41
762 eor x3,x3,x20,ror#34
763 add x27,x27,x17
764 and x28,x28,x19
765 eor x1,x1,x10,ror#61
766 eor x2,x2,x13,lsr#7
767 add x27,x27,x16
768 eor x28,x28,x21
769 eor x17,x3,x20,ror#39
770 eor x1,x1,x10,lsr#6
771 add x12,x12,x5
772 add x23,x23,x27
773 add x27,x27,x28
774 ldr x28,[x30],#8
775 add x12,x12,x2
776 add x27,x27,x17
777 add x12,x12,x1
778 ldr x1,[sp,#16]
779 str x4,[sp,#8]
780 ror x16,x23,#14
781 add x26,x26,x28
782 ror x3,x14,#1
783 and x17,x24,x23
784 ror x2,x11,#19
785 bic x28,x25,x23
786 ror x4,x27,#28
787 add x26,x26,x12
788 eor x16,x16,x23,ror#18
789 eor x3,x3,x14,ror#8
790 orr x17,x17,x28
791 eor x28,x27,x20
792 eor x16,x16,x23,ror#41
793 eor x4,x4,x27,ror#34
794 add x26,x26,x17
795 and x19,x19,x28
796 eor x2,x2,x11,ror#61
797 eor x3,x3,x14,lsr#7
798 add x26,x26,x16
799 eor x19,x19,x20
800 eor x17,x4,x27,ror#39
801 eor x2,x2,x11,lsr#6
802 add x13,x13,x6
803 add x22,x22,x26
804 add x26,x26,x19
805 ldr x19,[x30],#8
806 add x13,x13,x3
807 add x26,x26,x17
808 add x13,x13,x2
809 ldr x2,[sp,#24]
810 str x5,[sp,#16]
811 ror x16,x22,#14
812 add x25,x25,x19
813 ror x4,x15,#1
814 and x17,x23,x22
815 ror x3,x12,#19
816 bic x19,x24,x22
817 ror x5,x26,#28
818 add x25,x25,x13
819 eor x16,x16,x22,ror#18
820 eor x4,x4,x15,ror#8
821 orr x17,x17,x19
822 eor x19,x26,x27
823 eor x16,x16,x22,ror#41
824 eor x5,x5,x26,ror#34
825 add x25,x25,x17
826 and x28,x28,x19
827 eor x3,x3,x12,ror#61
828 eor x4,x4,x15,lsr#7
829 add x25,x25,x16
830 eor x28,x28,x27
831 eor x17,x5,x26,ror#39
832 eor x3,x3,x12,lsr#6
833 add x14,x14,x7
834 add x21,x21,x25
835 add x25,x25,x28
836 ldr x28,[x30],#8
837 add x14,x14,x4
838 add x25,x25,x17
839 add x14,x14,x3
840 ldr x3,[sp,#0]
841 str x6,[sp,#24]
842 ror x16,x21,#14
843 add x24,x24,x28
844 ror x5,x0,#1
845 and x17,x22,x21
846 ror x4,x13,#19
847 bic x28,x23,x21
848 ror x6,x25,#28
849 add x24,x24,x14
850 eor x16,x16,x21,ror#18
851 eor x5,x5,x0,ror#8
852 orr x17,x17,x28
853 eor x28,x25,x26
854 eor x16,x16,x21,ror#41
855 eor x6,x6,x25,ror#34
856 add x24,x24,x17
857 and x19,x19,x28
858 eor x4,x4,x13,ror#61
859 eor x5,x5,x0,lsr#7
860 add x24,x24,x16
861 eor x19,x19,x26
862 eor x17,x6,x25,ror#39
863 eor x4,x4,x13,lsr#6
864 add x15,x15,x8
865 add x20,x20,x24
866 add x24,x24,x19
867 ldr x19,[x30],#8
868 add x15,x15,x5
869 add x24,x24,x17
870 add x15,x15,x4
871 ldr x4,[sp,#8]
872 str x7,[sp,#0]
873 ror x16,x20,#14
874 add x23,x23,x19
875 ror x6,x1,#1
876 and x17,x21,x20
877 ror x5,x14,#19
878 bic x19,x22,x20
879 ror x7,x24,#28
880 add x23,x23,x15
881 eor x16,x16,x20,ror#18
882 eor x6,x6,x1,ror#8
883 orr x17,x17,x19
884 eor x19,x24,x25
885 eor x16,x16,x20,ror#41
886 eor x7,x7,x24,ror#34
887 add x23,x23,x17
888 and x28,x28,x19
889 eor x5,x5,x14,ror#61
890 eor x6,x6,x1,lsr#7
891 add x23,x23,x16
892 eor x28,x28,x25
893 eor x17,x7,x24,ror#39
894 eor x5,x5,x14,lsr#6
895 add x0,x0,x9
896 add x27,x27,x23
897 add x23,x23,x28
898 ldr x28,[x30],#8
899 add x0,x0,x6
900 add x23,x23,x17
901 add x0,x0,x5
902 ldr x5,[sp,#16]
903 str x8,[sp,#8]
904 ror x16,x27,#14
905 add x22,x22,x28
906 ror x7,x2,#1
907 and x17,x20,x27
908 ror x6,x15,#19
909 bic x28,x21,x27
910 ror x8,x23,#28
911 add x22,x22,x0
912 eor x16,x16,x27,ror#18
913 eor x7,x7,x2,ror#8
914 orr x17,x17,x28
915 eor x28,x23,x24
916 eor x16,x16,x27,ror#41
917 eor x8,x8,x23,ror#34
918 add x22,x22,x17
919 and x19,x19,x28
920 eor x6,x6,x15,ror#61
921 eor x7,x7,x2,lsr#7
922 add x22,x22,x16
923 eor x19,x19,x24
924 eor x17,x8,x23,ror#39
925 eor x6,x6,x15,lsr#6
926 add x1,x1,x10
927 add x26,x26,x22
928 add x22,x22,x19
929 ldr x19,[x30],#8
930 add x1,x1,x7
931 add x22,x22,x17
932 add x1,x1,x6
933 ldr x6,[sp,#24]
934 str x9,[sp,#16]
935 ror x16,x26,#14
936 add x21,x21,x19
937 ror x8,x3,#1
938 and x17,x27,x26
939 ror x7,x0,#19
940 bic x19,x20,x26
941 ror x9,x22,#28
942 add x21,x21,x1
943 eor x16,x16,x26,ror#18
944 eor x8,x8,x3,ror#8
945 orr x17,x17,x19
946 eor x19,x22,x23
947 eor x16,x16,x26,ror#41
948 eor x9,x9,x22,ror#34
949 add x21,x21,x17
950 and x28,x28,x19
951 eor x7,x7,x0,ror#61
952 eor x8,x8,x3,lsr#7
953 add x21,x21,x16
954 eor x28,x28,x23
955 eor x17,x9,x22,ror#39
956 eor x7,x7,x0,lsr#6
957 add x2,x2,x11
958 add x25,x25,x21
959 add x21,x21,x28
960 ldr x28,[x30],#8
961 add x2,x2,x8
962 add x21,x21,x17
963 add x2,x2,x7
964 ldr x7,[sp,#0]
965 str x10,[sp,#24]
966 ror x16,x25,#14
967 add x20,x20,x28
968 ror x9,x4,#1
969 and x17,x26,x25
970 ror x8,x1,#19
971 bic x28,x27,x25
972 ror x10,x21,#28
973 add x20,x20,x2
974 eor x16,x16,x25,ror#18
975 eor x9,x9,x4,ror#8
976 orr x17,x17,x28
977 eor x28,x21,x22
978 eor x16,x16,x25,ror#41
979 eor x10,x10,x21,ror#34
980 add x20,x20,x17
981 and x19,x19,x28
982 eor x8,x8,x1,ror#61
983 eor x9,x9,x4,lsr#7
984 add x20,x20,x16
985 eor x19,x19,x22
986 eor x17,x10,x21,ror#39
987 eor x8,x8,x1,lsr#6
988 add x3,x3,x12
989 add x24,x24,x20
990 add x20,x20,x19
991 ldr x19,[x30],#8
992 add x3,x3,x9
993 add x20,x20,x17
994 add x3,x3,x8
995 cbnz x19,Loop_16_xx
996
997 ldp x0,x2,[x29,#96]
998 ldr x1,[x29,#112]
999 sub x30,x30,#648
1000
1001 ldp x3,x4,[x0]
1002 ldp x5,x6,[x0,#2*8]
1003 add x1,x1,#14*8
1004 ldp x7,x8,[x0,#4*8]
1005 add x20,x20,x3
1006 ldp x9,x10,[x0,#6*8]
1007 add x21,x21,x4
1008 add x22,x22,x5
1009 add x23,x23,x6
1010 stp x20,x21,[x0]
1011 add x24,x24,x7
1012 add x25,x25,x8
1013 stp x22,x23,[x0,#2*8]
1014 add x26,x26,x9
1015 add x27,x27,x10
1016 cmp x1,x2
1017 stp x24,x25,[x0,#4*8]
1018 stp x26,x27,[x0,#6*8]
1019 b.ne Loop
1020
1021 ldp x19,x20,[x29,#16]
1022 add sp,sp,#4*8
1023 ldp x21,x22,[x29,#32]
1024 ldp x23,x24,[x29,#48]
1025 ldp x25,x26,[x29,#64]
1026 ldp x27,x28,[x29,#80]
1027 ldp x29,x30,[sp],#128
1028.long 0xd50323bf
1029 ret
1030
1031
1032.align 6
1033
1034LK512:
1035.quad 0x428a2f98d728ae22,0x7137449123ef65cd
1036.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
1037.quad 0x3956c25bf348b538,0x59f111f1b605d019
1038.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118
1039.quad 0xd807aa98a3030242,0x12835b0145706fbe
1040.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
1041.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1
1042.quad 0x9bdc06a725c71235,0xc19bf174cf692694
1043.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3
1044.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
1045.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483
1046.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5
1047.quad 0x983e5152ee66dfab,0xa831c66d2db43210
1048.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4
1049.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725
1050.quad 0x06ca6351e003826f,0x142929670a0e6e70
1051.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926
1052.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df
1053.quad 0x650a73548baf63de,0x766a0abb3c77b2a8
1054.quad 0x81c2c92e47edaee6,0x92722c851482353b
1055.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001
1056.quad 0xc24b8b70d0f89791,0xc76c51a30654be30
1057.quad 0xd192e819d6ef5218,0xd69906245565a910
1058.quad 0xf40e35855771202a,0x106aa07032bbd1b8
1059.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53
1060.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
1061.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
1062.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
1063.quad 0x748f82ee5defb2fc,0x78a5636f43172f60
1064.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec
1065.quad 0x90befffa23631e28,0xa4506cebde82bde9
1066.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b
1067.quad 0xca273eceea26619c,0xd186b8c721c0c207
1068.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
1069.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6
1070.quad 0x113f9804bef90dae,0x1b710b35131c471b
1071.quad 0x28db77f523047d84,0x32caab7b40c72493
1072.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
1073.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
1074.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817
1075.quad 0
1076
1077
1078.align 3
1079L_gnutls_arm_cpuid_s:
1080
1081
1082
1083.quad __gnutls_arm_cpuid_s-.
1084
1085
1086.byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
1087.align 2
1088.align 2
1089
1090
1091.align 6
1092sha512_block_armv8:
1093Lv8_entry:
1094 stp x29,x30,[sp,#-16]!
1095 add x29,sp,#0
1096
1097 ld1 {v16.16b,v17.16b,v18.16b,v19.16b},[x1],#64
1098 ld1 {v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64
1099
1100 ld1 {v0.2d,v1.2d,v2.2d,v3.2d},[x0]
1101 adr x3,LK512
1102
1103 rev64 v16.16b,v16.16b
1104 rev64 v17.16b,v17.16b
1105 rev64 v18.16b,v18.16b
1106 rev64 v19.16b,v19.16b
1107 rev64 v20.16b,v20.16b
1108 rev64 v21.16b,v21.16b
1109 rev64 v22.16b,v22.16b
1110 rev64 v23.16b,v23.16b
1111 b Loop_hw
1112
1113.align 4
1114Loop_hw:
1115 ld1 {v24.2d},[x3],#16
1116 subs x2,x2,#1
1117 sub x4,x1,#128
1118 orr v26.16b,v0.16b,v0.16b
1119 orr v27.16b,v1.16b,v1.16b
1120 orr v28.16b,v2.16b,v2.16b
1121 orr v29.16b,v3.16b,v3.16b
1122 csel x1,x1,x4,ne
1123 add v24.2d,v24.2d,v16.2d
1124 ld1 {v25.2d},[x3],#16
1125 ext v24.16b,v24.16b,v24.16b,#8
1126 ext v5.16b,v2.16b,v3.16b,#8
1127 ext v6.16b,v1.16b,v2.16b,#8
1128 add v3.2d,v3.2d,v24.2d
1129.long 0xcec08230
1130 ext v7.16b,v20.16b,v21.16b,#8
1131.long 0xce6680a3
1132.long 0xce678af0
1133 add v4.2d,v1.2d,v3.2d
1134.long 0xce608423
1135 add v25.2d,v25.2d,v17.2d
1136 ld1 {v24.2d},[x3],#16
1137 ext v25.16b,v25.16b,v25.16b,#8
1138 ext v5.16b,v4.16b,v2.16b,#8
1139 ext v6.16b,v0.16b,v4.16b,#8
1140 add v2.2d,v2.2d,v25.2d
1141.long 0xcec08251
1142 ext v7.16b,v21.16b,v22.16b,#8
1143.long 0xce6680a2
1144.long 0xce678a11
1145 add v1.2d,v0.2d,v2.2d
1146.long 0xce638402
1147 add v24.2d,v24.2d,v18.2d
1148 ld1 {v25.2d},[x3],#16
1149 ext v24.16b,v24.16b,v24.16b,#8
1150 ext v5.16b,v1.16b,v4.16b,#8
1151 ext v6.16b,v3.16b,v1.16b,#8
1152 add v4.2d,v4.2d,v24.2d
1153.long 0xcec08272
1154 ext v7.16b,v22.16b,v23.16b,#8
1155.long 0xce6680a4
1156.long 0xce678a32
1157 add v0.2d,v3.2d,v4.2d
1158.long 0xce628464
1159 add v25.2d,v25.2d,v19.2d
1160 ld1 {v24.2d},[x3],#16
1161 ext v25.16b,v25.16b,v25.16b,#8
1162 ext v5.16b,v0.16b,v1.16b,#8
1163 ext v6.16b,v2.16b,v0.16b,#8
1164 add v1.2d,v1.2d,v25.2d
1165.long 0xcec08293
1166 ext v7.16b,v23.16b,v16.16b,#8
1167.long 0xce6680a1
1168.long 0xce678a53
1169 add v3.2d,v2.2d,v1.2d
1170.long 0xce648441
1171 add v24.2d,v24.2d,v20.2d
1172 ld1 {v25.2d},[x3],#16
1173 ext v24.16b,v24.16b,v24.16b,#8
1174 ext v5.16b,v3.16b,v0.16b,#8
1175 ext v6.16b,v4.16b,v3.16b,#8
1176 add v0.2d,v0.2d,v24.2d
1177.long 0xcec082b4
1178 ext v7.16b,v16.16b,v17.16b,#8
1179.long 0xce6680a0
1180.long 0xce678a74
1181 add v2.2d,v4.2d,v0.2d
1182.long 0xce618480
1183 add v25.2d,v25.2d,v21.2d
1184 ld1 {v24.2d},[x3],#16
1185 ext v25.16b,v25.16b,v25.16b,#8
1186 ext v5.16b,v2.16b,v3.16b,#8
1187 ext v6.16b,v1.16b,v2.16b,#8
1188 add v3.2d,v3.2d,v25.2d
1189.long 0xcec082d5
1190 ext v7.16b,v17.16b,v18.16b,#8
1191.long 0xce6680a3
1192.long 0xce678a95
1193 add v4.2d,v1.2d,v3.2d
1194.long 0xce608423
1195 add v24.2d,v24.2d,v22.2d
1196 ld1 {v25.2d},[x3],#16
1197 ext v24.16b,v24.16b,v24.16b,#8
1198 ext v5.16b,v4.16b,v2.16b,#8
1199 ext v6.16b,v0.16b,v4.16b,#8
1200 add v2.2d,v2.2d,v24.2d
1201.long 0xcec082f6
1202 ext v7.16b,v18.16b,v19.16b,#8
1203.long 0xce6680a2
1204.long 0xce678ab6
1205 add v1.2d,v0.2d,v2.2d
1206.long 0xce638402
1207 add v25.2d,v25.2d,v23.2d
1208 ld1 {v24.2d},[x3],#16
1209 ext v25.16b,v25.16b,v25.16b,#8
1210 ext v5.16b,v1.16b,v4.16b,#8
1211 ext v6.16b,v3.16b,v1.16b,#8
1212 add v4.2d,v4.2d,v25.2d
1213.long 0xcec08217
1214 ext v7.16b,v19.16b,v20.16b,#8
1215.long 0xce6680a4
1216.long 0xce678ad7
1217 add v0.2d,v3.2d,v4.2d
1218.long 0xce628464
1219 add v24.2d,v24.2d,v16.2d
1220 ld1 {v25.2d},[x3],#16
1221 ext v24.16b,v24.16b,v24.16b,#8
1222 ext v5.16b,v0.16b,v1.16b,#8
1223 ext v6.16b,v2.16b,v0.16b,#8
1224 add v1.2d,v1.2d,v24.2d
1225.long 0xcec08230
1226 ext v7.16b,v20.16b,v21.16b,#8
1227.long 0xce6680a1
1228.long 0xce678af0
1229 add v3.2d,v2.2d,v1.2d
1230.long 0xce648441
1231 add v25.2d,v25.2d,v17.2d
1232 ld1 {v24.2d},[x3],#16
1233 ext v25.16b,v25.16b,v25.16b,#8
1234 ext v5.16b,v3.16b,v0.16b,#8
1235 ext v6.16b,v4.16b,v3.16b,#8
1236 add v0.2d,v0.2d,v25.2d
1237.long 0xcec08251
1238 ext v7.16b,v21.16b,v22.16b,#8
1239.long 0xce6680a0
1240.long 0xce678a11
1241 add v2.2d,v4.2d,v0.2d
1242.long 0xce618480
1243 add v24.2d,v24.2d,v18.2d
1244 ld1 {v25.2d},[x3],#16
1245 ext v24.16b,v24.16b,v24.16b,#8
1246 ext v5.16b,v2.16b,v3.16b,#8
1247 ext v6.16b,v1.16b,v2.16b,#8
1248 add v3.2d,v3.2d,v24.2d
1249.long 0xcec08272
1250 ext v7.16b,v22.16b,v23.16b,#8
1251.long 0xce6680a3
1252.long 0xce678a32
1253 add v4.2d,v1.2d,v3.2d
1254.long 0xce608423
1255 add v25.2d,v25.2d,v19.2d
1256 ld1 {v24.2d},[x3],#16
1257 ext v25.16b,v25.16b,v25.16b,#8
1258 ext v5.16b,v4.16b,v2.16b,#8
1259 ext v6.16b,v0.16b,v4.16b,#8
1260 add v2.2d,v2.2d,v25.2d
1261.long 0xcec08293
1262 ext v7.16b,v23.16b,v16.16b,#8
1263.long 0xce6680a2
1264.long 0xce678a53
1265 add v1.2d,v0.2d,v2.2d
1266.long 0xce638402
1267 add v24.2d,v24.2d,v20.2d
1268 ld1 {v25.2d},[x3],#16
1269 ext v24.16b,v24.16b,v24.16b,#8
1270 ext v5.16b,v1.16b,v4.16b,#8
1271 ext v6.16b,v3.16b,v1.16b,#8
1272 add v4.2d,v4.2d,v24.2d
1273.long 0xcec082b4
1274 ext v7.16b,v16.16b,v17.16b,#8
1275.long 0xce6680a4
1276.long 0xce678a74
1277 add v0.2d,v3.2d,v4.2d
1278.long 0xce628464
1279 add v25.2d,v25.2d,v21.2d
1280 ld1 {v24.2d},[x3],#16
1281 ext v25.16b,v25.16b,v25.16b,#8
1282 ext v5.16b,v0.16b,v1.16b,#8
1283 ext v6.16b,v2.16b,v0.16b,#8
1284 add v1.2d,v1.2d,v25.2d
1285.long 0xcec082d5
1286 ext v7.16b,v17.16b,v18.16b,#8
1287.long 0xce6680a1
1288.long 0xce678a95
1289 add v3.2d,v2.2d,v1.2d
1290.long 0xce648441
1291 add v24.2d,v24.2d,v22.2d
1292 ld1 {v25.2d},[x3],#16
1293 ext v24.16b,v24.16b,v24.16b,#8
1294 ext v5.16b,v3.16b,v0.16b,#8
1295 ext v6.16b,v4.16b,v3.16b,#8
1296 add v0.2d,v0.2d,v24.2d
1297.long 0xcec082f6
1298 ext v7.16b,v18.16b,v19.16b,#8
1299.long 0xce6680a0
1300.long 0xce678ab6
1301 add v2.2d,v4.2d,v0.2d
1302.long 0xce618480
1303 add v25.2d,v25.2d,v23.2d
1304 ld1 {v24.2d},[x3],#16
1305 ext v25.16b,v25.16b,v25.16b,#8
1306 ext v5.16b,v2.16b,v3.16b,#8
1307 ext v6.16b,v1.16b,v2.16b,#8
1308 add v3.2d,v3.2d,v25.2d
1309.long 0xcec08217
1310 ext v7.16b,v19.16b,v20.16b,#8
1311.long 0xce6680a3
1312.long 0xce678ad7
1313 add v4.2d,v1.2d,v3.2d
1314.long 0xce608423
1315 add v24.2d,v24.2d,v16.2d
1316 ld1 {v25.2d},[x3],#16
1317 ext v24.16b,v24.16b,v24.16b,#8
1318 ext v5.16b,v4.16b,v2.16b,#8
1319 ext v6.16b,v0.16b,v4.16b,#8
1320 add v2.2d,v2.2d,v24.2d
1321.long 0xcec08230
1322 ext v7.16b,v20.16b,v21.16b,#8
1323.long 0xce6680a2
1324.long 0xce678af0
1325 add v1.2d,v0.2d,v2.2d
1326.long 0xce638402
1327 add v25.2d,v25.2d,v17.2d
1328 ld1 {v24.2d},[x3],#16
1329 ext v25.16b,v25.16b,v25.16b,#8
1330 ext v5.16b,v1.16b,v4.16b,#8
1331 ext v6.16b,v3.16b,v1.16b,#8
1332 add v4.2d,v4.2d,v25.2d
1333.long 0xcec08251
1334 ext v7.16b,v21.16b,v22.16b,#8
1335.long 0xce6680a4
1336.long 0xce678a11
1337 add v0.2d,v3.2d,v4.2d
1338.long 0xce628464
1339 add v24.2d,v24.2d,v18.2d
1340 ld1 {v25.2d},[x3],#16
1341 ext v24.16b,v24.16b,v24.16b,#8
1342 ext v5.16b,v0.16b,v1.16b,#8
1343 ext v6.16b,v2.16b,v0.16b,#8
1344 add v1.2d,v1.2d,v24.2d
1345.long 0xcec08272
1346 ext v7.16b,v22.16b,v23.16b,#8
1347.long 0xce6680a1
1348.long 0xce678a32
1349 add v3.2d,v2.2d,v1.2d
1350.long 0xce648441
1351 add v25.2d,v25.2d,v19.2d
1352 ld1 {v24.2d},[x3],#16
1353 ext v25.16b,v25.16b,v25.16b,#8
1354 ext v5.16b,v3.16b,v0.16b,#8
1355 ext v6.16b,v4.16b,v3.16b,#8
1356 add v0.2d,v0.2d,v25.2d
1357.long 0xcec08293
1358 ext v7.16b,v23.16b,v16.16b,#8
1359.long 0xce6680a0
1360.long 0xce678a53
1361 add v2.2d,v4.2d,v0.2d
1362.long 0xce618480
1363 add v24.2d,v24.2d,v20.2d
1364 ld1 {v25.2d},[x3],#16
1365 ext v24.16b,v24.16b,v24.16b,#8
1366 ext v5.16b,v2.16b,v3.16b,#8
1367 ext v6.16b,v1.16b,v2.16b,#8
1368 add v3.2d,v3.2d,v24.2d
1369.long 0xcec082b4
1370 ext v7.16b,v16.16b,v17.16b,#8
1371.long 0xce6680a3
1372.long 0xce678a74
1373 add v4.2d,v1.2d,v3.2d
1374.long 0xce608423
1375 add v25.2d,v25.2d,v21.2d
1376 ld1 {v24.2d},[x3],#16
1377 ext v25.16b,v25.16b,v25.16b,#8
1378 ext v5.16b,v4.16b,v2.16b,#8
1379 ext v6.16b,v0.16b,v4.16b,#8
1380 add v2.2d,v2.2d,v25.2d
1381.long 0xcec082d5
1382 ext v7.16b,v17.16b,v18.16b,#8
1383.long 0xce6680a2
1384.long 0xce678a95
1385 add v1.2d,v0.2d,v2.2d
1386.long 0xce638402
1387 add v24.2d,v24.2d,v22.2d
1388 ld1 {v25.2d},[x3],#16
1389 ext v24.16b,v24.16b,v24.16b,#8
1390 ext v5.16b,v1.16b,v4.16b,#8
1391 ext v6.16b,v3.16b,v1.16b,#8
1392 add v4.2d,v4.2d,v24.2d
1393.long 0xcec082f6
1394 ext v7.16b,v18.16b,v19.16b,#8
1395.long 0xce6680a4
1396.long 0xce678ab6
1397 add v0.2d,v3.2d,v4.2d
1398.long 0xce628464
1399 add v25.2d,v25.2d,v23.2d
1400 ld1 {v24.2d},[x3],#16
1401 ext v25.16b,v25.16b,v25.16b,#8
1402 ext v5.16b,v0.16b,v1.16b,#8
1403 ext v6.16b,v2.16b,v0.16b,#8
1404 add v1.2d,v1.2d,v25.2d
1405.long 0xcec08217
1406 ext v7.16b,v19.16b,v20.16b,#8
1407.long 0xce6680a1
1408.long 0xce678ad7
1409 add v3.2d,v2.2d,v1.2d
1410.long 0xce648441
1411 add v24.2d,v24.2d,v16.2d
1412 ld1 {v25.2d},[x3],#16
1413 ext v24.16b,v24.16b,v24.16b,#8
1414 ext v5.16b,v3.16b,v0.16b,#8
1415 ext v6.16b,v4.16b,v3.16b,#8
1416 add v0.2d,v0.2d,v24.2d
1417.long 0xcec08230
1418 ext v7.16b,v20.16b,v21.16b,#8
1419.long 0xce6680a0
1420.long 0xce678af0
1421 add v2.2d,v4.2d,v0.2d
1422.long 0xce618480
1423 add v25.2d,v25.2d,v17.2d
1424 ld1 {v24.2d},[x3],#16
1425 ext v25.16b,v25.16b,v25.16b,#8
1426 ext v5.16b,v2.16b,v3.16b,#8
1427 ext v6.16b,v1.16b,v2.16b,#8
1428 add v3.2d,v3.2d,v25.2d
1429.long 0xcec08251
1430 ext v7.16b,v21.16b,v22.16b,#8
1431.long 0xce6680a3
1432.long 0xce678a11
1433 add v4.2d,v1.2d,v3.2d
1434.long 0xce608423
1435 add v24.2d,v24.2d,v18.2d
1436 ld1 {v25.2d},[x3],#16
1437 ext v24.16b,v24.16b,v24.16b,#8
1438 ext v5.16b,v4.16b,v2.16b,#8
1439 ext v6.16b,v0.16b,v4.16b,#8
1440 add v2.2d,v2.2d,v24.2d
1441.long 0xcec08272
1442 ext v7.16b,v22.16b,v23.16b,#8
1443.long 0xce6680a2
1444.long 0xce678a32
1445 add v1.2d,v0.2d,v2.2d
1446.long 0xce638402
1447 add v25.2d,v25.2d,v19.2d
1448 ld1 {v24.2d},[x3],#16
1449 ext v25.16b,v25.16b,v25.16b,#8
1450 ext v5.16b,v1.16b,v4.16b,#8
1451 ext v6.16b,v3.16b,v1.16b,#8
1452 add v4.2d,v4.2d,v25.2d
1453.long 0xcec08293
1454 ext v7.16b,v23.16b,v16.16b,#8
1455.long 0xce6680a4
1456.long 0xce678a53
1457 add v0.2d,v3.2d,v4.2d
1458.long 0xce628464
1459 add v24.2d,v24.2d,v20.2d
1460 ld1 {v25.2d},[x3],#16
1461 ext v24.16b,v24.16b,v24.16b,#8
1462 ext v5.16b,v0.16b,v1.16b,#8
1463 ext v6.16b,v2.16b,v0.16b,#8
1464 add v1.2d,v1.2d,v24.2d
1465.long 0xcec082b4
1466 ext v7.16b,v16.16b,v17.16b,#8
1467.long 0xce6680a1
1468.long 0xce678a74
1469 add v3.2d,v2.2d,v1.2d
1470.long 0xce648441
1471 add v25.2d,v25.2d,v21.2d
1472 ld1 {v24.2d},[x3],#16
1473 ext v25.16b,v25.16b,v25.16b,#8
1474 ext v5.16b,v3.16b,v0.16b,#8
1475 ext v6.16b,v4.16b,v3.16b,#8
1476 add v0.2d,v0.2d,v25.2d
1477.long 0xcec082d5
1478 ext v7.16b,v17.16b,v18.16b,#8
1479.long 0xce6680a0
1480.long 0xce678a95
1481 add v2.2d,v4.2d,v0.2d
1482.long 0xce618480
1483 add v24.2d,v24.2d,v22.2d
1484 ld1 {v25.2d},[x3],#16
1485 ext v24.16b,v24.16b,v24.16b,#8
1486 ext v5.16b,v2.16b,v3.16b,#8
1487 ext v6.16b,v1.16b,v2.16b,#8
1488 add v3.2d,v3.2d,v24.2d
1489.long 0xcec082f6
1490 ext v7.16b,v18.16b,v19.16b,#8
1491.long 0xce6680a3
1492.long 0xce678ab6
1493 add v4.2d,v1.2d,v3.2d
1494.long 0xce608423
1495 add v25.2d,v25.2d,v23.2d
1496 ld1 {v24.2d},[x3],#16
1497 ext v25.16b,v25.16b,v25.16b,#8
1498 ext v5.16b,v4.16b,v2.16b,#8
1499 ext v6.16b,v0.16b,v4.16b,#8
1500 add v2.2d,v2.2d,v25.2d
1501.long 0xcec08217
1502 ext v7.16b,v19.16b,v20.16b,#8
1503.long 0xce6680a2
1504.long 0xce678ad7
1505 add v1.2d,v0.2d,v2.2d
1506.long 0xce638402
1507 ld1 {v25.2d},[x3],#16
1508 add v24.2d,v24.2d,v16.2d
1509 ld1 {v16.16b},[x1],#16
1510 ext v24.16b,v24.16b,v24.16b,#8
1511 ext v5.16b,v1.16b,v4.16b,#8
1512 ext v6.16b,v3.16b,v1.16b,#8
1513 add v4.2d,v4.2d,v24.2d
1514.long 0xce6680a4
1515 rev64 v16.16b,v16.16b
1516 add v0.2d,v3.2d,v4.2d
1517.long 0xce628464
1518 ld1 {v24.2d},[x3],#16
1519 add v25.2d,v25.2d,v17.2d
1520 ld1 {v17.16b},[x1],#16
1521 ext v25.16b,v25.16b,v25.16b,#8
1522 ext v5.16b,v0.16b,v1.16b,#8
1523 ext v6.16b,v2.16b,v0.16b,#8
1524 add v1.2d,v1.2d,v25.2d
1525.long 0xce6680a1
1526 rev64 v17.16b,v17.16b
1527 add v3.2d,v2.2d,v1.2d
1528.long 0xce648441
1529 ld1 {v25.2d},[x3],#16
1530 add v24.2d,v24.2d,v18.2d
1531 ld1 {v18.16b},[x1],#16
1532 ext v24.16b,v24.16b,v24.16b,#8
1533 ext v5.16b,v3.16b,v0.16b,#8
1534 ext v6.16b,v4.16b,v3.16b,#8
1535 add v0.2d,v0.2d,v24.2d
1536.long 0xce6680a0
1537 rev64 v18.16b,v18.16b
1538 add v2.2d,v4.2d,v0.2d
1539.long 0xce618480
1540 ld1 {v24.2d},[x3],#16
1541 add v25.2d,v25.2d,v19.2d
1542 ld1 {v19.16b},[x1],#16
1543 ext v25.16b,v25.16b,v25.16b,#8
1544 ext v5.16b,v2.16b,v3.16b,#8
1545 ext v6.16b,v1.16b,v2.16b,#8
1546 add v3.2d,v3.2d,v25.2d
1547.long 0xce6680a3
1548 rev64 v19.16b,v19.16b
1549 add v4.2d,v1.2d,v3.2d
1550.long 0xce608423
1551 ld1 {v25.2d},[x3],#16
1552 add v24.2d,v24.2d,v20.2d
1553 ld1 {v20.16b},[x1],#16
1554 ext v24.16b,v24.16b,v24.16b,#8
1555 ext v5.16b,v4.16b,v2.16b,#8
1556 ext v6.16b,v0.16b,v4.16b,#8
1557 add v2.2d,v2.2d,v24.2d
1558.long 0xce6680a2
1559 rev64 v20.16b,v20.16b
1560 add v1.2d,v0.2d,v2.2d
1561.long 0xce638402
1562 ld1 {v24.2d},[x3],#16
1563 add v25.2d,v25.2d,v21.2d
1564 ld1 {v21.16b},[x1],#16
1565 ext v25.16b,v25.16b,v25.16b,#8
1566 ext v5.16b,v1.16b,v4.16b,#8
1567 ext v6.16b,v3.16b,v1.16b,#8
1568 add v4.2d,v4.2d,v25.2d
1569.long 0xce6680a4
1570 rev64 v21.16b,v21.16b
1571 add v0.2d,v3.2d,v4.2d
1572.long 0xce628464
1573 ld1 {v25.2d},[x3],#16
1574 add v24.2d,v24.2d,v22.2d
1575 ld1 {v22.16b},[x1],#16
1576 ext v24.16b,v24.16b,v24.16b,#8
1577 ext v5.16b,v0.16b,v1.16b,#8
1578 ext v6.16b,v2.16b,v0.16b,#8
1579 add v1.2d,v1.2d,v24.2d
1580.long 0xce6680a1
1581 rev64 v22.16b,v22.16b
1582 add v3.2d,v2.2d,v1.2d
1583.long 0xce648441
1584 sub x3,x3,#80*8
1585 add v25.2d,v25.2d,v23.2d
1586 ld1 {v23.16b},[x1],#16
1587 ext v25.16b,v25.16b,v25.16b,#8
1588 ext v5.16b,v3.16b,v0.16b,#8
1589 ext v6.16b,v4.16b,v3.16b,#8
1590 add v0.2d,v0.2d,v25.2d
1591.long 0xce6680a0
1592 rev64 v23.16b,v23.16b
1593 add v2.2d,v4.2d,v0.2d
1594.long 0xce618480
1595 add v0.2d,v0.2d,v26.2d
1596 add v1.2d,v1.2d,v27.2d
1597 add v2.2d,v2.2d,v28.2d
1598 add v3.2d,v3.2d,v29.2d
1599
1600 cbnz x2,Loop_hw
1601
1602 st1 {v0.2d,v1.2d,v2.2d,v3.2d},[x0]
1603
1604 ldr x29,[sp],#16
1605 ret
1606
1607
1608
1609.comm __gnutls_arm_cpuid_s,4,4
1610