2 /* Do not modify. This file is auto-generated from chacha-x86_64.pl. */
21 .byte 0x2,0x3,0x0,0x1, 0x6,0x7,0x4,0x5, 0xa,0xb,0x8,0x9, 0xe,0xf,0xc,0xd
23 .byte 0x3,0x0,0x1,0x2, 0x7,0x4,0x5,0x6, 0xb,0x8,0x9,0xa, 0xf,0xc,0xd,0xe
25 .long 2,0,0,0, 2,0,0,0
28 .long 0,0,0,0, 1,0,0,0, 2,0,0,0, 3,0,0,0
30 .long 4,0,0,0, 4,0,0,0, 4,0,0,0, 4,0,0,0
32 .long 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
34 .long 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
36 .byte 101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107,0
37 .byte 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54,95,54,52,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
39 .type ChaCha20_ctr32,@function
45 movq OPENSSL_ia32cap_P+4(%rip),%r10
50 .cfi_adjust_cfa_offset 8
53 .cfi_adjust_cfa_offset 8
56 .cfi_adjust_cfa_offset 8
59 .cfi_adjust_cfa_offset 8
62 .cfi_adjust_cfa_offset 8
65 .cfi_adjust_cfa_offset 8
68 .cfi_adjust_cfa_offset 64+24
75 movdqa .Lone(%rip),%xmm4
102 .byte 102,72,15,126,214
103 movq %rdi,64+16(%rsp)
222 movq 64+16(%rsp),%rdi
224 addl $0x61707865,%eax
225 addl $0x3320646e,%ebx
226 addl $0x79622d32,%ecx
227 addl $0x6b206574,%edx
249 movdqu 32(%rsi),%xmm0
257 movdqa %xmm2,32(%rsp)
268 movdqu %xmm0,32(%rdi)
291 movdqa %xmm1,32(%rsp)
298 movzbl (%rsi,%rbx,1),%eax
299 movzbl (%rsp,%rbx,1),%edx
302 movb %al,-1(%rdi,%rbx,1)
307 leaq 64+24+48(%rsp),%rsi
322 .cfi_def_cfa_register %rsp
326 .size ChaCha20_ctr32,.-ChaCha20_ctr32
327 .type ChaCha20_ssse3,@function
333 .cfi_def_cfa_register %r9
340 movdqa .Lsigma(%rip),%xmm0
342 movdqu 16(%rcx),%xmm2
344 movdqa .Lrot16(%rip),%xmm6
345 movdqa .Lrot24(%rip),%xmm7
348 movdqa %xmm1,16(%rsp)
349 movdqa %xmm2,32(%rsp)
350 movdqa %xmm3,48(%rsp)
356 movdqa .Lone(%rip),%xmm3
358 movdqa 16(%rsp),%xmm1
359 movdqa 32(%rsp),%xmm2
362 movdqa %xmm3,48(%rsp)
369 .byte 102,15,56,0,222
378 .byte 102,15,56,0,223
385 pshufd $78,%xmm2,%xmm2
386 pshufd $57,%xmm1,%xmm1
387 pshufd $147,%xmm3,%xmm3
391 .byte 102,15,56,0,222
400 .byte 102,15,56,0,223
407 pshufd $78,%xmm2,%xmm2
408 pshufd $147,%xmm1,%xmm1
409 pshufd $57,%xmm3,%xmm3
421 movdqu 16(%rsi),%xmm5
423 movdqu 32(%rsi),%xmm4
425 movdqu 48(%rsi),%xmm5
431 movdqu %xmm1,16(%rdi)
432 movdqu %xmm2,32(%rdi)
433 movdqu %xmm3,48(%rdi)
437 jnz .Loop_outer_ssse3
444 movdqa %xmm1,16(%rsp)
445 movdqa %xmm2,32(%rsp)
446 movdqa %xmm3,48(%rsp)
450 movzbl (%rsi,%r8,1),%eax
451 movzbl (%rsp,%r8,1),%ecx
454 movb %al,-1(%rdi,%r8,1)
460 .cfi_def_cfa_register %rsp
464 .size ChaCha20_ssse3,.-ChaCha20_ssse3
465 .type ChaCha20_128,@function
471 .cfi_def_cfa_register %r9
473 movdqa .Lsigma(%rip),%xmm8
475 movdqu 16(%rcx),%xmm2
477 movdqa .Lone(%rip),%xmm1
478 movdqa .Lrot16(%rip),%xmm6
479 movdqa .Lrot24(%rip),%xmm7
484 movdqa %xmm9,16(%rsp)
486 movdqa %xmm2,32(%rsp)
488 movdqa %xmm3,48(%rsp)
498 .byte 102,15,56,0,222
499 .byte 102,15,56,0,206
516 .byte 102,15,56,0,223
517 .byte 102,15,56,0,207
530 pshufd $78,%xmm2,%xmm2
531 pshufd $57,%xmm9,%xmm9
532 pshufd $147,%xmm3,%xmm3
533 pshufd $78,%xmm0,%xmm0
534 pshufd $57,%xmm11,%xmm11
535 pshufd $147,%xmm1,%xmm1
540 .byte 102,15,56,0,222
541 .byte 102,15,56,0,206
558 .byte 102,15,56,0,223
559 .byte 102,15,56,0,207
572 pshufd $78,%xmm2,%xmm2
573 pshufd $147,%xmm9,%xmm9
574 pshufd $57,%xmm3,%xmm3
575 pshufd $78,%xmm0,%xmm0
576 pshufd $147,%xmm11,%xmm11
577 pshufd $57,%xmm1,%xmm1
584 paddd .Lone(%rip),%xmm1
586 paddd 16(%rsp),%xmm11
591 movdqu 16(%rsi),%xmm5
593 movdqu 32(%rsi),%xmm4
595 movdqu 48(%rsi),%xmm5
597 movdqu 64(%rsi),%xmm4
599 movdqu 80(%rsi),%xmm5
601 movdqu 96(%rsi),%xmm4
603 movdqu 112(%rsi),%xmm5
608 movdqu %xmm9,16(%rdi)
609 movdqu %xmm2,32(%rdi)
610 movdqu %xmm3,48(%rdi)
611 movdqu %xmm10,64(%rdi)
612 movdqu %xmm11,80(%rdi)
613 movdqu %xmm0,96(%rdi)
614 movdqu %xmm1,112(%rdi)
616 .cfi_def_cfa_register %rsp
620 .size ChaCha20_128,.-ChaCha20_128
621 .type ChaCha20_4x,@function
627 .cfi_def_cfa_register %r9
634 je .Ldo_sse3_after_all
638 movdqa .Lsigma(%rip),%xmm11
640 movdqu 16(%rcx),%xmm7
643 leaq .Lrot16(%rip),%r10
644 leaq .Lrot24(%rip),%r11
646 pshufd $0x00,%xmm11,%xmm8
647 pshufd $0x55,%xmm11,%xmm9
648 movdqa %xmm8,64(%rsp)
649 pshufd $0xaa,%xmm11,%xmm10
650 movdqa %xmm9,80(%rsp)
651 pshufd $0xff,%xmm11,%xmm11
652 movdqa %xmm10,96(%rsp)
653 movdqa %xmm11,112(%rsp)
655 pshufd $0x00,%xmm15,%xmm12
656 pshufd $0x55,%xmm15,%xmm13
657 movdqa %xmm12,128-256(%rcx)
658 pshufd $0xaa,%xmm15,%xmm14
659 movdqa %xmm13,144-256(%rcx)
660 pshufd $0xff,%xmm15,%xmm15
661 movdqa %xmm14,160-256(%rcx)
662 movdqa %xmm15,176-256(%rcx)
664 pshufd $0x00,%xmm7,%xmm4
665 pshufd $0x55,%xmm7,%xmm5
666 movdqa %xmm4,192-256(%rcx)
667 pshufd $0xaa,%xmm7,%xmm6
668 movdqa %xmm5,208-256(%rcx)
669 pshufd $0xff,%xmm7,%xmm7
670 movdqa %xmm6,224-256(%rcx)
671 movdqa %xmm7,240-256(%rcx)
673 pshufd $0x00,%xmm3,%xmm0
674 pshufd $0x55,%xmm3,%xmm1
675 paddd .Linc(%rip),%xmm0
676 pshufd $0xaa,%xmm3,%xmm2
677 movdqa %xmm1,272-256(%rcx)
678 pshufd $0xff,%xmm3,%xmm3
679 movdqa %xmm2,288-256(%rcx)
680 movdqa %xmm3,304-256(%rcx)
686 movdqa 64(%rsp),%xmm8
687 movdqa 80(%rsp),%xmm9
688 movdqa 96(%rsp),%xmm10
689 movdqa 112(%rsp),%xmm11
690 movdqa 128-256(%rcx),%xmm12
691 movdqa 144-256(%rcx),%xmm13
692 movdqa 160-256(%rcx),%xmm14
693 movdqa 176-256(%rcx),%xmm15
694 movdqa 192-256(%rcx),%xmm4
695 movdqa 208-256(%rcx),%xmm5
696 movdqa 224-256(%rcx),%xmm6
697 movdqa 240-256(%rcx),%xmm7
698 movdqa 256-256(%rcx),%xmm0
699 movdqa 272-256(%rcx),%xmm1
700 movdqa 288-256(%rcx),%xmm2
701 movdqa 304-256(%rcx),%xmm3
702 paddd .Lfour(%rip),%xmm0
705 movdqa %xmm6,32(%rsp)
706 movdqa %xmm7,48(%rsp)
709 movdqa %xmm0,256-256(%rcx)
718 .byte 102,15,56,0,199
719 .byte 102,15,56,0,207
737 .byte 102,15,56,0,198
738 .byte 102,15,56,0,206
753 movdqa %xmm5,16(%rsp)
754 movdqa 32(%rsp),%xmm4
755 movdqa 48(%rsp),%xmm5
760 .byte 102,15,56,0,215
761 .byte 102,15,56,0,223
779 .byte 102,15,56,0,214
780 .byte 102,15,56,0,222
798 .byte 102,15,56,0,223
799 .byte 102,15,56,0,199
817 .byte 102,15,56,0,222
818 .byte 102,15,56,0,198
832 movdqa %xmm4,32(%rsp)
833 movdqa %xmm5,48(%rsp)
835 movdqa 16(%rsp),%xmm5
840 .byte 102,15,56,0,207
841 .byte 102,15,56,0,215
859 .byte 102,15,56,0,206
860 .byte 102,15,56,0,214
879 paddd 96(%rsp),%xmm10
880 paddd 112(%rsp),%xmm11
883 punpckldq %xmm9,%xmm8
885 punpckldq %xmm11,%xmm10
886 punpckhdq %xmm9,%xmm6
887 punpckhdq %xmm11,%xmm7
889 punpcklqdq %xmm10,%xmm8
891 punpcklqdq %xmm7,%xmm6
892 punpckhqdq %xmm10,%xmm9
893 punpckhqdq %xmm7,%xmm11
894 paddd 128-256(%rcx),%xmm12
895 paddd 144-256(%rcx),%xmm13
896 paddd 160-256(%rcx),%xmm14
897 paddd 176-256(%rcx),%xmm15
900 movdqa %xmm9,16(%rsp)
901 movdqa 32(%rsp),%xmm8
902 movdqa 48(%rsp),%xmm9
905 punpckldq %xmm13,%xmm12
907 punpckldq %xmm15,%xmm14
908 punpckhdq %xmm13,%xmm10
909 punpckhdq %xmm15,%xmm7
911 punpcklqdq %xmm14,%xmm12
913 punpcklqdq %xmm7,%xmm10
914 punpckhqdq %xmm14,%xmm13
915 punpckhqdq %xmm7,%xmm15
916 paddd 192-256(%rcx),%xmm4
917 paddd 208-256(%rcx),%xmm5
918 paddd 224-256(%rcx),%xmm8
919 paddd 240-256(%rcx),%xmm9
921 movdqa %xmm6,32(%rsp)
922 movdqa %xmm11,48(%rsp)
925 punpckldq %xmm5,%xmm4
927 punpckldq %xmm9,%xmm8
928 punpckhdq %xmm5,%xmm14
929 punpckhdq %xmm9,%xmm7
931 punpcklqdq %xmm8,%xmm4
933 punpcklqdq %xmm7,%xmm14
934 punpckhqdq %xmm8,%xmm5
935 punpckhqdq %xmm7,%xmm9
936 paddd 256-256(%rcx),%xmm0
937 paddd 272-256(%rcx),%xmm1
938 paddd 288-256(%rcx),%xmm2
939 paddd 304-256(%rcx),%xmm3
942 punpckldq %xmm1,%xmm0
944 punpckldq %xmm3,%xmm2
945 punpckhdq %xmm1,%xmm8
946 punpckhdq %xmm3,%xmm7
948 punpcklqdq %xmm2,%xmm0
950 punpcklqdq %xmm7,%xmm8
951 punpckhqdq %xmm2,%xmm1
952 punpckhqdq %xmm7,%xmm3
957 movdqu 16(%rsi),%xmm11
958 movdqu 32(%rsi),%xmm2
959 movdqu 48(%rsi),%xmm7
966 movdqu 64(%rsi),%xmm6
967 movdqu %xmm11,16(%rdi)
968 movdqu 80(%rsi),%xmm11
969 movdqu %xmm2,32(%rdi)
970 movdqu 96(%rsi),%xmm2
971 movdqu %xmm7,48(%rdi)
972 movdqu 112(%rsi),%xmm7
979 movdqu %xmm6,64(%rdi)
981 movdqu %xmm11,80(%rdi)
982 movdqu 16(%rsi),%xmm11
983 movdqu %xmm2,96(%rdi)
984 movdqu 32(%rsi),%xmm2
985 movdqu %xmm7,112(%rdi)
987 movdqu 48(%rsi),%xmm7
994 movdqu 64(%rsi),%xmm6
995 movdqu %xmm11,16(%rdi)
996 movdqu 80(%rsi),%xmm11
997 movdqu %xmm2,32(%rdi)
998 movdqu 96(%rsi),%xmm2
999 movdqu %xmm7,48(%rdi)
1000 movdqu 112(%rsi),%xmm7
1006 movdqu %xmm6,64(%rdi)
1007 movdqu %xmm11,80(%rdi)
1008 movdqu %xmm2,96(%rdi)
1009 movdqu %xmm7,112(%rdi)
1028 movdqa %xmm12,16(%rsp)
1029 movdqa %xmm4,32(%rsp)
1030 movdqa %xmm0,48(%rsp)
1035 movdqu 0(%rsi),%xmm6
1036 movdqu 16(%rsi),%xmm11
1037 movdqu 32(%rsi),%xmm2
1038 movdqu 48(%rsi),%xmm7
1043 movdqu %xmm6,0(%rdi)
1044 movdqu %xmm11,16(%rdi)
1045 movdqu %xmm2,32(%rdi)
1046 movdqu %xmm7,48(%rdi)
1049 movdqa 16(%rsp),%xmm6
1052 movdqa %xmm6,0(%rsp)
1053 movdqa %xmm13,16(%rsp)
1055 movdqa %xmm5,32(%rsp)
1057 movdqa %xmm1,48(%rsp)
1062 movdqu 0(%rsi),%xmm6
1063 movdqu 16(%rsi),%xmm11
1064 movdqu 32(%rsi),%xmm2
1065 movdqu 48(%rsi),%xmm7
1071 movdqu %xmm6,0(%rdi)
1072 movdqu 64(%rsi),%xmm6
1073 movdqu %xmm11,16(%rdi)
1074 movdqu 80(%rsi),%xmm11
1075 movdqu %xmm2,32(%rdi)
1076 movdqu 96(%rsi),%xmm2
1077 movdqu %xmm7,48(%rdi)
1078 movdqu 112(%rsi),%xmm7
1083 movdqu %xmm6,64(%rdi)
1084 movdqu %xmm11,80(%rdi)
1085 movdqu %xmm2,96(%rdi)
1086 movdqu %xmm7,112(%rdi)
1089 movdqa 32(%rsp),%xmm6
1092 movdqa %xmm6,0(%rsp)
1093 movdqa %xmm10,16(%rsp)
1095 movdqa %xmm14,32(%rsp)
1097 movdqa %xmm8,48(%rsp)
1102 movdqu 0(%rsi),%xmm6
1103 movdqu 16(%rsi),%xmm11
1104 movdqu 32(%rsi),%xmm2
1105 movdqu 48(%rsi),%xmm7
1111 movdqu %xmm6,0(%rdi)
1112 movdqu 64(%rsi),%xmm6
1113 movdqu %xmm11,16(%rdi)
1114 movdqu 80(%rsi),%xmm11
1115 movdqu %xmm2,32(%rdi)
1116 movdqu 96(%rsi),%xmm2
1117 movdqu %xmm7,48(%rdi)
1118 movdqu 112(%rsi),%xmm7
1125 movdqu %xmm6,64(%rdi)
1126 movdqu 0(%rsi),%xmm6
1127 movdqu %xmm11,80(%rdi)
1128 movdqu 16(%rsi),%xmm11
1129 movdqu %xmm2,96(%rdi)
1130 movdqu 32(%rsi),%xmm2
1131 movdqu %xmm7,112(%rdi)
1133 movdqu 48(%rsi),%xmm7
1138 movdqu %xmm6,0(%rdi)
1139 movdqu %xmm11,16(%rdi)
1140 movdqu %xmm2,32(%rdi)
1141 movdqu %xmm7,48(%rdi)
1144 movdqa 48(%rsp),%xmm6
1147 movdqa %xmm6,0(%rsp)
1148 movdqa %xmm15,16(%rsp)
1150 movdqa %xmm9,32(%rsp)
1152 movdqa %xmm3,48(%rsp)
1155 movzbl (%rsi,%r10,1),%eax
1156 movzbl (%rsp,%r10,1),%ecx
1159 movb %al,-1(%rdi,%r10,1)
1165 .cfi_def_cfa_register %rsp
1169 .size ChaCha20_4x,.-ChaCha20_4x