11/* chacha_asm.S */
22/*
3- * Copyright (C) 2006-2023 wolfSSL Inc.
3+ * Copyright (C) 2006-2024 wolfSSL Inc.
44 *
55 * This file is part of wolfSSL.
66 *
@@ -536,9 +536,19 @@ chacha_encrypt_avx1:
536536.p2align 4
537537_chacha_encrypt_avx1:
538538#endif /* __APPLE__ */
539+ pushq %r12
540+ pushq %r13
541+ pushq %r14
542+ pushq %r15
539543 subq $0x190 , %rsp
540544 movq %rsp , %r9
541545 leaq 256 (%rsp ), %r10
546+ leaq L_chacha20_avx1_rotl8(%rip ), %r12
547+ leaq L_chacha20_avx1_rotl16(%rip ), %r13
548+ leaq L_chacha20_avx1_add(%rip ), %r14
549+ leaq L_chacha20_avx1_four(%rip ), %r15
550+ addq $15 , %r9
551+ addq $15 , %r10
542552 andq $-16 , %r9
543553 andq $-16 , %r10
544554 movl %ecx , %eax
@@ -560,7 +570,7 @@ _chacha_encrypt_avx1:
560570 vpshufd $0x00 , 52 (%rdi ), %xmm13
561571 vpshufd $0x00 , 56 (%rdi ), %xmm14
562572 vpshufd $0x00 , 60 (%rdi ), %xmm15
563- vpaddd L_chacha20_avx1_add( %rip ), %xmm12 , %xmm12
573+ vpaddd ( %r14 ), %xmm12 , %xmm12
564574 vmovdqa %xmm0 , (%r9 )
565575 vmovdqa %xmm1 , 16 (%r9 )
566576 vmovdqa %xmm2 , 32 (%r9 )
@@ -584,22 +594,22 @@ L_chacha20_avx1_loop128:
584594 vpaddd %xmm4 , %xmm0 , %xmm0
585595 vpxor %xmm0 , %xmm12 , %xmm12
586596 vmovdqa 48 (%r10 ), %xmm11
587- vpshufb L_chacha20_avx1_rotl16( %rip ), %xmm12 , %xmm12
597+ vpshufb ( %r13 ), %xmm12 , %xmm12
588598 vpaddd %xmm12 , %xmm8 , %xmm8
589599 vpxor %xmm8 , %xmm4 , %xmm4
590600 vpaddd %xmm5 , %xmm1 , %xmm1
591601 vpxor %xmm1 , %xmm13 , %xmm13
592- vpshufb L_chacha20_avx1_rotl16( %rip ), %xmm13 , %xmm13
602+ vpshufb ( %r13 ), %xmm13 , %xmm13
593603 vpaddd %xmm13 , %xmm9 , %xmm9
594604 vpxor %xmm9 , %xmm5 , %xmm5
595605 vpaddd %xmm6 , %xmm2 , %xmm2
596606 vpxor %xmm2 , %xmm14 , %xmm14
597- vpshufb L_chacha20_avx1_rotl16( %rip ), %xmm14 , %xmm14
607+ vpshufb ( %r13 ), %xmm14 , %xmm14
598608 vpaddd %xmm14 , %xmm10 , %xmm10
599609 vpxor %xmm10 , %xmm6 , %xmm6
600610 vpaddd %xmm7 , %xmm3 , %xmm3
601611 vpxor %xmm3 , %xmm15 , %xmm15
602- vpshufb L_chacha20_avx1_rotl16( %rip ), %xmm15 , %xmm15
612+ vpshufb ( %r13 ), %xmm15 , %xmm15
603613 vpaddd %xmm15 , %xmm11 , %xmm11
604614 vpxor %xmm11 , %xmm7 , %xmm7
605615 vmovdqa %xmm11 , 48 (%r10 )
@@ -618,22 +628,22 @@ L_chacha20_avx1_loop128:
618628 vpaddd %xmm4 , %xmm0 , %xmm0
619629 vpxor %xmm0 , %xmm12 , %xmm12
620630 vmovdqa 48 (%r10 ), %xmm11
621- vpshufb L_chacha20_avx1_rotl8( %rip ), %xmm12 , %xmm12
631+ vpshufb ( %r12 ), %xmm12 , %xmm12
622632 vpaddd %xmm12 , %xmm8 , %xmm8
623633 vpxor %xmm8 , %xmm4 , %xmm4
624634 vpaddd %xmm5 , %xmm1 , %xmm1
625635 vpxor %xmm1 , %xmm13 , %xmm13
626- vpshufb L_chacha20_avx1_rotl8( %rip ), %xmm13 , %xmm13
636+ vpshufb ( %r12 ), %xmm13 , %xmm13
627637 vpaddd %xmm13 , %xmm9 , %xmm9
628638 vpxor %xmm9 , %xmm5 , %xmm5
629639 vpaddd %xmm6 , %xmm2 , %xmm2
630640 vpxor %xmm2 , %xmm14 , %xmm14
631- vpshufb L_chacha20_avx1_rotl8( %rip ), %xmm14 , %xmm14
641+ vpshufb ( %r12 ), %xmm14 , %xmm14
632642 vpaddd %xmm14 , %xmm10 , %xmm10
633643 vpxor %xmm10 , %xmm6 , %xmm6
634644 vpaddd %xmm7 , %xmm3 , %xmm3
635645 vpxor %xmm3 , %xmm15 , %xmm15
636- vpshufb L_chacha20_avx1_rotl8( %rip ), %xmm15 , %xmm15
646+ vpshufb ( %r12 ), %xmm15 , %xmm15
637647 vpaddd %xmm15 , %xmm11 , %xmm11
638648 vpxor %xmm11 , %xmm7 , %xmm7
639649 vmovdqa %xmm11 , 48 (%r10 )
@@ -652,22 +662,22 @@ L_chacha20_avx1_loop128:
652662 vpaddd %xmm5 , %xmm0 , %xmm0
653663 vpxor %xmm0 , %xmm15 , %xmm15
654664 vmovdqa 48 (%r10 ), %xmm11
655- vpshufb L_chacha20_avx1_rotl16( %rip ), %xmm15 , %xmm15
665+ vpshufb ( %r13 ), %xmm15 , %xmm15
656666 vpaddd %xmm15 , %xmm10 , %xmm10
657667 vpxor %xmm10 , %xmm5 , %xmm5
658668 vpaddd %xmm6 , %xmm1 , %xmm1
659669 vpxor %xmm1 , %xmm12 , %xmm12
660- vpshufb L_chacha20_avx1_rotl16( %rip ), %xmm12 , %xmm12
670+ vpshufb ( %r13 ), %xmm12 , %xmm12
661671 vpaddd %xmm12 , %xmm11 , %xmm11
662672 vpxor %xmm11 , %xmm6 , %xmm6
663673 vpaddd %xmm7 , %xmm2 , %xmm2
664674 vpxor %xmm2 , %xmm13 , %xmm13
665- vpshufb L_chacha20_avx1_rotl16( %rip ), %xmm13 , %xmm13
675+ vpshufb ( %r13 ), %xmm13 , %xmm13
666676 vpaddd %xmm13 , %xmm8 , %xmm8
667677 vpxor %xmm8 , %xmm7 , %xmm7
668678 vpaddd %xmm4 , %xmm3 , %xmm3
669679 vpxor %xmm3 , %xmm14 , %xmm14
670- vpshufb L_chacha20_avx1_rotl16( %rip ), %xmm14 , %xmm14
680+ vpshufb ( %r13 ), %xmm14 , %xmm14
671681 vpaddd %xmm14 , %xmm9 , %xmm9
672682 vpxor %xmm9 , %xmm4 , %xmm4
673683 vmovdqa %xmm11 , 48 (%r10 )
@@ -686,22 +696,22 @@ L_chacha20_avx1_loop128:
686696 vpaddd %xmm5 , %xmm0 , %xmm0
687697 vpxor %xmm0 , %xmm15 , %xmm15
688698 vmovdqa 48 (%r10 ), %xmm11
689- vpshufb L_chacha20_avx1_rotl8( %rip ), %xmm15 , %xmm15
699+ vpshufb ( %r12 ), %xmm15 , %xmm15
690700 vpaddd %xmm15 , %xmm10 , %xmm10
691701 vpxor %xmm10 , %xmm5 , %xmm5
692702 vpaddd %xmm6 , %xmm1 , %xmm1
693703 vpxor %xmm1 , %xmm12 , %xmm12
694- vpshufb L_chacha20_avx1_rotl8( %rip ), %xmm12 , %xmm12
704+ vpshufb ( %r12 ), %xmm12 , %xmm12
695705 vpaddd %xmm12 , %xmm11 , %xmm11
696706 vpxor %xmm11 , %xmm6 , %xmm6
697707 vpaddd %xmm7 , %xmm2 , %xmm2
698708 vpxor %xmm2 , %xmm13 , %xmm13
699- vpshufb L_chacha20_avx1_rotl8( %rip ), %xmm13 , %xmm13
709+ vpshufb ( %r12 ), %xmm13 , %xmm13
700710 vpaddd %xmm13 , %xmm8 , %xmm8
701711 vpxor %xmm8 , %xmm7 , %xmm7
702712 vpaddd %xmm4 , %xmm3 , %xmm3
703713 vpxor %xmm3 , %xmm14 , %xmm14
704- vpshufb L_chacha20_avx1_rotl8( %rip ), %xmm14 , %xmm14
714+ vpshufb ( %r12 ), %xmm14 , %xmm14
705715 vpaddd %xmm14 , %xmm9 , %xmm9
706716 vpxor %xmm9 , %xmm4 , %xmm4
707717 vmovdqa %xmm11 , 48 (%r10 )
@@ -835,7 +845,7 @@ L_chacha20_avx1_loop128:
835845 vmovdqa 192 (%r9 ), %xmm12
836846 addq $0x100 , %rsi
837847 addq $0x100 , %rdx
838- vpaddd L_chacha20_avx1_four( %rip ), %xmm12 , %xmm12
848+ vpaddd ( %r15 ), %xmm12 , %xmm12
839849 subl $0x100 , %ecx
840850 vmovdqa %xmm12 , 192 (%r9 )
841851 cmpl $0x100 , %ecx
@@ -876,15 +886,15 @@ L_chacha20_avx1_block_start:
876886L_chacha20_avx1_block_crypt_start:
877887 vpaddd %xmm1 , %xmm0 , %xmm0
878888 vpxor %xmm0 , %xmm3 , %xmm3
879- vpshufb L_chacha20_avx1_rotl16( %rip ), %xmm3 , %xmm3
889+ vpshufb ( %r13 ), %xmm3 , %xmm3
880890 vpaddd %xmm3 , %xmm2 , %xmm2
881891 vpxor %xmm2 , %xmm1 , %xmm1
882892 vpsrld $20 , %xmm1 , %xmm4
883893 vpslld $12 , %xmm1 , %xmm1
884894 vpxor %xmm4 , %xmm1 , %xmm1
885895 vpaddd %xmm1 , %xmm0 , %xmm0
886896 vpxor %xmm0 , %xmm3 , %xmm3
887- vpshufb L_chacha20_avx1_rotl8( %rip ), %xmm3 , %xmm3
897+ vpshufb ( %r12 ), %xmm3 , %xmm3
888898 vpaddd %xmm3 , %xmm2 , %xmm2
889899 vpxor %xmm2 , %xmm1 , %xmm1
890900 vpsrld $25 , %xmm1 , %xmm4
@@ -895,15 +905,15 @@ L_chacha20_avx1_block_crypt_start:
895905 vpshufd $0x93 , %xmm3 , %xmm3
896906 vpaddd %xmm1 , %xmm0 , %xmm0
897907 vpxor %xmm0 , %xmm3 , %xmm3
898- vpshufb L_chacha20_avx1_rotl16( %rip ), %xmm3 , %xmm3
908+ vpshufb ( %r13 ), %xmm3 , %xmm3
899909 vpaddd %xmm3 , %xmm2 , %xmm2
900910 vpxor %xmm2 , %xmm1 , %xmm1
901911 vpsrld $20 , %xmm1 , %xmm4
902912 vpslld $12 , %xmm1 , %xmm1
903913 vpxor %xmm4 , %xmm1 , %xmm1
904914 vpaddd %xmm1 , %xmm0 , %xmm0
905915 vpxor %xmm0 , %xmm3 , %xmm3
906- vpshufb L_chacha20_avx1_rotl8( %rip ), %xmm3 , %xmm3
916+ vpshufb ( %r12 ), %xmm3 , %xmm3
907917 vpaddd %xmm3 , %xmm2 , %xmm2
908918 vpxor %xmm2 , %xmm1 , %xmm1
909919 vpsrld $25 , %xmm1 , %xmm4
@@ -952,15 +962,15 @@ L_chacha20_avx1_block_done:
952962L_chacha20_avx1_partial_crypt_start:
953963 vpaddd %xmm1 , %xmm0 , %xmm0
954964 vpxor %xmm0 , %xmm3 , %xmm3
955- vpshufb L_chacha20_avx1_rotl16( %rip ), %xmm3 , %xmm3
965+ vpshufb ( %r13 ), %xmm3 , %xmm3
956966 vpaddd %xmm3 , %xmm2 , %xmm2
957967 vpxor %xmm2 , %xmm1 , %xmm1
958968 vpsrld $20 , %xmm1 , %xmm4
959969 vpslld $12 , %xmm1 , %xmm1
960970 vpxor %xmm4 , %xmm1 , %xmm1
961971 vpaddd %xmm1 , %xmm0 , %xmm0
962972 vpxor %xmm0 , %xmm3 , %xmm3
963- vpshufb L_chacha20_avx1_rotl8( %rip ), %xmm3 , %xmm3
973+ vpshufb ( %r12 ), %xmm3 , %xmm3
964974 vpaddd %xmm3 , %xmm2 , %xmm2
965975 vpxor %xmm2 , %xmm1 , %xmm1
966976 vpsrld $25 , %xmm1 , %xmm4
@@ -971,15 +981,15 @@ L_chacha20_avx1_partial_crypt_start:
971981 vpshufd $0x93 , %xmm3 , %xmm3
972982 vpaddd %xmm1 , %xmm0 , %xmm0
973983 vpxor %xmm0 , %xmm3 , %xmm3
974- vpshufb L_chacha20_avx1_rotl16( %rip ), %xmm3 , %xmm3
984+ vpshufb ( %r13 ), %xmm3 , %xmm3
975985 vpaddd %xmm3 , %xmm2 , %xmm2
976986 vpxor %xmm2 , %xmm1 , %xmm1
977987 vpsrld $20 , %xmm1 , %xmm4
978988 vpslld $12 , %xmm1 , %xmm1
979989 vpxor %xmm4 , %xmm1 , %xmm1
980990 vpaddd %xmm1 , %xmm0 , %xmm0
981991 vpxor %xmm0 , %xmm3 , %xmm3
982- vpshufb L_chacha20_avx1_rotl8( %rip ), %xmm3 , %xmm3
992+ vpshufb ( %r12 ), %xmm3 , %xmm3
983993 vpaddd %xmm3 , %xmm2 , %xmm2
984994 vpxor %xmm2 , %xmm1 , %xmm1
985995 vpsrld $25 , %xmm1 , %xmm4
@@ -1023,7 +1033,12 @@ L_chacha20_avx1_partial_end64:
10231033 subl %r11d , %r8d
10241034 movl %r8d , 76 (%rdi )
10251035L_chacha20_avx1_partial_done:
1036+ vzeroupper
10261037 addq $0x190 , %rsp
1038+ popq %r15
1039+ popq %r14
1040+ popq %r13
1041+ popq %r12
10271042 repz retq
10281043#ifndef __APPLE__
10291044.size chacha_encrypt_avx1,.-chacha_encrypt_avx1
@@ -1094,9 +1109,18 @@ chacha_encrypt_avx2:
10941109.p2align 4
10951110_chacha_encrypt_avx2:
10961111#endif /* __APPLE__ */
1097- subq $0x310 , %rsp
1112+ pushq %r12
1113+ pushq %r13
1114+ pushq %r14
1115+ subq $0x320 , %rsp
10981116 movq %rsp , %r9
1117+ leaq L_chacha20_avx2_rotl8(%rip ), %r11
1118+ leaq L_chacha20_avx2_rotl16(%rip ), %r12
1119+ leaq L_chacha20_avx2_add(%rip ), %r13
1120+ leaq L_chacha20_avx2_eight(%rip ), %r14
10991121 leaq 512 (%rsp ), %r10
1122+ addq $31 , %r9
1123+ addq $31 , %r10
11001124 andq $-32 , %r9
11011125 andq $-32 , %r10
11021126 movl %ecx , %eax
@@ -1118,7 +1142,7 @@ _chacha_encrypt_avx2:
11181142 vpbroadcastd 52 (%rdi ), %ymm13
11191143 vpbroadcastd 56 (%rdi ), %ymm14
11201144 vpbroadcastd 60 (%rdi ), %ymm15
1121- vpaddd L_chacha20_avx2_add( %rip ), %ymm12 , %ymm12
1145+ vpaddd ( %r13 ), %ymm12 , %ymm12
11221146 vmovdqa %ymm0 , (%r9 )
11231147 vmovdqa %ymm1 , 32 (%r9 )
11241148 vmovdqa %ymm2 , 64 (%r9 )
@@ -1142,22 +1166,22 @@ L_chacha20_avx2_loop256:
11421166 vpaddd %ymm4 , %ymm0 , %ymm0
11431167 vpxor %ymm0 , %ymm12 , %ymm12
11441168 vmovdqa 96 (%r10 ), %ymm11
1145- vpshufb L_chacha20_avx2_rotl16( %rip ), %ymm12 , %ymm12
1169+ vpshufb ( %r12 ), %ymm12 , %ymm12
11461170 vpaddd %ymm12 , %ymm8 , %ymm8
11471171 vpxor %ymm8 , %ymm4 , %ymm4
11481172 vpaddd %ymm5 , %ymm1 , %ymm1
11491173 vpxor %ymm1 , %ymm13 , %ymm13
1150- vpshufb L_chacha20_avx2_rotl16( %rip ), %ymm13 , %ymm13
1174+ vpshufb ( %r12 ), %ymm13 , %ymm13
11511175 vpaddd %ymm13 , %ymm9 , %ymm9
11521176 vpxor %ymm9 , %ymm5 , %ymm5
11531177 vpaddd %ymm6 , %ymm2 , %ymm2
11541178 vpxor %ymm2 , %ymm14 , %ymm14
1155- vpshufb L_chacha20_avx2_rotl16( %rip ), %ymm14 , %ymm14
1179+ vpshufb ( %r12 ), %ymm14 , %ymm14
11561180 vpaddd %ymm14 , %ymm10 , %ymm10
11571181 vpxor %ymm10 , %ymm6 , %ymm6
11581182 vpaddd %ymm7 , %ymm3 , %ymm3
11591183 vpxor %ymm3 , %ymm15 , %ymm15
1160- vpshufb L_chacha20_avx2_rotl16( %rip ), %ymm15 , %ymm15
1184+ vpshufb ( %r12 ), %ymm15 , %ymm15
11611185 vpaddd %ymm15 , %ymm11 , %ymm11
11621186 vpxor %ymm11 , %ymm7 , %ymm7
11631187 vmovdqa %ymm11 , 96 (%r10 )
@@ -1176,22 +1200,22 @@ L_chacha20_avx2_loop256:
11761200 vpaddd %ymm4 , %ymm0 , %ymm0
11771201 vpxor %ymm0 , %ymm12 , %ymm12
11781202 vmovdqa 96 (%r10 ), %ymm11
1179- vpshufb L_chacha20_avx2_rotl8( %rip ), %ymm12 , %ymm12
1203+ vpshufb ( %r11 ), %ymm12 , %ymm12
11801204 vpaddd %ymm12 , %ymm8 , %ymm8
11811205 vpxor %ymm8 , %ymm4 , %ymm4
11821206 vpaddd %ymm5 , %ymm1 , %ymm1
11831207 vpxor %ymm1 , %ymm13 , %ymm13
1184- vpshufb L_chacha20_avx2_rotl8( %rip ), %ymm13 , %ymm13
1208+ vpshufb ( %r11 ), %ymm13 , %ymm13
11851209 vpaddd %ymm13 , %ymm9 , %ymm9
11861210 vpxor %ymm9 , %ymm5 , %ymm5
11871211 vpaddd %ymm6 , %ymm2 , %ymm2
11881212 vpxor %ymm2 , %ymm14 , %ymm14
1189- vpshufb L_chacha20_avx2_rotl8( %rip ), %ymm14 , %ymm14
1213+ vpshufb ( %r11 ), %ymm14 , %ymm14
11901214 vpaddd %ymm14 , %ymm10 , %ymm10
11911215 vpxor %ymm10 , %ymm6 , %ymm6
11921216 vpaddd %ymm7 , %ymm3 , %ymm3
11931217 vpxor %ymm3 , %ymm15 , %ymm15
1194- vpshufb L_chacha20_avx2_rotl8( %rip ), %ymm15 , %ymm15
1218+ vpshufb ( %r11 ), %ymm15 , %ymm15
11951219 vpaddd %ymm15 , %ymm11 , %ymm11
11961220 vpxor %ymm11 , %ymm7 , %ymm7
11971221 vmovdqa %ymm11 , 96 (%r10 )
@@ -1210,22 +1234,22 @@ L_chacha20_avx2_loop256:
12101234 vpaddd %ymm5 , %ymm0 , %ymm0
12111235 vpxor %ymm0 , %ymm15 , %ymm15
12121236 vmovdqa 96 (%r10 ), %ymm11
1213- vpshufb L_chacha20_avx2_rotl16( %rip ), %ymm15 , %ymm15
1237+ vpshufb ( %r12 ), %ymm15 , %ymm15
12141238 vpaddd %ymm15 , %ymm10 , %ymm10
12151239 vpxor %ymm10 , %ymm5 , %ymm5
12161240 vpaddd %ymm6 , %ymm1 , %ymm1
12171241 vpxor %ymm1 , %ymm12 , %ymm12
1218- vpshufb L_chacha20_avx2_rotl16( %rip ), %ymm12 , %ymm12
1242+ vpshufb ( %r12 ), %ymm12 , %ymm12
12191243 vpaddd %ymm12 , %ymm11 , %ymm11
12201244 vpxor %ymm11 , %ymm6 , %ymm6
12211245 vpaddd %ymm7 , %ymm2 , %ymm2
12221246 vpxor %ymm2 , %ymm13 , %ymm13
1223- vpshufb L_chacha20_avx2_rotl16( %rip ), %ymm13 , %ymm13
1247+ vpshufb ( %r12 ), %ymm13 , %ymm13
12241248 vpaddd %ymm13 , %ymm8 , %ymm8
12251249 vpxor %ymm8 , %ymm7 , %ymm7
12261250 vpaddd %ymm4 , %ymm3 , %ymm3
12271251 vpxor %ymm3 , %ymm14 , %ymm14
1228- vpshufb L_chacha20_avx2_rotl16( %rip ), %ymm14 , %ymm14
1252+ vpshufb ( %r12 ), %ymm14 , %ymm14
12291253 vpaddd %ymm14 , %ymm9 , %ymm9
12301254 vpxor %ymm9 , %ymm4 , %ymm4
12311255 vmovdqa %ymm11 , 96 (%r10 )
@@ -1244,22 +1268,22 @@ L_chacha20_avx2_loop256:
12441268 vpaddd %ymm5 , %ymm0 , %ymm0
12451269 vpxor %ymm0 , %ymm15 , %ymm15
12461270 vmovdqa 96 (%r10 ), %ymm11
1247- vpshufb L_chacha20_avx2_rotl8( %rip ), %ymm15 , %ymm15
1271+ vpshufb ( %r11 ), %ymm15 , %ymm15
12481272 vpaddd %ymm15 , %ymm10 , %ymm10
12491273 vpxor %ymm10 , %ymm5 , %ymm5
12501274 vpaddd %ymm6 , %ymm1 , %ymm1
12511275 vpxor %ymm1 , %ymm12 , %ymm12
1252- vpshufb L_chacha20_avx2_rotl8( %rip ), %ymm12 , %ymm12
1276+ vpshufb ( %r11 ), %ymm12 , %ymm12
12531277 vpaddd %ymm12 , %ymm11 , %ymm11
12541278 vpxor %ymm11 , %ymm6 , %ymm6
12551279 vpaddd %ymm7 , %ymm2 , %ymm2
12561280 vpxor %ymm2 , %ymm13 , %ymm13
1257- vpshufb L_chacha20_avx2_rotl8( %rip ), %ymm13 , %ymm13
1281+ vpshufb ( %r11 ), %ymm13 , %ymm13
12581282 vpaddd %ymm13 , %ymm8 , %ymm8
12591283 vpxor %ymm8 , %ymm7 , %ymm7
12601284 vpaddd %ymm4 , %ymm3 , %ymm3
12611285 vpxor %ymm3 , %ymm14 , %ymm14
1262- vpshufb L_chacha20_avx2_rotl8( %rip ), %ymm14 , %ymm14
1286+ vpshufb ( %r11 ), %ymm14 , %ymm14
12631287 vpaddd %ymm14 , %ymm9 , %ymm9
12641288 vpxor %ymm9 , %ymm4 , %ymm4
12651289 vmovdqa %ymm11 , 96 (%r10 )
@@ -1409,7 +1433,7 @@ L_chacha20_avx2_loop256:
14091433 vmovdqa 384 (%r9 ), %ymm12
14101434 addq $0x200 , %rsi
14111435 addq $0x200 , %rdx
1412- vpaddd L_chacha20_avx2_eight( %rip ), %ymm12 , %ymm12
1436+ vpaddd ( %r14 ), %ymm12 , %ymm12
14131437 subl $0x200 , %ecx
14141438 vmovdqa %ymm12 , 384 (%r9 )
14151439 cmpl $0x200 , %ecx
@@ -1440,7 +1464,11 @@ L_chacha20_avx2_end256:
14401464#else
14411465 callq _chacha_encrypt_avx1
14421466#endif /* __APPLE__ */
1443- addq $0x310 , %rsp
1467+ vzeroupper
1468+ addq $0x320 , %rsp
1469+ popq %r14
1470+ popq %r13
1471+ popq %r12
14441472 repz retq
14451473#ifndef __APPLE__
14461474.size chacha_encrypt_avx2,.-chacha_encrypt_avx2
0 commit comments