]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/amd64/aesni-mb-x86_64.S
MFC: r359060, r359061, r359066
[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 .cfi_startproc  
12         movq    %rsp,%rax
13 .cfi_def_cfa_register   %rax
14         pushq   %rbx
15 .cfi_offset     %rbx,-16
16         pushq   %rbp
17 .cfi_offset     %rbp,-24
18         pushq   %r12
19 .cfi_offset     %r12,-32
20         pushq   %r13
21 .cfi_offset     %r13,-40
22         pushq   %r14
23 .cfi_offset     %r14,-48
24         pushq   %r15
25 .cfi_offset     %r15,-56
26
27
28
29
30
31
32         subq    $48,%rsp
33         andq    $-64,%rsp
34         movq    %rax,16(%rsp)
35 .cfi_escape     0x0f,0x05,0x77,0x10,0x06,0x23,0x08
36
37 .Lenc4x_body:
38         movdqu  (%rsi),%xmm12
39         leaq    120(%rsi),%rsi
40         leaq    80(%rdi),%rdi
41
42 .Lenc4x_loop_grande:
43         movl    %edx,24(%rsp)
44         xorl    %edx,%edx
45         movl    -64(%rdi),%ecx
46         movq    -80(%rdi),%r8
47         cmpl    %edx,%ecx
48         movq    -72(%rdi),%r12
49         cmovgl  %ecx,%edx
50         testl   %ecx,%ecx
51         movdqu  -56(%rdi),%xmm2
52         movl    %ecx,32(%rsp)
53         cmovleq %rsp,%r8
54         movl    -24(%rdi),%ecx
55         movq    -40(%rdi),%r9
56         cmpl    %edx,%ecx
57         movq    -32(%rdi),%r13
58         cmovgl  %ecx,%edx
59         testl   %ecx,%ecx
60         movdqu  -16(%rdi),%xmm3
61         movl    %ecx,36(%rsp)
62         cmovleq %rsp,%r9
63         movl    16(%rdi),%ecx
64         movq    0(%rdi),%r10
65         cmpl    %edx,%ecx
66         movq    8(%rdi),%r14
67         cmovgl  %ecx,%edx
68         testl   %ecx,%ecx
69         movdqu  24(%rdi),%xmm4
70         movl    %ecx,40(%rsp)
71         cmovleq %rsp,%r10
72         movl    56(%rdi),%ecx
73         movq    40(%rdi),%r11
74         cmpl    %edx,%ecx
75         movq    48(%rdi),%r15
76         cmovgl  %ecx,%edx
77         testl   %ecx,%ecx
78         movdqu  64(%rdi),%xmm5
79         movl    %ecx,44(%rsp)
80         cmovleq %rsp,%r11
81         testl   %edx,%edx
82         jz      .Lenc4x_done
83
84         movups  16-120(%rsi),%xmm1
85         pxor    %xmm12,%xmm2
86         movups  32-120(%rsi),%xmm0
87         pxor    %xmm12,%xmm3
88         movl    240-120(%rsi),%eax
89         pxor    %xmm12,%xmm4
90         movdqu  (%r8),%xmm6
91         pxor    %xmm12,%xmm5
92         movdqu  (%r9),%xmm7
93         pxor    %xmm6,%xmm2
94         movdqu  (%r10),%xmm8
95         pxor    %xmm7,%xmm3
96         movdqu  (%r11),%xmm9
97         pxor    %xmm8,%xmm4
98         pxor    %xmm9,%xmm5
99         movdqa  32(%rsp),%xmm10
100         xorq    %rbx,%rbx
101         jmp     .Loop_enc4x
102
103 .align  32
104 .Loop_enc4x:
105         addq    $16,%rbx
106         leaq    16(%rsp),%rbp
107         movl    $1,%ecx
108         subq    %rbx,%rbp
109
110 .byte   102,15,56,220,209
111         prefetcht0      31(%r8,%rbx,1)
112         prefetcht0      31(%r9,%rbx,1)
113 .byte   102,15,56,220,217
114         prefetcht0      31(%r10,%rbx,1)
115         prefetcht0      31(%r10,%rbx,1)
116 .byte   102,15,56,220,225
117 .byte   102,15,56,220,233
118         movups  48-120(%rsi),%xmm1
119         cmpl    32(%rsp),%ecx
120 .byte   102,15,56,220,208
121 .byte   102,15,56,220,216
122 .byte   102,15,56,220,224
123         cmovgeq %rbp,%r8
124         cmovgq  %rbp,%r12
125 .byte   102,15,56,220,232
126         movups  -56(%rsi),%xmm0
127         cmpl    36(%rsp),%ecx
128 .byte   102,15,56,220,209
129 .byte   102,15,56,220,217
130 .byte   102,15,56,220,225
131         cmovgeq %rbp,%r9
132         cmovgq  %rbp,%r13
133 .byte   102,15,56,220,233
134         movups  -40(%rsi),%xmm1
135         cmpl    40(%rsp),%ecx
136 .byte   102,15,56,220,208
137 .byte   102,15,56,220,216
138 .byte   102,15,56,220,224
139         cmovgeq %rbp,%r10
140         cmovgq  %rbp,%r14
141 .byte   102,15,56,220,232
142         movups  -24(%rsi),%xmm0
143         cmpl    44(%rsp),%ecx
144 .byte   102,15,56,220,209
145 .byte   102,15,56,220,217
146 .byte   102,15,56,220,225
147         cmovgeq %rbp,%r11
148         cmovgq  %rbp,%r15
149 .byte   102,15,56,220,233
150         movups  -8(%rsi),%xmm1
151         movdqa  %xmm10,%xmm11
152 .byte   102,15,56,220,208
153         prefetcht0      15(%r12,%rbx,1)
154         prefetcht0      15(%r13,%rbx,1)
155 .byte   102,15,56,220,216
156         prefetcht0      15(%r14,%rbx,1)
157         prefetcht0      15(%r15,%rbx,1)
158 .byte   102,15,56,220,224
159 .byte   102,15,56,220,232
160         movups  128-120(%rsi),%xmm0
161         pxor    %xmm12,%xmm12
162
163 .byte   102,15,56,220,209
164         pcmpgtd %xmm12,%xmm11
165         movdqu  -120(%rsi),%xmm12
166 .byte   102,15,56,220,217
167         paddd   %xmm11,%xmm10
168         movdqa  %xmm10,32(%rsp)
169 .byte   102,15,56,220,225
170 .byte   102,15,56,220,233
171         movups  144-120(%rsi),%xmm1
172
173         cmpl    $11,%eax
174
175 .byte   102,15,56,220,208
176 .byte   102,15,56,220,216
177 .byte   102,15,56,220,224
178 .byte   102,15,56,220,232
179         movups  160-120(%rsi),%xmm0
180
181         jb      .Lenc4x_tail
182
183 .byte   102,15,56,220,209
184 .byte   102,15,56,220,217
185 .byte   102,15,56,220,225
186 .byte   102,15,56,220,233
187         movups  176-120(%rsi),%xmm1
188
189 .byte   102,15,56,220,208
190 .byte   102,15,56,220,216
191 .byte   102,15,56,220,224
192 .byte   102,15,56,220,232
193         movups  192-120(%rsi),%xmm0
194
195         je      .Lenc4x_tail
196
197 .byte   102,15,56,220,209
198 .byte   102,15,56,220,217
199 .byte   102,15,56,220,225
200 .byte   102,15,56,220,233
201         movups  208-120(%rsi),%xmm1
202
203 .byte   102,15,56,220,208
204 .byte   102,15,56,220,216
205 .byte   102,15,56,220,224
206 .byte   102,15,56,220,232
207         movups  224-120(%rsi),%xmm0
208         jmp     .Lenc4x_tail
209
210 .align  32
211 .Lenc4x_tail:
212 .byte   102,15,56,220,209
213 .byte   102,15,56,220,217
214 .byte   102,15,56,220,225
215 .byte   102,15,56,220,233
216         movdqu  (%r8,%rbx,1),%xmm6
217         movdqu  16-120(%rsi),%xmm1
218
219 .byte   102,15,56,221,208
220         movdqu  (%r9,%rbx,1),%xmm7
221         pxor    %xmm12,%xmm6
222 .byte   102,15,56,221,216
223         movdqu  (%r10,%rbx,1),%xmm8
224         pxor    %xmm12,%xmm7
225 .byte   102,15,56,221,224
226         movdqu  (%r11,%rbx,1),%xmm9
227         pxor    %xmm12,%xmm8
228 .byte   102,15,56,221,232
229         movdqu  32-120(%rsi),%xmm0
230         pxor    %xmm12,%xmm9
231
232         movups  %xmm2,-16(%r12,%rbx,1)
233         pxor    %xmm6,%xmm2
234         movups  %xmm3,-16(%r13,%rbx,1)
235         pxor    %xmm7,%xmm3
236         movups  %xmm4,-16(%r14,%rbx,1)
237         pxor    %xmm8,%xmm4
238         movups  %xmm5,-16(%r15,%rbx,1)
239         pxor    %xmm9,%xmm5
240
241         decl    %edx
242         jnz     .Loop_enc4x
243
244         movq    16(%rsp),%rax
245 .cfi_def_cfa    %rax,8
246         movl    24(%rsp),%edx
247
248
249
250
251
252
253
254
255
256
257         leaq    160(%rdi),%rdi
258         decl    %edx
259         jnz     .Lenc4x_loop_grande
260
261 .Lenc4x_done:
262         movq    -48(%rax),%r15
263 .cfi_restore    %r15
264         movq    -40(%rax),%r14
265 .cfi_restore    %r14
266         movq    -32(%rax),%r13
267 .cfi_restore    %r13
268         movq    -24(%rax),%r12
269 .cfi_restore    %r12
270         movq    -16(%rax),%rbp
271 .cfi_restore    %rbp
272         movq    -8(%rax),%rbx
273 .cfi_restore    %rbx
274         leaq    (%rax),%rsp
275 .cfi_def_cfa_register   %rsp
276 .Lenc4x_epilogue:
277         .byte   0xf3,0xc3
278 .cfi_endproc    
279 .size   aesni_multi_cbc_encrypt,.-aesni_multi_cbc_encrypt
280
281 .globl  aesni_multi_cbc_decrypt
282 .type   aesni_multi_cbc_decrypt,@function
283 .align  32
284 aesni_multi_cbc_decrypt:
285 .cfi_startproc  
286         movq    %rsp,%rax
287 .cfi_def_cfa_register   %rax
288         pushq   %rbx
289 .cfi_offset     %rbx,-16
290         pushq   %rbp
291 .cfi_offset     %rbp,-24
292         pushq   %r12
293 .cfi_offset     %r12,-32
294         pushq   %r13
295 .cfi_offset     %r13,-40
296         pushq   %r14
297 .cfi_offset     %r14,-48
298         pushq   %r15
299 .cfi_offset     %r15,-56
300
301
302
303
304
305
306         subq    $48,%rsp
307         andq    $-64,%rsp
308         movq    %rax,16(%rsp)
309 .cfi_escape     0x0f,0x05,0x77,0x10,0x06,0x23,0x08
310
311 .Ldec4x_body:
312         movdqu  (%rsi),%xmm12
313         leaq    120(%rsi),%rsi
314         leaq    80(%rdi),%rdi
315
316 .Ldec4x_loop_grande:
317         movl    %edx,24(%rsp)
318         xorl    %edx,%edx
319         movl    -64(%rdi),%ecx
320         movq    -80(%rdi),%r8
321         cmpl    %edx,%ecx
322         movq    -72(%rdi),%r12
323         cmovgl  %ecx,%edx
324         testl   %ecx,%ecx
325         movdqu  -56(%rdi),%xmm6
326         movl    %ecx,32(%rsp)
327         cmovleq %rsp,%r8
328         movl    -24(%rdi),%ecx
329         movq    -40(%rdi),%r9
330         cmpl    %edx,%ecx
331         movq    -32(%rdi),%r13
332         cmovgl  %ecx,%edx
333         testl   %ecx,%ecx
334         movdqu  -16(%rdi),%xmm7
335         movl    %ecx,36(%rsp)
336         cmovleq %rsp,%r9
337         movl    16(%rdi),%ecx
338         movq    0(%rdi),%r10
339         cmpl    %edx,%ecx
340         movq    8(%rdi),%r14
341         cmovgl  %ecx,%edx
342         testl   %ecx,%ecx
343         movdqu  24(%rdi),%xmm8
344         movl    %ecx,40(%rsp)
345         cmovleq %rsp,%r10
346         movl    56(%rdi),%ecx
347         movq    40(%rdi),%r11
348         cmpl    %edx,%ecx
349         movq    48(%rdi),%r15
350         cmovgl  %ecx,%edx
351         testl   %ecx,%ecx
352         movdqu  64(%rdi),%xmm9
353         movl    %ecx,44(%rsp)
354         cmovleq %rsp,%r11
355         testl   %edx,%edx
356         jz      .Ldec4x_done
357
358         movups  16-120(%rsi),%xmm1
359         movups  32-120(%rsi),%xmm0
360         movl    240-120(%rsi),%eax
361         movdqu  (%r8),%xmm2
362         movdqu  (%r9),%xmm3
363         pxor    %xmm12,%xmm2
364         movdqu  (%r10),%xmm4
365         pxor    %xmm12,%xmm3
366         movdqu  (%r11),%xmm5
367         pxor    %xmm12,%xmm4
368         pxor    %xmm12,%xmm5
369         movdqa  32(%rsp),%xmm10
370         xorq    %rbx,%rbx
371         jmp     .Loop_dec4x
372
373 .align  32
374 .Loop_dec4x:
375         addq    $16,%rbx
376         leaq    16(%rsp),%rbp
377         movl    $1,%ecx
378         subq    %rbx,%rbp
379
380 .byte   102,15,56,222,209
381         prefetcht0      31(%r8,%rbx,1)
382         prefetcht0      31(%r9,%rbx,1)
383 .byte   102,15,56,222,217
384         prefetcht0      31(%r10,%rbx,1)
385         prefetcht0      31(%r11,%rbx,1)
386 .byte   102,15,56,222,225
387 .byte   102,15,56,222,233
388         movups  48-120(%rsi),%xmm1
389         cmpl    32(%rsp),%ecx
390 .byte   102,15,56,222,208
391 .byte   102,15,56,222,216
392 .byte   102,15,56,222,224
393         cmovgeq %rbp,%r8
394         cmovgq  %rbp,%r12
395 .byte   102,15,56,222,232
396         movups  -56(%rsi),%xmm0
397         cmpl    36(%rsp),%ecx
398 .byte   102,15,56,222,209
399 .byte   102,15,56,222,217
400 .byte   102,15,56,222,225
401         cmovgeq %rbp,%r9
402         cmovgq  %rbp,%r13
403 .byte   102,15,56,222,233
404         movups  -40(%rsi),%xmm1
405         cmpl    40(%rsp),%ecx
406 .byte   102,15,56,222,208
407 .byte   102,15,56,222,216
408 .byte   102,15,56,222,224
409         cmovgeq %rbp,%r10
410         cmovgq  %rbp,%r14
411 .byte   102,15,56,222,232
412         movups  -24(%rsi),%xmm0
413         cmpl    44(%rsp),%ecx
414 .byte   102,15,56,222,209
415 .byte   102,15,56,222,217
416 .byte   102,15,56,222,225
417         cmovgeq %rbp,%r11
418         cmovgq  %rbp,%r15
419 .byte   102,15,56,222,233
420         movups  -8(%rsi),%xmm1
421         movdqa  %xmm10,%xmm11
422 .byte   102,15,56,222,208
423         prefetcht0      15(%r12,%rbx,1)
424         prefetcht0      15(%r13,%rbx,1)
425 .byte   102,15,56,222,216
426         prefetcht0      15(%r14,%rbx,1)
427         prefetcht0      15(%r15,%rbx,1)
428 .byte   102,15,56,222,224
429 .byte   102,15,56,222,232
430         movups  128-120(%rsi),%xmm0
431         pxor    %xmm12,%xmm12
432
433 .byte   102,15,56,222,209
434         pcmpgtd %xmm12,%xmm11
435         movdqu  -120(%rsi),%xmm12
436 .byte   102,15,56,222,217
437         paddd   %xmm11,%xmm10
438         movdqa  %xmm10,32(%rsp)
439 .byte   102,15,56,222,225
440 .byte   102,15,56,222,233
441         movups  144-120(%rsi),%xmm1
442
443         cmpl    $11,%eax
444
445 .byte   102,15,56,222,208
446 .byte   102,15,56,222,216
447 .byte   102,15,56,222,224
448 .byte   102,15,56,222,232
449         movups  160-120(%rsi),%xmm0
450
451         jb      .Ldec4x_tail
452
453 .byte   102,15,56,222,209
454 .byte   102,15,56,222,217
455 .byte   102,15,56,222,225
456 .byte   102,15,56,222,233
457         movups  176-120(%rsi),%xmm1
458
459 .byte   102,15,56,222,208
460 .byte   102,15,56,222,216
461 .byte   102,15,56,222,224
462 .byte   102,15,56,222,232
463         movups  192-120(%rsi),%xmm0
464
465         je      .Ldec4x_tail
466
467 .byte   102,15,56,222,209
468 .byte   102,15,56,222,217
469 .byte   102,15,56,222,225
470 .byte   102,15,56,222,233
471         movups  208-120(%rsi),%xmm1
472
473 .byte   102,15,56,222,208
474 .byte   102,15,56,222,216
475 .byte   102,15,56,222,224
476 .byte   102,15,56,222,232
477         movups  224-120(%rsi),%xmm0
478         jmp     .Ldec4x_tail
479
480 .align  32
481 .Ldec4x_tail:
482 .byte   102,15,56,222,209
483 .byte   102,15,56,222,217
484 .byte   102,15,56,222,225
485         pxor    %xmm0,%xmm6
486         pxor    %xmm0,%xmm7
487 .byte   102,15,56,222,233
488         movdqu  16-120(%rsi),%xmm1
489         pxor    %xmm0,%xmm8
490         pxor    %xmm0,%xmm9
491         movdqu  32-120(%rsi),%xmm0
492
493 .byte   102,15,56,223,214
494 .byte   102,15,56,223,223
495         movdqu  -16(%r8,%rbx,1),%xmm6
496         movdqu  -16(%r9,%rbx,1),%xmm7
497 .byte   102,65,15,56,223,224
498 .byte   102,65,15,56,223,233
499         movdqu  -16(%r10,%rbx,1),%xmm8
500         movdqu  -16(%r11,%rbx,1),%xmm9
501
502         movups  %xmm2,-16(%r12,%rbx,1)
503         movdqu  (%r8,%rbx,1),%xmm2
504         movups  %xmm3,-16(%r13,%rbx,1)
505         movdqu  (%r9,%rbx,1),%xmm3
506         pxor    %xmm12,%xmm2
507         movups  %xmm4,-16(%r14,%rbx,1)
508         movdqu  (%r10,%rbx,1),%xmm4
509         pxor    %xmm12,%xmm3
510         movups  %xmm5,-16(%r15,%rbx,1)
511         movdqu  (%r11,%rbx,1),%xmm5
512         pxor    %xmm12,%xmm4
513         pxor    %xmm12,%xmm5
514
515         decl    %edx
516         jnz     .Loop_dec4x
517
518         movq    16(%rsp),%rax
519 .cfi_def_cfa    %rax,8
520         movl    24(%rsp),%edx
521
522         leaq    160(%rdi),%rdi
523         decl    %edx
524         jnz     .Ldec4x_loop_grande
525
526 .Ldec4x_done:
527         movq    -48(%rax),%r15
528 .cfi_restore    %r15
529         movq    -40(%rax),%r14
530 .cfi_restore    %r14
531         movq    -32(%rax),%r13
532 .cfi_restore    %r13
533         movq    -24(%rax),%r12
534 .cfi_restore    %r12
535         movq    -16(%rax),%rbp
536 .cfi_restore    %rbp
537         movq    -8(%rax),%rbx
538 .cfi_restore    %rbx
539         leaq    (%rax),%rsp
540 .cfi_def_cfa_register   %rsp
541 .Ldec4x_epilogue:
542         .byte   0xf3,0xc3
543 .cfi_endproc    
544 .size   aesni_multi_cbc_decrypt,.-aesni_multi_cbc_decrypt