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

Side by Side Diff: mac-x86_64/crypto/rc4/rc4-x86_64.S

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

Powered by Google App Engine
This is Rietveld 408576698