if_iwm - Recognize IWM_FW_PAGING_BLOCK_CMD wide cmd response correctly.
[dragonfly.git] / lib / libcrypto / asm / aesni-mb-x86_64.s
blobd5373dca13b20dd856053e262185c0a22210064f
1 .text
5 .globl aesni_multi_cbc_encrypt
6 .type aesni_multi_cbc_encrypt,@function
7 .align 32
8 aesni_multi_cbc_encrypt:
9 cmpl $2,%edx
10 jb .Lenc_non_avx
11 movl OPENSSL_ia32cap_P+4(%rip),%ecx
12 testl $268435456,%ecx
13 jnz _avx_cbc_enc_shortcut
14 jmp .Lenc_non_avx
15 .align 16
16 .Lenc_non_avx:
17 movq %rsp,%rax
18 pushq %rbx
19 pushq %rbp
20 pushq %r12
21 pushq %r13
22 pushq %r14
23 pushq %r15
30 subq $48,%rsp
31 andq $-64,%rsp
32 movq %rax,16(%rsp)
34 .Lenc4x_body:
35 movdqu (%rsi),%xmm12
36 leaq 120(%rsi),%rsi
37 leaq 80(%rdi),%rdi
39 .Lenc4x_loop_grande:
40 movl %edx,24(%rsp)
41 xorl %edx,%edx
42 movl -64(%rdi),%ecx
43 movq -80(%rdi),%r8
44 cmpl %edx,%ecx
45 movq -72(%rdi),%r12
46 cmovgl %ecx,%edx
47 testl %ecx,%ecx
48 movdqu -56(%rdi),%xmm2
49 movl %ecx,32(%rsp)
50 cmovleq %rsp,%r8
51 movl -24(%rdi),%ecx
52 movq -40(%rdi),%r9
53 cmpl %edx,%ecx
54 movq -32(%rdi),%r13
55 cmovgl %ecx,%edx
56 testl %ecx,%ecx
57 movdqu -16(%rdi),%xmm3
58 movl %ecx,36(%rsp)
59 cmovleq %rsp,%r9
60 movl 16(%rdi),%ecx
61 movq 0(%rdi),%r10
62 cmpl %edx,%ecx
63 movq 8(%rdi),%r14
64 cmovgl %ecx,%edx
65 testl %ecx,%ecx
66 movdqu 24(%rdi),%xmm4
67 movl %ecx,40(%rsp)
68 cmovleq %rsp,%r10
69 movl 56(%rdi),%ecx
70 movq 40(%rdi),%r11
71 cmpl %edx,%ecx
72 movq 48(%rdi),%r15
73 cmovgl %ecx,%edx
74 testl %ecx,%ecx
75 movdqu 64(%rdi),%xmm5
76 movl %ecx,44(%rsp)
77 cmovleq %rsp,%r11
78 testl %edx,%edx
79 jz .Lenc4x_done
81 movups 16-120(%rsi),%xmm1
82 pxor %xmm12,%xmm2
83 movups 32-120(%rsi),%xmm0
84 pxor %xmm12,%xmm3
85 movl 240-120(%rsi),%eax
86 pxor %xmm12,%xmm4
87 movdqu (%r8),%xmm6
88 pxor %xmm12,%xmm5
89 movdqu (%r9),%xmm7
90 pxor %xmm6,%xmm2
91 movdqu (%r10),%xmm8
92 pxor %xmm7,%xmm3
93 movdqu (%r11),%xmm9
94 pxor %xmm8,%xmm4
95 pxor %xmm9,%xmm5
96 movdqa 32(%rsp),%xmm10
97 xorq %rbx,%rbx
98 jmp .Loop_enc4x
100 .align 32
101 .Loop_enc4x:
102 addq $16,%rbx
103 leaq 16(%rsp),%rbp
104 movl $1,%ecx
105 subq %rbx,%rbp
107 .byte 102,15,56,220,209
108 prefetcht0 31(%r8,%rbx,1)
109 prefetcht0 31(%r9,%rbx,1)
110 .byte 102,15,56,220,217
111 prefetcht0 31(%r10,%rbx,1)
112 prefetcht0 31(%r10,%rbx,1)
113 .byte 102,15,56,220,225
114 .byte 102,15,56,220,233
115 movups 48-120(%rsi),%xmm1
116 cmpl 32(%rsp),%ecx
117 .byte 102,15,56,220,208
118 .byte 102,15,56,220,216
119 .byte 102,15,56,220,224
120 cmovgeq %rbp,%r8
121 cmovgq %rbp,%r12
122 .byte 102,15,56,220,232
123 movups -56(%rsi),%xmm0
124 cmpl 36(%rsp),%ecx
125 .byte 102,15,56,220,209
126 .byte 102,15,56,220,217
127 .byte 102,15,56,220,225
128 cmovgeq %rbp,%r9
129 cmovgq %rbp,%r13
130 .byte 102,15,56,220,233
131 movups -40(%rsi),%xmm1
132 cmpl 40(%rsp),%ecx
133 .byte 102,15,56,220,208
134 .byte 102,15,56,220,216
135 .byte 102,15,56,220,224
136 cmovgeq %rbp,%r10
137 cmovgq %rbp,%r14
138 .byte 102,15,56,220,232
139 movups -24(%rsi),%xmm0
140 cmpl 44(%rsp),%ecx
141 .byte 102,15,56,220,209
142 .byte 102,15,56,220,217
143 .byte 102,15,56,220,225
144 cmovgeq %rbp,%r11
145 cmovgq %rbp,%r15
146 .byte 102,15,56,220,233
147 movups -8(%rsi),%xmm1
148 movdqa %xmm10,%xmm11
149 .byte 102,15,56,220,208
150 prefetcht0 15(%r12,%rbx,1)
151 prefetcht0 15(%r13,%rbx,1)
152 .byte 102,15,56,220,216
153 prefetcht0 15(%r14,%rbx,1)
154 prefetcht0 15(%r15,%rbx,1)
155 .byte 102,15,56,220,224
156 .byte 102,15,56,220,232
157 movups 128-120(%rsi),%xmm0
158 pxor %xmm12,%xmm12
160 .byte 102,15,56,220,209
161 pcmpgtd %xmm12,%xmm11
162 movdqu -120(%rsi),%xmm12
163 .byte 102,15,56,220,217
164 paddd %xmm11,%xmm10
165 movdqa %xmm10,32(%rsp)
166 .byte 102,15,56,220,225
167 .byte 102,15,56,220,233
168 movups 144-120(%rsi),%xmm1
170 cmpl $11,%eax
172 .byte 102,15,56,220,208
173 .byte 102,15,56,220,216
174 .byte 102,15,56,220,224
175 .byte 102,15,56,220,232
176 movups 160-120(%rsi),%xmm0
178 jb .Lenc4x_tail
180 .byte 102,15,56,220,209
181 .byte 102,15,56,220,217
182 .byte 102,15,56,220,225
183 .byte 102,15,56,220,233
184 movups 176-120(%rsi),%xmm1
186 .byte 102,15,56,220,208
187 .byte 102,15,56,220,216
188 .byte 102,15,56,220,224
189 .byte 102,15,56,220,232
190 movups 192-120(%rsi),%xmm0
192 je .Lenc4x_tail
194 .byte 102,15,56,220,209
195 .byte 102,15,56,220,217
196 .byte 102,15,56,220,225
197 .byte 102,15,56,220,233
198 movups 208-120(%rsi),%xmm1
200 .byte 102,15,56,220,208
201 .byte 102,15,56,220,216
202 .byte 102,15,56,220,224
203 .byte 102,15,56,220,232
204 movups 224-120(%rsi),%xmm0
205 jmp .Lenc4x_tail
207 .align 32
208 .Lenc4x_tail:
209 .byte 102,15,56,220,209
210 .byte 102,15,56,220,217
211 .byte 102,15,56,220,225
212 .byte 102,15,56,220,233
213 movdqu (%r8,%rbx,1),%xmm6
214 movdqu 16-120(%rsi),%xmm1
216 .byte 102,15,56,221,208
217 movdqu (%r9,%rbx,1),%xmm7
218 pxor %xmm12,%xmm6
219 .byte 102,15,56,221,216
220 movdqu (%r10,%rbx,1),%xmm8
221 pxor %xmm12,%xmm7
222 .byte 102,15,56,221,224
223 movdqu (%r11,%rbx,1),%xmm9
224 pxor %xmm12,%xmm8
225 .byte 102,15,56,221,232
226 movdqu 32-120(%rsi),%xmm0
227 pxor %xmm12,%xmm9
229 movups %xmm2,-16(%r12,%rbx,1)
230 pxor %xmm6,%xmm2
231 movups %xmm3,-16(%r13,%rbx,1)
232 pxor %xmm7,%xmm3
233 movups %xmm4,-16(%r14,%rbx,1)
234 pxor %xmm8,%xmm4
235 movups %xmm5,-16(%r15,%rbx,1)
236 pxor %xmm9,%xmm5
238 decl %edx
239 jnz .Loop_enc4x
241 movq 16(%rsp),%rax
242 movl 24(%rsp),%edx
253 leaq 160(%rdi),%rdi
254 decl %edx
255 jnz .Lenc4x_loop_grande
257 .Lenc4x_done:
258 movq -48(%rax),%r15
259 movq -40(%rax),%r14
260 movq -32(%rax),%r13
261 movq -24(%rax),%r12
262 movq -16(%rax),%rbp
263 movq -8(%rax),%rbx
264 leaq (%rax),%rsp
265 .Lenc4x_epilogue:
266 .byte 0xf3,0xc3
267 .size aesni_multi_cbc_encrypt,.-aesni_multi_cbc_encrypt
269 .globl aesni_multi_cbc_decrypt
270 .type aesni_multi_cbc_decrypt,@function
271 .align 32
272 aesni_multi_cbc_decrypt:
273 cmpl $2,%edx
274 jb .Ldec_non_avx
275 movl OPENSSL_ia32cap_P+4(%rip),%ecx
276 testl $268435456,%ecx
277 jnz _avx_cbc_dec_shortcut
278 jmp .Ldec_non_avx
279 .align 16
280 .Ldec_non_avx:
281 movq %rsp,%rax
282 pushq %rbx
283 pushq %rbp
284 pushq %r12
285 pushq %r13
286 pushq %r14
287 pushq %r15
294 subq $48,%rsp
295 andq $-64,%rsp
296 movq %rax,16(%rsp)
298 .Ldec4x_body:
299 movdqu (%rsi),%xmm12
300 leaq 120(%rsi),%rsi
301 leaq 80(%rdi),%rdi
303 .Ldec4x_loop_grande:
304 movl %edx,24(%rsp)
305 xorl %edx,%edx
306 movl -64(%rdi),%ecx
307 movq -80(%rdi),%r8
308 cmpl %edx,%ecx
309 movq -72(%rdi),%r12
310 cmovgl %ecx,%edx
311 testl %ecx,%ecx
312 movdqu -56(%rdi),%xmm6
313 movl %ecx,32(%rsp)
314 cmovleq %rsp,%r8
315 movl -24(%rdi),%ecx
316 movq -40(%rdi),%r9
317 cmpl %edx,%ecx
318 movq -32(%rdi),%r13
319 cmovgl %ecx,%edx
320 testl %ecx,%ecx
321 movdqu -16(%rdi),%xmm7
322 movl %ecx,36(%rsp)
323 cmovleq %rsp,%r9
324 movl 16(%rdi),%ecx
325 movq 0(%rdi),%r10
326 cmpl %edx,%ecx
327 movq 8(%rdi),%r14
328 cmovgl %ecx,%edx
329 testl %ecx,%ecx
330 movdqu 24(%rdi),%xmm8
331 movl %ecx,40(%rsp)
332 cmovleq %rsp,%r10
333 movl 56(%rdi),%ecx
334 movq 40(%rdi),%r11
335 cmpl %edx,%ecx
336 movq 48(%rdi),%r15
337 cmovgl %ecx,%edx
338 testl %ecx,%ecx
339 movdqu 64(%rdi),%xmm9
340 movl %ecx,44(%rsp)
341 cmovleq %rsp,%r11
342 testl %edx,%edx
343 jz .Ldec4x_done
345 movups 16-120(%rsi),%xmm1
346 movups 32-120(%rsi),%xmm0
347 movl 240-120(%rsi),%eax
348 movdqu (%r8),%xmm2
349 movdqu (%r9),%xmm3
350 pxor %xmm12,%xmm2
351 movdqu (%r10),%xmm4
352 pxor %xmm12,%xmm3
353 movdqu (%r11),%xmm5
354 pxor %xmm12,%xmm4
355 pxor %xmm12,%xmm5
356 movdqa 32(%rsp),%xmm10
357 xorq %rbx,%rbx
358 jmp .Loop_dec4x
360 .align 32
361 .Loop_dec4x:
362 addq $16,%rbx
363 leaq 16(%rsp),%rbp
364 movl $1,%ecx
365 subq %rbx,%rbp
367 .byte 102,15,56,222,209
368 prefetcht0 31(%r8,%rbx,1)
369 prefetcht0 31(%r9,%rbx,1)
370 .byte 102,15,56,222,217
371 prefetcht0 31(%r10,%rbx,1)
372 prefetcht0 31(%r11,%rbx,1)
373 .byte 102,15,56,222,225
374 .byte 102,15,56,222,233
375 movups 48-120(%rsi),%xmm1
376 cmpl 32(%rsp),%ecx
377 .byte 102,15,56,222,208
378 .byte 102,15,56,222,216
379 .byte 102,15,56,222,224
380 cmovgeq %rbp,%r8
381 cmovgq %rbp,%r12
382 .byte 102,15,56,222,232
383 movups -56(%rsi),%xmm0
384 cmpl 36(%rsp),%ecx
385 .byte 102,15,56,222,209
386 .byte 102,15,56,222,217
387 .byte 102,15,56,222,225
388 cmovgeq %rbp,%r9
389 cmovgq %rbp,%r13
390 .byte 102,15,56,222,233
391 movups -40(%rsi),%xmm1
392 cmpl 40(%rsp),%ecx
393 .byte 102,15,56,222,208
394 .byte 102,15,56,222,216
395 .byte 102,15,56,222,224
396 cmovgeq %rbp,%r10
397 cmovgq %rbp,%r14
398 .byte 102,15,56,222,232
399 movups -24(%rsi),%xmm0
400 cmpl 44(%rsp),%ecx
401 .byte 102,15,56,222,209
402 .byte 102,15,56,222,217
403 .byte 102,15,56,222,225
404 cmovgeq %rbp,%r11
405 cmovgq %rbp,%r15
406 .byte 102,15,56,222,233
407 movups -8(%rsi),%xmm1
408 movdqa %xmm10,%xmm11
409 .byte 102,15,56,222,208
410 prefetcht0 15(%r12,%rbx,1)
411 prefetcht0 15(%r13,%rbx,1)
412 .byte 102,15,56,222,216
413 prefetcht0 15(%r14,%rbx,1)
414 prefetcht0 15(%r15,%rbx,1)
415 .byte 102,15,56,222,224
416 .byte 102,15,56,222,232
417 movups 128-120(%rsi),%xmm0
418 pxor %xmm12,%xmm12
420 .byte 102,15,56,222,209
421 pcmpgtd %xmm12,%xmm11
422 movdqu -120(%rsi),%xmm12
423 .byte 102,15,56,222,217
424 paddd %xmm11,%xmm10
425 movdqa %xmm10,32(%rsp)
426 .byte 102,15,56,222,225
427 .byte 102,15,56,222,233
428 movups 144-120(%rsi),%xmm1
430 cmpl $11,%eax
432 .byte 102,15,56,222,208
433 .byte 102,15,56,222,216
434 .byte 102,15,56,222,224
435 .byte 102,15,56,222,232
436 movups 160-120(%rsi),%xmm0
438 jb .Ldec4x_tail
440 .byte 102,15,56,222,209
441 .byte 102,15,56,222,217
442 .byte 102,15,56,222,225
443 .byte 102,15,56,222,233
444 movups 176-120(%rsi),%xmm1
446 .byte 102,15,56,222,208
447 .byte 102,15,56,222,216
448 .byte 102,15,56,222,224
449 .byte 102,15,56,222,232
450 movups 192-120(%rsi),%xmm0
452 je .Ldec4x_tail
454 .byte 102,15,56,222,209
455 .byte 102,15,56,222,217
456 .byte 102,15,56,222,225
457 .byte 102,15,56,222,233
458 movups 208-120(%rsi),%xmm1
460 .byte 102,15,56,222,208
461 .byte 102,15,56,222,216
462 .byte 102,15,56,222,224
463 .byte 102,15,56,222,232
464 movups 224-120(%rsi),%xmm0
465 jmp .Ldec4x_tail
467 .align 32
468 .Ldec4x_tail:
469 .byte 102,15,56,222,209
470 .byte 102,15,56,222,217
471 .byte 102,15,56,222,225
472 pxor %xmm0,%xmm6
473 pxor %xmm0,%xmm7
474 .byte 102,15,56,222,233
475 movdqu 16-120(%rsi),%xmm1
476 pxor %xmm0,%xmm8
477 pxor %xmm0,%xmm9
478 movdqu 32-120(%rsi),%xmm0
480 .byte 102,15,56,223,214
481 .byte 102,15,56,223,223
482 movdqu -16(%r8,%rbx,1),%xmm6
483 movdqu -16(%r9,%rbx,1),%xmm7
484 .byte 102,65,15,56,223,224
485 .byte 102,65,15,56,223,233
486 movdqu -16(%r10,%rbx,1),%xmm8
487 movdqu -16(%r11,%rbx,1),%xmm9
489 movups %xmm2,-16(%r12,%rbx,1)
490 movdqu (%r8,%rbx,1),%xmm2
491 movups %xmm3,-16(%r13,%rbx,1)
492 movdqu (%r9,%rbx,1),%xmm3
493 pxor %xmm12,%xmm2
494 movups %xmm4,-16(%r14,%rbx,1)
495 movdqu (%r10,%rbx,1),%xmm4
496 pxor %xmm12,%xmm3
497 movups %xmm5,-16(%r15,%rbx,1)
498 movdqu (%r11,%rbx,1),%xmm5
499 pxor %xmm12,%xmm4
500 pxor %xmm12,%xmm5
502 decl %edx
503 jnz .Loop_dec4x
505 movq 16(%rsp),%rax
506 movl 24(%rsp),%edx
508 leaq 160(%rdi),%rdi
509 decl %edx
510 jnz .Ldec4x_loop_grande
512 .Ldec4x_done:
513 movq -48(%rax),%r15
514 movq -40(%rax),%r14
515 movq -32(%rax),%r13
516 movq -24(%rax),%r12
517 movq -16(%rax),%rbp
518 movq -8(%rax),%rbx
519 leaq (%rax),%rsp
520 .Ldec4x_epilogue:
521 .byte 0xf3,0xc3
522 .size aesni_multi_cbc_decrypt,.-aesni_multi_cbc_decrypt
523 .type aesni_multi_cbc_encrypt_avx,@function
524 .align 32
525 aesni_multi_cbc_encrypt_avx:
526 _avx_cbc_enc_shortcut:
527 movq %rsp,%rax
528 pushq %rbx
529 pushq %rbp
530 pushq %r12
531 pushq %r13
532 pushq %r14
533 pushq %r15
542 subq $192,%rsp
543 andq $-128,%rsp
544 movq %rax,16(%rsp)
546 .Lenc8x_body:
547 vzeroupper
548 vmovdqu (%rsi),%xmm15
549 leaq 120(%rsi),%rsi
550 leaq 160(%rdi),%rdi
551 shrl $1,%edx
553 .Lenc8x_loop_grande:
555 xorl %edx,%edx
556 movl -144(%rdi),%ecx
557 movq -160(%rdi),%r8
558 cmpl %edx,%ecx
559 movq -152(%rdi),%rbx
560 cmovgl %ecx,%edx
561 testl %ecx,%ecx
562 vmovdqu -136(%rdi),%xmm2
563 movl %ecx,32(%rsp)
564 cmovleq %rsp,%r8
565 subq %r8,%rbx
566 movq %rbx,64(%rsp)
567 movl -104(%rdi),%ecx
568 movq -120(%rdi),%r9
569 cmpl %edx,%ecx
570 movq -112(%rdi),%rbp
571 cmovgl %ecx,%edx
572 testl %ecx,%ecx
573 vmovdqu -96(%rdi),%xmm3
574 movl %ecx,36(%rsp)
575 cmovleq %rsp,%r9
576 subq %r9,%rbp
577 movq %rbp,72(%rsp)
578 movl -64(%rdi),%ecx
579 movq -80(%rdi),%r10
580 cmpl %edx,%ecx
581 movq -72(%rdi),%rbp
582 cmovgl %ecx,%edx
583 testl %ecx,%ecx
584 vmovdqu -56(%rdi),%xmm4
585 movl %ecx,40(%rsp)
586 cmovleq %rsp,%r10
587 subq %r10,%rbp
588 movq %rbp,80(%rsp)
589 movl -24(%rdi),%ecx
590 movq -40(%rdi),%r11
591 cmpl %edx,%ecx
592 movq -32(%rdi),%rbp
593 cmovgl %ecx,%edx
594 testl %ecx,%ecx
595 vmovdqu -16(%rdi),%xmm5
596 movl %ecx,44(%rsp)
597 cmovleq %rsp,%r11
598 subq %r11,%rbp
599 movq %rbp,88(%rsp)
600 movl 16(%rdi),%ecx
601 movq 0(%rdi),%r12
602 cmpl %edx,%ecx
603 movq 8(%rdi),%rbp
604 cmovgl %ecx,%edx
605 testl %ecx,%ecx
606 vmovdqu 24(%rdi),%xmm6
607 movl %ecx,48(%rsp)
608 cmovleq %rsp,%r12
609 subq %r12,%rbp
610 movq %rbp,96(%rsp)
611 movl 56(%rdi),%ecx
612 movq 40(%rdi),%r13
613 cmpl %edx,%ecx
614 movq 48(%rdi),%rbp
615 cmovgl %ecx,%edx
616 testl %ecx,%ecx
617 vmovdqu 64(%rdi),%xmm7
618 movl %ecx,52(%rsp)
619 cmovleq %rsp,%r13
620 subq %r13,%rbp
621 movq %rbp,104(%rsp)
622 movl 96(%rdi),%ecx
623 movq 80(%rdi),%r14
624 cmpl %edx,%ecx
625 movq 88(%rdi),%rbp
626 cmovgl %ecx,%edx
627 testl %ecx,%ecx
628 vmovdqu 104(%rdi),%xmm8
629 movl %ecx,56(%rsp)
630 cmovleq %rsp,%r14
631 subq %r14,%rbp
632 movq %rbp,112(%rsp)
633 movl 136(%rdi),%ecx
634 movq 120(%rdi),%r15
635 cmpl %edx,%ecx
636 movq 128(%rdi),%rbp
637 cmovgl %ecx,%edx
638 testl %ecx,%ecx
639 vmovdqu 144(%rdi),%xmm9
640 movl %ecx,60(%rsp)
641 cmovleq %rsp,%r15
642 subq %r15,%rbp
643 movq %rbp,120(%rsp)
644 testl %edx,%edx
645 jz .Lenc8x_done
647 vmovups 16-120(%rsi),%xmm1
648 vmovups 32-120(%rsi),%xmm0
649 movl 240-120(%rsi),%eax
651 vpxor (%r8),%xmm15,%xmm10
652 leaq 128(%rsp),%rbp
653 vpxor (%r9),%xmm15,%xmm11
654 vpxor (%r10),%xmm15,%xmm12
655 vpxor (%r11),%xmm15,%xmm13
656 vpxor %xmm10,%xmm2,%xmm2
657 vpxor (%r12),%xmm15,%xmm10
658 vpxor %xmm11,%xmm3,%xmm3
659 vpxor (%r13),%xmm15,%xmm11
660 vpxor %xmm12,%xmm4,%xmm4
661 vpxor (%r14),%xmm15,%xmm12
662 vpxor %xmm13,%xmm5,%xmm5
663 vpxor (%r15),%xmm15,%xmm13
664 vpxor %xmm10,%xmm6,%xmm6
665 movl $1,%ecx
666 vpxor %xmm11,%xmm7,%xmm7
667 vpxor %xmm12,%xmm8,%xmm8
668 vpxor %xmm13,%xmm9,%xmm9
669 jmp .Loop_enc8x
671 .align 32
672 .Loop_enc8x:
673 vaesenc %xmm1,%xmm2,%xmm2
674 cmpl 32+0(%rsp),%ecx
675 vaesenc %xmm1,%xmm3,%xmm3
676 prefetcht0 31(%r8)
677 vaesenc %xmm1,%xmm4,%xmm4
678 vaesenc %xmm1,%xmm5,%xmm5
679 leaq (%r8,%rbx,1),%rbx
680 cmovgeq %rsp,%r8
681 vaesenc %xmm1,%xmm6,%xmm6
682 cmovgq %rsp,%rbx
683 vaesenc %xmm1,%xmm7,%xmm7
684 subq %r8,%rbx
685 vaesenc %xmm1,%xmm8,%xmm8
686 vpxor 16(%r8),%xmm15,%xmm10
687 movq %rbx,64+0(%rsp)
688 vaesenc %xmm1,%xmm9,%xmm9
689 vmovups -72(%rsi),%xmm1
690 leaq 16(%r8,%rbx,1),%r8
691 vmovdqu %xmm10,0(%rbp)
692 vaesenc %xmm0,%xmm2,%xmm2
693 cmpl 32+4(%rsp),%ecx
694 movq 64+8(%rsp),%rbx
695 vaesenc %xmm0,%xmm3,%xmm3
696 prefetcht0 31(%r9)
697 vaesenc %xmm0,%xmm4,%xmm4
698 vaesenc %xmm0,%xmm5,%xmm5
699 leaq (%r9,%rbx,1),%rbx
700 cmovgeq %rsp,%r9
701 vaesenc %xmm0,%xmm6,%xmm6
702 cmovgq %rsp,%rbx
703 vaesenc %xmm0,%xmm7,%xmm7
704 subq %r9,%rbx
705 vaesenc %xmm0,%xmm8,%xmm8
706 vpxor 16(%r9),%xmm15,%xmm11
707 movq %rbx,64+8(%rsp)
708 vaesenc %xmm0,%xmm9,%xmm9
709 vmovups -56(%rsi),%xmm0
710 leaq 16(%r9,%rbx,1),%r9
711 vmovdqu %xmm11,16(%rbp)
712 vaesenc %xmm1,%xmm2,%xmm2
713 cmpl 32+8(%rsp),%ecx
714 movq 64+16(%rsp),%rbx
715 vaesenc %xmm1,%xmm3,%xmm3
716 prefetcht0 31(%r10)
717 vaesenc %xmm1,%xmm4,%xmm4
718 prefetcht0 15(%r8)
719 vaesenc %xmm1,%xmm5,%xmm5
720 leaq (%r10,%rbx,1),%rbx
721 cmovgeq %rsp,%r10
722 vaesenc %xmm1,%xmm6,%xmm6
723 cmovgq %rsp,%rbx
724 vaesenc %xmm1,%xmm7,%xmm7
725 subq %r10,%rbx
726 vaesenc %xmm1,%xmm8,%xmm8
727 vpxor 16(%r10),%xmm15,%xmm12
728 movq %rbx,64+16(%rsp)
729 vaesenc %xmm1,%xmm9,%xmm9
730 vmovups -40(%rsi),%xmm1
731 leaq 16(%r10,%rbx,1),%r10
732 vmovdqu %xmm12,32(%rbp)
733 vaesenc %xmm0,%xmm2,%xmm2
734 cmpl 32+12(%rsp),%ecx
735 movq 64+24(%rsp),%rbx
736 vaesenc %xmm0,%xmm3,%xmm3
737 prefetcht0 31(%r11)
738 vaesenc %xmm0,%xmm4,%xmm4
739 prefetcht0 15(%r9)
740 vaesenc %xmm0,%xmm5,%xmm5
741 leaq (%r11,%rbx,1),%rbx
742 cmovgeq %rsp,%r11
743 vaesenc %xmm0,%xmm6,%xmm6
744 cmovgq %rsp,%rbx
745 vaesenc %xmm0,%xmm7,%xmm7
746 subq %r11,%rbx
747 vaesenc %xmm0,%xmm8,%xmm8
748 vpxor 16(%r11),%xmm15,%xmm13
749 movq %rbx,64+24(%rsp)
750 vaesenc %xmm0,%xmm9,%xmm9
751 vmovups -24(%rsi),%xmm0
752 leaq 16(%r11,%rbx,1),%r11
753 vmovdqu %xmm13,48(%rbp)
754 vaesenc %xmm1,%xmm2,%xmm2
755 cmpl 32+16(%rsp),%ecx
756 movq 64+32(%rsp),%rbx
757 vaesenc %xmm1,%xmm3,%xmm3
758 prefetcht0 31(%r12)
759 vaesenc %xmm1,%xmm4,%xmm4
760 prefetcht0 15(%r10)
761 vaesenc %xmm1,%xmm5,%xmm5
762 leaq (%r12,%rbx,1),%rbx
763 cmovgeq %rsp,%r12
764 vaesenc %xmm1,%xmm6,%xmm6
765 cmovgq %rsp,%rbx
766 vaesenc %xmm1,%xmm7,%xmm7
767 subq %r12,%rbx
768 vaesenc %xmm1,%xmm8,%xmm8
769 vpxor 16(%r12),%xmm15,%xmm10
770 movq %rbx,64+32(%rsp)
771 vaesenc %xmm1,%xmm9,%xmm9
772 vmovups -8(%rsi),%xmm1
773 leaq 16(%r12,%rbx,1),%r12
774 vaesenc %xmm0,%xmm2,%xmm2
775 cmpl 32+20(%rsp),%ecx
776 movq 64+40(%rsp),%rbx
777 vaesenc %xmm0,%xmm3,%xmm3
778 prefetcht0 31(%r13)
779 vaesenc %xmm0,%xmm4,%xmm4
780 prefetcht0 15(%r11)
781 vaesenc %xmm0,%xmm5,%xmm5
782 leaq (%rbx,%r13,1),%rbx
783 cmovgeq %rsp,%r13
784 vaesenc %xmm0,%xmm6,%xmm6
785 cmovgq %rsp,%rbx
786 vaesenc %xmm0,%xmm7,%xmm7
787 subq %r13,%rbx
788 vaesenc %xmm0,%xmm8,%xmm8
789 vpxor 16(%r13),%xmm15,%xmm11
790 movq %rbx,64+40(%rsp)
791 vaesenc %xmm0,%xmm9,%xmm9
792 vmovups 8(%rsi),%xmm0
793 leaq 16(%r13,%rbx,1),%r13
794 vaesenc %xmm1,%xmm2,%xmm2
795 cmpl 32+24(%rsp),%ecx
796 movq 64+48(%rsp),%rbx
797 vaesenc %xmm1,%xmm3,%xmm3
798 prefetcht0 31(%r14)
799 vaesenc %xmm1,%xmm4,%xmm4
800 prefetcht0 15(%r12)
801 vaesenc %xmm1,%xmm5,%xmm5
802 leaq (%r14,%rbx,1),%rbx
803 cmovgeq %rsp,%r14
804 vaesenc %xmm1,%xmm6,%xmm6
805 cmovgq %rsp,%rbx
806 vaesenc %xmm1,%xmm7,%xmm7
807 subq %r14,%rbx
808 vaesenc %xmm1,%xmm8,%xmm8
809 vpxor 16(%r14),%xmm15,%xmm12
810 movq %rbx,64+48(%rsp)
811 vaesenc %xmm1,%xmm9,%xmm9
812 vmovups 24(%rsi),%xmm1
813 leaq 16(%r14,%rbx,1),%r14
814 vaesenc %xmm0,%xmm2,%xmm2
815 cmpl 32+28(%rsp),%ecx
816 movq 64+56(%rsp),%rbx
817 vaesenc %xmm0,%xmm3,%xmm3
818 prefetcht0 31(%r15)
819 vaesenc %xmm0,%xmm4,%xmm4
820 prefetcht0 15(%r13)
821 vaesenc %xmm0,%xmm5,%xmm5
822 leaq (%r15,%rbx,1),%rbx
823 cmovgeq %rsp,%r15
824 vaesenc %xmm0,%xmm6,%xmm6
825 cmovgq %rsp,%rbx
826 vaesenc %xmm0,%xmm7,%xmm7
827 subq %r15,%rbx
828 vaesenc %xmm0,%xmm8,%xmm8
829 vpxor 16(%r15),%xmm15,%xmm13
830 movq %rbx,64+56(%rsp)
831 vaesenc %xmm0,%xmm9,%xmm9
832 vmovups 40(%rsi),%xmm0
833 leaq 16(%r15,%rbx,1),%r15
834 vmovdqu 32(%rsp),%xmm14
835 prefetcht0 15(%r14)
836 prefetcht0 15(%r15)
837 cmpl $11,%eax
838 jb .Lenc8x_tail
840 vaesenc %xmm1,%xmm2,%xmm2
841 vaesenc %xmm1,%xmm3,%xmm3
842 vaesenc %xmm1,%xmm4,%xmm4
843 vaesenc %xmm1,%xmm5,%xmm5
844 vaesenc %xmm1,%xmm6,%xmm6
845 vaesenc %xmm1,%xmm7,%xmm7
846 vaesenc %xmm1,%xmm8,%xmm8
847 vaesenc %xmm1,%xmm9,%xmm9
848 vmovups 176-120(%rsi),%xmm1
850 vaesenc %xmm0,%xmm2,%xmm2
851 vaesenc %xmm0,%xmm3,%xmm3
852 vaesenc %xmm0,%xmm4,%xmm4
853 vaesenc %xmm0,%xmm5,%xmm5
854 vaesenc %xmm0,%xmm6,%xmm6
855 vaesenc %xmm0,%xmm7,%xmm7
856 vaesenc %xmm0,%xmm8,%xmm8
857 vaesenc %xmm0,%xmm9,%xmm9
858 vmovups 192-120(%rsi),%xmm0
859 je .Lenc8x_tail
861 vaesenc %xmm1,%xmm2,%xmm2
862 vaesenc %xmm1,%xmm3,%xmm3
863 vaesenc %xmm1,%xmm4,%xmm4
864 vaesenc %xmm1,%xmm5,%xmm5
865 vaesenc %xmm1,%xmm6,%xmm6
866 vaesenc %xmm1,%xmm7,%xmm7
867 vaesenc %xmm1,%xmm8,%xmm8
868 vaesenc %xmm1,%xmm9,%xmm9
869 vmovups 208-120(%rsi),%xmm1
871 vaesenc %xmm0,%xmm2,%xmm2
872 vaesenc %xmm0,%xmm3,%xmm3
873 vaesenc %xmm0,%xmm4,%xmm4
874 vaesenc %xmm0,%xmm5,%xmm5
875 vaesenc %xmm0,%xmm6,%xmm6
876 vaesenc %xmm0,%xmm7,%xmm7
877 vaesenc %xmm0,%xmm8,%xmm8
878 vaesenc %xmm0,%xmm9,%xmm9
879 vmovups 224-120(%rsi),%xmm0
881 .Lenc8x_tail:
882 vaesenc %xmm1,%xmm2,%xmm2
883 vpxor %xmm15,%xmm15,%xmm15
884 vaesenc %xmm1,%xmm3,%xmm3
885 vaesenc %xmm1,%xmm4,%xmm4
886 vpcmpgtd %xmm15,%xmm14,%xmm15
887 vaesenc %xmm1,%xmm5,%xmm5
888 vaesenc %xmm1,%xmm6,%xmm6
889 vpaddd %xmm14,%xmm15,%xmm15
890 vmovdqu 48(%rsp),%xmm14
891 vaesenc %xmm1,%xmm7,%xmm7
892 movq 64(%rsp),%rbx
893 vaesenc %xmm1,%xmm8,%xmm8
894 vaesenc %xmm1,%xmm9,%xmm9
895 vmovups 16-120(%rsi),%xmm1
897 vaesenclast %xmm0,%xmm2,%xmm2
898 vmovdqa %xmm15,32(%rsp)
899 vpxor %xmm15,%xmm15,%xmm15
900 vaesenclast %xmm0,%xmm3,%xmm3
901 vaesenclast %xmm0,%xmm4,%xmm4
902 vpcmpgtd %xmm15,%xmm14,%xmm15
903 vaesenclast %xmm0,%xmm5,%xmm5
904 vaesenclast %xmm0,%xmm6,%xmm6
905 vpaddd %xmm15,%xmm14,%xmm14
906 vmovdqu -120(%rsi),%xmm15
907 vaesenclast %xmm0,%xmm7,%xmm7
908 vaesenclast %xmm0,%xmm8,%xmm8
909 vmovdqa %xmm14,48(%rsp)
910 vaesenclast %xmm0,%xmm9,%xmm9
911 vmovups 32-120(%rsi),%xmm0
913 vmovups %xmm2,-16(%r8)
914 subq %rbx,%r8
915 vpxor 0(%rbp),%xmm2,%xmm2
916 vmovups %xmm3,-16(%r9)
917 subq 72(%rsp),%r9
918 vpxor 16(%rbp),%xmm3,%xmm3
919 vmovups %xmm4,-16(%r10)
920 subq 80(%rsp),%r10
921 vpxor 32(%rbp),%xmm4,%xmm4
922 vmovups %xmm5,-16(%r11)
923 subq 88(%rsp),%r11
924 vpxor 48(%rbp),%xmm5,%xmm5
925 vmovups %xmm6,-16(%r12)
926 subq 96(%rsp),%r12
927 vpxor %xmm10,%xmm6,%xmm6
928 vmovups %xmm7,-16(%r13)
929 subq 104(%rsp),%r13
930 vpxor %xmm11,%xmm7,%xmm7
931 vmovups %xmm8,-16(%r14)
932 subq 112(%rsp),%r14
933 vpxor %xmm12,%xmm8,%xmm8
934 vmovups %xmm9,-16(%r15)
935 subq 120(%rsp),%r15
936 vpxor %xmm13,%xmm9,%xmm9
938 decl %edx
939 jnz .Loop_enc8x
941 movq 16(%rsp),%rax
947 .Lenc8x_done:
948 vzeroupper
949 movq -48(%rax),%r15
950 movq -40(%rax),%r14
951 movq -32(%rax),%r13
952 movq -24(%rax),%r12
953 movq -16(%rax),%rbp
954 movq -8(%rax),%rbx
955 leaq (%rax),%rsp
956 .Lenc8x_epilogue:
957 .byte 0xf3,0xc3
958 .size aesni_multi_cbc_encrypt_avx,.-aesni_multi_cbc_encrypt_avx
960 .type aesni_multi_cbc_decrypt_avx,@function
961 .align 32
962 aesni_multi_cbc_decrypt_avx:
963 _avx_cbc_dec_shortcut:
964 movq %rsp,%rax
965 pushq %rbx
966 pushq %rbp
967 pushq %r12
968 pushq %r13
969 pushq %r14
970 pushq %r15
980 subq $256,%rsp
981 andq $-256,%rsp
982 subq $192,%rsp
983 movq %rax,16(%rsp)
985 .Ldec8x_body:
986 vzeroupper
987 vmovdqu (%rsi),%xmm15
988 leaq 120(%rsi),%rsi
989 leaq 160(%rdi),%rdi
990 shrl $1,%edx
992 .Ldec8x_loop_grande:
994 xorl %edx,%edx
995 movl -144(%rdi),%ecx
996 movq -160(%rdi),%r8
997 cmpl %edx,%ecx
998 movq -152(%rdi),%rbx
999 cmovgl %ecx,%edx
1000 testl %ecx,%ecx
1001 vmovdqu -136(%rdi),%xmm2
1002 movl %ecx,32(%rsp)
1003 cmovleq %rsp,%r8
1004 subq %r8,%rbx
1005 movq %rbx,64(%rsp)
1006 vmovdqu %xmm2,192(%rsp)
1007 movl -104(%rdi),%ecx
1008 movq -120(%rdi),%r9
1009 cmpl %edx,%ecx
1010 movq -112(%rdi),%rbp
1011 cmovgl %ecx,%edx
1012 testl %ecx,%ecx
1013 vmovdqu -96(%rdi),%xmm3
1014 movl %ecx,36(%rsp)
1015 cmovleq %rsp,%r9
1016 subq %r9,%rbp
1017 movq %rbp,72(%rsp)
1018 vmovdqu %xmm3,208(%rsp)
1019 movl -64(%rdi),%ecx
1020 movq -80(%rdi),%r10
1021 cmpl %edx,%ecx
1022 movq -72(%rdi),%rbp
1023 cmovgl %ecx,%edx
1024 testl %ecx,%ecx
1025 vmovdqu -56(%rdi),%xmm4
1026 movl %ecx,40(%rsp)
1027 cmovleq %rsp,%r10
1028 subq %r10,%rbp
1029 movq %rbp,80(%rsp)
1030 vmovdqu %xmm4,224(%rsp)
1031 movl -24(%rdi),%ecx
1032 movq -40(%rdi),%r11
1033 cmpl %edx,%ecx
1034 movq -32(%rdi),%rbp
1035 cmovgl %ecx,%edx
1036 testl %ecx,%ecx
1037 vmovdqu -16(%rdi),%xmm5
1038 movl %ecx,44(%rsp)
1039 cmovleq %rsp,%r11
1040 subq %r11,%rbp
1041 movq %rbp,88(%rsp)
1042 vmovdqu %xmm5,240(%rsp)
1043 movl 16(%rdi),%ecx
1044 movq 0(%rdi),%r12
1045 cmpl %edx,%ecx
1046 movq 8(%rdi),%rbp
1047 cmovgl %ecx,%edx
1048 testl %ecx,%ecx
1049 vmovdqu 24(%rdi),%xmm6
1050 movl %ecx,48(%rsp)
1051 cmovleq %rsp,%r12
1052 subq %r12,%rbp
1053 movq %rbp,96(%rsp)
1054 vmovdqu %xmm6,256(%rsp)
1055 movl 56(%rdi),%ecx
1056 movq 40(%rdi),%r13
1057 cmpl %edx,%ecx
1058 movq 48(%rdi),%rbp
1059 cmovgl %ecx,%edx
1060 testl %ecx,%ecx
1061 vmovdqu 64(%rdi),%xmm7
1062 movl %ecx,52(%rsp)
1063 cmovleq %rsp,%r13
1064 subq %r13,%rbp
1065 movq %rbp,104(%rsp)
1066 vmovdqu %xmm7,272(%rsp)
1067 movl 96(%rdi),%ecx
1068 movq 80(%rdi),%r14
1069 cmpl %edx,%ecx
1070 movq 88(%rdi),%rbp
1071 cmovgl %ecx,%edx
1072 testl %ecx,%ecx
1073 vmovdqu 104(%rdi),%xmm8
1074 movl %ecx,56(%rsp)
1075 cmovleq %rsp,%r14
1076 subq %r14,%rbp
1077 movq %rbp,112(%rsp)
1078 vmovdqu %xmm8,288(%rsp)
1079 movl 136(%rdi),%ecx
1080 movq 120(%rdi),%r15
1081 cmpl %edx,%ecx
1082 movq 128(%rdi),%rbp
1083 cmovgl %ecx,%edx
1084 testl %ecx,%ecx
1085 vmovdqu 144(%rdi),%xmm9
1086 movl %ecx,60(%rsp)
1087 cmovleq %rsp,%r15
1088 subq %r15,%rbp
1089 movq %rbp,120(%rsp)
1090 vmovdqu %xmm9,304(%rsp)
1091 testl %edx,%edx
1092 jz .Ldec8x_done
1094 vmovups 16-120(%rsi),%xmm1
1095 vmovups 32-120(%rsi),%xmm0
1096 movl 240-120(%rsi),%eax
1097 leaq 192+128(%rsp),%rbp
1099 vmovdqu (%r8),%xmm2
1100 vmovdqu (%r9),%xmm3
1101 vmovdqu (%r10),%xmm4
1102 vmovdqu (%r11),%xmm5
1103 vmovdqu (%r12),%xmm6
1104 vmovdqu (%r13),%xmm7
1105 vmovdqu (%r14),%xmm8
1106 vmovdqu (%r15),%xmm9
1107 vmovdqu %xmm2,0(%rbp)
1108 vpxor %xmm15,%xmm2,%xmm2
1109 vmovdqu %xmm3,16(%rbp)
1110 vpxor %xmm15,%xmm3,%xmm3
1111 vmovdqu %xmm4,32(%rbp)
1112 vpxor %xmm15,%xmm4,%xmm4
1113 vmovdqu %xmm5,48(%rbp)
1114 vpxor %xmm15,%xmm5,%xmm5
1115 vmovdqu %xmm6,64(%rbp)
1116 vpxor %xmm15,%xmm6,%xmm6
1117 vmovdqu %xmm7,80(%rbp)
1118 vpxor %xmm15,%xmm7,%xmm7
1119 vmovdqu %xmm8,96(%rbp)
1120 vpxor %xmm15,%xmm8,%xmm8
1121 vmovdqu %xmm9,112(%rbp)
1122 vpxor %xmm15,%xmm9,%xmm9
1123 xorq $0x80,%rbp
1124 movl $1,%ecx
1125 jmp .Loop_dec8x
1127 .align 32
1128 .Loop_dec8x:
1129 vaesdec %xmm1,%xmm2,%xmm2
1130 cmpl 32+0(%rsp),%ecx
1131 vaesdec %xmm1,%xmm3,%xmm3
1132 prefetcht0 31(%r8)
1133 vaesdec %xmm1,%xmm4,%xmm4
1134 vaesdec %xmm1,%xmm5,%xmm5
1135 leaq (%r8,%rbx,1),%rbx
1136 cmovgeq %rsp,%r8
1137 vaesdec %xmm1,%xmm6,%xmm6
1138 cmovgq %rsp,%rbx
1139 vaesdec %xmm1,%xmm7,%xmm7
1140 subq %r8,%rbx
1141 vaesdec %xmm1,%xmm8,%xmm8
1142 vmovdqu 16(%r8),%xmm10
1143 movq %rbx,64+0(%rsp)
1144 vaesdec %xmm1,%xmm9,%xmm9
1145 vmovups -72(%rsi),%xmm1
1146 leaq 16(%r8,%rbx,1),%r8
1147 vmovdqu %xmm10,128(%rsp)
1148 vaesdec %xmm0,%xmm2,%xmm2
1149 cmpl 32+4(%rsp),%ecx
1150 movq 64+8(%rsp),%rbx
1151 vaesdec %xmm0,%xmm3,%xmm3
1152 prefetcht0 31(%r9)
1153 vaesdec %xmm0,%xmm4,%xmm4
1154 vaesdec %xmm0,%xmm5,%xmm5
1155 leaq (%r9,%rbx,1),%rbx
1156 cmovgeq %rsp,%r9
1157 vaesdec %xmm0,%xmm6,%xmm6
1158 cmovgq %rsp,%rbx
1159 vaesdec %xmm0,%xmm7,%xmm7
1160 subq %r9,%rbx
1161 vaesdec %xmm0,%xmm8,%xmm8
1162 vmovdqu 16(%r9),%xmm11
1163 movq %rbx,64+8(%rsp)
1164 vaesdec %xmm0,%xmm9,%xmm9
1165 vmovups -56(%rsi),%xmm0
1166 leaq 16(%r9,%rbx,1),%r9
1167 vmovdqu %xmm11,144(%rsp)
1168 vaesdec %xmm1,%xmm2,%xmm2
1169 cmpl 32+8(%rsp),%ecx
1170 movq 64+16(%rsp),%rbx
1171 vaesdec %xmm1,%xmm3,%xmm3
1172 prefetcht0 31(%r10)
1173 vaesdec %xmm1,%xmm4,%xmm4
1174 prefetcht0 15(%r8)
1175 vaesdec %xmm1,%xmm5,%xmm5
1176 leaq (%r10,%rbx,1),%rbx
1177 cmovgeq %rsp,%r10
1178 vaesdec %xmm1,%xmm6,%xmm6
1179 cmovgq %rsp,%rbx
1180 vaesdec %xmm1,%xmm7,%xmm7
1181 subq %r10,%rbx
1182 vaesdec %xmm1,%xmm8,%xmm8
1183 vmovdqu 16(%r10),%xmm12
1184 movq %rbx,64+16(%rsp)
1185 vaesdec %xmm1,%xmm9,%xmm9
1186 vmovups -40(%rsi),%xmm1
1187 leaq 16(%r10,%rbx,1),%r10
1188 vmovdqu %xmm12,160(%rsp)
1189 vaesdec %xmm0,%xmm2,%xmm2
1190 cmpl 32+12(%rsp),%ecx
1191 movq 64+24(%rsp),%rbx
1192 vaesdec %xmm0,%xmm3,%xmm3
1193 prefetcht0 31(%r11)
1194 vaesdec %xmm0,%xmm4,%xmm4
1195 prefetcht0 15(%r9)
1196 vaesdec %xmm0,%xmm5,%xmm5
1197 leaq (%r11,%rbx,1),%rbx
1198 cmovgeq %rsp,%r11
1199 vaesdec %xmm0,%xmm6,%xmm6
1200 cmovgq %rsp,%rbx
1201 vaesdec %xmm0,%xmm7,%xmm7
1202 subq %r11,%rbx
1203 vaesdec %xmm0,%xmm8,%xmm8
1204 vmovdqu 16(%r11),%xmm13
1205 movq %rbx,64+24(%rsp)
1206 vaesdec %xmm0,%xmm9,%xmm9
1207 vmovups -24(%rsi),%xmm0
1208 leaq 16(%r11,%rbx,1),%r11
1209 vmovdqu %xmm13,176(%rsp)
1210 vaesdec %xmm1,%xmm2,%xmm2
1211 cmpl 32+16(%rsp),%ecx
1212 movq 64+32(%rsp),%rbx
1213 vaesdec %xmm1,%xmm3,%xmm3
1214 prefetcht0 31(%r12)
1215 vaesdec %xmm1,%xmm4,%xmm4
1216 prefetcht0 15(%r10)
1217 vaesdec %xmm1,%xmm5,%xmm5
1218 leaq (%r12,%rbx,1),%rbx
1219 cmovgeq %rsp,%r12
1220 vaesdec %xmm1,%xmm6,%xmm6
1221 cmovgq %rsp,%rbx
1222 vaesdec %xmm1,%xmm7,%xmm7
1223 subq %r12,%rbx
1224 vaesdec %xmm1,%xmm8,%xmm8
1225 vmovdqu 16(%r12),%xmm10
1226 movq %rbx,64+32(%rsp)
1227 vaesdec %xmm1,%xmm9,%xmm9
1228 vmovups -8(%rsi),%xmm1
1229 leaq 16(%r12,%rbx,1),%r12
1230 vaesdec %xmm0,%xmm2,%xmm2
1231 cmpl 32+20(%rsp),%ecx
1232 movq 64+40(%rsp),%rbx
1233 vaesdec %xmm0,%xmm3,%xmm3
1234 prefetcht0 31(%r13)
1235 vaesdec %xmm0,%xmm4,%xmm4
1236 prefetcht0 15(%r11)
1237 vaesdec %xmm0,%xmm5,%xmm5
1238 leaq (%rbx,%r13,1),%rbx
1239 cmovgeq %rsp,%r13
1240 vaesdec %xmm0,%xmm6,%xmm6
1241 cmovgq %rsp,%rbx
1242 vaesdec %xmm0,%xmm7,%xmm7
1243 subq %r13,%rbx
1244 vaesdec %xmm0,%xmm8,%xmm8
1245 vmovdqu 16(%r13),%xmm11
1246 movq %rbx,64+40(%rsp)
1247 vaesdec %xmm0,%xmm9,%xmm9
1248 vmovups 8(%rsi),%xmm0
1249 leaq 16(%r13,%rbx,1),%r13
1250 vaesdec %xmm1,%xmm2,%xmm2
1251 cmpl 32+24(%rsp),%ecx
1252 movq 64+48(%rsp),%rbx
1253 vaesdec %xmm1,%xmm3,%xmm3
1254 prefetcht0 31(%r14)
1255 vaesdec %xmm1,%xmm4,%xmm4
1256 prefetcht0 15(%r12)
1257 vaesdec %xmm1,%xmm5,%xmm5
1258 leaq (%r14,%rbx,1),%rbx
1259 cmovgeq %rsp,%r14
1260 vaesdec %xmm1,%xmm6,%xmm6
1261 cmovgq %rsp,%rbx
1262 vaesdec %xmm1,%xmm7,%xmm7
1263 subq %r14,%rbx
1264 vaesdec %xmm1,%xmm8,%xmm8
1265 vmovdqu 16(%r14),%xmm12
1266 movq %rbx,64+48(%rsp)
1267 vaesdec %xmm1,%xmm9,%xmm9
1268 vmovups 24(%rsi),%xmm1
1269 leaq 16(%r14,%rbx,1),%r14
1270 vaesdec %xmm0,%xmm2,%xmm2
1271 cmpl 32+28(%rsp),%ecx
1272 movq 64+56(%rsp),%rbx
1273 vaesdec %xmm0,%xmm3,%xmm3
1274 prefetcht0 31(%r15)
1275 vaesdec %xmm0,%xmm4,%xmm4
1276 prefetcht0 15(%r13)
1277 vaesdec %xmm0,%xmm5,%xmm5
1278 leaq (%r15,%rbx,1),%rbx
1279 cmovgeq %rsp,%r15
1280 vaesdec %xmm0,%xmm6,%xmm6
1281 cmovgq %rsp,%rbx
1282 vaesdec %xmm0,%xmm7,%xmm7
1283 subq %r15,%rbx
1284 vaesdec %xmm0,%xmm8,%xmm8
1285 vmovdqu 16(%r15),%xmm13
1286 movq %rbx,64+56(%rsp)
1287 vaesdec %xmm0,%xmm9,%xmm9
1288 vmovups 40(%rsi),%xmm0
1289 leaq 16(%r15,%rbx,1),%r15
1290 vmovdqu 32(%rsp),%xmm14
1291 prefetcht0 15(%r14)
1292 prefetcht0 15(%r15)
1293 cmpl $11,%eax
1294 jb .Ldec8x_tail
1296 vaesdec %xmm1,%xmm2,%xmm2
1297 vaesdec %xmm1,%xmm3,%xmm3
1298 vaesdec %xmm1,%xmm4,%xmm4
1299 vaesdec %xmm1,%xmm5,%xmm5
1300 vaesdec %xmm1,%xmm6,%xmm6
1301 vaesdec %xmm1,%xmm7,%xmm7
1302 vaesdec %xmm1,%xmm8,%xmm8
1303 vaesdec %xmm1,%xmm9,%xmm9
1304 vmovups 176-120(%rsi),%xmm1
1306 vaesdec %xmm0,%xmm2,%xmm2
1307 vaesdec %xmm0,%xmm3,%xmm3
1308 vaesdec %xmm0,%xmm4,%xmm4
1309 vaesdec %xmm0,%xmm5,%xmm5
1310 vaesdec %xmm0,%xmm6,%xmm6
1311 vaesdec %xmm0,%xmm7,%xmm7
1312 vaesdec %xmm0,%xmm8,%xmm8
1313 vaesdec %xmm0,%xmm9,%xmm9
1314 vmovups 192-120(%rsi),%xmm0
1315 je .Ldec8x_tail
1317 vaesdec %xmm1,%xmm2,%xmm2
1318 vaesdec %xmm1,%xmm3,%xmm3
1319 vaesdec %xmm1,%xmm4,%xmm4
1320 vaesdec %xmm1,%xmm5,%xmm5
1321 vaesdec %xmm1,%xmm6,%xmm6
1322 vaesdec %xmm1,%xmm7,%xmm7
1323 vaesdec %xmm1,%xmm8,%xmm8
1324 vaesdec %xmm1,%xmm9,%xmm9
1325 vmovups 208-120(%rsi),%xmm1
1327 vaesdec %xmm0,%xmm2,%xmm2
1328 vaesdec %xmm0,%xmm3,%xmm3
1329 vaesdec %xmm0,%xmm4,%xmm4
1330 vaesdec %xmm0,%xmm5,%xmm5
1331 vaesdec %xmm0,%xmm6,%xmm6
1332 vaesdec %xmm0,%xmm7,%xmm7
1333 vaesdec %xmm0,%xmm8,%xmm8
1334 vaesdec %xmm0,%xmm9,%xmm9
1335 vmovups 224-120(%rsi),%xmm0
1337 .Ldec8x_tail:
1338 vaesdec %xmm1,%xmm2,%xmm2
1339 vpxor %xmm15,%xmm15,%xmm15
1340 vaesdec %xmm1,%xmm3,%xmm3
1341 vaesdec %xmm1,%xmm4,%xmm4
1342 vpcmpgtd %xmm15,%xmm14,%xmm15
1343 vaesdec %xmm1,%xmm5,%xmm5
1344 vaesdec %xmm1,%xmm6,%xmm6
1345 vpaddd %xmm14,%xmm15,%xmm15
1346 vmovdqu 48(%rsp),%xmm14
1347 vaesdec %xmm1,%xmm7,%xmm7
1348 movq 64(%rsp),%rbx
1349 vaesdec %xmm1,%xmm8,%xmm8
1350 vaesdec %xmm1,%xmm9,%xmm9
1351 vmovups 16-120(%rsi),%xmm1
1353 vaesdeclast %xmm0,%xmm2,%xmm2
1354 vmovdqa %xmm15,32(%rsp)
1355 vpxor %xmm15,%xmm15,%xmm15
1356 vaesdeclast %xmm0,%xmm3,%xmm3
1357 vpxor 0(%rbp),%xmm2,%xmm2
1358 vaesdeclast %xmm0,%xmm4,%xmm4
1359 vpxor 16(%rbp),%xmm3,%xmm3
1360 vpcmpgtd %xmm15,%xmm14,%xmm15
1361 vaesdeclast %xmm0,%xmm5,%xmm5
1362 vpxor 32(%rbp),%xmm4,%xmm4
1363 vaesdeclast %xmm0,%xmm6,%xmm6
1364 vpxor 48(%rbp),%xmm5,%xmm5
1365 vpaddd %xmm15,%xmm14,%xmm14
1366 vmovdqu -120(%rsi),%xmm15
1367 vaesdeclast %xmm0,%xmm7,%xmm7
1368 vpxor 64(%rbp),%xmm6,%xmm6
1369 vaesdeclast %xmm0,%xmm8,%xmm8
1370 vpxor 80(%rbp),%xmm7,%xmm7
1371 vmovdqa %xmm14,48(%rsp)
1372 vaesdeclast %xmm0,%xmm9,%xmm9
1373 vpxor 96(%rbp),%xmm8,%xmm8
1374 vmovups 32-120(%rsi),%xmm0
1376 vmovups %xmm2,-16(%r8)
1377 subq %rbx,%r8
1378 vmovdqu 128+0(%rsp),%xmm2
1379 vpxor 112(%rbp),%xmm9,%xmm9
1380 vmovups %xmm3,-16(%r9)
1381 subq 72(%rsp),%r9
1382 vmovdqu %xmm2,0(%rbp)
1383 vpxor %xmm15,%xmm2,%xmm2
1384 vmovdqu 128+16(%rsp),%xmm3
1385 vmovups %xmm4,-16(%r10)
1386 subq 80(%rsp),%r10
1387 vmovdqu %xmm3,16(%rbp)
1388 vpxor %xmm15,%xmm3,%xmm3
1389 vmovdqu 128+32(%rsp),%xmm4
1390 vmovups %xmm5,-16(%r11)
1391 subq 88(%rsp),%r11
1392 vmovdqu %xmm4,32(%rbp)
1393 vpxor %xmm15,%xmm4,%xmm4
1394 vmovdqu 128+48(%rsp),%xmm5
1395 vmovups %xmm6,-16(%r12)
1396 subq 96(%rsp),%r12
1397 vmovdqu %xmm5,48(%rbp)
1398 vpxor %xmm15,%xmm5,%xmm5
1399 vmovdqu %xmm10,64(%rbp)
1400 vpxor %xmm10,%xmm15,%xmm6
1401 vmovups %xmm7,-16(%r13)
1402 subq 104(%rsp),%r13
1403 vmovdqu %xmm11,80(%rbp)
1404 vpxor %xmm11,%xmm15,%xmm7
1405 vmovups %xmm8,-16(%r14)
1406 subq 112(%rsp),%r14
1407 vmovdqu %xmm12,96(%rbp)
1408 vpxor %xmm12,%xmm15,%xmm8
1409 vmovups %xmm9,-16(%r15)
1410 subq 120(%rsp),%r15
1411 vmovdqu %xmm13,112(%rbp)
1412 vpxor %xmm13,%xmm15,%xmm9
1414 xorq $128,%rbp
1415 decl %edx
1416 jnz .Loop_dec8x
1418 movq 16(%rsp),%rax
1424 .Ldec8x_done:
1425 vzeroupper
1426 movq -48(%rax),%r15
1427 movq -40(%rax),%r14
1428 movq -32(%rax),%r13
1429 movq -24(%rax),%r12
1430 movq -16(%rax),%rbp
1431 movq -8(%rax),%rbx
1432 leaq (%rax),%rsp
1433 .Ldec8x_epilogue:
1434 .byte 0xf3,0xc3
1435 .size aesni_multi_cbc_decrypt_avx,.-aesni_multi_cbc_decrypt_avx
1436 .section .note.GNU-stack,"",%progbits