2 #if defined(__amd64) || defined(__amd64__) || defined(__x86_64__)
7 .globl _crypto_stream_salsa20
8 .globl crypto_stream_salsa20
9 _crypto_stream_salsa20
:
10 crypto_stream_salsa20
:
39 .globl _crypto_stream_salsa20_xor
40 .globl crypto_stream_salsa20_xor
41 _crypto_stream_salsa20_xor
:
42 crypto_stream_salsa20_xor
:
96 jb
._bytesbetween1and255
99 pshufd $
0x55,%xmm0
,%xmm1
100 pshufd $
0xaa,%xmm0
,%xmm2
101 pshufd $
0xff,%xmm0
,%xmm3
102 pshufd $
0x00,%xmm0
,%xmm0
103 movdqa
%xmm1
,64(%rsp
)
104 movdqa
%xmm2
,80(%rsp
)
105 movdqa
%xmm3
,96(%rsp
)
106 movdqa
%xmm0
,112(%rsp
)
108 pshufd $
0xaa,%xmm0
,%xmm1
109 pshufd $
0xff,%xmm0
,%xmm2
110 pshufd $
0x00,%xmm0
,%xmm3
111 pshufd $
0x55,%xmm0
,%xmm0
112 movdqa
%xmm1
,128(%rsp
)
113 movdqa
%xmm2
,144(%rsp
)
114 movdqa
%xmm3
,160(%rsp
)
115 movdqa
%xmm0
,176(%rsp
)
116 movdqa
16(%rsp
),%xmm0
117 pshufd $
0xff,%xmm0
,%xmm1
118 pshufd $
0x55,%xmm0
,%xmm2
119 pshufd $
0xaa,%xmm0
,%xmm0
120 movdqa
%xmm1
,192(%rsp
)
121 movdqa
%xmm2
,208(%rsp
)
122 movdqa
%xmm0
,224(%rsp
)
123 movdqa
32(%rsp
),%xmm0
124 pshufd $
0x00,%xmm0
,%xmm1
125 pshufd $
0xaa,%xmm0
,%xmm2
126 pshufd $
0xff,%xmm0
,%xmm0
127 movdqa
%xmm1
,240(%rsp
)
128 movdqa
%xmm2
,256(%rsp
)
129 movdqa
%xmm0
,272(%rsp
)
141 movl
%edx
,4+288(%rsp
)
142 movl
%ecx
,4+304(%rsp
)
148 movl
%edx
,8+288(%rsp
)
149 movl
%ecx
,8+304(%rsp
)
155 movl
%edx
,12+288(%rsp
)
156 movl
%ecx
,12+304(%rsp
)
166 movdqa
64(%rsp
),%xmm0
167 movdqa
80(%rsp
),%xmm1
168 movdqa
96(%rsp
),%xmm2
169 movdqa
256(%rsp
),%xmm3
170 movdqa
272(%rsp
),%xmm4
171 movdqa
128(%rsp
),%xmm5
172 movdqa
144(%rsp
),%xmm6
173 movdqa
176(%rsp
),%xmm7
174 movdqa
192(%rsp
),%xmm8
175 movdqa
208(%rsp
),%xmm9
176 movdqa
224(%rsp
),%xmm10
177 movdqa
304(%rsp
),%xmm11
178 movdqa
112(%rsp
),%xmm12
179 movdqa
160(%rsp
),%xmm13
180 movdqa
240(%rsp
),%xmm14
181 movdqa
288(%rsp
),%xmm15
184 movdqa
%xmm1
,320(%rsp
)
185 movdqa
%xmm2
,336(%rsp
)
235 movdqa
320(%rsp
),%xmm1
236 movdqa
%xmm12
,320(%rsp
)
251 movdqa
336(%rsp
),%xmm2
252 movdqa
%xmm0
,336(%rsp
)
295 movdqa
320(%rsp
),%xmm0
296 movdqa
%xmm1
,320(%rsp
)
311 movdqa
336(%rsp
),%xmm12
312 movdqa
%xmm2
,336(%rsp
)
355 movdqa
320(%rsp
),%xmm1
356 movdqa
%xmm0
,320(%rsp
)
371 movdqa
336(%rsp
),%xmm2
372 movdqa
%xmm12
,336(%rsp
)
422 movdqa
320(%rsp
),%xmm12
423 movdqa
336(%rsp
),%xmm0
427 paddd
112(%rsp
),%xmm12
428 paddd
176(%rsp
),%xmm7
429 paddd
224(%rsp
),%xmm10
430 paddd
272(%rsp
),%xmm4
435 pshufd $
0x39,%xmm12
,%xmm12
436 pshufd $
0x39,%xmm7
,%xmm7
437 pshufd $
0x39,%xmm10
,%xmm10
438 pshufd $
0x39,%xmm4
,%xmm4
451 pshufd $
0x39,%xmm12
,%xmm12
452 pshufd $
0x39,%xmm7
,%xmm7
453 pshufd $
0x39,%xmm10
,%xmm10
454 pshufd $
0x39,%xmm4
,%xmm4
467 pshufd $
0x39,%xmm12
,%xmm12
468 pshufd $
0x39,%xmm7
,%xmm7
469 pshufd $
0x39,%xmm10
,%xmm10
470 pshufd $
0x39,%xmm4
,%xmm4
491 paddd
240(%rsp
),%xmm14
493 paddd
128(%rsp
),%xmm5
494 paddd
192(%rsp
),%xmm8
499 pshufd $
0x39,%xmm14
,%xmm14
500 pshufd $
0x39,%xmm0
,%xmm0
501 pshufd $
0x39,%xmm5
,%xmm5
502 pshufd $
0x39,%xmm8
,%xmm8
515 pshufd $
0x39,%xmm14
,%xmm14
516 pshufd $
0x39,%xmm0
,%xmm0
517 pshufd $
0x39,%xmm5
,%xmm5
518 pshufd $
0x39,%xmm8
,%xmm8
531 pshufd $
0x39,%xmm14
,%xmm14
532 pshufd $
0x39,%xmm0
,%xmm0
533 pshufd $
0x39,%xmm5
,%xmm5
534 pshufd $
0x39,%xmm8
,%xmm8
555 paddd
288(%rsp
),%xmm15
556 paddd
304(%rsp
),%xmm11
558 paddd
144(%rsp
),%xmm6
563 pshufd $
0x39,%xmm15
,%xmm15
564 pshufd $
0x39,%xmm11
,%xmm11
565 pshufd $
0x39,%xmm1
,%xmm1
566 pshufd $
0x39,%xmm6
,%xmm6
579 pshufd $
0x39,%xmm15
,%xmm15
580 pshufd $
0x39,%xmm11
,%xmm11
581 pshufd $
0x39,%xmm1
,%xmm1
582 pshufd $
0x39,%xmm6
,%xmm6
595 pshufd $
0x39,%xmm15
,%xmm15
596 pshufd $
0x39,%xmm11
,%xmm11
597 pshufd $
0x39,%xmm1
,%xmm1
598 pshufd $
0x39,%xmm6
,%xmm6
619 paddd
160(%rsp
),%xmm13
620 paddd
208(%rsp
),%xmm9
621 paddd
256(%rsp
),%xmm3
627 pshufd $
0x39,%xmm13
,%xmm13
628 pshufd $
0x39,%xmm9
,%xmm9
629 pshufd $
0x39,%xmm3
,%xmm3
630 pshufd $
0x39,%xmm2
,%xmm2
643 pshufd $
0x39,%xmm13
,%xmm13
644 pshufd $
0x39,%xmm9
,%xmm9
645 pshufd $
0x39,%xmm3
,%xmm3
646 pshufd $
0x39,%xmm2
,%xmm2
659 pshufd $
0x39,%xmm13
,%xmm13
660 pshufd $
0x39,%xmm9
,%xmm9
661 pshufd $
0x39,%xmm3
,%xmm3
662 pshufd $
0x39,%xmm2
,%xmm2
688 jae
._bytesatleast256
693 ._bytesbetween1and255:
706 movdqa
48(%rsp
),%xmm0
708 movdqa
16(%rsp
),%xmm2
709 movdqa
32(%rsp
),%xmm3
727 pshufd $
0x93,%xmm3
,%xmm3
735 pshufd $
0x4e,%xmm2
,%xmm2
743 pshufd $
0x39,%xmm1
,%xmm1
758 pshufd $
0x93,%xmm1
,%xmm1
766 pshufd $
0x4e,%xmm2
,%xmm2
774 pshufd $
0x39,%xmm3
,%xmm3
789 pshufd $
0x93,%xmm3
,%xmm3
797 pshufd $
0x4e,%xmm2
,%xmm2
805 pshufd $
0x39,%xmm1
,%xmm1
820 pshufd $
0x93,%xmm1
,%xmm1
828 pshufd $
0x4e,%xmm2
,%xmm2
838 pshufd $
0x39,%xmm3
,%xmm3
850 pshufd $
0x39,%xmm0
,%xmm0
851 pshufd $
0x39,%xmm1
,%xmm1
852 pshufd $
0x39,%xmm2
,%xmm2
853 pshufd $
0x39,%xmm3
,%xmm3
866 pshufd $
0x39,%xmm0
,%xmm0
867 pshufd $
0x39,%xmm1
,%xmm1
868 pshufd $
0x39,%xmm2
,%xmm2
869 pshufd $
0x39,%xmm3
,%xmm3
882 pshufd $
0x39,%xmm0
,%xmm0
883 pshufd $
0x39,%xmm1
,%xmm1
884 pshufd $
0x39,%xmm2
,%xmm2
885 pshufd $
0x39,%xmm3
,%xmm3
945 jmp
._bytesbetween1and255