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

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

Issue 862133002: Update from https://crrev.com/312398 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 11 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
1 #if defined(__arm__)
2 #include "arm_arch.h" 1 #include "arm_arch.h"
3 2
4 .text 3 .text
4 .code 32
5 5
6 .global sha1_block_data_order 6 .global sha1_block_data_order
7 .hidden sha1_block_data_order
8 .type sha1_block_data_order,%function 7 .type sha1_block_data_order,%function
9 8
10 .align» 2 9 .align» 5
11 sha1_block_data_order: 10 sha1_block_data_order:
11 #if __ARM_MAX_ARCH__>=7
12 sub r3,pc,#8 @ sha1_block_data_order
13 ldr r12,.LOPENSSL_armcap
14 ldr r12,[r3,r12] @ OPENSSL_armcap_P
15 tst r12,#ARMV8_SHA1
16 bne .LARMv8
17 tst r12,#ARMV7_NEON
18 bne .LNEON
19 #endif
12 stmdb sp!,{r4-r12,lr} 20 stmdb sp!,{r4-r12,lr}
13 add r2,r1,r2,lsl#6 @ r2 to point at the end of r1 21 add r2,r1,r2,lsl#6 @ r2 to point at the end of r1
14 ldmia r0,{r3,r4,r5,r6,r7} 22 ldmia r0,{r3,r4,r5,r6,r7}
15 .Lloop: 23 .Lloop:
16 ldr r8,.LK_00_19 24 ldr r8,.LK_00_19
17 mov r14,sp 25 mov r14,sp
18 sub sp,sp,#15*4 26 sub sp,sp,#15*4
19 mov r5,r5,ror#30 27 mov r5,r5,ror#30
20 mov r6,r6,ror#30 28 mov r6,r6,ror#30
21 mov r7,r7,ror#30 @ [6] 29 mov r7,r7,ror#30 @ [6]
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 bne .Lloop @ [+18], total 1307 445 bne .Lloop @ [+18], total 1307
438 446
439 #if __ARM_ARCH__>=5 447 #if __ARM_ARCH__>=5
440 ldmia sp!,{r4-r12,pc} 448 ldmia sp!,{r4-r12,pc}
441 #else 449 #else
442 ldmia sp!,{r4-r12,lr} 450 ldmia sp!,{r4-r12,lr}
443 tst lr,#1 451 tst lr,#1
444 moveq pc,lr @ be binary compatible with V4, yet 452 moveq pc,lr @ be binary compatible with V4, yet
445 .word 0xe12fff1e @ interoperable with Thumb ISA:- ) 453 .word 0xe12fff1e @ interoperable with Thumb ISA:- )
446 #endif 454 #endif
447 .align» 2 455 .size» sha1_block_data_order,.-sha1_block_data_order
456
457 .align» 5
448 .LK_00_19: .word 0x5a827999 458 .LK_00_19: .word 0x5a827999
449 .LK_20_39: .word 0x6ed9eba1 459 .LK_20_39: .word 0x6ed9eba1
450 .LK_40_59: .word 0x8f1bbcdc 460 .LK_40_59: .word 0x8f1bbcdc
451 .LK_60_79: .word 0xca62c1d6 461 .LK_60_79: .word 0xca62c1d6
452 .size» sha1_block_data_order,.-sha1_block_data_order 462 #if __ARM_MAX_ARCH__>=7
453 .asciz» "SHA1 block transform for ARMv4, CRYPTOGAMS by <appro@openssl.org>" 463 .LOPENSSL_armcap:
454 .align» 2 464 .word» OPENSSL_armcap_P-sha1_block_data_order
455
456 #endif 465 #endif
466 .asciz "SHA1 block transform for ARMv4/NEON/ARMv8, CRYPTOGAMS by <appro@openssl .org>"
467 .align 5
468 #if __ARM_MAX_ARCH__>=7
469 .arch armv7-a
470 .fpu neon
471
472 .type sha1_block_data_order_neon,%function
473 .align 4
474 sha1_block_data_order_neon:
475 .LNEON:
476 stmdb sp!,{r4-r12,lr}
477 add r2,r1,r2,lsl#6 @ r2 to point at the end of r1
478 @ dmb @ errata #451034 on early Cortex A8
479 @ vstmdb sp!,{d8-d15} @ ABI specification says so
480 mov r14,sp
481 sub sp,sp,#64 @ alloca
482 adr r8,.LK_00_19
483 bic sp,sp,#15 @ align for 128-bit stores
484
485 ldmia r0,{r3,r4,r5,r6,r7} @ load context
486 mov r12,sp
487
488 vld1.8 {q0-q1},[r1]! @ handles unaligned
489 veor q15,q15,q15
490 vld1.8 {q2-q3},[r1]!
491 vld1.32 {d28[],d29[]},[r8,:32]! @ load K_00_19
492 vrev32.8 q0,q0 @ yes, even on
493 vrev32.8 q1,q1 @ big-endian...
494 vrev32.8 q2,q2
495 vadd.i32 q8,q0,q14
496 vrev32.8 q3,q3
497 vadd.i32 q9,q1,q14
498 vst1.32 {q8},[r12,:128]!
499 vadd.i32 q10,q2,q14
500 vst1.32 {q9},[r12,:128]!
501 vst1.32 {q10},[r12,:128]!
502 ldr r9,[sp] @ big RAW stall
503
504 .Loop_neon:
505 vext.8 q8,q0,q1,#8
506 bic r10,r6,r4
507 add r7,r7,r9
508 and r11,r5,r4
509 vadd.i32 q13,q3,q14
510 ldr r9,[sp,#4]
511 add r7,r7,r3,ror#27
512 vext.8 q12,q3,q15,#4
513 eor r11,r11,r10
514 mov r4,r4,ror#2
515 add r7,r7,r11
516 veor q8,q8,q0
517 bic r10,r5,r3
518 add r6,r6,r9
519 veor q12,q12,q2
520 and r11,r4,r3
521 ldr r9,[sp,#8]
522 veor q12,q12,q8
523 add r6,r6,r7,ror#27
524 eor r11,r11,r10
525 vst1.32 {q13},[r12,:128]!
526 sub r12,r12,#64
527 mov r3,r3,ror#2
528 add r6,r6,r11
529 vext.8 q13,q15,q12,#4
530 bic r10,r4,r7
531 add r5,r5,r9
532 vadd.i32 q8,q12,q12
533 and r11,r3,r7
534 ldr r9,[sp,#12]
535 vsri.32 q8,q12,#31
536 add r5,r5,r6,ror#27
537 eor r11,r11,r10
538 mov r7,r7,ror#2
539 vshr.u32 q12,q13,#30
540 add r5,r5,r11
541 bic r10,r3,r6
542 vshl.u32 q13,q13,#2
543 add r4,r4,r9
544 and r11,r7,r6
545 veor q8,q8,q12
546 ldr r9,[sp,#16]
547 add r4,r4,r5,ror#27
548 veor q8,q8,q13
549 eor r11,r11,r10
550 mov r6,r6,ror#2
551 add r4,r4,r11
552 vext.8 q9,q1,q2,#8
553 bic r10,r7,r5
554 add r3,r3,r9
555 and r11,r6,r5
556 vadd.i32 q13,q8,q14
557 ldr r9,[sp,#20]
558 vld1.32 {d28[],d29[]},[r8,:32]!
559 add r3,r3,r4,ror#27
560 vext.8 q12,q8,q15,#4
561 eor r11,r11,r10
562 mov r5,r5,ror#2
563 add r3,r3,r11
564 veor q9,q9,q1
565 bic r10,r6,r4
566 add r7,r7,r9
567 veor q12,q12,q3
568 and r11,r5,r4
569 ldr r9,[sp,#24]
570 veor q12,q12,q9
571 add r7,r7,r3,ror#27
572 eor r11,r11,r10
573 vst1.32 {q13},[r12,:128]!
574 mov r4,r4,ror#2
575 add r7,r7,r11
576 vext.8 q13,q15,q12,#4
577 bic r10,r5,r3
578 add r6,r6,r9
579 vadd.i32 q9,q12,q12
580 and r11,r4,r3
581 ldr r9,[sp,#28]
582 vsri.32 q9,q12,#31
583 add r6,r6,r7,ror#27
584 eor r11,r11,r10
585 mov r3,r3,ror#2
586 vshr.u32 q12,q13,#30
587 add r6,r6,r11
588 bic r10,r4,r7
589 vshl.u32 q13,q13,#2
590 add r5,r5,r9
591 and r11,r3,r7
592 veor q9,q9,q12
593 ldr r9,[sp,#32]
594 add r5,r5,r6,ror#27
595 veor q9,q9,q13
596 eor r11,r11,r10
597 mov r7,r7,ror#2
598 add r5,r5,r11
599 vext.8 q10,q2,q3,#8
600 bic r10,r3,r6
601 add r4,r4,r9
602 and r11,r7,r6
603 vadd.i32 q13,q9,q14
604 ldr r9,[sp,#36]
605 add r4,r4,r5,ror#27
606 vext.8 q12,q9,q15,#4
607 eor r11,r11,r10
608 mov r6,r6,ror#2
609 add r4,r4,r11
610 veor q10,q10,q2
611 bic r10,r7,r5
612 add r3,r3,r9
613 veor q12,q12,q8
614 and r11,r6,r5
615 ldr r9,[sp,#40]
616 veor q12,q12,q10
617 add r3,r3,r4,ror#27
618 eor r11,r11,r10
619 vst1.32 {q13},[r12,:128]!
620 mov r5,r5,ror#2
621 add r3,r3,r11
622 vext.8 q13,q15,q12,#4
623 bic r10,r6,r4
624 add r7,r7,r9
625 vadd.i32 q10,q12,q12
626 and r11,r5,r4
627 ldr r9,[sp,#44]
628 vsri.32 q10,q12,#31
629 add r7,r7,r3,ror#27
630 eor r11,r11,r10
631 mov r4,r4,ror#2
632 vshr.u32 q12,q13,#30
633 add r7,r7,r11
634 bic r10,r5,r3
635 vshl.u32 q13,q13,#2
636 add r6,r6,r9
637 and r11,r4,r3
638 veor q10,q10,q12
639 ldr r9,[sp,#48]
640 add r6,r6,r7,ror#27
641 veor q10,q10,q13
642 eor r11,r11,r10
643 mov r3,r3,ror#2
644 add r6,r6,r11
645 vext.8 q11,q3,q8,#8
646 bic r10,r4,r7
647 add r5,r5,r9
648 and r11,r3,r7
649 vadd.i32 q13,q10,q14
650 ldr r9,[sp,#52]
651 add r5,r5,r6,ror#27
652 vext.8 q12,q10,q15,#4
653 eor r11,r11,r10
654 mov r7,r7,ror#2
655 add r5,r5,r11
656 veor q11,q11,q3
657 bic r10,r3,r6
658 add r4,r4,r9
659 veor q12,q12,q9
660 and r11,r7,r6
661 ldr r9,[sp,#56]
662 veor q12,q12,q11
663 add r4,r4,r5,ror#27
664 eor r11,r11,r10
665 vst1.32 {q13},[r12,:128]!
666 mov r6,r6,ror#2
667 add r4,r4,r11
668 vext.8 q13,q15,q12,#4
669 bic r10,r7,r5
670 add r3,r3,r9
671 vadd.i32 q11,q12,q12
672 and r11,r6,r5
673 ldr r9,[sp,#60]
674 vsri.32 q11,q12,#31
675 add r3,r3,r4,ror#27
676 eor r11,r11,r10
677 mov r5,r5,ror#2
678 vshr.u32 q12,q13,#30
679 add r3,r3,r11
680 bic r10,r6,r4
681 vshl.u32 q13,q13,#2
682 add r7,r7,r9
683 and r11,r5,r4
684 veor q11,q11,q12
685 ldr r9,[sp,#0]
686 add r7,r7,r3,ror#27
687 veor q11,q11,q13
688 eor r11,r11,r10
689 mov r4,r4,ror#2
690 add r7,r7,r11
691 vext.8 q12,q10,q11,#8
692 bic r10,r5,r3
693 add r6,r6,r9
694 and r11,r4,r3
695 veor q0,q0,q8
696 ldr r9,[sp,#4]
697 add r6,r6,r7,ror#27
698 veor q0,q0,q1
699 eor r11,r11,r10
700 mov r3,r3,ror#2
701 vadd.i32 q13,q11,q14
702 add r6,r6,r11
703 bic r10,r4,r7
704 veor q12,q12,q0
705 add r5,r5,r9
706 and r11,r3,r7
707 vshr.u32 q0,q12,#30
708 ldr r9,[sp,#8]
709 add r5,r5,r6,ror#27
710 vst1.32 {q13},[r12,:128]!
711 sub r12,r12,#64
712 eor r11,r11,r10
713 mov r7,r7,ror#2
714 vsli.32 q0,q12,#2
715 add r5,r5,r11
716 bic r10,r3,r6
717 add r4,r4,r9
718 and r11,r7,r6
719 ldr r9,[sp,#12]
720 add r4,r4,r5,ror#27
721 eor r11,r11,r10
722 mov r6,r6,ror#2
723 add r4,r4,r11
724 bic r10,r7,r5
725 add r3,r3,r9
726 and r11,r6,r5
727 ldr r9,[sp,#16]
728 add r3,r3,r4,ror#27
729 eor r11,r11,r10
730 mov r5,r5,ror#2
731 add r3,r3,r11
732 vext.8 q12,q11,q0,#8
733 eor r10,r4,r6
734 add r7,r7,r9
735 ldr r9,[sp,#20]
736 veor q1,q1,q9
737 eor r11,r10,r5
738 add r7,r7,r3,ror#27
739 veor q1,q1,q2
740 mov r4,r4,ror#2
741 add r7,r7,r11
742 vadd.i32 q13,q0,q14
743 eor r10,r3,r5
744 add r6,r6,r9
745 veor q12,q12,q1
746 ldr r9,[sp,#24]
747 eor r11,r10,r4
748 vshr.u32 q1,q12,#30
749 add r6,r6,r7,ror#27
750 mov r3,r3,ror#2
751 vst1.32 {q13},[r12,:128]!
752 add r6,r6,r11
753 eor r10,r7,r4
754 vsli.32 q1,q12,#2
755 add r5,r5,r9
756 ldr r9,[sp,#28]
757 eor r11,r10,r3
758 add r5,r5,r6,ror#27
759 mov r7,r7,ror#2
760 add r5,r5,r11
761 eor r10,r6,r3
762 add r4,r4,r9
763 ldr r9,[sp,#32]
764 eor r11,r10,r7
765 add r4,r4,r5,ror#27
766 mov r6,r6,ror#2
767 add r4,r4,r11
768 vext.8 q12,q0,q1,#8
769 eor r10,r5,r7
770 add r3,r3,r9
771 ldr r9,[sp,#36]
772 veor q2,q2,q10
773 eor r11,r10,r6
774 add r3,r3,r4,ror#27
775 veor q2,q2,q3
776 mov r5,r5,ror#2
777 add r3,r3,r11
778 vadd.i32 q13,q1,q14
779 eor r10,r4,r6
780 vld1.32 {d28[],d29[]},[r8,:32]!
781 add r7,r7,r9
782 veor q12,q12,q2
783 ldr r9,[sp,#40]
784 eor r11,r10,r5
785 vshr.u32 q2,q12,#30
786 add r7,r7,r3,ror#27
787 mov r4,r4,ror#2
788 vst1.32 {q13},[r12,:128]!
789 add r7,r7,r11
790 eor r10,r3,r5
791 vsli.32 q2,q12,#2
792 add r6,r6,r9
793 ldr r9,[sp,#44]
794 eor r11,r10,r4
795 add r6,r6,r7,ror#27
796 mov r3,r3,ror#2
797 add r6,r6,r11
798 eor r10,r7,r4
799 add r5,r5,r9
800 ldr r9,[sp,#48]
801 eor r11,r10,r3
802 add r5,r5,r6,ror#27
803 mov r7,r7,ror#2
804 add r5,r5,r11
805 vext.8 q12,q1,q2,#8
806 eor r10,r6,r3
807 add r4,r4,r9
808 ldr r9,[sp,#52]
809 veor q3,q3,q11
810 eor r11,r10,r7
811 add r4,r4,r5,ror#27
812 veor q3,q3,q8
813 mov r6,r6,ror#2
814 add r4,r4,r11
815 vadd.i32 q13,q2,q14
816 eor r10,r5,r7
817 add r3,r3,r9
818 veor q12,q12,q3
819 ldr r9,[sp,#56]
820 eor r11,r10,r6
821 vshr.u32 q3,q12,#30
822 add r3,r3,r4,ror#27
823 mov r5,r5,ror#2
824 vst1.32 {q13},[r12,:128]!
825 add r3,r3,r11
826 eor r10,r4,r6
827 vsli.32 q3,q12,#2
828 add r7,r7,r9
829 ldr r9,[sp,#60]
830 eor r11,r10,r5
831 add r7,r7,r3,ror#27
832 mov r4,r4,ror#2
833 add r7,r7,r11
834 eor r10,r3,r5
835 add r6,r6,r9
836 ldr r9,[sp,#0]
837 eor r11,r10,r4
838 add r6,r6,r7,ror#27
839 mov r3,r3,ror#2
840 add r6,r6,r11
841 vext.8 q12,q2,q3,#8
842 eor r10,r7,r4
843 add r5,r5,r9
844 ldr r9,[sp,#4]
845 veor q8,q8,q0
846 eor r11,r10,r3
847 add r5,r5,r6,ror#27
848 veor q8,q8,q9
849 mov r7,r7,ror#2
850 add r5,r5,r11
851 vadd.i32 q13,q3,q14
852 eor r10,r6,r3
853 add r4,r4,r9
854 veor q12,q12,q8
855 ldr r9,[sp,#8]
856 eor r11,r10,r7
857 vshr.u32 q8,q12,#30
858 add r4,r4,r5,ror#27
859 mov r6,r6,ror#2
860 vst1.32 {q13},[r12,:128]!
861 sub r12,r12,#64
862 add r4,r4,r11
863 eor r10,r5,r7
864 vsli.32 q8,q12,#2
865 add r3,r3,r9
866 ldr r9,[sp,#12]
867 eor r11,r10,r6
868 add r3,r3,r4,ror#27
869 mov r5,r5,ror#2
870 add r3,r3,r11
871 eor r10,r4,r6
872 add r7,r7,r9
873 ldr r9,[sp,#16]
874 eor r11,r10,r5
875 add r7,r7,r3,ror#27
876 mov r4,r4,ror#2
877 add r7,r7,r11
878 vext.8 q12,q3,q8,#8
879 eor r10,r3,r5
880 add r6,r6,r9
881 ldr r9,[sp,#20]
882 veor q9,q9,q1
883 eor r11,r10,r4
884 add r6,r6,r7,ror#27
885 veor q9,q9,q10
886 mov r3,r3,ror#2
887 add r6,r6,r11
888 vadd.i32 q13,q8,q14
889 eor r10,r7,r4
890 add r5,r5,r9
891 veor q12,q12,q9
892 ldr r9,[sp,#24]
893 eor r11,r10,r3
894 vshr.u32 q9,q12,#30
895 add r5,r5,r6,ror#27
896 mov r7,r7,ror#2
897 vst1.32 {q13},[r12,:128]!
898 add r5,r5,r11
899 eor r10,r6,r3
900 vsli.32 q9,q12,#2
901 add r4,r4,r9
902 ldr r9,[sp,#28]
903 eor r11,r10,r7
904 add r4,r4,r5,ror#27
905 mov r6,r6,ror#2
906 add r4,r4,r11
907 eor r10,r5,r7
908 add r3,r3,r9
909 ldr r9,[sp,#32]
910 eor r11,r10,r6
911 add r3,r3,r4,ror#27
912 mov r5,r5,ror#2
913 add r3,r3,r11
914 vext.8 q12,q8,q9,#8
915 add r7,r7,r9
916 and r10,r5,r6
917 ldr r9,[sp,#36]
918 veor q10,q10,q2
919 add r7,r7,r3,ror#27
920 eor r11,r5,r6
921 veor q10,q10,q11
922 add r7,r7,r10
923 and r11,r11,r4
924 vadd.i32 q13,q9,q14
925 mov r4,r4,ror#2
926 add r7,r7,r11
927 veor q12,q12,q10
928 add r6,r6,r9
929 and r10,r4,r5
930 vshr.u32 q10,q12,#30
931 ldr r9,[sp,#40]
932 add r6,r6,r7,ror#27
933 vst1.32 {q13},[r12,:128]!
934 eor r11,r4,r5
935 add r6,r6,r10
936 vsli.32 q10,q12,#2
937 and r11,r11,r3
938 mov r3,r3,ror#2
939 add r6,r6,r11
940 add r5,r5,r9
941 and r10,r3,r4
942 ldr r9,[sp,#44]
943 add r5,r5,r6,ror#27
944 eor r11,r3,r4
945 add r5,r5,r10
946 and r11,r11,r7
947 mov r7,r7,ror#2
948 add r5,r5,r11
949 add r4,r4,r9
950 and r10,r7,r3
951 ldr r9,[sp,#48]
952 add r4,r4,r5,ror#27
953 eor r11,r7,r3
954 add r4,r4,r10
955 and r11,r11,r6
956 mov r6,r6,ror#2
957 add r4,r4,r11
958 vext.8 q12,q9,q10,#8
959 add r3,r3,r9
960 and r10,r6,r7
961 ldr r9,[sp,#52]
962 veor q11,q11,q3
963 add r3,r3,r4,ror#27
964 eor r11,r6,r7
965 veor q11,q11,q0
966 add r3,r3,r10
967 and r11,r11,r5
968 vadd.i32 q13,q10,q14
969 mov r5,r5,ror#2
970 vld1.32 {d28[],d29[]},[r8,:32]!
971 add r3,r3,r11
972 veor q12,q12,q11
973 add r7,r7,r9
974 and r10,r5,r6
975 vshr.u32 q11,q12,#30
976 ldr r9,[sp,#56]
977 add r7,r7,r3,ror#27
978 vst1.32 {q13},[r12,:128]!
979 eor r11,r5,r6
980 add r7,r7,r10
981 vsli.32 q11,q12,#2
982 and r11,r11,r4
983 mov r4,r4,ror#2
984 add r7,r7,r11
985 add r6,r6,r9
986 and r10,r4,r5
987 ldr r9,[sp,#60]
988 add r6,r6,r7,ror#27
989 eor r11,r4,r5
990 add r6,r6,r10
991 and r11,r11,r3
992 mov r3,r3,ror#2
993 add r6,r6,r11
994 add r5,r5,r9
995 and r10,r3,r4
996 ldr r9,[sp,#0]
997 add r5,r5,r6,ror#27
998 eor r11,r3,r4
999 add r5,r5,r10
1000 and r11,r11,r7
1001 mov r7,r7,ror#2
1002 add r5,r5,r11
1003 vext.8 q12,q10,q11,#8
1004 add r4,r4,r9
1005 and r10,r7,r3
1006 ldr r9,[sp,#4]
1007 veor q0,q0,q8
1008 add r4,r4,r5,ror#27
1009 eor r11,r7,r3
1010 veor q0,q0,q1
1011 add r4,r4,r10
1012 and r11,r11,r6
1013 vadd.i32 q13,q11,q14
1014 mov r6,r6,ror#2
1015 add r4,r4,r11
1016 veor q12,q12,q0
1017 add r3,r3,r9
1018 and r10,r6,r7
1019 vshr.u32 q0,q12,#30
1020 ldr r9,[sp,#8]
1021 add r3,r3,r4,ror#27
1022 vst1.32 {q13},[r12,:128]!
1023 sub r12,r12,#64
1024 eor r11,r6,r7
1025 add r3,r3,r10
1026 vsli.32 q0,q12,#2
1027 and r11,r11,r5
1028 mov r5,r5,ror#2
1029 add r3,r3,r11
1030 add r7,r7,r9
1031 and r10,r5,r6
1032 ldr r9,[sp,#12]
1033 add r7,r7,r3,ror#27
1034 eor r11,r5,r6
1035 add r7,r7,r10
1036 and r11,r11,r4
1037 mov r4,r4,ror#2
1038 add r7,r7,r11
1039 add r6,r6,r9
1040 and r10,r4,r5
1041 ldr r9,[sp,#16]
1042 add r6,r6,r7,ror#27
1043 eor r11,r4,r5
1044 add r6,r6,r10
1045 and r11,r11,r3
1046 mov r3,r3,ror#2
1047 add r6,r6,r11
1048 vext.8 q12,q11,q0,#8
1049 add r5,r5,r9
1050 and r10,r3,r4
1051 ldr r9,[sp,#20]
1052 veor q1,q1,q9
1053 add r5,r5,r6,ror#27
1054 eor r11,r3,r4
1055 veor q1,q1,q2
1056 add r5,r5,r10
1057 and r11,r11,r7
1058 vadd.i32 q13,q0,q14
1059 mov r7,r7,ror#2
1060 add r5,r5,r11
1061 veor q12,q12,q1
1062 add r4,r4,r9
1063 and r10,r7,r3
1064 vshr.u32 q1,q12,#30
1065 ldr r9,[sp,#24]
1066 add r4,r4,r5,ror#27
1067 vst1.32 {q13},[r12,:128]!
1068 eor r11,r7,r3
1069 add r4,r4,r10
1070 vsli.32 q1,q12,#2
1071 and r11,r11,r6
1072 mov r6,r6,ror#2
1073 add r4,r4,r11
1074 add r3,r3,r9
1075 and r10,r6,r7
1076 ldr r9,[sp,#28]
1077 add r3,r3,r4,ror#27
1078 eor r11,r6,r7
1079 add r3,r3,r10
1080 and r11,r11,r5
1081 mov r5,r5,ror#2
1082 add r3,r3,r11
1083 add r7,r7,r9
1084 and r10,r5,r6
1085 ldr r9,[sp,#32]
1086 add r7,r7,r3,ror#27
1087 eor r11,r5,r6
1088 add r7,r7,r10
1089 and r11,r11,r4
1090 mov r4,r4,ror#2
1091 add r7,r7,r11
1092 vext.8 q12,q0,q1,#8
1093 add r6,r6,r9
1094 and r10,r4,r5
1095 ldr r9,[sp,#36]
1096 veor q2,q2,q10
1097 add r6,r6,r7,ror#27
1098 eor r11,r4,r5
1099 veor q2,q2,q3
1100 add r6,r6,r10
1101 and r11,r11,r3
1102 vadd.i32 q13,q1,q14
1103 mov r3,r3,ror#2
1104 add r6,r6,r11
1105 veor q12,q12,q2
1106 add r5,r5,r9
1107 and r10,r3,r4
1108 vshr.u32 q2,q12,#30
1109 ldr r9,[sp,#40]
1110 add r5,r5,r6,ror#27
1111 vst1.32 {q13},[r12,:128]!
1112 eor r11,r3,r4
1113 add r5,r5,r10
1114 vsli.32 q2,q12,#2
1115 and r11,r11,r7
1116 mov r7,r7,ror#2
1117 add r5,r5,r11
1118 add r4,r4,r9
1119 and r10,r7,r3
1120 ldr r9,[sp,#44]
1121 add r4,r4,r5,ror#27
1122 eor r11,r7,r3
1123 add r4,r4,r10
1124 and r11,r11,r6
1125 mov r6,r6,ror#2
1126 add r4,r4,r11
1127 add r3,r3,r9
1128 and r10,r6,r7
1129 ldr r9,[sp,#48]
1130 add r3,r3,r4,ror#27
1131 eor r11,r6,r7
1132 add r3,r3,r10
1133 and r11,r11,r5
1134 mov r5,r5,ror#2
1135 add r3,r3,r11
1136 vext.8 q12,q1,q2,#8
1137 eor r10,r4,r6
1138 add r7,r7,r9
1139 ldr r9,[sp,#52]
1140 veor q3,q3,q11
1141 eor r11,r10,r5
1142 add r7,r7,r3,ror#27
1143 veor q3,q3,q8
1144 mov r4,r4,ror#2
1145 add r7,r7,r11
1146 vadd.i32 q13,q2,q14
1147 eor r10,r3,r5
1148 add r6,r6,r9
1149 veor q12,q12,q3
1150 ldr r9,[sp,#56]
1151 eor r11,r10,r4
1152 vshr.u32 q3,q12,#30
1153 add r6,r6,r7,ror#27
1154 mov r3,r3,ror#2
1155 vst1.32 {q13},[r12,:128]!
1156 add r6,r6,r11
1157 eor r10,r7,r4
1158 vsli.32 q3,q12,#2
1159 add r5,r5,r9
1160 ldr r9,[sp,#60]
1161 eor r11,r10,r3
1162 add r5,r5,r6,ror#27
1163 mov r7,r7,ror#2
1164 add r5,r5,r11
1165 eor r10,r6,r3
1166 add r4,r4,r9
1167 ldr r9,[sp,#0]
1168 eor r11,r10,r7
1169 add r4,r4,r5,ror#27
1170 mov r6,r6,ror#2
1171 add r4,r4,r11
1172 vadd.i32 q13,q3,q14
1173 eor r10,r5,r7
1174 add r3,r3,r9
1175 vst1.32 {q13},[r12,:128]!
1176 sub r12,r12,#64
1177 teq r1,r2
1178 sub r8,r8,#16
1179 subeq r1,r1,#64
1180 vld1.8 {q0-q1},[r1]!
1181 ldr r9,[sp,#4]
1182 eor r11,r10,r6
1183 vld1.8 {q2-q3},[r1]!
1184 add r3,r3,r4,ror#27
1185 mov r5,r5,ror#2
1186 vld1.32 {d28[],d29[]},[r8,:32]!
1187 add r3,r3,r11
1188 eor r10,r4,r6
1189 vrev32.8 q0,q0
1190 add r7,r7,r9
1191 ldr r9,[sp,#8]
1192 eor r11,r10,r5
1193 add r7,r7,r3,ror#27
1194 mov r4,r4,ror#2
1195 add r7,r7,r11
1196 eor r10,r3,r5
1197 add r6,r6,r9
1198 ldr r9,[sp,#12]
1199 eor r11,r10,r4
1200 add r6,r6,r7,ror#27
1201 mov r3,r3,ror#2
1202 add r6,r6,r11
1203 eor r10,r7,r4
1204 add r5,r5,r9
1205 ldr r9,[sp,#16]
1206 eor r11,r10,r3
1207 add r5,r5,r6,ror#27
1208 mov r7,r7,ror#2
1209 add r5,r5,r11
1210 vrev32.8 q1,q1
1211 eor r10,r6,r3
1212 add r4,r4,r9
1213 vadd.i32 q8,q0,q14
1214 ldr r9,[sp,#20]
1215 eor r11,r10,r7
1216 vst1.32 {q8},[r12,:128]!
1217 add r4,r4,r5,ror#27
1218 mov r6,r6,ror#2
1219 add r4,r4,r11
1220 eor r10,r5,r7
1221 add r3,r3,r9
1222 ldr r9,[sp,#24]
1223 eor r11,r10,r6
1224 add r3,r3,r4,ror#27
1225 mov r5,r5,ror#2
1226 add r3,r3,r11
1227 eor r10,r4,r6
1228 add r7,r7,r9
1229 ldr r9,[sp,#28]
1230 eor r11,r10,r5
1231 add r7,r7,r3,ror#27
1232 mov r4,r4,ror#2
1233 add r7,r7,r11
1234 eor r10,r3,r5
1235 add r6,r6,r9
1236 ldr r9,[sp,#32]
1237 eor r11,r10,r4
1238 add r6,r6,r7,ror#27
1239 mov r3,r3,ror#2
1240 add r6,r6,r11
1241 vrev32.8 q2,q2
1242 eor r10,r7,r4
1243 add r5,r5,r9
1244 vadd.i32 q9,q1,q14
1245 ldr r9,[sp,#36]
1246 eor r11,r10,r3
1247 vst1.32 {q9},[r12,:128]!
1248 add r5,r5,r6,ror#27
1249 mov r7,r7,ror#2
1250 add r5,r5,r11
1251 eor r10,r6,r3
1252 add r4,r4,r9
1253 ldr r9,[sp,#40]
1254 eor r11,r10,r7
1255 add r4,r4,r5,ror#27
1256 mov r6,r6,ror#2
1257 add r4,r4,r11
1258 eor r10,r5,r7
1259 add r3,r3,r9
1260 ldr r9,[sp,#44]
1261 eor r11,r10,r6
1262 add r3,r3,r4,ror#27
1263 mov r5,r5,ror#2
1264 add r3,r3,r11
1265 eor r10,r4,r6
1266 add r7,r7,r9
1267 ldr r9,[sp,#48]
1268 eor r11,r10,r5
1269 add r7,r7,r3,ror#27
1270 mov r4,r4,ror#2
1271 add r7,r7,r11
1272 vrev32.8 q3,q3
1273 eor r10,r3,r5
1274 add r6,r6,r9
1275 vadd.i32 q10,q2,q14
1276 ldr r9,[sp,#52]
1277 eor r11,r10,r4
1278 vst1.32 {q10},[r12,:128]!
1279 add r6,r6,r7,ror#27
1280 mov r3,r3,ror#2
1281 add r6,r6,r11
1282 eor r10,r7,r4
1283 add r5,r5,r9
1284 ldr r9,[sp,#56]
1285 eor r11,r10,r3
1286 add r5,r5,r6,ror#27
1287 mov r7,r7,ror#2
1288 add r5,r5,r11
1289 eor r10,r6,r3
1290 add r4,r4,r9
1291 ldr r9,[sp,#60]
1292 eor r11,r10,r7
1293 add r4,r4,r5,ror#27
1294 mov r6,r6,ror#2
1295 add r4,r4,r11
1296 eor r10,r5,r7
1297 add r3,r3,r9
1298 eor r11,r10,r6
1299 add r3,r3,r4,ror#27
1300 mov r5,r5,ror#2
1301 add r3,r3,r11
1302 ldmia r0,{r9,r10,r11,r12} @ accumulate context
1303 add r3,r3,r9
1304 ldr r9,[r0,#16]
1305 add r4,r4,r10
1306 add r5,r5,r11
1307 add r6,r6,r12
1308 moveq sp,r14
1309 add r7,r7,r9
1310 ldrne r9,[sp]
1311 stmia r0,{r3,r4,r5,r6,r7}
1312 addne r12,sp,#3*16
1313 bne .Loop_neon
1314
1315 @ vldmia sp!,{d8-d15}
1316 ldmia sp!,{r4-r12,pc}
1317 .size sha1_block_data_order_neon,.-sha1_block_data_order_neon
1318 #endif
1319 #if __ARM_MAX_ARCH__>=7
1320 .type sha1_block_data_order_armv8,%function
1321 .align 5
1322 sha1_block_data_order_armv8:
1323 .LARMv8:
1324 vstmdb sp!,{d8-d15} @ ABI specification says so
1325
1326 veor q1,q1,q1
1327 adr r3,.LK_00_19
1328 vld1.32 {q0},[r0]!
1329 vld1.32 {d2[0]},[r0]
1330 sub r0,r0,#16
1331 vld1.32 {d16[],d17[]},[r3,:32]!
1332 vld1.32 {d18[],d19[]},[r3,:32]!
1333 vld1.32 {d20[],d21[]},[r3,:32]!
1334 vld1.32 {d22[],d23[]},[r3,:32]
1335
1336 .Loop_v8:
1337 vld1.8 {q4-q5},[r1]!
1338 vld1.8 {q6-q7},[r1]!
1339 vrev32.8 q4,q4
1340 vrev32.8 q5,q5
1341
1342 vadd.i32 q12,q8,q4
1343 vrev32.8 q6,q6
1344 vmov q14,q0 @ offload
1345 subs r2,r2,#1
1346
1347 vadd.i32 q13,q8,q5
1348 vrev32.8 q7,q7
1349 .byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 0
1350 .byte 0x68,0x0c,0x02,0xf2 @ sha1c q0,q1,q12
1351 vadd.i32 q12,q8,q6
1352 .byte 0x4c,0x8c,0x3a,0xf2 @ sha1su0 q4,q5,q6
1353 .byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 1
1354 .byte 0x6a,0x0c,0x06,0xf2 @ sha1c q0,q3,q13
1355 vadd.i32 q13,q8,q7
1356 .byte 0x8e,0x83,0xba,0xf3 @ sha1su1 q4,q7
1357 .byte 0x4e,0xac,0x3c,0xf2 @ sha1su0 q5,q6,q7
1358 .byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 2
1359 .byte 0x68,0x0c,0x04,0xf2 @ sha1c q0,q2,q12
1360 vadd.i32 q12,q8,q4
1361 .byte 0x88,0xa3,0xba,0xf3 @ sha1su1 q5,q4
1362 .byte 0x48,0xcc,0x3e,0xf2 @ sha1su0 q6,q7,q4
1363 .byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 3
1364 .byte 0x6a,0x0c,0x06,0xf2 @ sha1c q0,q3,q13
1365 vadd.i32 q13,q9,q5
1366 .byte 0x8a,0xc3,0xba,0xf3 @ sha1su1 q6,q5
1367 .byte 0x4a,0xec,0x38,0xf2 @ sha1su0 q7,q4,q5
1368 .byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 4
1369 .byte 0x68,0x0c,0x04,0xf2 @ sha1c q0,q2,q12
1370 vadd.i32 q12,q9,q6
1371 .byte 0x8c,0xe3,0xba,0xf3 @ sha1su1 q7,q6
1372 .byte 0x4c,0x8c,0x3a,0xf2 @ sha1su0 q4,q5,q6
1373 .byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 5
1374 .byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13
1375 vadd.i32 q13,q9,q7
1376 .byte 0x8e,0x83,0xba,0xf3 @ sha1su1 q4,q7
1377 .byte 0x4e,0xac,0x3c,0xf2 @ sha1su0 q5,q6,q7
1378 .byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 6
1379 .byte 0x68,0x0c,0x14,0xf2 @ sha1p q0,q2,q12
1380 vadd.i32 q12,q9,q4
1381 .byte 0x88,0xa3,0xba,0xf3 @ sha1su1 q5,q4
1382 .byte 0x48,0xcc,0x3e,0xf2 @ sha1su0 q6,q7,q4
1383 .byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 7
1384 .byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13
1385 vadd.i32 q13,q9,q5
1386 .byte 0x8a,0xc3,0xba,0xf3 @ sha1su1 q6,q5
1387 .byte 0x4a,0xec,0x38,0xf2 @ sha1su0 q7,q4,q5
1388 .byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 8
1389 .byte 0x68,0x0c,0x14,0xf2 @ sha1p q0,q2,q12
1390 vadd.i32 q12,q10,q6
1391 .byte 0x8c,0xe3,0xba,0xf3 @ sha1su1 q7,q6
1392 .byte 0x4c,0x8c,0x3a,0xf2 @ sha1su0 q4,q5,q6
1393 .byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 9
1394 .byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13
1395 vadd.i32 q13,q10,q7
1396 .byte 0x8e,0x83,0xba,0xf3 @ sha1su1 q4,q7
1397 .byte 0x4e,0xac,0x3c,0xf2 @ sha1su0 q5,q6,q7
1398 .byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 10
1399 .byte 0x68,0x0c,0x24,0xf2 @ sha1m q0,q2,q12
1400 vadd.i32 q12,q10,q4
1401 .byte 0x88,0xa3,0xba,0xf3 @ sha1su1 q5,q4
1402 .byte 0x48,0xcc,0x3e,0xf2 @ sha1su0 q6,q7,q4
1403 .byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 11
1404 .byte 0x6a,0x0c,0x26,0xf2 @ sha1m q0,q3,q13
1405 vadd.i32 q13,q10,q5
1406 .byte 0x8a,0xc3,0xba,0xf3 @ sha1su1 q6,q5
1407 .byte 0x4a,0xec,0x38,0xf2 @ sha1su0 q7,q4,q5
1408 .byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 12
1409 .byte 0x68,0x0c,0x24,0xf2 @ sha1m q0,q2,q12
1410 vadd.i32 q12,q10,q6
1411 .byte 0x8c,0xe3,0xba,0xf3 @ sha1su1 q7,q6
1412 .byte 0x4c,0x8c,0x3a,0xf2 @ sha1su0 q4,q5,q6
1413 .byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 13
1414 .byte 0x6a,0x0c,0x26,0xf2 @ sha1m q0,q3,q13
1415 vadd.i32 q13,q11,q7
1416 .byte 0x8e,0x83,0xba,0xf3 @ sha1su1 q4,q7
1417 .byte 0x4e,0xac,0x3c,0xf2 @ sha1su0 q5,q6,q7
1418 .byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 14
1419 .byte 0x68,0x0c,0x24,0xf2 @ sha1m q0,q2,q12
1420 vadd.i32 q12,q11,q4
1421 .byte 0x88,0xa3,0xba,0xf3 @ sha1su1 q5,q4
1422 .byte 0x48,0xcc,0x3e,0xf2 @ sha1su0 q6,q7,q4
1423 .byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 15
1424 .byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13
1425 vadd.i32 q13,q11,q5
1426 .byte 0x8a,0xc3,0xba,0xf3 @ sha1su1 q6,q5
1427 .byte 0x4a,0xec,0x38,0xf2 @ sha1su0 q7,q4,q5
1428 .byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 16
1429 .byte 0x68,0x0c,0x14,0xf2 @ sha1p q0,q2,q12
1430 vadd.i32 q12,q11,q6
1431 .byte 0x8c,0xe3,0xba,0xf3 @ sha1su1 q7,q6
1432 .byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 17
1433 .byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13
1434 vadd.i32 q13,q11,q7
1435
1436 .byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 18
1437 .byte 0x68,0x0c,0x14,0xf2 @ sha1p q0,q2,q12
1438
1439 .byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 19
1440 .byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13
1441
1442 vadd.i32 q1,q1,q2
1443 vadd.i32 q0,q0,q14
1444 bne .Loop_v8
1445
1446 vst1.32 {q0},[r0]!
1447 vst1.32 {d2[0]},[r0]
1448
1449 vldmia sp!,{d8-d15}
1450 bx lr @ bx lr
1451 .size sha1_block_data_order_armv8,.-sha1_block_data_order_armv8
1452 #endif
1453 #if __ARM_MAX_ARCH__>=7
1454 .comm OPENSSL_armcap_P,4,4
1455 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698