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

Side by Side Diff: third_party/boringssl/linux-x86_64/crypto/rc4/rc4-x86_64.S

Issue 2354623003: Pull boringssl generated source from boringssl_gen (Closed)
Patch Set: . Created 4 years, 3 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
(Empty)
1 #if defined(__x86_64__)
2 .text
3 .extern OPENSSL_ia32cap_P
4 .hidden OPENSSL_ia32cap_P
5
6 .globl asm_RC4
7 .hidden asm_RC4
8 .type asm_RC4,@function
9 .align 16
10 asm_RC4:
11 orq %rsi,%rsi
12 jne .Lentry
13 .byte 0xf3,0xc3
14 .Lentry:
15 pushq %rbx
16 pushq %r12
17 pushq %r13
18 .Lprologue:
19 movq %rsi,%r11
20 movq %rdx,%r12
21 movq %rcx,%r13
22 xorq %r10,%r10
23 xorq %rcx,%rcx
24
25 leaq 8(%rdi),%rdi
26 movb -8(%rdi),%r10b
27 movb -4(%rdi),%cl
28 cmpl $-1,256(%rdi)
29 je .LRC4_CHAR
30 movl OPENSSL_ia32cap_P(%rip),%r8d
31 xorq %rbx,%rbx
32 incb %r10b
33 subq %r10,%rbx
34 subq %r12,%r13
35 movl (%rdi,%r10,4),%eax
36 testq $-16,%r11
37 jz .Lloop1
38 btl $30,%r8d
39 jc .Lintel
40 andq $7,%rbx
41 leaq 1(%r10),%rsi
42 jz .Loop8
43 subq %rbx,%r11
44 .Loop8_warmup:
45 addb %al,%cl
46 movl (%rdi,%rcx,4),%edx
47 movl %eax,(%rdi,%rcx,4)
48 movl %edx,(%rdi,%r10,4)
49 addb %dl,%al
50 incb %r10b
51 movl (%rdi,%rax,4),%edx
52 movl (%rdi,%r10,4),%eax
53 xorb (%r12),%dl
54 movb %dl,(%r12,%r13,1)
55 leaq 1(%r12),%r12
56 decq %rbx
57 jnz .Loop8_warmup
58
59 leaq 1(%r10),%rsi
60 jmp .Loop8
61 .align 16
62 .Loop8:
63 addb %al,%cl
64 movl (%rdi,%rcx,4),%edx
65 movl %eax,(%rdi,%rcx,4)
66 movl 0(%rdi,%rsi,4),%ebx
67 rorq $8,%r8
68 movl %edx,0(%rdi,%r10,4)
69 addb %al,%dl
70 movb (%rdi,%rdx,4),%r8b
71 addb %bl,%cl
72 movl (%rdi,%rcx,4),%edx
73 movl %ebx,(%rdi,%rcx,4)
74 movl 4(%rdi,%rsi,4),%eax
75 rorq $8,%r8
76 movl %edx,4(%rdi,%r10,4)
77 addb %bl,%dl
78 movb (%rdi,%rdx,4),%r8b
79 addb %al,%cl
80 movl (%rdi,%rcx,4),%edx
81 movl %eax,(%rdi,%rcx,4)
82 movl 8(%rdi,%rsi,4),%ebx
83 rorq $8,%r8
84 movl %edx,8(%rdi,%r10,4)
85 addb %al,%dl
86 movb (%rdi,%rdx,4),%r8b
87 addb %bl,%cl
88 movl (%rdi,%rcx,4),%edx
89 movl %ebx,(%rdi,%rcx,4)
90 movl 12(%rdi,%rsi,4),%eax
91 rorq $8,%r8
92 movl %edx,12(%rdi,%r10,4)
93 addb %bl,%dl
94 movb (%rdi,%rdx,4),%r8b
95 addb %al,%cl
96 movl (%rdi,%rcx,4),%edx
97 movl %eax,(%rdi,%rcx,4)
98 movl 16(%rdi,%rsi,4),%ebx
99 rorq $8,%r8
100 movl %edx,16(%rdi,%r10,4)
101 addb %al,%dl
102 movb (%rdi,%rdx,4),%r8b
103 addb %bl,%cl
104 movl (%rdi,%rcx,4),%edx
105 movl %ebx,(%rdi,%rcx,4)
106 movl 20(%rdi,%rsi,4),%eax
107 rorq $8,%r8
108 movl %edx,20(%rdi,%r10,4)
109 addb %bl,%dl
110 movb (%rdi,%rdx,4),%r8b
111 addb %al,%cl
112 movl (%rdi,%rcx,4),%edx
113 movl %eax,(%rdi,%rcx,4)
114 movl 24(%rdi,%rsi,4),%ebx
115 rorq $8,%r8
116 movl %edx,24(%rdi,%r10,4)
117 addb %al,%dl
118 movb (%rdi,%rdx,4),%r8b
119 addb $8,%sil
120 addb %bl,%cl
121 movl (%rdi,%rcx,4),%edx
122 movl %ebx,(%rdi,%rcx,4)
123 movl -4(%rdi,%rsi,4),%eax
124 rorq $8,%r8
125 movl %edx,28(%rdi,%r10,4)
126 addb %bl,%dl
127 movb (%rdi,%rdx,4),%r8b
128 addb $8,%r10b
129 rorq $8,%r8
130 subq $8,%r11
131
132 xorq (%r12),%r8
133 movq %r8,(%r12,%r13,1)
134 leaq 8(%r12),%r12
135
136 testq $-8,%r11
137 jnz .Loop8
138 cmpq $0,%r11
139 jne .Lloop1
140 jmp .Lexit
141
142 .align 16
143 .Lintel:
144 testq $-32,%r11
145 jz .Lloop1
146 andq $15,%rbx
147 jz .Loop16_is_hot
148 subq %rbx,%r11
149 .Loop16_warmup:
150 addb %al,%cl
151 movl (%rdi,%rcx,4),%edx
152 movl %eax,(%rdi,%rcx,4)
153 movl %edx,(%rdi,%r10,4)
154 addb %dl,%al
155 incb %r10b
156 movl (%rdi,%rax,4),%edx
157 movl (%rdi,%r10,4),%eax
158 xorb (%r12),%dl
159 movb %dl,(%r12,%r13,1)
160 leaq 1(%r12),%r12
161 decq %rbx
162 jnz .Loop16_warmup
163
164 movq %rcx,%rbx
165 xorq %rcx,%rcx
166 movb %bl,%cl
167
168 .Loop16_is_hot:
169 leaq (%rdi,%r10,4),%rsi
170 addb %al,%cl
171 movl (%rdi,%rcx,4),%edx
172 pxor %xmm0,%xmm0
173 movl %eax,(%rdi,%rcx,4)
174 addb %dl,%al
175 movl 4(%rsi),%ebx
176 movzbl %al,%eax
177 movl %edx,0(%rsi)
178 addb %bl,%cl
179 pinsrw $0,(%rdi,%rax,4),%xmm0
180 jmp .Loop16_enter
181 .align 16
182 .Loop16:
183 addb %al,%cl
184 movl (%rdi,%rcx,4),%edx
185 pxor %xmm0,%xmm2
186 psllq $8,%xmm1
187 pxor %xmm0,%xmm0
188 movl %eax,(%rdi,%rcx,4)
189 addb %dl,%al
190 movl 4(%rsi),%ebx
191 movzbl %al,%eax
192 movl %edx,0(%rsi)
193 pxor %xmm1,%xmm2
194 addb %bl,%cl
195 pinsrw $0,(%rdi,%rax,4),%xmm0
196 movdqu %xmm2,(%r12,%r13,1)
197 leaq 16(%r12),%r12
198 .Loop16_enter:
199 movl (%rdi,%rcx,4),%edx
200 pxor %xmm1,%xmm1
201 movl %ebx,(%rdi,%rcx,4)
202 addb %dl,%bl
203 movl 8(%rsi),%eax
204 movzbl %bl,%ebx
205 movl %edx,4(%rsi)
206 addb %al,%cl
207 pinsrw $0,(%rdi,%rbx,4),%xmm1
208 movl (%rdi,%rcx,4),%edx
209 movl %eax,(%rdi,%rcx,4)
210 addb %dl,%al
211 movl 12(%rsi),%ebx
212 movzbl %al,%eax
213 movl %edx,8(%rsi)
214 addb %bl,%cl
215 pinsrw $1,(%rdi,%rax,4),%xmm0
216 movl (%rdi,%rcx,4),%edx
217 movl %ebx,(%rdi,%rcx,4)
218 addb %dl,%bl
219 movl 16(%rsi),%eax
220 movzbl %bl,%ebx
221 movl %edx,12(%rsi)
222 addb %al,%cl
223 pinsrw $1,(%rdi,%rbx,4),%xmm1
224 movl (%rdi,%rcx,4),%edx
225 movl %eax,(%rdi,%rcx,4)
226 addb %dl,%al
227 movl 20(%rsi),%ebx
228 movzbl %al,%eax
229 movl %edx,16(%rsi)
230 addb %bl,%cl
231 pinsrw $2,(%rdi,%rax,4),%xmm0
232 movl (%rdi,%rcx,4),%edx
233 movl %ebx,(%rdi,%rcx,4)
234 addb %dl,%bl
235 movl 24(%rsi),%eax
236 movzbl %bl,%ebx
237 movl %edx,20(%rsi)
238 addb %al,%cl
239 pinsrw $2,(%rdi,%rbx,4),%xmm1
240 movl (%rdi,%rcx,4),%edx
241 movl %eax,(%rdi,%rcx,4)
242 addb %dl,%al
243 movl 28(%rsi),%ebx
244 movzbl %al,%eax
245 movl %edx,24(%rsi)
246 addb %bl,%cl
247 pinsrw $3,(%rdi,%rax,4),%xmm0
248 movl (%rdi,%rcx,4),%edx
249 movl %ebx,(%rdi,%rcx,4)
250 addb %dl,%bl
251 movl 32(%rsi),%eax
252 movzbl %bl,%ebx
253 movl %edx,28(%rsi)
254 addb %al,%cl
255 pinsrw $3,(%rdi,%rbx,4),%xmm1
256 movl (%rdi,%rcx,4),%edx
257 movl %eax,(%rdi,%rcx,4)
258 addb %dl,%al
259 movl 36(%rsi),%ebx
260 movzbl %al,%eax
261 movl %edx,32(%rsi)
262 addb %bl,%cl
263 pinsrw $4,(%rdi,%rax,4),%xmm0
264 movl (%rdi,%rcx,4),%edx
265 movl %ebx,(%rdi,%rcx,4)
266 addb %dl,%bl
267 movl 40(%rsi),%eax
268 movzbl %bl,%ebx
269 movl %edx,36(%rsi)
270 addb %al,%cl
271 pinsrw $4,(%rdi,%rbx,4),%xmm1
272 movl (%rdi,%rcx,4),%edx
273 movl %eax,(%rdi,%rcx,4)
274 addb %dl,%al
275 movl 44(%rsi),%ebx
276 movzbl %al,%eax
277 movl %edx,40(%rsi)
278 addb %bl,%cl
279 pinsrw $5,(%rdi,%rax,4),%xmm0
280 movl (%rdi,%rcx,4),%edx
281 movl %ebx,(%rdi,%rcx,4)
282 addb %dl,%bl
283 movl 48(%rsi),%eax
284 movzbl %bl,%ebx
285 movl %edx,44(%rsi)
286 addb %al,%cl
287 pinsrw $5,(%rdi,%rbx,4),%xmm1
288 movl (%rdi,%rcx,4),%edx
289 movl %eax,(%rdi,%rcx,4)
290 addb %dl,%al
291 movl 52(%rsi),%ebx
292 movzbl %al,%eax
293 movl %edx,48(%rsi)
294 addb %bl,%cl
295 pinsrw $6,(%rdi,%rax,4),%xmm0
296 movl (%rdi,%rcx,4),%edx
297 movl %ebx,(%rdi,%rcx,4)
298 addb %dl,%bl
299 movl 56(%rsi),%eax
300 movzbl %bl,%ebx
301 movl %edx,52(%rsi)
302 addb %al,%cl
303 pinsrw $6,(%rdi,%rbx,4),%xmm1
304 movl (%rdi,%rcx,4),%edx
305 movl %eax,(%rdi,%rcx,4)
306 addb %dl,%al
307 movl 60(%rsi),%ebx
308 movzbl %al,%eax
309 movl %edx,56(%rsi)
310 addb %bl,%cl
311 pinsrw $7,(%rdi,%rax,4),%xmm0
312 addb $16,%r10b
313 movdqu (%r12),%xmm2
314 movl (%rdi,%rcx,4),%edx
315 movl %ebx,(%rdi,%rcx,4)
316 addb %dl,%bl
317 movzbl %bl,%ebx
318 movl %edx,60(%rsi)
319 leaq (%rdi,%r10,4),%rsi
320 pinsrw $7,(%rdi,%rbx,4),%xmm1
321 movl (%rsi),%eax
322 movq %rcx,%rbx
323 xorq %rcx,%rcx
324 subq $16,%r11
325 movb %bl,%cl
326 testq $-16,%r11
327 jnz .Loop16
328
329 psllq $8,%xmm1
330 pxor %xmm0,%xmm2
331 pxor %xmm1,%xmm2
332 movdqu %xmm2,(%r12,%r13,1)
333 leaq 16(%r12),%r12
334
335 cmpq $0,%r11
336 jne .Lloop1
337 jmp .Lexit
338
339 .align 16
340 .Lloop1:
341 addb %al,%cl
342 movl (%rdi,%rcx,4),%edx
343 movl %eax,(%rdi,%rcx,4)
344 movl %edx,(%rdi,%r10,4)
345 addb %dl,%al
346 incb %r10b
347 movl (%rdi,%rax,4),%edx
348 movl (%rdi,%r10,4),%eax
349 xorb (%r12),%dl
350 movb %dl,(%r12,%r13,1)
351 leaq 1(%r12),%r12
352 decq %r11
353 jnz .Lloop1
354 jmp .Lexit
355
356 .align 16
357 .LRC4_CHAR:
358 addb $1,%r10b
359 movzbl (%rdi,%r10,1),%eax
360 testq $-8,%r11
361 jz .Lcloop1
362 jmp .Lcloop8
363 .align 16
364 .Lcloop8:
365 movl (%r12),%r8d
366 movl 4(%r12),%r9d
367 addb %al,%cl
368 leaq 1(%r10),%rsi
369 movzbl (%rdi,%rcx,1),%edx
370 movzbl %sil,%esi
371 movzbl (%rdi,%rsi,1),%ebx
372 movb %al,(%rdi,%rcx,1)
373 cmpq %rsi,%rcx
374 movb %dl,(%rdi,%r10,1)
375 jne .Lcmov0
376 movq %rax,%rbx
377 .Lcmov0:
378 addb %al,%dl
379 xorb (%rdi,%rdx,1),%r8b
380 rorl $8,%r8d
381 addb %bl,%cl
382 leaq 1(%rsi),%r10
383 movzbl (%rdi,%rcx,1),%edx
384 movzbl %r10b,%r10d
385 movzbl (%rdi,%r10,1),%eax
386 movb %bl,(%rdi,%rcx,1)
387 cmpq %r10,%rcx
388 movb %dl,(%rdi,%rsi,1)
389 jne .Lcmov1
390 movq %rbx,%rax
391 .Lcmov1:
392 addb %bl,%dl
393 xorb (%rdi,%rdx,1),%r8b
394 rorl $8,%r8d
395 addb %al,%cl
396 leaq 1(%r10),%rsi
397 movzbl (%rdi,%rcx,1),%edx
398 movzbl %sil,%esi
399 movzbl (%rdi,%rsi,1),%ebx
400 movb %al,(%rdi,%rcx,1)
401 cmpq %rsi,%rcx
402 movb %dl,(%rdi,%r10,1)
403 jne .Lcmov2
404 movq %rax,%rbx
405 .Lcmov2:
406 addb %al,%dl
407 xorb (%rdi,%rdx,1),%r8b
408 rorl $8,%r8d
409 addb %bl,%cl
410 leaq 1(%rsi),%r10
411 movzbl (%rdi,%rcx,1),%edx
412 movzbl %r10b,%r10d
413 movzbl (%rdi,%r10,1),%eax
414 movb %bl,(%rdi,%rcx,1)
415 cmpq %r10,%rcx
416 movb %dl,(%rdi,%rsi,1)
417 jne .Lcmov3
418 movq %rbx,%rax
419 .Lcmov3:
420 addb %bl,%dl
421 xorb (%rdi,%rdx,1),%r8b
422 rorl $8,%r8d
423 addb %al,%cl
424 leaq 1(%r10),%rsi
425 movzbl (%rdi,%rcx,1),%edx
426 movzbl %sil,%esi
427 movzbl (%rdi,%rsi,1),%ebx
428 movb %al,(%rdi,%rcx,1)
429 cmpq %rsi,%rcx
430 movb %dl,(%rdi,%r10,1)
431 jne .Lcmov4
432 movq %rax,%rbx
433 .Lcmov4:
434 addb %al,%dl
435 xorb (%rdi,%rdx,1),%r9b
436 rorl $8,%r9d
437 addb %bl,%cl
438 leaq 1(%rsi),%r10
439 movzbl (%rdi,%rcx,1),%edx
440 movzbl %r10b,%r10d
441 movzbl (%rdi,%r10,1),%eax
442 movb %bl,(%rdi,%rcx,1)
443 cmpq %r10,%rcx
444 movb %dl,(%rdi,%rsi,1)
445 jne .Lcmov5
446 movq %rbx,%rax
447 .Lcmov5:
448 addb %bl,%dl
449 xorb (%rdi,%rdx,1),%r9b
450 rorl $8,%r9d
451 addb %al,%cl
452 leaq 1(%r10),%rsi
453 movzbl (%rdi,%rcx,1),%edx
454 movzbl %sil,%esi
455 movzbl (%rdi,%rsi,1),%ebx
456 movb %al,(%rdi,%rcx,1)
457 cmpq %rsi,%rcx
458 movb %dl,(%rdi,%r10,1)
459 jne .Lcmov6
460 movq %rax,%rbx
461 .Lcmov6:
462 addb %al,%dl
463 xorb (%rdi,%rdx,1),%r9b
464 rorl $8,%r9d
465 addb %bl,%cl
466 leaq 1(%rsi),%r10
467 movzbl (%rdi,%rcx,1),%edx
468 movzbl %r10b,%r10d
469 movzbl (%rdi,%r10,1),%eax
470 movb %bl,(%rdi,%rcx,1)
471 cmpq %r10,%rcx
472 movb %dl,(%rdi,%rsi,1)
473 jne .Lcmov7
474 movq %rbx,%rax
475 .Lcmov7:
476 addb %bl,%dl
477 xorb (%rdi,%rdx,1),%r9b
478 rorl $8,%r9d
479 leaq -8(%r11),%r11
480 movl %r8d,(%r13)
481 leaq 8(%r12),%r12
482 movl %r9d,4(%r13)
483 leaq 8(%r13),%r13
484
485 testq $-8,%r11
486 jnz .Lcloop8
487 cmpq $0,%r11
488 jne .Lcloop1
489 jmp .Lexit
490 .align 16
491 .Lcloop1:
492 addb %al,%cl
493 movzbl %cl,%ecx
494 movzbl (%rdi,%rcx,1),%edx
495 movb %al,(%rdi,%rcx,1)
496 movb %dl,(%rdi,%r10,1)
497 addb %al,%dl
498 addb $1,%r10b
499 movzbl %dl,%edx
500 movzbl %r10b,%r10d
501 movzbl (%rdi,%rdx,1),%edx
502 movzbl (%rdi,%r10,1),%eax
503 xorb (%r12),%dl
504 leaq 1(%r12),%r12
505 movb %dl,(%r13)
506 leaq 1(%r13),%r13
507 subq $1,%r11
508 jnz .Lcloop1
509 jmp .Lexit
510
511 .align 16
512 .Lexit:
513 subb $1,%r10b
514 movl %r10d,-8(%rdi)
515 movl %ecx,-4(%rdi)
516
517 movq (%rsp),%r13
518 movq 8(%rsp),%r12
519 movq 16(%rsp),%rbx
520 addq $24,%rsp
521 .Lepilogue:
522 .byte 0xf3,0xc3
523 .size asm_RC4,.-asm_RC4
524 .globl asm_RC4_set_key
525 .hidden asm_RC4_set_key
526 .type asm_RC4_set_key,@function
527 .align 16
528 asm_RC4_set_key:
529 leaq 8(%rdi),%rdi
530 leaq (%rdx,%rsi,1),%rdx
531 negq %rsi
532 movq %rsi,%rcx
533 xorl %eax,%eax
534 xorq %r9,%r9
535 xorq %r10,%r10
536 xorq %r11,%r11
537
538 movl OPENSSL_ia32cap_P(%rip),%r8d
539 btl $20,%r8d
540 jc .Lc1stloop
541 jmp .Lw1stloop
542
543 .align 16
544 .Lw1stloop:
545 movl %eax,(%rdi,%rax,4)
546 addb $1,%al
547 jnc .Lw1stloop
548
549 xorq %r9,%r9
550 xorq %r8,%r8
551 .align 16
552 .Lw2ndloop:
553 movl (%rdi,%r9,4),%r10d
554 addb (%rdx,%rsi,1),%r8b
555 addb %r10b,%r8b
556 addq $1,%rsi
557 movl (%rdi,%r8,4),%r11d
558 cmovzq %rcx,%rsi
559 movl %r10d,(%rdi,%r8,4)
560 movl %r11d,(%rdi,%r9,4)
561 addb $1,%r9b
562 jnc .Lw2ndloop
563 jmp .Lexit_key
564
565 .align 16
566 .Lc1stloop:
567 movb %al,(%rdi,%rax,1)
568 addb $1,%al
569 jnc .Lc1stloop
570
571 xorq %r9,%r9
572 xorq %r8,%r8
573 .align 16
574 .Lc2ndloop:
575 movb (%rdi,%r9,1),%r10b
576 addb (%rdx,%rsi,1),%r8b
577 addb %r10b,%r8b
578 addq $1,%rsi
579 movb (%rdi,%r8,1),%r11b
580 jnz .Lcnowrap
581 movq %rcx,%rsi
582 .Lcnowrap:
583 movb %r10b,(%rdi,%r8,1)
584 movb %r11b,(%rdi,%r9,1)
585 addb $1,%r9b
586 jnc .Lc2ndloop
587 movl $-1,256(%rdi)
588
589 .align 16
590 .Lexit_key:
591 xorl %eax,%eax
592 movl %eax,-8(%rdi)
593 movl %eax,-4(%rdi)
594 .byte 0xf3,0xc3
595 .size asm_RC4_set_key,.-asm_RC4_set_key
596 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698