~webapps/unity-js-scopes/node.js

« back to all changes in this revision

Viewing changes to deps/openssl/asm/x64-elf-gas/aes/aesni-mb-x86_64.s

  • Committer: Marcus Tomlinson
  • Date: 2015-11-13 07:59:04 UTC
  • Revision ID: marcus.tomlinson@canonical.com-20151113075904-h0swczmoq1rvstfc
Node v4 (stable)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
.text
 
2
 
 
3
 
 
4
 
 
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
 
24
 
 
25
 
 
26
 
 
27
 
 
28
 
 
29
 
 
30
        subq    $48,%rsp
 
31
        andq    $-64,%rsp
 
32
        movq    %rax,16(%rsp)
 
33
 
 
34
.Lenc4x_body:
 
35
        movdqu  (%rsi),%xmm12
 
36
        leaq    120(%rsi),%rsi
 
37
        leaq    80(%rdi),%rdi
 
38
 
 
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
 
80
 
 
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
 
99
 
 
100
.align  32
 
101
.Loop_enc4x:
 
102
        addq    $16,%rbx
 
103
        leaq    16(%rsp),%rbp
 
104
        movl    $1,%ecx
 
105
        subq    %rbx,%rbp
 
106
 
 
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
 
159
 
 
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
 
169
 
 
170
        cmpl    $11,%eax
 
171
 
 
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
 
177
 
 
178
        jb      .Lenc4x_tail
 
179
 
 
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
 
185
 
 
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
 
191
 
 
192
        je      .Lenc4x_tail
 
193
 
 
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
 
199
 
 
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
 
206
 
 
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
 
215
 
 
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
 
228
 
 
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
 
237
 
 
238
        decl    %edx
 
239
        jnz     .Loop_enc4x
 
240
 
 
241
        movq    16(%rsp),%rax
 
242
        movl    24(%rsp),%edx
 
243
 
 
244
 
 
245
 
 
246
 
 
247
 
 
248
 
 
249
 
 
250
 
 
251
 
 
252
 
 
253
        leaq    160(%rdi),%rdi
 
254
        decl    %edx
 
255
        jnz     .Lenc4x_loop_grande
 
256
 
 
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
 
268
 
 
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
 
288
 
 
289
 
 
290
 
 
291
 
 
292
 
 
293
 
 
294
        subq    $48,%rsp
 
295
        andq    $-64,%rsp
 
296
        movq    %rax,16(%rsp)
 
297
 
 
298
.Ldec4x_body:
 
299
        movdqu  (%rsi),%xmm12
 
300
        leaq    120(%rsi),%rsi
 
301
        leaq    80(%rdi),%rdi
 
302
 
 
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
 
344
 
 
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
 
359
 
 
360
.align  32
 
361
.Loop_dec4x:
 
362
        addq    $16,%rbx
 
363
        leaq    16(%rsp),%rbp
 
364
        movl    $1,%ecx
 
365
        subq    %rbx,%rbp
 
366
 
 
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
 
419
 
 
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
 
429
 
 
430
        cmpl    $11,%eax
 
431
 
 
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
 
437
 
 
438
        jb      .Ldec4x_tail
 
439
 
 
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
 
445
 
 
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
 
451
 
 
452
        je      .Ldec4x_tail
 
453
 
 
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
 
459
 
 
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
 
466
 
 
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
 
479
 
 
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
 
488
 
 
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
 
501
 
 
502
        decl    %edx
 
503
        jnz     .Loop_dec4x
 
504
 
 
505
        movq    16(%rsp),%rax
 
506
        movl    24(%rsp),%edx
 
507
 
 
508
        leaq    160(%rdi),%rdi
 
509
        decl    %edx
 
510
        jnz     .Ldec4x_loop_grande
 
511
 
 
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
 
534
 
 
535
 
 
536
 
 
537
 
 
538
 
 
539
 
 
540
 
 
541
 
 
542
        subq    $192,%rsp
 
543
        andq    $-128,%rsp
 
544
        movq    %rax,16(%rsp)
 
545
 
 
546
.Lenc8x_body:
 
547
        vzeroupper
 
548
        vmovdqu (%rsi),%xmm15
 
549
        leaq    120(%rsi),%rsi
 
550
        leaq    160(%rdi),%rdi
 
551
        shrl    $1,%edx
 
552
 
 
553
.Lenc8x_loop_grande:
 
554
 
 
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
 
646
 
 
647
        vmovups 16-120(%rsi),%xmm1
 
648
        vmovups 32-120(%rsi),%xmm0
 
649
        movl    240-120(%rsi),%eax
 
650
 
 
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
 
670
 
 
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
 
839
 
 
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
 
849
 
 
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
 
860
 
 
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
 
870
 
 
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
 
880
 
 
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
 
896
 
 
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
 
912
 
 
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
 
937
 
 
938
        decl    %edx
 
939
        jnz     .Loop_enc8x
 
940
 
 
941
        movq    16(%rsp),%rax
 
942
 
 
943
 
 
944
 
 
945
 
 
946
 
 
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
 
959
 
 
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
 
971
 
 
972
 
 
973
 
 
974
 
 
975
 
 
976
 
 
977
 
 
978
 
 
979
 
 
980
        subq    $256,%rsp
 
981
        andq    $-256,%rsp
 
982
        subq    $192,%rsp
 
983
        movq    %rax,16(%rsp)
 
984
 
 
985
.Ldec8x_body:
 
986
        vzeroupper
 
987
        vmovdqu (%rsi),%xmm15
 
988
        leaq    120(%rsi),%rsi
 
989
        leaq    160(%rdi),%rdi
 
990
        shrl    $1,%edx
 
991
 
 
992
.Ldec8x_loop_grande:
 
993
 
 
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
 
1093
 
 
1094
        vmovups 16-120(%rsi),%xmm1
 
1095
        vmovups 32-120(%rsi),%xmm0
 
1096
        movl    240-120(%rsi),%eax
 
1097
        leaq    192+128(%rsp),%rbp
 
1098
 
 
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    $128,%rbp
 
1124
        movl    $1,%ecx
 
1125
        jmp     .Loop_dec8x
 
1126
 
 
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
 
1295
 
 
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
 
1305
 
 
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
 
1316
 
 
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
 
1326
 
 
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
 
1336
 
 
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
 
1352
 
 
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
 
1375
 
 
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
 
1413
 
 
1414
        xorq    $128,%rbp
 
1415
        decl    %edx
 
1416
        jnz     .Loop_dec8x
 
1417
 
 
1418
        movq    16(%rsp),%rax
 
1419
 
 
1420
 
 
1421
 
 
1422
 
 
1423
 
 
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