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