1 #if defined(__amd64) || defined(__amd64__) || defined(__x86_64__)
6 .globl crypto_stream_salsa20
7 .globl _crypto_stream_salsa20
9 .type crypto_stream_salsa20, @function
10 .type _crypto_stream_salsa20, @function
12 crypto_stream_salsa20:
13 _crypto_stream_salsa20:
42 .globl crypto_stream_salsa20_xor_ic
43 .globl _crypto_stream_salsa20_xor_ic
45 .type crypto_stream_salsa20_xor_ic, @function
46 .type _crypto_stream_salsa20_xor_ic, @function
48 crypto_stream_salsa20_xor_ic:
49 _crypto_stream_salsa20_xor_ic:
79 movl %r11d,12+64(%rsp)
101 movl %ecx,4+112(%rsp)
102 movl %r8d,8+112(%rsp)
103 movl %eax,12+112(%rsp)
105 jb ._bytesbetween1and255
106 movdqa 112(%rsp),%xmm0
107 pshufd $0x55,%xmm0,%xmm1
108 pshufd $0xaa,%xmm0,%xmm2
109 pshufd $0xff,%xmm0,%xmm3
110 pshufd $0x00,%xmm0,%xmm0
111 movdqa %xmm1,128(%rsp)
112 movdqa %xmm2,144(%rsp)
113 movdqa %xmm3,160(%rsp)
114 movdqa %xmm0,176(%rsp)
115 movdqa 64(%rsp),%xmm0
116 pshufd $0xaa,%xmm0,%xmm1
117 pshufd $0xff,%xmm0,%xmm2
118 pshufd $0x00,%xmm0,%xmm3
119 pshufd $0x55,%xmm0,%xmm0
120 movdqa %xmm1,192(%rsp)
121 movdqa %xmm2,208(%rsp)
122 movdqa %xmm3,224(%rsp)
123 movdqa %xmm0,240(%rsp)
124 movdqa 80(%rsp),%xmm0
125 pshufd $0xff,%xmm0,%xmm1
126 pshufd $0x55,%xmm0,%xmm2
127 pshufd $0xaa,%xmm0,%xmm0
128 movdqa %xmm1,256(%rsp)
129 movdqa %xmm2,272(%rsp)
130 movdqa %xmm0,288(%rsp)
131 movdqa 96(%rsp),%xmm0
132 pshufd $0x00,%xmm0,%xmm1
133 pshufd $0xaa,%xmm0,%xmm2
134 pshufd $0xff,%xmm0,%xmm0
135 movdqa %xmm1,304(%rsp)
136 movdqa %xmm2,320(%rsp)
137 movdqa %xmm0,336(%rsp)
148 movl %edx,4+352(%rsp)
149 movl %ecx,4+368(%rsp)
153 movl %edx,8+352(%rsp)
154 movl %ecx,8+368(%rsp)
158 movl %edx,12+352(%rsp)
159 movl %ecx,12+368(%rsp)
168 movdqa 128(%rsp),%xmm0
169 movdqa 144(%rsp),%xmm1
170 movdqa 160(%rsp),%xmm2
171 movdqa 320(%rsp),%xmm3
172 movdqa 336(%rsp),%xmm4
173 movdqa 192(%rsp),%xmm5
174 movdqa 208(%rsp),%xmm6
175 movdqa 240(%rsp),%xmm7
176 movdqa 256(%rsp),%xmm8
177 movdqa 272(%rsp),%xmm9
178 movdqa 288(%rsp),%xmm10
179 movdqa 368(%rsp),%xmm11
180 movdqa 176(%rsp),%xmm12
181 movdqa 224(%rsp),%xmm13
182 movdqa 304(%rsp),%xmm14
183 movdqa 352(%rsp),%xmm15
186 movdqa %xmm1,384(%rsp)
187 movdqa %xmm2,400(%rsp)
237 movdqa 384(%rsp),%xmm1
238 movdqa %xmm12,384(%rsp)
253 movdqa 400(%rsp),%xmm2
254 movdqa %xmm0,400(%rsp)
297 movdqa 384(%rsp),%xmm0
298 movdqa %xmm1,384(%rsp)
313 movdqa 400(%rsp),%xmm12
314 movdqa %xmm2,400(%rsp)
357 movdqa 384(%rsp),%xmm1
358 movdqa %xmm0,384(%rsp)
373 movdqa 400(%rsp),%xmm2
374 movdqa %xmm12,400(%rsp)
424 movdqa 384(%rsp),%xmm12
425 movdqa 400(%rsp),%xmm0
428 paddd 176(%rsp),%xmm12
429 paddd 240(%rsp),%xmm7
430 paddd 288(%rsp),%xmm10
431 paddd 336(%rsp),%xmm4
436 pshufd $0x39,%xmm12,%xmm12
437 pshufd $0x39,%xmm7,%xmm7
438 pshufd $0x39,%xmm10,%xmm10
439 pshufd $0x39,%xmm4,%xmm4
452 pshufd $0x39,%xmm12,%xmm12
453 pshufd $0x39,%xmm7,%xmm7
454 pshufd $0x39,%xmm10,%xmm10
455 pshufd $0x39,%xmm4,%xmm4
468 pshufd $0x39,%xmm12,%xmm12
469 pshufd $0x39,%xmm7,%xmm7
470 pshufd $0x39,%xmm10,%xmm10
471 pshufd $0x39,%xmm4,%xmm4
492 paddd 304(%rsp),%xmm14
493 paddd 128(%rsp),%xmm0
494 paddd 192(%rsp),%xmm5
495 paddd 256(%rsp),%xmm8
500 pshufd $0x39,%xmm14,%xmm14
501 pshufd $0x39,%xmm0,%xmm0
502 pshufd $0x39,%xmm5,%xmm5
503 pshufd $0x39,%xmm8,%xmm8
516 pshufd $0x39,%xmm14,%xmm14
517 pshufd $0x39,%xmm0,%xmm0
518 pshufd $0x39,%xmm5,%xmm5
519 pshufd $0x39,%xmm8,%xmm8
532 pshufd $0x39,%xmm14,%xmm14
533 pshufd $0x39,%xmm0,%xmm0
534 pshufd $0x39,%xmm5,%xmm5
535 pshufd $0x39,%xmm8,%xmm8
556 paddd 352(%rsp),%xmm15
557 paddd 368(%rsp),%xmm11
558 paddd 144(%rsp),%xmm1
559 paddd 208(%rsp),%xmm6
564 pshufd $0x39,%xmm15,%xmm15
565 pshufd $0x39,%xmm11,%xmm11
566 pshufd $0x39,%xmm1,%xmm1
567 pshufd $0x39,%xmm6,%xmm6
580 pshufd $0x39,%xmm15,%xmm15
581 pshufd $0x39,%xmm11,%xmm11
582 pshufd $0x39,%xmm1,%xmm1
583 pshufd $0x39,%xmm6,%xmm6
596 pshufd $0x39,%xmm15,%xmm15
597 pshufd $0x39,%xmm11,%xmm11
598 pshufd $0x39,%xmm1,%xmm1
599 pshufd $0x39,%xmm6,%xmm6
620 paddd 224(%rsp),%xmm13
621 paddd 272(%rsp),%xmm9
622 paddd 320(%rsp),%xmm3
623 paddd 160(%rsp),%xmm2
628 pshufd $0x39,%xmm13,%xmm13
629 pshufd $0x39,%xmm9,%xmm9
630 pshufd $0x39,%xmm3,%xmm3
631 pshufd $0x39,%xmm2,%xmm2
644 pshufd $0x39,%xmm13,%xmm13
645 pshufd $0x39,%xmm9,%xmm9
646 pshufd $0x39,%xmm3,%xmm3
647 pshufd $0x39,%xmm2,%xmm2
660 pshufd $0x39,%xmm13,%xmm13
661 pshufd $0x39,%xmm9,%xmm9
662 pshufd $0x39,%xmm3,%xmm3
663 pshufd $0x39,%xmm2,%xmm2
689 jae ._bytesatleast256
693 ._bytesbetween1and255:
705 movdqa 112(%rsp),%xmm0
706 movdqa 64(%rsp),%xmm1
707 movdqa 80(%rsp),%xmm2
708 movdqa 96(%rsp),%xmm3
726 pshufd $0x93,%xmm3,%xmm3
734 pshufd $0x4e,%xmm2,%xmm2
742 pshufd $0x39,%xmm1,%xmm1
757 pshufd $0x93,%xmm1,%xmm1
765 pshufd $0x4e,%xmm2,%xmm2
773 pshufd $0x39,%xmm3,%xmm3
788 pshufd $0x93,%xmm3,%xmm3
796 pshufd $0x4e,%xmm2,%xmm2
804 pshufd $0x39,%xmm1,%xmm1
819 pshufd $0x93,%xmm1,%xmm1
827 pshufd $0x4e,%xmm2,%xmm2
837 pshufd $0x39,%xmm3,%xmm3
840 paddd 112(%rsp),%xmm0
848 pshufd $0x39,%xmm0,%xmm0
849 pshufd $0x39,%xmm1,%xmm1
850 pshufd $0x39,%xmm2,%xmm2
851 pshufd $0x39,%xmm3,%xmm3
864 pshufd $0x39,%xmm0,%xmm0
865 pshufd $0x39,%xmm1,%xmm1
866 pshufd $0x39,%xmm2,%xmm2
867 pshufd $0x39,%xmm3,%xmm3
880 pshufd $0x39,%xmm0,%xmm0
881 pshufd $0x39,%xmm1,%xmm1
882 pshufd $0x39,%xmm2,%xmm2
883 pshufd $0x39,%xmm3,%xmm3
938 jmp ._bytesbetween1and255
942 #if defined(__linux__) && defined(__ELF__)
943 .section .note.GNU-stack,"",%progbits