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