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/sha1-armv8.s.tmp.S"
41# 1 "<built-in>"
42# 1 "<command-line>"
43# 1 "lib/accelerated/aarch64/macosx/sha1-armv8.s.tmp.S"
44# 1 "lib/accelerated/aarch64/aarch64-common.h" 1
45# 2 "lib/accelerated/aarch64/macosx/sha1-armv8.s.tmp.S" 2
46
47.text
48
49
50.globl _sha1_block_data_order
51
52.align 6
53_sha1_block_data_order:
54
55
56
57 ldr x16,L_gnutls_arm_cpuid_s
58
59 adr x17,L_gnutls_arm_cpuid_s
60 add x16,x16,x17
61 ldr w16,[x16]
62 tst w16,#(1<<3)
63 b.ne Lv8_entry
64
65 stp x29,x30,[sp,#-96]!
66 add x29,sp,#0
67 stp x19,x20,[sp,#16]
68 stp x21,x22,[sp,#32]
69 stp x23,x24,[sp,#48]
70 stp x25,x26,[sp,#64]
71 stp x27,x28,[sp,#80]
72
73 ldp w20,w21,[x0]
74 ldp w22,w23,[x0,#8]
75 ldr w24,[x0,#16]
76
77Loop:
78 ldr x3,[x1],#64
79 movz w28,#0x7999
80 sub x2,x2,#1
81 movk w28,#0x5a82,lsl#16
82
83
84
85 rev32 x3,x3
86
87 add w24,w24,w28
88 add w24,w24,w3
89 lsr x4,x3,#32
90 ldr x5,[x1,#-56]
91 bic w25,w23,w21
92 and w26,w22,w21
93 ror w27,w20,#27
94 add w23,w23,w28
95 orr w25,w25,w26
96 add w24,w24,w27
97 ror w21,w21,#2
98 add w23,w23,w4
99 add w24,w24,w25
100
101
102
103 rev32 x5,x5
104
105 bic w25,w22,w20
106 and w26,w21,w20
107 ror w27,w24,#27
108 add w22,w22,w28
109 orr w25,w25,w26
110 add w23,w23,w27
111 ror w20,w20,#2
112 add w22,w22,w5
113 add w23,w23,w25
114 lsr x6,x5,#32
115 ldr x7,[x1,#-48]
116 bic w25,w21,w24
117 and w26,w20,w24
118 ror w27,w23,#27
119 add w21,w21,w28
120 orr w25,w25,w26
121 add w22,w22,w27
122 ror w24,w24,#2
123 add w21,w21,w6
124 add w22,w22,w25
125
126
127
128 rev32 x7,x7
129
130 bic w25,w20,w23
131 and w26,w24,w23
132 ror w27,w22,#27
133 add w20,w20,w28
134 orr w25,w25,w26
135 add w21,w21,w27
136 ror w23,w23,#2
137 add w20,w20,w7
138 add w21,w21,w25
139 lsr x8,x7,#32
140 ldr x9,[x1,#-40]
141 bic w25,w24,w22
142 and w26,w23,w22
143 ror w27,w21,#27
144 add w24,w24,w28
145 orr w25,w25,w26
146 add w20,w20,w27
147 ror w22,w22,#2
148 add w24,w24,w8
149 add w20,w20,w25
150
151
152
153 rev32 x9,x9
154
155 bic w25,w23,w21
156 and w26,w22,w21
157 ror w27,w20,#27
158 add w23,w23,w28
159 orr w25,w25,w26
160 add w24,w24,w27
161 ror w21,w21,#2
162 add w23,w23,w9
163 add w24,w24,w25
164 lsr x10,x9,#32
165 ldr x11,[x1,#-32]
166 bic w25,w22,w20
167 and w26,w21,w20
168 ror w27,w24,#27
169 add w22,w22,w28
170 orr w25,w25,w26
171 add w23,w23,w27
172 ror w20,w20,#2
173 add w22,w22,w10
174 add w23,w23,w25
175
176
177
178 rev32 x11,x11
179
180 bic w25,w21,w24
181 and w26,w20,w24
182 ror w27,w23,#27
183 add w21,w21,w28
184 orr w25,w25,w26
185 add w22,w22,w27
186 ror w24,w24,#2
187 add w21,w21,w11
188 add w22,w22,w25
189 lsr x12,x11,#32
190 ldr x13,[x1,#-24]
191 bic w25,w20,w23
192 and w26,w24,w23
193 ror w27,w22,#27
194 add w20,w20,w28
195 orr w25,w25,w26
196 add w21,w21,w27
197 ror w23,w23,#2
198 add w20,w20,w12
199 add w21,w21,w25
200
201
202
203 rev32 x13,x13
204
205 bic w25,w24,w22
206 and w26,w23,w22
207 ror w27,w21,#27
208 add w24,w24,w28
209 orr w25,w25,w26
210 add w20,w20,w27
211 ror w22,w22,#2
212 add w24,w24,w13
213 add w20,w20,w25
214 lsr x14,x13,#32
215 ldr x15,[x1,#-16]
216 bic w25,w23,w21
217 and w26,w22,w21
218 ror w27,w20,#27
219 add w23,w23,w28
220 orr w25,w25,w26
221 add w24,w24,w27
222 ror w21,w21,#2
223 add w23,w23,w14
224 add w24,w24,w25
225
226
227
228 rev32 x15,x15
229
230 bic w25,w22,w20
231 and w26,w21,w20
232 ror w27,w24,#27
233 add w22,w22,w28
234 orr w25,w25,w26
235 add w23,w23,w27
236 ror w20,w20,#2
237 add w22,w22,w15
238 add w23,w23,w25
239 lsr x16,x15,#32
240 ldr x17,[x1,#-8]
241 bic w25,w21,w24
242 and w26,w20,w24
243 ror w27,w23,#27
244 add w21,w21,w28
245 orr w25,w25,w26
246 add w22,w22,w27
247 ror w24,w24,#2
248 add w21,w21,w16
249 add w22,w22,w25
250
251
252
253 rev32 x17,x17
254
255 bic w25,w20,w23
256 and w26,w24,w23
257 ror w27,w22,#27
258 add w20,w20,w28
259 orr w25,w25,w26
260 add w21,w21,w27
261 ror w23,w23,#2
262 add w20,w20,w17
263 add w21,w21,w25
264 lsr x19,x17,#32
265 eor w3,w3,w5
266 bic w25,w24,w22
267 and w26,w23,w22
268 ror w27,w21,#27
269 eor w3,w3,w11
270 add w24,w24,w28
271 orr w25,w25,w26
272 add w20,w20,w27
273 eor w3,w3,w16
274 ror w22,w22,#2
275 add w24,w24,w19
276 add w20,w20,w25
277 ror w3,w3,#31
278 eor w4,w4,w6
279 bic w25,w23,w21
280 and w26,w22,w21
281 ror w27,w20,#27
282 eor w4,w4,w12
283 add w23,w23,w28
284 orr w25,w25,w26
285 add w24,w24,w27
286 eor w4,w4,w17
287 ror w21,w21,#2
288 add w23,w23,w3
289 add w24,w24,w25
290 ror w4,w4,#31
291 eor w5,w5,w7
292 bic w25,w22,w20
293 and w26,w21,w20
294 ror w27,w24,#27
295 eor w5,w5,w13
296 add w22,w22,w28
297 orr w25,w25,w26
298 add w23,w23,w27
299 eor w5,w5,w19
300 ror w20,w20,#2
301 add w22,w22,w4
302 add w23,w23,w25
303 ror w5,w5,#31
304 eor w6,w6,w8
305 bic w25,w21,w24
306 and w26,w20,w24
307 ror w27,w23,#27
308 eor w6,w6,w14
309 add w21,w21,w28
310 orr w25,w25,w26
311 add w22,w22,w27
312 eor w6,w6,w3
313 ror w24,w24,#2
314 add w21,w21,w5
315 add w22,w22,w25
316 ror w6,w6,#31
317 eor w7,w7,w9
318 bic w25,w20,w23
319 and w26,w24,w23
320 ror w27,w22,#27
321 eor w7,w7,w15
322 add w20,w20,w28
323 orr w25,w25,w26
324 add w21,w21,w27
325 eor w7,w7,w4
326 ror w23,w23,#2
327 add w20,w20,w6
328 add w21,w21,w25
329 ror w7,w7,#31
330 movz w28,#0xeba1
331 movk w28,#0x6ed9,lsl#16
332 eor w8,w8,w10
333 bic w25,w24,w22
334 and w26,w23,w22
335 ror w27,w21,#27
336 eor w8,w8,w16
337 add w24,w24,w28
338 orr w25,w25,w26
339 add w20,w20,w27
340 eor w8,w8,w5
341 ror w22,w22,#2
342 add w24,w24,w7
343 add w20,w20,w25
344 ror w8,w8,#31
345 eor w9,w9,w11
346 eor w25,w23,w21
347 ror w27,w20,#27
348 add w23,w23,w28
349 eor w9,w9,w17
350 eor w25,w25,w22
351 add w24,w24,w27
352 ror w21,w21,#2
353 eor w9,w9,w6
354 add w23,w23,w8
355 add w24,w24,w25
356 ror w9,w9,#31
357 eor w10,w10,w12
358 eor w25,w22,w20
359 ror w27,w24,#27
360 add w22,w22,w28
361 eor w10,w10,w19
362 eor w25,w25,w21
363 add w23,w23,w27
364 ror w20,w20,#2
365 eor w10,w10,w7
366 add w22,w22,w9
367 add w23,w23,w25
368 ror w10,w10,#31
369 eor w11,w11,w13
370 eor w25,w21,w24
371 ror w27,w23,#27
372 add w21,w21,w28
373 eor w11,w11,w3
374 eor w25,w25,w20
375 add w22,w22,w27
376 ror w24,w24,#2
377 eor w11,w11,w8
378 add w21,w21,w10
379 add w22,w22,w25
380 ror w11,w11,#31
381 eor w12,w12,w14
382 eor w25,w20,w23
383 ror w27,w22,#27
384 add w20,w20,w28
385 eor w12,w12,w4
386 eor w25,w25,w24
387 add w21,w21,w27
388 ror w23,w23,#2
389 eor w12,w12,w9
390 add w20,w20,w11
391 add w21,w21,w25
392 ror w12,w12,#31
393 eor w13,w13,w15
394 eor w25,w24,w22
395 ror w27,w21,#27
396 add w24,w24,w28
397 eor w13,w13,w5
398 eor w25,w25,w23
399 add w20,w20,w27
400 ror w22,w22,#2
401 eor w13,w13,w10
402 add w24,w24,w12
403 add w20,w20,w25
404 ror w13,w13,#31
405 eor w14,w14,w16
406 eor w25,w23,w21
407 ror w27,w20,#27
408 add w23,w23,w28
409 eor w14,w14,w6
410 eor w25,w25,w22
411 add w24,w24,w27
412 ror w21,w21,#2
413 eor w14,w14,w11
414 add w23,w23,w13
415 add w24,w24,w25
416 ror w14,w14,#31
417 eor w15,w15,w17
418 eor w25,w22,w20
419 ror w27,w24,#27
420 add w22,w22,w28
421 eor w15,w15,w7
422 eor w25,w25,w21
423 add w23,w23,w27
424 ror w20,w20,#2
425 eor w15,w15,w12
426 add w22,w22,w14
427 add w23,w23,w25
428 ror w15,w15,#31
429 eor w16,w16,w19
430 eor w25,w21,w24
431 ror w27,w23,#27
432 add w21,w21,w28
433 eor w16,w16,w8
434 eor w25,w25,w20
435 add w22,w22,w27
436 ror w24,w24,#2
437 eor w16,w16,w13
438 add w21,w21,w15
439 add w22,w22,w25
440 ror w16,w16,#31
441 eor w17,w17,w3
442 eor w25,w20,w23
443 ror w27,w22,#27
444 add w20,w20,w28
445 eor w17,w17,w9
446 eor w25,w25,w24
447 add w21,w21,w27
448 ror w23,w23,#2
449 eor w17,w17,w14
450 add w20,w20,w16
451 add w21,w21,w25
452 ror w17,w17,#31
453 eor w19,w19,w4
454 eor w25,w24,w22
455 ror w27,w21,#27
456 add w24,w24,w28
457 eor w19,w19,w10
458 eor w25,w25,w23
459 add w20,w20,w27
460 ror w22,w22,#2
461 eor w19,w19,w15
462 add w24,w24,w17
463 add w20,w20,w25
464 ror w19,w19,#31
465 eor w3,w3,w5
466 eor w25,w23,w21
467 ror w27,w20,#27
468 add w23,w23,w28
469 eor w3,w3,w11
470 eor w25,w25,w22
471 add w24,w24,w27
472 ror w21,w21,#2
473 eor w3,w3,w16
474 add w23,w23,w19
475 add w24,w24,w25
476 ror w3,w3,#31
477 eor w4,w4,w6
478 eor w25,w22,w20
479 ror w27,w24,#27
480 add w22,w22,w28
481 eor w4,w4,w12
482 eor w25,w25,w21
483 add w23,w23,w27
484 ror w20,w20,#2
485 eor w4,w4,w17
486 add w22,w22,w3
487 add w23,w23,w25
488 ror w4,w4,#31
489 eor w5,w5,w7
490 eor w25,w21,w24
491 ror w27,w23,#27
492 add w21,w21,w28
493 eor w5,w5,w13
494 eor w25,w25,w20
495 add w22,w22,w27
496 ror w24,w24,#2
497 eor w5,w5,w19
498 add w21,w21,w4
499 add w22,w22,w25
500 ror w5,w5,#31
501 eor w6,w6,w8
502 eor w25,w20,w23
503 ror w27,w22,#27
504 add w20,w20,w28
505 eor w6,w6,w14
506 eor w25,w25,w24
507 add w21,w21,w27
508 ror w23,w23,#2
509 eor w6,w6,w3
510 add w20,w20,w5
511 add w21,w21,w25
512 ror w6,w6,#31
513 eor w7,w7,w9
514 eor w25,w24,w22
515 ror w27,w21,#27
516 add w24,w24,w28
517 eor w7,w7,w15
518 eor w25,w25,w23
519 add w20,w20,w27
520 ror w22,w22,#2
521 eor w7,w7,w4
522 add w24,w24,w6
523 add w20,w20,w25
524 ror w7,w7,#31
525 eor w8,w8,w10
526 eor w25,w23,w21
527 ror w27,w20,#27
528 add w23,w23,w28
529 eor w8,w8,w16
530 eor w25,w25,w22
531 add w24,w24,w27
532 ror w21,w21,#2
533 eor w8,w8,w5
534 add w23,w23,w7
535 add w24,w24,w25
536 ror w8,w8,#31
537 eor w9,w9,w11
538 eor w25,w22,w20
539 ror w27,w24,#27
540 add w22,w22,w28
541 eor w9,w9,w17
542 eor w25,w25,w21
543 add w23,w23,w27
544 ror w20,w20,#2
545 eor w9,w9,w6
546 add w22,w22,w8
547 add w23,w23,w25
548 ror w9,w9,#31
549 eor w10,w10,w12
550 eor w25,w21,w24
551 ror w27,w23,#27
552 add w21,w21,w28
553 eor w10,w10,w19
554 eor w25,w25,w20
555 add w22,w22,w27
556 ror w24,w24,#2
557 eor w10,w10,w7
558 add w21,w21,w9
559 add w22,w22,w25
560 ror w10,w10,#31
561 eor w11,w11,w13
562 eor w25,w20,w23
563 ror w27,w22,#27
564 add w20,w20,w28
565 eor w11,w11,w3
566 eor w25,w25,w24
567 add w21,w21,w27
568 ror w23,w23,#2
569 eor w11,w11,w8
570 add w20,w20,w10
571 add w21,w21,w25
572 ror w11,w11,#31
573 movz w28,#0xbcdc
574 movk w28,#0x8f1b,lsl#16
575 eor w12,w12,w14
576 eor w25,w24,w22
577 ror w27,w21,#27
578 add w24,w24,w28
579 eor w12,w12,w4
580 eor w25,w25,w23
581 add w20,w20,w27
582 ror w22,w22,#2
583 eor w12,w12,w9
584 add w24,w24,w11
585 add w20,w20,w25
586 ror w12,w12,#31
587 orr w25,w21,w22
588 and w26,w21,w22
589 eor w13,w13,w15
590 ror w27,w20,#27
591 and w25,w25,w23
592 add w23,w23,w28
593 eor w13,w13,w5
594 add w24,w24,w27
595 orr w25,w25,w26
596 ror w21,w21,#2
597 eor w13,w13,w10
598 add w23,w23,w12
599 add w24,w24,w25
600 ror w13,w13,#31
601 orr w25,w20,w21
602 and w26,w20,w21
603 eor w14,w14,w16
604 ror w27,w24,#27
605 and w25,w25,w22
606 add w22,w22,w28
607 eor w14,w14,w6
608 add w23,w23,w27
609 orr w25,w25,w26
610 ror w20,w20,#2
611 eor w14,w14,w11
612 add w22,w22,w13
613 add w23,w23,w25
614 ror w14,w14,#31
615 orr w25,w24,w20
616 and w26,w24,w20
617 eor w15,w15,w17
618 ror w27,w23,#27
619 and w25,w25,w21
620 add w21,w21,w28
621 eor w15,w15,w7
622 add w22,w22,w27
623 orr w25,w25,w26
624 ror w24,w24,#2
625 eor w15,w15,w12
626 add w21,w21,w14
627 add w22,w22,w25
628 ror w15,w15,#31
629 orr w25,w23,w24
630 and w26,w23,w24
631 eor w16,w16,w19
632 ror w27,w22,#27
633 and w25,w25,w20
634 add w20,w20,w28
635 eor w16,w16,w8
636 add w21,w21,w27
637 orr w25,w25,w26
638 ror w23,w23,#2
639 eor w16,w16,w13
640 add w20,w20,w15
641 add w21,w21,w25
642 ror w16,w16,#31
643 orr w25,w22,w23
644 and w26,w22,w23
645 eor w17,w17,w3
646 ror w27,w21,#27
647 and w25,w25,w24
648 add w24,w24,w28
649 eor w17,w17,w9
650 add w20,w20,w27
651 orr w25,w25,w26
652 ror w22,w22,#2
653 eor w17,w17,w14
654 add w24,w24,w16
655 add w20,w20,w25
656 ror w17,w17,#31
657 orr w25,w21,w22
658 and w26,w21,w22
659 eor w19,w19,w4
660 ror w27,w20,#27
661 and w25,w25,w23
662 add w23,w23,w28
663 eor w19,w19,w10
664 add w24,w24,w27
665 orr w25,w25,w26
666 ror w21,w21,#2
667 eor w19,w19,w15
668 add w23,w23,w17
669 add w24,w24,w25
670 ror w19,w19,#31
671 orr w25,w20,w21
672 and w26,w20,w21
673 eor w3,w3,w5
674 ror w27,w24,#27
675 and w25,w25,w22
676 add w22,w22,w28
677 eor w3,w3,w11
678 add w23,w23,w27
679 orr w25,w25,w26
680 ror w20,w20,#2
681 eor w3,w3,w16
682 add w22,w22,w19
683 add w23,w23,w25
684 ror w3,w3,#31
685 orr w25,w24,w20
686 and w26,w24,w20
687 eor w4,w4,w6
688 ror w27,w23,#27
689 and w25,w25,w21
690 add w21,w21,w28
691 eor w4,w4,w12
692 add w22,w22,w27
693 orr w25,w25,w26
694 ror w24,w24,#2
695 eor w4,w4,w17
696 add w21,w21,w3
697 add w22,w22,w25
698 ror w4,w4,#31
699 orr w25,w23,w24
700 and w26,w23,w24
701 eor w5,w5,w7
702 ror w27,w22,#27
703 and w25,w25,w20
704 add w20,w20,w28
705 eor w5,w5,w13
706 add w21,w21,w27
707 orr w25,w25,w26
708 ror w23,w23,#2
709 eor w5,w5,w19
710 add w20,w20,w4
711 add w21,w21,w25
712 ror w5,w5,#31
713 orr w25,w22,w23
714 and w26,w22,w23
715 eor w6,w6,w8
716 ror w27,w21,#27
717 and w25,w25,w24
718 add w24,w24,w28
719 eor w6,w6,w14
720 add w20,w20,w27
721 orr w25,w25,w26
722 ror w22,w22,#2
723 eor w6,w6,w3
724 add w24,w24,w5
725 add w20,w20,w25
726 ror w6,w6,#31
727 orr w25,w21,w22
728 and w26,w21,w22
729 eor w7,w7,w9
730 ror w27,w20,#27
731 and w25,w25,w23
732 add w23,w23,w28
733 eor w7,w7,w15
734 add w24,w24,w27
735 orr w25,w25,w26
736 ror w21,w21,#2
737 eor w7,w7,w4
738 add w23,w23,w6
739 add w24,w24,w25
740 ror w7,w7,#31
741 orr w25,w20,w21
742 and w26,w20,w21
743 eor w8,w8,w10
744 ror w27,w24,#27
745 and w25,w25,w22
746 add w22,w22,w28
747 eor w8,w8,w16
748 add w23,w23,w27
749 orr w25,w25,w26
750 ror w20,w20,#2
751 eor w8,w8,w5
752 add w22,w22,w7
753 add w23,w23,w25
754 ror w8,w8,#31
755 orr w25,w24,w20
756 and w26,w24,w20
757 eor w9,w9,w11
758 ror w27,w23,#27
759 and w25,w25,w21
760 add w21,w21,w28
761 eor w9,w9,w17
762 add w22,w22,w27
763 orr w25,w25,w26
764 ror w24,w24,#2
765 eor w9,w9,w6
766 add w21,w21,w8
767 add w22,w22,w25
768 ror w9,w9,#31
769 orr w25,w23,w24
770 and w26,w23,w24
771 eor w10,w10,w12
772 ror w27,w22,#27
773 and w25,w25,w20
774 add w20,w20,w28
775 eor w10,w10,w19
776 add w21,w21,w27
777 orr w25,w25,w26
778 ror w23,w23,#2
779 eor w10,w10,w7
780 add w20,w20,w9
781 add w21,w21,w25
782 ror w10,w10,#31
783 orr w25,w22,w23
784 and w26,w22,w23
785 eor w11,w11,w13
786 ror w27,w21,#27
787 and w25,w25,w24
788 add w24,w24,w28
789 eor w11,w11,w3
790 add w20,w20,w27
791 orr w25,w25,w26
792 ror w22,w22,#2
793 eor w11,w11,w8
794 add w24,w24,w10
795 add w20,w20,w25
796 ror w11,w11,#31
797 orr w25,w21,w22
798 and w26,w21,w22
799 eor w12,w12,w14
800 ror w27,w20,#27
801 and w25,w25,w23
802 add w23,w23,w28
803 eor w12,w12,w4
804 add w24,w24,w27
805 orr w25,w25,w26
806 ror w21,w21,#2
807 eor w12,w12,w9
808 add w23,w23,w11
809 add w24,w24,w25
810 ror w12,w12,#31
811 orr w25,w20,w21
812 and w26,w20,w21
813 eor w13,w13,w15
814 ror w27,w24,#27
815 and w25,w25,w22
816 add w22,w22,w28
817 eor w13,w13,w5
818 add w23,w23,w27
819 orr w25,w25,w26
820 ror w20,w20,#2
821 eor w13,w13,w10
822 add w22,w22,w12
823 add w23,w23,w25
824 ror w13,w13,#31
825 orr w25,w24,w20
826 and w26,w24,w20
827 eor w14,w14,w16
828 ror w27,w23,#27
829 and w25,w25,w21
830 add w21,w21,w28
831 eor w14,w14,w6
832 add w22,w22,w27
833 orr w25,w25,w26
834 ror w24,w24,#2
835 eor w14,w14,w11
836 add w21,w21,w13
837 add w22,w22,w25
838 ror w14,w14,#31
839 orr w25,w23,w24
840 and w26,w23,w24
841 eor w15,w15,w17
842 ror w27,w22,#27
843 and w25,w25,w20
844 add w20,w20,w28
845 eor w15,w15,w7
846 add w21,w21,w27
847 orr w25,w25,w26
848 ror w23,w23,#2
849 eor w15,w15,w12
850 add w20,w20,w14
851 add w21,w21,w25
852 ror w15,w15,#31
853 movz w28,#0xc1d6
854 movk w28,#0xca62,lsl#16
855 orr w25,w22,w23
856 and w26,w22,w23
857 eor w16,w16,w19
858 ror w27,w21,#27
859 and w25,w25,w24
860 add w24,w24,w28
861 eor w16,w16,w8
862 add w20,w20,w27
863 orr w25,w25,w26
864 ror w22,w22,#2
865 eor w16,w16,w13
866 add w24,w24,w15
867 add w20,w20,w25
868 ror w16,w16,#31
869 eor w17,w17,w3
870 eor w25,w23,w21
871 ror w27,w20,#27
872 add w23,w23,w28
873 eor w17,w17,w9
874 eor w25,w25,w22
875 add w24,w24,w27
876 ror w21,w21,#2
877 eor w17,w17,w14
878 add w23,w23,w16
879 add w24,w24,w25
880 ror w17,w17,#31
881 eor w19,w19,w4
882 eor w25,w22,w20
883 ror w27,w24,#27
884 add w22,w22,w28
885 eor w19,w19,w10
886 eor w25,w25,w21
887 add w23,w23,w27
888 ror w20,w20,#2
889 eor w19,w19,w15
890 add w22,w22,w17
891 add w23,w23,w25
892 ror w19,w19,#31
893 eor w3,w3,w5
894 eor w25,w21,w24
895 ror w27,w23,#27
896 add w21,w21,w28
897 eor w3,w3,w11
898 eor w25,w25,w20
899 add w22,w22,w27
900 ror w24,w24,#2
901 eor w3,w3,w16
902 add w21,w21,w19
903 add w22,w22,w25
904 ror w3,w3,#31
905 eor w4,w4,w6
906 eor w25,w20,w23
907 ror w27,w22,#27
908 add w20,w20,w28
909 eor w4,w4,w12
910 eor w25,w25,w24
911 add w21,w21,w27
912 ror w23,w23,#2
913 eor w4,w4,w17
914 add w20,w20,w3
915 add w21,w21,w25
916 ror w4,w4,#31
917 eor w5,w5,w7
918 eor w25,w24,w22
919 ror w27,w21,#27
920 add w24,w24,w28
921 eor w5,w5,w13
922 eor w25,w25,w23
923 add w20,w20,w27
924 ror w22,w22,#2
925 eor w5,w5,w19
926 add w24,w24,w4
927 add w20,w20,w25
928 ror w5,w5,#31
929 eor w6,w6,w8
930 eor w25,w23,w21
931 ror w27,w20,#27
932 add w23,w23,w28
933 eor w6,w6,w14
934 eor w25,w25,w22
935 add w24,w24,w27
936 ror w21,w21,#2
937 eor w6,w6,w3
938 add w23,w23,w5
939 add w24,w24,w25
940 ror w6,w6,#31
941 eor w7,w7,w9
942 eor w25,w22,w20
943 ror w27,w24,#27
944 add w22,w22,w28
945 eor w7,w7,w15
946 eor w25,w25,w21
947 add w23,w23,w27
948 ror w20,w20,#2
949 eor w7,w7,w4
950 add w22,w22,w6
951 add w23,w23,w25
952 ror w7,w7,#31
953 eor w8,w8,w10
954 eor w25,w21,w24
955 ror w27,w23,#27
956 add w21,w21,w28
957 eor w8,w8,w16
958 eor w25,w25,w20
959 add w22,w22,w27
960 ror w24,w24,#2
961 eor w8,w8,w5
962 add w21,w21,w7
963 add w22,w22,w25
964 ror w8,w8,#31
965 eor w9,w9,w11
966 eor w25,w20,w23
967 ror w27,w22,#27
968 add w20,w20,w28
969 eor w9,w9,w17
970 eor w25,w25,w24
971 add w21,w21,w27
972 ror w23,w23,#2
973 eor w9,w9,w6
974 add w20,w20,w8
975 add w21,w21,w25
976 ror w9,w9,#31
977 eor w10,w10,w12
978 eor w25,w24,w22
979 ror w27,w21,#27
980 add w24,w24,w28
981 eor w10,w10,w19
982 eor w25,w25,w23
983 add w20,w20,w27
984 ror w22,w22,#2
985 eor w10,w10,w7
986 add w24,w24,w9
987 add w20,w20,w25
988 ror w10,w10,#31
989 eor w11,w11,w13
990 eor w25,w23,w21
991 ror w27,w20,#27
992 add w23,w23,w28
993 eor w11,w11,w3
994 eor w25,w25,w22
995 add w24,w24,w27
996 ror w21,w21,#2
997 eor w11,w11,w8
998 add w23,w23,w10
999 add w24,w24,w25
1000 ror w11,w11,#31
1001 eor w12,w12,w14
1002 eor w25,w22,w20
1003 ror w27,w24,#27
1004 add w22,w22,w28
1005 eor w12,w12,w4
1006 eor w25,w25,w21
1007 add w23,w23,w27
1008 ror w20,w20,#2
1009 eor w12,w12,w9
1010 add w22,w22,w11
1011 add w23,w23,w25
1012 ror w12,w12,#31
1013 eor w13,w13,w15
1014 eor w25,w21,w24
1015 ror w27,w23,#27
1016 add w21,w21,w28
1017 eor w13,w13,w5
1018 eor w25,w25,w20
1019 add w22,w22,w27
1020 ror w24,w24,#2
1021 eor w13,w13,w10
1022 add w21,w21,w12
1023 add w22,w22,w25
1024 ror w13,w13,#31
1025 eor w14,w14,w16
1026 eor w25,w20,w23
1027 ror w27,w22,#27
1028 add w20,w20,w28
1029 eor w14,w14,w6
1030 eor w25,w25,w24
1031 add w21,w21,w27
1032 ror w23,w23,#2
1033 eor w14,w14,w11
1034 add w20,w20,w13
1035 add w21,w21,w25
1036 ror w14,w14,#31
1037 eor w15,w15,w17
1038 eor w25,w24,w22
1039 ror w27,w21,#27
1040 add w24,w24,w28
1041 eor w15,w15,w7
1042 eor w25,w25,w23
1043 add w20,w20,w27
1044 ror w22,w22,#2
1045 eor w15,w15,w12
1046 add w24,w24,w14
1047 add w20,w20,w25
1048 ror w15,w15,#31
1049 eor w16,w16,w19
1050 eor w25,w23,w21
1051 ror w27,w20,#27
1052 add w23,w23,w28
1053 eor w16,w16,w8
1054 eor w25,w25,w22
1055 add w24,w24,w27
1056 ror w21,w21,#2
1057 eor w16,w16,w13
1058 add w23,w23,w15
1059 add w24,w24,w25
1060 ror w16,w16,#31
1061 eor w17,w17,w3
1062 eor w25,w22,w20
1063 ror w27,w24,#27
1064 add w22,w22,w28
1065 eor w17,w17,w9
1066 eor w25,w25,w21
1067 add w23,w23,w27
1068 ror w20,w20,#2
1069 eor w17,w17,w14
1070 add w22,w22,w16
1071 add w23,w23,w25
1072 ror w17,w17,#31
1073 eor w19,w19,w4
1074 eor w25,w21,w24
1075 ror w27,w23,#27
1076 add w21,w21,w28
1077 eor w19,w19,w10
1078 eor w25,w25,w20
1079 add w22,w22,w27
1080 ror w24,w24,#2
1081 eor w19,w19,w15
1082 add w21,w21,w17
1083 add w22,w22,w25
1084 ror w19,w19,#31
1085 ldp w4,w5,[x0]
1086 eor w25,w20,w23
1087 ror w27,w22,#27
1088 add w20,w20,w28
1089 eor w25,w25,w24
1090 add w21,w21,w27
1091 ror w23,w23,#2
1092 add w20,w20,w19
1093 add w21,w21,w25
1094 ldp w6,w7,[x0,#8]
1095 eor w25,w24,w22
1096 ror w27,w21,#27
1097 eor w25,w25,w23
1098 add w20,w20,w27
1099 ror w22,w22,#2
1100 ldr w8,[x0,#16]
1101 add w20,w20,w25
1102 add w21,w21,w5
1103 add w22,w22,w6
1104 add w20,w20,w4
1105 add w23,w23,w7
1106 add w24,w24,w8
1107 stp w20,w21,[x0]
1108 stp w22,w23,[x0,#8]
1109 str w24,[x0,#16]
1110 cbnz x2,Loop
1111
1112 ldp x19,x20,[sp,#16]
1113 ldp x21,x22,[sp,#32]
1114 ldp x23,x24,[sp,#48]
1115 ldp x25,x26,[sp,#64]
1116 ldp x27,x28,[sp,#80]
1117 ldr x29,[sp],#96
1118 ret
1119
1120
1121.align 6
1122sha1_block_armv8:
1123Lv8_entry:
1124 stp x29,x30,[sp,#-16]!
1125 add x29,sp,#0
1126
1127 adr x4,Lconst
1128 eor v1.16b,v1.16b,v1.16b
1129 ld1 {v0.4s},[x0],#16
1130 ld1 {v1.s}[0],[x0]
1131 sub x0,x0,#16
1132 ld1 {v16.4s,v17.4s,v18.4s,v19.4s},[x4]
1133
1134Loop_hw:
1135 ld1 {v4.16b,v5.16b,v6.16b,v7.16b},[x1],#64
1136 sub x2,x2,#1
1137 rev32 v4.16b,v4.16b
1138 rev32 v5.16b,v5.16b
1139
1140 add v20.4s,v16.4s,v4.4s
1141 rev32 v6.16b,v6.16b
1142 orr v22.16b,v0.16b,v0.16b
1143
1144 add v21.4s,v16.4s,v5.4s
1145 rev32 v7.16b,v7.16b
1146.long 0x5e280803
1147.long 0x5e140020
1148 add v20.4s,v16.4s,v6.4s
1149.long 0x5e0630a4
1150.long 0x5e280802
1151.long 0x5e150060
1152 add v21.4s,v16.4s,v7.4s
1153.long 0x5e2818e4
1154.long 0x5e0730c5
1155.long 0x5e280803
1156.long 0x5e140040
1157 add v20.4s,v16.4s,v4.4s
1158.long 0x5e281885
1159.long 0x5e0430e6
1160.long 0x5e280802
1161.long 0x5e150060
1162 add v21.4s,v17.4s,v5.4s
1163.long 0x5e2818a6
1164.long 0x5e053087
1165.long 0x5e280803
1166.long 0x5e140040
1167 add v20.4s,v17.4s,v6.4s
1168.long 0x5e2818c7
1169.long 0x5e0630a4
1170.long 0x5e280802
1171.long 0x5e151060
1172 add v21.4s,v17.4s,v7.4s
1173.long 0x5e2818e4
1174.long 0x5e0730c5
1175.long 0x5e280803
1176.long 0x5e141040
1177 add v20.4s,v17.4s,v4.4s
1178.long 0x5e281885
1179.long 0x5e0430e6
1180.long 0x5e280802
1181.long 0x5e151060
1182 add v21.4s,v17.4s,v5.4s
1183.long 0x5e2818a6
1184.long 0x5e053087
1185.long 0x5e280803
1186.long 0x5e141040
1187 add v20.4s,v18.4s,v6.4s
1188.long 0x5e2818c7
1189.long 0x5e0630a4
1190.long 0x5e280802
1191.long 0x5e151060
1192 add v21.4s,v18.4s,v7.4s
1193.long 0x5e2818e4
1194.long 0x5e0730c5
1195.long 0x5e280803
1196.long 0x5e142040
1197 add v20.4s,v18.4s,v4.4s
1198.long 0x5e281885
1199.long 0x5e0430e6
1200.long 0x5e280802
1201.long 0x5e152060
1202 add v21.4s,v18.4s,v5.4s
1203.long 0x5e2818a6
1204.long 0x5e053087
1205.long 0x5e280803
1206.long 0x5e142040
1207 add v20.4s,v18.4s,v6.4s
1208.long 0x5e2818c7
1209.long 0x5e0630a4
1210.long 0x5e280802
1211.long 0x5e152060
1212 add v21.4s,v19.4s,v7.4s
1213.long 0x5e2818e4
1214.long 0x5e0730c5
1215.long 0x5e280803
1216.long 0x5e142040
1217 add v20.4s,v19.4s,v4.4s
1218.long 0x5e281885
1219.long 0x5e0430e6
1220.long 0x5e280802
1221.long 0x5e151060
1222 add v21.4s,v19.4s,v5.4s
1223.long 0x5e2818a6
1224.long 0x5e053087
1225.long 0x5e280803
1226.long 0x5e141040
1227 add v20.4s,v19.4s,v6.4s
1228.long 0x5e2818c7
1229.long 0x5e280802
1230.long 0x5e151060
1231 add v21.4s,v19.4s,v7.4s
1232
1233.long 0x5e280803
1234.long 0x5e141040
1235
1236.long 0x5e280802
1237.long 0x5e151060
1238
1239 add v1.4s,v1.4s,v2.4s
1240 add v0.4s,v0.4s,v22.4s
1241
1242 cbnz x2,Loop_hw
1243
1244 st1 {v0.4s},[x0],#16
1245 st1 {v1.s}[0],[x0]
1246
1247 ldr x29,[sp],#16
1248 ret
1249
1250.align 6
1251Lconst:
1252.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999
1253.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
1254.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
1255.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
1256L_gnutls_arm_cpuid_s:
1257
1258
1259
1260.quad __gnutls_arm_cpuid_s-.
1261
1262.byte 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,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
1263.align 2
1264.align 2
1265.comm __gnutls_arm_cpuid_s,4,4
1266