blob: 4b3c925467f6ae394de45a7d17259c4b805b4e09 [file] [log] [blame]
Pete Bentleya5c947b2019-08-09 14:24:27 +00001# This file is generated from a similarly-named Perl script in the BoringSSL
2# source tree. Do not edit by hand.
3
4#if defined(__has_feature)
5#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM)
6#define OPENSSL_NO_ASM
7#endif
8#endif
9
10#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM)
11#if defined(BORINGSSL_PREFIX)
12#include <boringssl_prefix_symbols_asm.h>
13#endif
14.text
15
16
17.Lp434x2:
18.quad 0xFFFFFFFFFFFFFFFE
19.quad 0xFFFFFFFFFFFFFFFF
20.quad 0xFB82ECF5C5FFFFFF
21.quad 0xF78CB8F062B15D47
22.quad 0xD9F8BFAD038A40AC
23.quad 0x0004683E4E2EE688
24
25
26.Lp434p1:
27.quad 0xFDC1767AE3000000
28.quad 0x7BC65C783158AEA3
29.quad 0x6CFC5FD681C52056
30.quad 0x0002341F27177344
31
32.extern OPENSSL_ia32cap_P
33.hidden OPENSSL_ia32cap_P
34.hidden OPENSSL_ia32cap_P
35.globl sike_fpadd
36.hidden sike_fpadd
37.type sike_fpadd,@function
38sike_fpadd:
39.cfi_startproc
40 pushq %r12
41.cfi_adjust_cfa_offset 8
42.cfi_offset r12, -16
43 pushq %r13
44.cfi_adjust_cfa_offset 8
45.cfi_offset r13, -24
46 pushq %r14
47.cfi_adjust_cfa_offset 8
48.cfi_offset r14, -32
49
50 xorq %rax,%rax
51
52 movq 0(%rdi),%r8
53 addq 0(%rsi),%r8
54 movq 8(%rdi),%r9
55 adcq 8(%rsi),%r9
56 movq 16(%rdi),%r10
57 adcq 16(%rsi),%r10
58 movq 24(%rdi),%r11
59 adcq 24(%rsi),%r11
60 movq 32(%rdi),%r12
61 adcq 32(%rsi),%r12
62 movq 40(%rdi),%r13
63 adcq 40(%rsi),%r13
64 movq 48(%rdi),%r14
65 adcq 48(%rsi),%r14
66
67 movq .Lp434x2(%rip),%rcx
68 subq %rcx,%r8
69 movq 8+.Lp434x2(%rip),%rcx
70 sbbq %rcx,%r9
71 sbbq %rcx,%r10
72 movq 16+.Lp434x2(%rip),%rcx
73 sbbq %rcx,%r11
74 movq 24+.Lp434x2(%rip),%rcx
75 sbbq %rcx,%r12
76 movq 32+.Lp434x2(%rip),%rcx
77 sbbq %rcx,%r13
78 movq 40+.Lp434x2(%rip),%rcx
79 sbbq %rcx,%r14
80
81 sbbq $0,%rax
82
83 movq .Lp434x2(%rip),%rdi
84 andq %rax,%rdi
85 movq 8+.Lp434x2(%rip),%rsi
86 andq %rax,%rsi
87 movq 16+.Lp434x2(%rip),%rcx
88 andq %rax,%rcx
89
90 addq %rdi,%r8
91 movq %r8,0(%rdx)
92 adcq %rsi,%r9
93 movq %r9,8(%rdx)
94 adcq %rsi,%r10
95 movq %r10,16(%rdx)
96 adcq %rcx,%r11
97 movq %r11,24(%rdx)
98
99 setc %cl
100 movq 24+.Lp434x2(%rip),%r8
101 andq %rax,%r8
102 movq 32+.Lp434x2(%rip),%r9
103 andq %rax,%r9
104 movq 40+.Lp434x2(%rip),%r10
105 andq %rax,%r10
106 btq $0,%rcx
107
108 adcq %r8,%r12
109 movq %r12,32(%rdx)
110 adcq %r9,%r13
111 movq %r13,40(%rdx)
112 adcq %r10,%r14
113 movq %r14,48(%rdx)
114
115 popq %r14
116.cfi_adjust_cfa_offset -8
117 popq %r13
118.cfi_adjust_cfa_offset -8
119 popq %r12
120.cfi_adjust_cfa_offset -8
121 .byte 0xf3,0xc3
122.cfi_endproc
123.globl sike_cswap_asm
124.hidden sike_cswap_asm
125.type sike_cswap_asm,@function
126sike_cswap_asm:
127
128
129 movq %rdx,%xmm3
130
131
132
133
134
135 pshufd $68,%xmm3,%xmm3
136
137 movdqu 0(%rdi),%xmm0
138 movdqu 0(%rsi),%xmm1
139 movdqa %xmm1,%xmm2
140 pxor %xmm0,%xmm2
141 pand %xmm3,%xmm2
142 pxor %xmm2,%xmm0
143 pxor %xmm2,%xmm1
144 movdqu %xmm0,0(%rdi)
145 movdqu %xmm1,0(%rsi)
146
147 movdqu 16(%rdi),%xmm0
148 movdqu 16(%rsi),%xmm1
149 movdqa %xmm1,%xmm2
150 pxor %xmm0,%xmm2
151 pand %xmm3,%xmm2
152 pxor %xmm2,%xmm0
153 pxor %xmm2,%xmm1
154 movdqu %xmm0,16(%rdi)
155 movdqu %xmm1,16(%rsi)
156
157 movdqu 32(%rdi),%xmm0
158 movdqu 32(%rsi),%xmm1
159 movdqa %xmm1,%xmm2
160 pxor %xmm0,%xmm2
161 pand %xmm3,%xmm2
162 pxor %xmm2,%xmm0
163 pxor %xmm2,%xmm1
164 movdqu %xmm0,32(%rdi)
165 movdqu %xmm1,32(%rsi)
166
167 movdqu 48(%rdi),%xmm0
168 movdqu 48(%rsi),%xmm1
169 movdqa %xmm1,%xmm2
170 pxor %xmm0,%xmm2
171 pand %xmm3,%xmm2
172 pxor %xmm2,%xmm0
173 pxor %xmm2,%xmm1
174 movdqu %xmm0,48(%rdi)
175 movdqu %xmm1,48(%rsi)
176
177 movdqu 64(%rdi),%xmm0
178 movdqu 64(%rsi),%xmm1
179 movdqa %xmm1,%xmm2
180 pxor %xmm0,%xmm2
181 pand %xmm3,%xmm2
182 pxor %xmm2,%xmm0
183 pxor %xmm2,%xmm1
184 movdqu %xmm0,64(%rdi)
185 movdqu %xmm1,64(%rsi)
186
187 movdqu 80(%rdi),%xmm0
188 movdqu 80(%rsi),%xmm1
189 movdqa %xmm1,%xmm2
190 pxor %xmm0,%xmm2
191 pand %xmm3,%xmm2
192 pxor %xmm2,%xmm0
193 pxor %xmm2,%xmm1
194 movdqu %xmm0,80(%rdi)
195 movdqu %xmm1,80(%rsi)
196
197 movdqu 96(%rdi),%xmm0
198 movdqu 96(%rsi),%xmm1
199 movdqa %xmm1,%xmm2
200 pxor %xmm0,%xmm2
201 pand %xmm3,%xmm2
202 pxor %xmm2,%xmm0
203 pxor %xmm2,%xmm1
204 movdqu %xmm0,96(%rdi)
205 movdqu %xmm1,96(%rsi)
206
207 movdqu 112(%rdi),%xmm0
208 movdqu 112(%rsi),%xmm1
209 movdqa %xmm1,%xmm2
210 pxor %xmm0,%xmm2
211 pand %xmm3,%xmm2
212 pxor %xmm2,%xmm0
213 pxor %xmm2,%xmm1
214 movdqu %xmm0,112(%rdi)
215 movdqu %xmm1,112(%rsi)
216
217 movdqu 128(%rdi),%xmm0
218 movdqu 128(%rsi),%xmm1
219 movdqa %xmm1,%xmm2
220 pxor %xmm0,%xmm2
221 pand %xmm3,%xmm2
222 pxor %xmm2,%xmm0
223 pxor %xmm2,%xmm1
224 movdqu %xmm0,128(%rdi)
225 movdqu %xmm1,128(%rsi)
226
227 movdqu 144(%rdi),%xmm0
228 movdqu 144(%rsi),%xmm1
229 movdqa %xmm1,%xmm2
230 pxor %xmm0,%xmm2
231 pand %xmm3,%xmm2
232 pxor %xmm2,%xmm0
233 pxor %xmm2,%xmm1
234 movdqu %xmm0,144(%rdi)
235 movdqu %xmm1,144(%rsi)
236
237 movdqu 160(%rdi),%xmm0
238 movdqu 160(%rsi),%xmm1
239 movdqa %xmm1,%xmm2
240 pxor %xmm0,%xmm2
241 pand %xmm3,%xmm2
242 pxor %xmm2,%xmm0
243 pxor %xmm2,%xmm1
244 movdqu %xmm0,160(%rdi)
245 movdqu %xmm1,160(%rsi)
246
247 movdqu 176(%rdi),%xmm0
248 movdqu 176(%rsi),%xmm1
249 movdqa %xmm1,%xmm2
250 pxor %xmm0,%xmm2
251 pand %xmm3,%xmm2
252 pxor %xmm2,%xmm0
253 pxor %xmm2,%xmm1
254 movdqu %xmm0,176(%rdi)
255 movdqu %xmm1,176(%rsi)
256
257 movdqu 192(%rdi),%xmm0
258 movdqu 192(%rsi),%xmm1
259 movdqa %xmm1,%xmm2
260 pxor %xmm0,%xmm2
261 pand %xmm3,%xmm2
262 pxor %xmm2,%xmm0
263 pxor %xmm2,%xmm1
264 movdqu %xmm0,192(%rdi)
265 movdqu %xmm1,192(%rsi)
266
267 movdqu 208(%rdi),%xmm0
268 movdqu 208(%rsi),%xmm1
269 movdqa %xmm1,%xmm2
270 pxor %xmm0,%xmm2
271 pand %xmm3,%xmm2
272 pxor %xmm2,%xmm0
273 pxor %xmm2,%xmm1
274 movdqu %xmm0,208(%rdi)
275 movdqu %xmm1,208(%rsi)
276
277 .byte 0xf3,0xc3
278.globl sike_fpsub
279.hidden sike_fpsub
280.type sike_fpsub,@function
281sike_fpsub:
282.cfi_startproc
283 pushq %r12
284.cfi_adjust_cfa_offset 8
285.cfi_offset r12, -16
286 pushq %r13
287.cfi_adjust_cfa_offset 8
288.cfi_offset r13, -24
289 pushq %r14
290.cfi_adjust_cfa_offset 8
291.cfi_offset r14, -32
292
293 xorq %rax,%rax
294
295 movq 0(%rdi),%r8
296 subq 0(%rsi),%r8
297 movq 8(%rdi),%r9
298 sbbq 8(%rsi),%r9
299 movq 16(%rdi),%r10
300 sbbq 16(%rsi),%r10
301 movq 24(%rdi),%r11
302 sbbq 24(%rsi),%r11
303 movq 32(%rdi),%r12
304 sbbq 32(%rsi),%r12
305 movq 40(%rdi),%r13
306 sbbq 40(%rsi),%r13
307 movq 48(%rdi),%r14
308 sbbq 48(%rsi),%r14
309
310 sbbq $0x0,%rax
311
312 movq .Lp434x2(%rip),%rdi
313 andq %rax,%rdi
314 movq 8+.Lp434x2(%rip),%rsi
315 andq %rax,%rsi
316 movq 16+.Lp434x2(%rip),%rcx
317 andq %rax,%rcx
318
319 addq %rdi,%r8
320 movq %r8,0(%rdx)
321 adcq %rsi,%r9
322 movq %r9,8(%rdx)
323 adcq %rsi,%r10
324 movq %r10,16(%rdx)
325 adcq %rcx,%r11
326 movq %r11,24(%rdx)
327
328 setc %cl
329 movq 24+.Lp434x2(%rip),%r8
330 andq %rax,%r8
331 movq 32+.Lp434x2(%rip),%r9
332 andq %rax,%r9
333 movq 40+.Lp434x2(%rip),%r10
334 andq %rax,%r10
335 btq $0x0,%rcx
336
337 adcq %r8,%r12
338 adcq %r9,%r13
339 adcq %r10,%r14
340 movq %r12,32(%rdx)
341 movq %r13,40(%rdx)
342 movq %r14,48(%rdx)
343
344 popq %r14
345.cfi_adjust_cfa_offset -8
346 popq %r13
347.cfi_adjust_cfa_offset -8
348 popq %r12
349.cfi_adjust_cfa_offset -8
350 .byte 0xf3,0xc3
351.cfi_endproc
352.globl sike_mpadd_asm
353.hidden sike_mpadd_asm
354.type sike_mpadd_asm,@function
355sike_mpadd_asm:
356.cfi_startproc
357 movq 0(%rdi),%r8;
358 movq 8(%rdi),%r9
359 movq 16(%rdi),%r10
360 movq 24(%rdi),%r11
361 movq 32(%rdi),%rcx
362 addq 0(%rsi),%r8
363 adcq 8(%rsi),%r9
364 adcq 16(%rsi),%r10
365 adcq 24(%rsi),%r11
366 adcq 32(%rsi),%rcx
367 movq %r8,0(%rdx)
368 movq %r9,8(%rdx)
369 movq %r10,16(%rdx)
370 movq %r11,24(%rdx)
371 movq %rcx,32(%rdx)
372
373 movq 40(%rdi),%r8
374 movq 48(%rdi),%r9
375 adcq 40(%rsi),%r8
376 adcq 48(%rsi),%r9
377 movq %r8,40(%rdx)
378 movq %r9,48(%rdx)
379 .byte 0xf3,0xc3
380.cfi_endproc
381.globl sike_mpsubx2_asm
382.hidden sike_mpsubx2_asm
383.type sike_mpsubx2_asm,@function
384sike_mpsubx2_asm:
385.cfi_startproc
386 xorq %rax,%rax
387
388 movq 0(%rdi),%r8
389 movq 8(%rdi),%r9
390 movq 16(%rdi),%r10
391 movq 24(%rdi),%r11
392 movq 32(%rdi),%rcx
393 subq 0(%rsi),%r8
394 sbbq 8(%rsi),%r9
395 sbbq 16(%rsi),%r10
396 sbbq 24(%rsi),%r11
397 sbbq 32(%rsi),%rcx
398 movq %r8,0(%rdx)
399 movq %r9,8(%rdx)
400 movq %r10,16(%rdx)
401 movq %r11,24(%rdx)
402 movq %rcx,32(%rdx)
403
404 movq 40(%rdi),%r8
405 movq 48(%rdi),%r9
406 movq 56(%rdi),%r10
407 movq 64(%rdi),%r11
408 movq 72(%rdi),%rcx
409 sbbq 40(%rsi),%r8
410 sbbq 48(%rsi),%r9
411 sbbq 56(%rsi),%r10
412 sbbq 64(%rsi),%r11
413 sbbq 72(%rsi),%rcx
414 movq %r8,40(%rdx)
415 movq %r9,48(%rdx)
416 movq %r10,56(%rdx)
417 movq %r11,64(%rdx)
418 movq %rcx,72(%rdx)
419
420 movq 80(%rdi),%r8
421 movq 88(%rdi),%r9
422 movq 96(%rdi),%r10
423 movq 104(%rdi),%r11
424 sbbq 80(%rsi),%r8
425 sbbq 88(%rsi),%r9
426 sbbq 96(%rsi),%r10
427 sbbq 104(%rsi),%r11
428 sbbq $0x0,%rax
429 movq %r8,80(%rdx)
430 movq %r9,88(%rdx)
431 movq %r10,96(%rdx)
432 movq %r11,104(%rdx)
433 .byte 0xf3,0xc3
434.cfi_endproc
435.globl sike_mpdblsubx2_asm
436.hidden sike_mpdblsubx2_asm
437.type sike_mpdblsubx2_asm,@function
438sike_mpdblsubx2_asm:
439.cfi_startproc
440 pushq %r12
441.cfi_adjust_cfa_offset 8
442.cfi_offset r12, -16
443 pushq %r13
444.cfi_adjust_cfa_offset 8
445.cfi_offset r13, -24
446
447 xorq %rax,%rax
448
449
450 movq 0(%rdx),%r8
451 movq 8(%rdx),%r9
452 movq 16(%rdx),%r10
453 movq 24(%rdx),%r11
454 movq 32(%rdx),%r12
455 movq 40(%rdx),%r13
456 movq 48(%rdx),%rcx
457 subq 0(%rdi),%r8
458 sbbq 8(%rdi),%r9
459 sbbq 16(%rdi),%r10
460 sbbq 24(%rdi),%r11
461 sbbq 32(%rdi),%r12
462 sbbq 40(%rdi),%r13
463 sbbq 48(%rdi),%rcx
464 adcq $0x0,%rax
465
466
467 subq 0(%rsi),%r8
468 sbbq 8(%rsi),%r9
469 sbbq 16(%rsi),%r10
470 sbbq 24(%rsi),%r11
471 sbbq 32(%rsi),%r12
472 sbbq 40(%rsi),%r13
473 sbbq 48(%rsi),%rcx
474 adcq $0x0,%rax
475
476
477 movq %r8,0(%rdx)
478 movq %r9,8(%rdx)
479 movq %r10,16(%rdx)
480 movq %r11,24(%rdx)
481 movq %r12,32(%rdx)
482 movq %r13,40(%rdx)
483 movq %rcx,48(%rdx)
484
485
486 movq 56(%rdx),%r8
487 movq 64(%rdx),%r9
488 movq 72(%rdx),%r10
489 movq 80(%rdx),%r11
490 movq 88(%rdx),%r12
491 movq 96(%rdx),%r13
492 movq 104(%rdx),%rcx
493
494 subq %rax,%r8
495 sbbq 56(%rdi),%r8
496 sbbq 64(%rdi),%r9
497 sbbq 72(%rdi),%r10
498 sbbq 80(%rdi),%r11
499 sbbq 88(%rdi),%r12
500 sbbq 96(%rdi),%r13
501 sbbq 104(%rdi),%rcx
502
503
504 subq 56(%rsi),%r8
505 sbbq 64(%rsi),%r9
506 sbbq 72(%rsi),%r10
507 sbbq 80(%rsi),%r11
508 sbbq 88(%rsi),%r12
509 sbbq 96(%rsi),%r13
510 sbbq 104(%rsi),%rcx
511
512
513 movq %r8,56(%rdx)
514 movq %r9,64(%rdx)
515 movq %r10,72(%rdx)
516 movq %r11,80(%rdx)
517 movq %r12,88(%rdx)
518 movq %r13,96(%rdx)
519 movq %rcx,104(%rdx)
520
521 popq %r13
522.cfi_adjust_cfa_offset -8
523 popq %r12
524.cfi_adjust_cfa_offset -8
525 .byte 0xf3,0xc3
526.cfi_endproc
527
528.Lrdc_bdw:
529.cfi_startproc
530
531.cfi_adjust_cfa_offset 32
532.cfi_offset r12, -16
533.cfi_offset r13, -24
534.cfi_offset r14, -32
535.cfi_offset r15, -40
536
537 xorq %rax,%rax
538 movq 0+0(%rdi),%rdx
539 mulxq 0+.Lp434p1(%rip),%r8,%r9
540 mulxq 8+.Lp434p1(%rip),%r12,%r10
541 mulxq 16+.Lp434p1(%rip),%r13,%r11
542
543 adoxq %r12,%r9
544 adoxq %r13,%r10
545
546 mulxq 24+.Lp434p1(%rip),%r13,%r12
547 adoxq %r13,%r11
548 adoxq %rax,%r12
549
550 xorq %rax,%rax
551 movq 0+8(%rdi),%rdx
552 mulxq 0+.Lp434p1(%rip),%r13,%rcx
553 adcxq %r13,%r9
554 adcxq %rcx,%r10
555
556 mulxq 8+.Lp434p1(%rip),%rcx,%r13
557 adcxq %r13,%r11
558 adoxq %rcx,%r10
559
560 mulxq 16+.Lp434p1(%rip),%rcx,%r13
561 adcxq %r13,%r12
562 adoxq %rcx,%r11
563
564 mulxq 24+.Lp434p1(%rip),%rcx,%r13
565 adcxq %rax,%r13
566 adoxq %rcx,%r12
567 adoxq %rax,%r13
568
569 xorq %rcx,%rcx
570 addq 24(%rdi),%r8
571 adcq 32(%rdi),%r9
572 adcq 40(%rdi),%r10
573 adcq 48(%rdi),%r11
574 adcq 56(%rdi),%r12
575 adcq 64(%rdi),%r13
576 adcq 72(%rdi),%rcx
577 movq %r8,24(%rdi)
578 movq %r9,32(%rdi)
579 movq %r10,40(%rdi)
580 movq %r11,48(%rdi)
581 movq %r12,56(%rdi)
582 movq %r13,64(%rdi)
583 movq %rcx,72(%rdi)
584 movq 80(%rdi),%r8
585 movq 88(%rdi),%r9
586 movq 96(%rdi),%r10
587 movq 104(%rdi),%r11
588 adcq $0x0,%r8
589 adcq $0x0,%r9
590 adcq $0x0,%r10
591 adcq $0x0,%r11
592 movq %r8,80(%rdi)
593 movq %r9,88(%rdi)
594 movq %r10,96(%rdi)
595 movq %r11,104(%rdi)
596
597 xorq %rax,%rax
598 movq 16+0(%rdi),%rdx
599 mulxq 0+.Lp434p1(%rip),%r8,%r9
600 mulxq 8+.Lp434p1(%rip),%r12,%r10
601 mulxq 16+.Lp434p1(%rip),%r13,%r11
602
603 adoxq %r12,%r9
604 adoxq %r13,%r10
605
606 mulxq 24+.Lp434p1(%rip),%r13,%r12
607 adoxq %r13,%r11
608 adoxq %rax,%r12
609
610 xorq %rax,%rax
611 movq 16+8(%rdi),%rdx
612 mulxq 0+.Lp434p1(%rip),%r13,%rcx
613 adcxq %r13,%r9
614 adcxq %rcx,%r10
615
616 mulxq 8+.Lp434p1(%rip),%rcx,%r13
617 adcxq %r13,%r11
618 adoxq %rcx,%r10
619
620 mulxq 16+.Lp434p1(%rip),%rcx,%r13
621 adcxq %r13,%r12
622 adoxq %rcx,%r11
623
624 mulxq 24+.Lp434p1(%rip),%rcx,%r13
625 adcxq %rax,%r13
626 adoxq %rcx,%r12
627 adoxq %rax,%r13
628
629 xorq %rcx,%rcx
630 addq 40(%rdi),%r8
631 adcq 48(%rdi),%r9
632 adcq 56(%rdi),%r10
633 adcq 64(%rdi),%r11
634 adcq 72(%rdi),%r12
635 adcq 80(%rdi),%r13
636 adcq 88(%rdi),%rcx
637 movq %r8,40(%rdi)
638 movq %r9,48(%rdi)
639 movq %r10,56(%rdi)
640 movq %r11,64(%rdi)
641 movq %r12,72(%rdi)
642 movq %r13,80(%rdi)
643 movq %rcx,88(%rdi)
644 movq 96(%rdi),%r8
645 movq 104(%rdi),%r9
646 adcq $0x0,%r8
647 adcq $0x0,%r9
648 movq %r8,96(%rdi)
649 movq %r9,104(%rdi)
650
651 xorq %rax,%rax
652 movq 32+0(%rdi),%rdx
653 mulxq 0+.Lp434p1(%rip),%r8,%r9
654 mulxq 8+.Lp434p1(%rip),%r12,%r10
655 mulxq 16+.Lp434p1(%rip),%r13,%r11
656
657 adoxq %r12,%r9
658 adoxq %r13,%r10
659
660 mulxq 24+.Lp434p1(%rip),%r13,%r12
661 adoxq %r13,%r11
662 adoxq %rax,%r12
663
664 xorq %rax,%rax
665 movq 32+8(%rdi),%rdx
666 mulxq 0+.Lp434p1(%rip),%r13,%rcx
667 adcxq %r13,%r9
668 adcxq %rcx,%r10
669
670 mulxq 8+.Lp434p1(%rip),%rcx,%r13
671 adcxq %r13,%r11
672 adoxq %rcx,%r10
673
674 mulxq 16+.Lp434p1(%rip),%rcx,%r13
675 adcxq %r13,%r12
676 adoxq %rcx,%r11
677
678 mulxq 24+.Lp434p1(%rip),%rcx,%r13
679 adcxq %rax,%r13
680 adoxq %rcx,%r12
681 adoxq %rax,%r13
682
683 xorq %rcx,%rcx
684 addq 56(%rdi),%r8
685 adcq 64(%rdi),%r9
686 adcq 72(%rdi),%r10
687 adcq 80(%rdi),%r11
688 adcq 88(%rdi),%r12
689 adcq 96(%rdi),%r13
690 adcq 104(%rdi),%rcx
691 movq %r8,0(%rsi)
692 movq %r9,8(%rsi)
693 movq %r10,72(%rdi)
694 movq %r11,80(%rdi)
695 movq %r12,88(%rdi)
696 movq %r13,96(%rdi)
697 movq %rcx,104(%rdi)
698
699 xorq %rax,%rax
700 movq 48(%rdi),%rdx
701 mulxq 0+.Lp434p1(%rip),%r8,%r9
702 mulxq 8+.Lp434p1(%rip),%r12,%r10
703 mulxq 16+.Lp434p1(%rip),%r13,%r11
704
705 adoxq %r12,%r9
706 adoxq %r13,%r10
707
708 mulxq 24+.Lp434p1(%rip),%r13,%r12
709 adoxq %r13,%r11
710 adoxq %rax,%r12
711
712 addq 72(%rdi),%r8
713 adcq 80(%rdi),%r9
714 adcq 88(%rdi),%r10
715 adcq 96(%rdi),%r11
716 adcq 104(%rdi),%r12
717 movq %r8,16(%rsi)
718 movq %r9,24(%rsi)
719 movq %r10,32(%rsi)
720 movq %r11,40(%rsi)
721 movq %r12,48(%rsi)
722
723
724 popq %r15
725.cfi_adjust_cfa_offset -8
726.cfi_same_value r15
727 popq %r14
728.cfi_adjust_cfa_offset -8
729.cfi_same_value r14
730 popq %r13
731.cfi_adjust_cfa_offset -8
732.cfi_same_value r13
733 popq %r12
734.cfi_adjust_cfa_offset -8
735.cfi_same_value r12
736 .byte 0xf3,0xc3
737.cfi_endproc
738.globl sike_fprdc
739.hidden sike_fprdc
740.type sike_fprdc,@function
741sike_fprdc:
742.cfi_startproc
743 pushq %r12
744.cfi_adjust_cfa_offset 8
745.cfi_offset r12, -16
746 pushq %r13
747.cfi_adjust_cfa_offset 8
748.cfi_offset r13, -24
749 pushq %r14
750.cfi_adjust_cfa_offset 8
751.cfi_offset r14, -32
752 pushq %r15
753.cfi_adjust_cfa_offset 8
754.cfi_offset r15, -40
755
756
757
758 leaq OPENSSL_ia32cap_P(%rip),%rcx
759 movq 8(%rcx),%rcx
760 andl $0x80100,%ecx
761 cmpl $0x80100,%ecx
762 je .Lrdc_bdw
763
764
765
766
767 movq 0+0(%rdi),%r14
768 movq 0+.Lp434p1(%rip),%rax
769 mulq %r14
770 xorq %r10,%r10
771 movq %rax,%r8
772 movq %rdx,%r9
773
774
775 movq 8+.Lp434p1(%rip),%rax
776 mulq %r14
777 xorq %r11,%r11
778 addq %rax,%r9
779 adcq %rdx,%r10
780
781
782 movq 0+8(%rdi),%rcx
783 movq 0+.Lp434p1(%rip),%rax
784 mulq %rcx
785 addq %rax,%r9
786 adcq %rdx,%r10
787 adcq $0x0,%r11
788
789
790 xorq %r12,%r12
791 movq 16+.Lp434p1(%rip),%rax
792 mulq %r14
793 addq %rax,%r10
794 adcq %rdx,%r11
795 adcq $0x0,%r12
796
797
798 movq 8+.Lp434p1(%rip),%rax
799 mulq %rcx
800 addq %rax,%r10
801 adcq %rdx,%r11
802 adcq $0x0,%r12
803
804
805 movq 24+.Lp434p1(%rip),%rax
806 mulq %r14
807 xorq %r13,%r13
808 addq %rax,%r11
809 adcq %rdx,%r12
810 adcq $0x0,%r13
811
812
813 movq 16+.Lp434p1(%rip),%rax
814 mulq %rcx
815 addq %rax,%r11
816 adcq %rdx,%r12
817 adcq $0x0,%r13
818
819
820 movq 24+.Lp434p1(%rip),%rax
821 mulq %rcx
822 addq %rax,%r12
823 adcq %rdx,%r13
824
825
826 xorq %rcx,%rcx
827 addq 24(%rdi),%r8
828 adcq 32(%rdi),%r9
829 adcq 40(%rdi),%r10
830 adcq 48(%rdi),%r11
831 adcq 56(%rdi),%r12
832 adcq 64(%rdi),%r13
833 adcq 72(%rdi),%rcx
834 movq %r8,24(%rdi)
835 movq %r9,32(%rdi)
836 movq %r10,40(%rdi)
837 movq %r11,48(%rdi)
838 movq %r12,56(%rdi)
839 movq %r13,64(%rdi)
840 movq %rcx,72(%rdi)
841 movq 80(%rdi),%r8
842 movq 88(%rdi),%r9
843 movq 96(%rdi),%r10
844 movq 104(%rdi),%r11
845 adcq $0x0,%r8
846 adcq $0x0,%r9
847 adcq $0x0,%r10
848 adcq $0x0,%r11
849 movq %r8,80(%rdi)
850 movq %r9,88(%rdi)
851 movq %r10,96(%rdi)
852 movq %r11,104(%rdi)
853
854
855 movq 16+0(%rdi),%r14
856 movq 0+.Lp434p1(%rip),%rax
857 mulq %r14
858 xorq %r10,%r10
859 movq %rax,%r8
860 movq %rdx,%r9
861
862
863 movq 8+.Lp434p1(%rip),%rax
864 mulq %r14
865 xorq %r11,%r11
866 addq %rax,%r9
867 adcq %rdx,%r10
868
869
870 movq 16+8(%rdi),%rcx
871 movq 0+.Lp434p1(%rip),%rax
872 mulq %rcx
873 addq %rax,%r9
874 adcq %rdx,%r10
875 adcq $0x0,%r11
876
877
878 xorq %r12,%r12
879 movq 16+.Lp434p1(%rip),%rax
880 mulq %r14
881 addq %rax,%r10
882 adcq %rdx,%r11
883 adcq $0x0,%r12
884
885
886 movq 8+.Lp434p1(%rip),%rax
887 mulq %rcx
888 addq %rax,%r10
889 adcq %rdx,%r11
890 adcq $0x0,%r12
891
892
893 movq 24+.Lp434p1(%rip),%rax
894 mulq %r14
895 xorq %r13,%r13
896 addq %rax,%r11
897 adcq %rdx,%r12
898 adcq $0x0,%r13
899
900
901 movq 16+.Lp434p1(%rip),%rax
902 mulq %rcx
903 addq %rax,%r11
904 adcq %rdx,%r12
905 adcq $0x0,%r13
906
907
908 movq 24+.Lp434p1(%rip),%rax
909 mulq %rcx
910 addq %rax,%r12
911 adcq %rdx,%r13
912
913
914 xorq %rcx,%rcx
915 addq 40(%rdi),%r8
916 adcq 48(%rdi),%r9
917 adcq 56(%rdi),%r10
918 adcq 64(%rdi),%r11
919 adcq 72(%rdi),%r12
920 adcq 80(%rdi),%r13
921 adcq 88(%rdi),%rcx
922 movq %r8,40(%rdi)
923 movq %r9,48(%rdi)
924 movq %r10,56(%rdi)
925 movq %r11,64(%rdi)
926 movq %r12,72(%rdi)
927 movq %r13,80(%rdi)
928 movq %rcx,88(%rdi)
929 movq 96(%rdi),%r8
930 movq 104(%rdi),%r9
931 adcq $0x0,%r8
932 adcq $0x0,%r9
933 movq %r8,96(%rdi)
934 movq %r9,104(%rdi)
935
936
937 movq 32+0(%rdi),%r14
938 movq 0+.Lp434p1(%rip),%rax
939 mulq %r14
940 xorq %r10,%r10
941 movq %rax,%r8
942 movq %rdx,%r9
943
944
945 movq 8+.Lp434p1(%rip),%rax
946 mulq %r14
947 xorq %r11,%r11
948 addq %rax,%r9
949 adcq %rdx,%r10
950
951
952 movq 32+8(%rdi),%rcx
953 movq 0+.Lp434p1(%rip),%rax
954 mulq %rcx
955 addq %rax,%r9
956 adcq %rdx,%r10
957 adcq $0x0,%r11
958
959
960 xorq %r12,%r12
961 movq 16+.Lp434p1(%rip),%rax
962 mulq %r14
963 addq %rax,%r10
964 adcq %rdx,%r11
965 adcq $0x0,%r12
966
967
968 movq 8+.Lp434p1(%rip),%rax
969 mulq %rcx
970 addq %rax,%r10
971 adcq %rdx,%r11
972 adcq $0x0,%r12
973
974
975 movq 24+.Lp434p1(%rip),%rax
976 mulq %r14
977 xorq %r13,%r13
978 addq %rax,%r11
979 adcq %rdx,%r12
980 adcq $0x0,%r13
981
982
983 movq 16+.Lp434p1(%rip),%rax
984 mulq %rcx
985 addq %rax,%r11
986 adcq %rdx,%r12
987 adcq $0x0,%r13
988
989
990 movq 24+.Lp434p1(%rip),%rax
991 mulq %rcx
992 addq %rax,%r12
993 adcq %rdx,%r13
994
995
996 xorq %rcx,%rcx
997 addq 56(%rdi),%r8
998 adcq 64(%rdi),%r9
999 adcq 72(%rdi),%r10
1000 adcq 80(%rdi),%r11
1001 adcq 88(%rdi),%r12
1002 adcq 96(%rdi),%r13
1003 adcq 104(%rdi),%rcx
1004 movq %r8,0(%rsi)
1005 movq %r9,8(%rsi)
1006 movq %r10,72(%rdi)
1007 movq %r11,80(%rdi)
1008 movq %r12,88(%rdi)
1009 movq %r13,96(%rdi)
1010 movq %rcx,104(%rdi)
1011
1012 movq 48(%rdi),%r13
1013
1014 xorq %r10,%r10
1015 movq 0+.Lp434p1(%rip),%rax
1016 mulq %r13
1017 movq %rax,%r8
1018 movq %rdx,%r9
1019
1020 xorq %r11,%r11
1021 movq 8+.Lp434p1(%rip),%rax
1022 mulq %r13
1023 addq %rax,%r9
1024 adcq %rdx,%r10
1025
1026 xorq %r12,%r12
1027 movq 16+.Lp434p1(%rip),%rax
1028 mulq %r13
1029 addq %rax,%r10
1030 adcq %rdx,%r11
1031
1032 movq 24+.Lp434p1(%rip),%rax
1033 mulq %r13
1034 addq %rax,%r11
1035 adcq %rdx,%r12
1036
1037 addq 72(%rdi),%r8
1038 adcq 80(%rdi),%r9
1039 adcq 88(%rdi),%r10
1040 adcq 96(%rdi),%r11
1041 adcq 104(%rdi),%r12
1042 movq %r8,16(%rsi)
1043 movq %r9,24(%rsi)
1044 movq %r10,32(%rsi)
1045 movq %r11,40(%rsi)
1046 movq %r12,48(%rsi)
1047
1048
1049 popq %r15
1050.cfi_adjust_cfa_offset -8
1051 popq %r14
1052.cfi_adjust_cfa_offset -8
1053 popq %r13
1054.cfi_adjust_cfa_offset -8
1055 popq %r12
1056.cfi_adjust_cfa_offset -8
1057 .byte 0xf3,0xc3
1058.cfi_endproc
1059.Lmul_bdw:
1060.cfi_startproc
1061
1062.cfi_adjust_cfa_offset 32
1063.cfi_offset r12, -16
1064.cfi_offset r13, -24
1065.cfi_offset r14, -32
1066.cfi_offset r15, -40
1067
1068
1069 movq %rdx,%rcx
1070 xorq %rax,%rax
1071
1072
1073 movq 0(%rdi),%r8
1074 movq 8(%rdi),%r9
1075 movq 16(%rdi),%r10
1076 movq 24(%rdi),%r11
1077
1078 pushq %rbx
1079.cfi_adjust_cfa_offset 8
1080.cfi_offset rbx, -48
1081 pushq %rbp
1082.cfi_offset rbp, -56
1083.cfi_adjust_cfa_offset 8
1084 subq $96,%rsp
1085.cfi_adjust_cfa_offset 96
1086
1087 addq 32(%rdi),%r8
1088 adcq 40(%rdi),%r9
1089 adcq 48(%rdi),%r10
1090 adcq $0x0,%r11
1091 sbbq $0x0,%rax
1092 movq %r8,0(%rsp)
1093 movq %r9,8(%rsp)
1094 movq %r10,16(%rsp)
1095 movq %r11,24(%rsp)
1096
1097
1098 xorq %rbx,%rbx
1099 movq 0(%rsi),%r12
1100 movq 8(%rsi),%r13
1101 movq 16(%rsi),%r14
1102 movq 24(%rsi),%r15
1103 addq 32(%rsi),%r12
1104 adcq 40(%rsi),%r13
1105 adcq 48(%rsi),%r14
1106 adcq $0x0,%r15
1107 sbbq $0x0,%rbx
1108 movq %r12,32(%rsp)
1109 movq %r13,40(%rsp)
1110 movq %r14,48(%rsp)
1111 movq %r15,56(%rsp)
1112
1113
1114 andq %rax,%r12
1115 andq %rax,%r13
1116 andq %rax,%r14
1117 andq %rax,%r15
1118
1119
1120 andq %rbx,%r8
1121 andq %rbx,%r9
1122 andq %rbx,%r10
1123 andq %rbx,%r11
1124
1125
1126 addq %r12,%r8
1127 adcq %r13,%r9
1128 adcq %r14,%r10
1129 adcq %r15,%r11
1130 movq %r8,64(%rsp)
1131 movq %r9,72(%rsp)
1132 movq %r10,80(%rsp)
1133 movq %r11,88(%rsp)
1134
1135
1136 movq 0+0(%rsp),%rdx
1137 mulxq 32+0(%rsp),%r9,%r8
1138 movq %r9,0+0(%rsp)
1139 mulxq 32+8(%rsp),%r10,%r9
1140 xorq %rax,%rax
1141 adoxq %r10,%r8
1142 mulxq 32+16(%rsp),%r11,%r10
1143 adoxq %r11,%r9
1144 mulxq 32+24(%rsp),%r12,%r11
1145 adoxq %r12,%r10
1146
1147 movq 0+8(%rsp),%rdx
1148 mulxq 32+0(%rsp),%r12,%r13
1149 adoxq %rax,%r11
1150 xorq %rax,%rax
1151 mulxq 32+8(%rsp),%r15,%r14
1152 adoxq %r8,%r12
1153 movq %r12,0+8(%rsp)
1154 adcxq %r15,%r13
1155 mulxq 32+16(%rsp),%rbx,%r15
1156 adcxq %rbx,%r14
1157 adoxq %r9,%r13
1158 mulxq 32+24(%rsp),%rbp,%rbx
1159 adcxq %rbp,%r15
1160 adcxq %rax,%rbx
1161 adoxq %r10,%r14
1162
1163 movq 0+16(%rsp),%rdx
1164 mulxq 32+0(%rsp),%r8,%r9
1165 adoxq %r11,%r15
1166 adoxq %rax,%rbx
1167 xorq %rax,%rax
1168 mulxq 32+8(%rsp),%r11,%r10
1169 adoxq %r13,%r8
1170 movq %r8,0+16(%rsp)
1171 adcxq %r11,%r9
1172 mulxq 32+16(%rsp),%r12,%r11
1173 adcxq %r12,%r10
1174 adoxq %r14,%r9
1175 mulxq 32+24(%rsp),%rbp,%r12
1176 adcxq %rbp,%r11
1177 adcxq %rax,%r12
1178
1179 adoxq %r15,%r10
1180 adoxq %rbx,%r11
1181 adoxq %rax,%r12
1182
1183 movq 0+24(%rsp),%rdx
1184 mulxq 32+0(%rsp),%r8,%r13
1185 xorq %rax,%rax
1186 mulxq 32+8(%rsp),%r15,%r14
1187 adcxq %r15,%r13
1188 adoxq %r8,%r9
1189 mulxq 32+16(%rsp),%rbx,%r15
1190 adcxq %rbx,%r14
1191 adoxq %r13,%r10
1192 mulxq 32+24(%rsp),%rbp,%rbx
1193 adcxq %rbp,%r15
1194 adcxq %rax,%rbx
1195 adoxq %r14,%r11
1196 adoxq %r15,%r12
1197 adoxq %rax,%rbx
1198 movq %r9,0+24(%rsp)
1199 movq %r10,0+32(%rsp)
1200 movq %r11,0+40(%rsp)
1201 movq %r12,0+48(%rsp)
1202 movq %rbx,0+56(%rsp)
1203
1204
1205
1206 movq 0+0(%rdi),%rdx
1207 mulxq 0+0(%rsi),%r9,%r8
1208 movq %r9,0+0(%rcx)
1209 mulxq 0+8(%rsi),%r10,%r9
1210 xorq %rax,%rax
1211 adoxq %r10,%r8
1212 mulxq 0+16(%rsi),%r11,%r10
1213 adoxq %r11,%r9
1214 mulxq 0+24(%rsi),%r12,%r11
1215 adoxq %r12,%r10
1216
1217 movq 0+8(%rdi),%rdx
1218 mulxq 0+0(%rsi),%r12,%r13
1219 adoxq %rax,%r11
1220 xorq %rax,%rax
1221 mulxq 0+8(%rsi),%r15,%r14
1222 adoxq %r8,%r12
1223 movq %r12,0+8(%rcx)
1224 adcxq %r15,%r13
1225 mulxq 0+16(%rsi),%rbx,%r15
1226 adcxq %rbx,%r14
1227 adoxq %r9,%r13
1228 mulxq 0+24(%rsi),%rbp,%rbx
1229 adcxq %rbp,%r15
1230 adcxq %rax,%rbx
1231 adoxq %r10,%r14
1232
1233 movq 0+16(%rdi),%rdx
1234 mulxq 0+0(%rsi),%r8,%r9
1235 adoxq %r11,%r15
1236 adoxq %rax,%rbx
1237 xorq %rax,%rax
1238 mulxq 0+8(%rsi),%r11,%r10
1239 adoxq %r13,%r8
1240 movq %r8,0+16(%rcx)
1241 adcxq %r11,%r9
1242 mulxq 0+16(%rsi),%r12,%r11
1243 adcxq %r12,%r10
1244 adoxq %r14,%r9
1245 mulxq 0+24(%rsi),%rbp,%r12
1246 adcxq %rbp,%r11
1247 adcxq %rax,%r12
1248
1249 adoxq %r15,%r10
1250 adoxq %rbx,%r11
1251 adoxq %rax,%r12
1252
1253 movq 0+24(%rdi),%rdx
1254 mulxq 0+0(%rsi),%r8,%r13
1255 xorq %rax,%rax
1256 mulxq 0+8(%rsi),%r15,%r14
1257 adcxq %r15,%r13
1258 adoxq %r8,%r9
1259 mulxq 0+16(%rsi),%rbx,%r15
1260 adcxq %rbx,%r14
1261 adoxq %r13,%r10
1262 mulxq 0+24(%rsi),%rbp,%rbx
1263 adcxq %rbp,%r15
1264 adcxq %rax,%rbx
1265 adoxq %r14,%r11
1266 adoxq %r15,%r12
1267 adoxq %rax,%rbx
1268 movq %r9,0+24(%rcx)
1269 movq %r10,0+32(%rcx)
1270 movq %r11,0+40(%rcx)
1271 movq %r12,0+48(%rcx)
1272 movq %rbx,0+56(%rcx)
1273
1274
1275
1276 movq 32+0(%rdi),%rdx
1277 mulxq 32+0(%rsi),%r9,%r8
1278 movq %r9,64+0(%rcx)
1279 mulxq 32+8(%rsi),%r10,%r9
1280 xorq %rax,%rax
1281 adoxq %r10,%r8
1282 mulxq 32+16(%rsi),%r11,%r10
1283 adoxq %r11,%r9
1284
1285 movq 32+8(%rdi),%rdx
1286 mulxq 32+0(%rsi),%r12,%r11
1287 adoxq %rax,%r10
1288 xorq %rax,%rax
1289
1290 mulxq 32+8(%rsi),%r14,%r13
1291 adoxq %r8,%r12
1292 movq %r12,64+8(%rcx)
1293 adcxq %r14,%r11
1294
1295 mulxq 32+16(%rsi),%r8,%r14
1296 adoxq %r9,%r11
1297 adcxq %r8,%r13
1298 adcxq %rax,%r14
1299 adoxq %r10,%r13
1300
1301 movq 32+16(%rdi),%rdx
1302 mulxq 32+0(%rsi),%r8,%r9
1303 adoxq %rax,%r14
1304 xorq %rax,%rax
1305
1306 mulxq 32+8(%rsi),%r10,%r12
1307 adoxq %r11,%r8
1308 movq %r8,64+16(%rcx)
1309 adcxq %r13,%r9
1310
1311 mulxq 32+16(%rsi),%r11,%r8
1312 adcxq %r14,%r12
1313 adcxq %rax,%r8
1314 adoxq %r10,%r9
1315 adoxq %r12,%r11
1316 adoxq %rax,%r8
1317 movq %r9,64+24(%rcx)
1318 movq %r11,64+32(%rcx)
1319 movq %r8,64+40(%rcx)
1320
1321
1322
1323
1324 movq 64(%rsp),%r8
1325 movq 72(%rsp),%r9
1326 movq 80(%rsp),%r10
1327 movq 88(%rsp),%r11
1328
1329 movq 32(%rsp),%rax
1330 addq %rax,%r8
1331 movq 40(%rsp),%rax
1332 adcq %rax,%r9
1333 movq 48(%rsp),%rax
1334 adcq %rax,%r10
1335 movq 56(%rsp),%rax
1336 adcq %rax,%r11
1337
1338
1339 movq 0(%rsp),%r12
1340 movq 8(%rsp),%r13
1341 movq 16(%rsp),%r14
1342 movq 24(%rsp),%r15
1343 subq 0(%rcx),%r12
1344 sbbq 8(%rcx),%r13
1345 sbbq 16(%rcx),%r14
1346 sbbq 24(%rcx),%r15
1347 sbbq 32(%rcx),%r8
1348 sbbq 40(%rcx),%r9
1349 sbbq 48(%rcx),%r10
1350 sbbq 56(%rcx),%r11
1351
1352
1353 subq 64(%rcx),%r12
1354 sbbq 72(%rcx),%r13
1355 sbbq 80(%rcx),%r14
1356 sbbq 88(%rcx),%r15
1357 sbbq 96(%rcx),%r8
1358 sbbq 104(%rcx),%r9
1359 sbbq $0x0,%r10
1360 sbbq $0x0,%r11
1361
1362 addq 32(%rcx),%r12
1363 movq %r12,32(%rcx)
1364 adcq 40(%rcx),%r13
1365 movq %r13,40(%rcx)
1366 adcq 48(%rcx),%r14
1367 movq %r14,48(%rcx)
1368 adcq 56(%rcx),%r15
1369 movq %r15,56(%rcx)
1370 adcq 64(%rcx),%r8
1371 movq %r8,64(%rcx)
1372 adcq 72(%rcx),%r9
1373 movq %r9,72(%rcx)
1374 adcq 80(%rcx),%r10
1375 movq %r10,80(%rcx)
1376 adcq 88(%rcx),%r11
1377 movq %r11,88(%rcx)
1378 movq 96(%rcx),%r12
1379 adcq $0x0,%r12
1380 movq %r12,96(%rcx)
1381 movq 104(%rcx),%r13
1382 adcq $0x0,%r13
1383 movq %r13,104(%rcx)
1384
1385 addq $96,%rsp
1386.cfi_adjust_cfa_offset -96
1387 popq %rbp
1388.cfi_adjust_cfa_offset -8
1389.cfi_same_value rbp
1390 popq %rbx
1391.cfi_adjust_cfa_offset -8
1392.cfi_same_value rbx
1393
1394
1395 popq %r15
1396.cfi_adjust_cfa_offset -8
1397.cfi_same_value r15
1398 popq %r14
1399.cfi_adjust_cfa_offset -8
1400.cfi_same_value r14
1401 popq %r13
1402.cfi_adjust_cfa_offset -8
1403.cfi_same_value r13
1404 popq %r12
1405.cfi_adjust_cfa_offset -8
1406.cfi_same_value r12
1407 .byte 0xf3,0xc3
1408.cfi_endproc
1409
1410.globl sike_mpmul
1411.hidden sike_mpmul
1412.type sike_mpmul,@function
1413sike_mpmul:
1414.cfi_startproc
1415 pushq %r12
1416.cfi_adjust_cfa_offset 8
1417.cfi_offset r12, -16
1418 pushq %r13
1419.cfi_adjust_cfa_offset 8
1420.cfi_offset r13, -24
1421 pushq %r14
1422.cfi_adjust_cfa_offset 8
1423.cfi_offset r14, -32
1424 pushq %r15
1425.cfi_adjust_cfa_offset 8
1426.cfi_offset r15, -40
1427
1428
1429
1430 leaq OPENSSL_ia32cap_P(%rip),%rcx
1431 movq 8(%rcx),%rcx
1432 andl $0x80100,%ecx
1433 cmpl $0x80100,%ecx
1434 je .Lmul_bdw
1435
1436
1437
1438 movq %rdx,%rcx
1439
1440 subq $112,%rsp
1441.cfi_adjust_cfa_offset 112
1442
1443
1444 xorq %rax,%rax
1445 movq 32(%rdi),%r8
1446 movq 40(%rdi),%r9
1447 movq 48(%rdi),%r10
1448 xorq %r11,%r11
1449 addq 0(%rdi),%r8
1450 adcq 8(%rdi),%r9
1451 adcq 16(%rdi),%r10
1452 adcq 24(%rdi),%r11
1453
1454 sbbq $0,%rax
1455 movq %rax,64(%rsp)
1456
1457 movq %r8,0(%rcx)
1458 movq %r9,8(%rcx)
1459 movq %r10,16(%rcx)
1460 movq %r11,24(%rcx)
1461
1462
1463 xorq %rdx,%rdx
1464 movq 32(%rsi),%r12
1465 movq 40(%rsi),%r13
1466 movq 48(%rsi),%r14
1467 xorq %r15,%r15
1468 addq 0(%rsi),%r12
1469 adcq 8(%rsi),%r13
1470 adcq 16(%rsi),%r14
1471 adcq 24(%rsi),%r15
1472 sbbq $0x0,%rdx
1473
1474 movq %rdx,72(%rsp)
1475
1476
1477 movq (%rcx),%rax
1478 mulq %r12
1479 movq %rax,(%rsp)
1480 movq %rdx,%r8
1481
1482 xorq %r9,%r9
1483 movq (%rcx),%rax
1484 mulq %r13
1485 addq %rax,%r8
1486 adcq %rdx,%r9
1487
1488 xorq %r10,%r10
1489 movq 8(%rcx),%rax
1490 mulq %r12
1491 addq %rax,%r8
1492 movq %r8,8(%rsp)
1493 adcq %rdx,%r9
1494 adcq $0x0,%r10
1495
1496 xorq %r8,%r8
1497 movq (%rcx),%rax
1498 mulq %r14
1499 addq %rax,%r9
1500 adcq %rdx,%r10
1501 adcq $0x0,%r8
1502
1503 movq 16(%rcx),%rax
1504 mulq %r12
1505 addq %rax,%r9
1506 adcq %rdx,%r10
1507 adcq $0x0,%r8
1508
1509 movq 8(%rcx),%rax
1510 mulq %r13
1511 addq %rax,%r9
1512 movq %r9,16(%rsp)
1513 adcq %rdx,%r10
1514 adcq $0x0,%r8
1515
1516 xorq %r9,%r9
1517 movq (%rcx),%rax
1518 mulq %r15
1519 addq %rax,%r10
1520 adcq %rdx,%r8
1521 adcq $0x0,%r9
1522
1523 movq 24(%rcx),%rax
1524 mulq %r12
1525 addq %rax,%r10
1526 adcq %rdx,%r8
1527 adcq $0x0,%r9
1528
1529 movq 8(%rcx),%rax
1530 mulq %r14
1531 addq %rax,%r10
1532 adcq %rdx,%r8
1533 adcq $0x0,%r9
1534
1535 movq 16(%rcx),%rax
1536 mulq %r13
1537 addq %rax,%r10
1538 movq %r10,24(%rsp)
1539 adcq %rdx,%r8
1540 adcq $0x0,%r9
1541
1542 xorq %r10,%r10
1543 movq 8(%rcx),%rax
1544 mulq %r15
1545 addq %rax,%r8
1546 adcq %rdx,%r9
1547 adcq $0x0,%r10
1548
1549 movq 24(%rcx),%rax
1550 mulq %r13
1551 addq %rax,%r8
1552 adcq %rdx,%r9
1553 adcq $0x0,%r10
1554
1555 movq 16(%rcx),%rax
1556 mulq %r14
1557 addq %rax,%r8
1558 movq %r8,32(%rsp)
1559 adcq %rdx,%r9
1560 adcq $0x0,%r10
1561
1562 xorq %r11,%r11
1563 movq 16(%rcx),%rax
1564 mulq %r15
1565 addq %rax,%r9
1566 adcq %rdx,%r10
1567 adcq $0x0,%r11
1568
1569 movq 24(%rcx),%rax
1570 mulq %r14
1571 addq %rax,%r9
1572 movq %r9,40(%rsp)
1573 adcq %rdx,%r10
1574 adcq $0x0,%r11
1575
1576 movq 24(%rcx),%rax
1577 mulq %r15
1578 addq %rax,%r10
1579 movq %r10,48(%rsp)
1580 adcq %rdx,%r11
1581 movq %r11,56(%rsp)
1582
1583
1584 movq 64(%rsp),%rax
1585 andq %rax,%r12
1586 andq %rax,%r13
1587 andq %rax,%r14
1588 andq %rax,%r15
1589
1590
1591 movq 72(%rsp),%rax
1592 movq 0(%rcx),%r8
1593 andq %rax,%r8
1594 movq 8(%rcx),%r9
1595 andq %rax,%r9
1596 movq 16(%rcx),%r10
1597 andq %rax,%r10
1598 movq 24(%rcx),%r11
1599 andq %rax,%r11
1600
1601
1602 addq %r8,%r12
1603 adcq %r9,%r13
1604 adcq %r10,%r14
1605 adcq %r11,%r15
1606
1607
1608 movq 32(%rsp),%rax
1609 addq %rax,%r12
1610 movq 40(%rsp),%rax
1611 adcq %rax,%r13
1612 movq 48(%rsp),%rax
1613 adcq %rax,%r14
1614 movq 56(%rsp),%rax
1615 adcq %rax,%r15
1616 movq %r12,80(%rsp)
1617 movq %r13,88(%rsp)
1618 movq %r14,96(%rsp)
1619 movq %r15,104(%rsp)
1620
1621
1622 movq (%rdi),%r11
1623 movq (%rsi),%rax
1624 mulq %r11
1625 xorq %r9,%r9
1626 movq %rax,(%rcx)
1627 movq %rdx,%r8
1628
1629 movq 16(%rdi),%r14
1630 movq 8(%rsi),%rax
1631 mulq %r11
1632 xorq %r10,%r10
1633 addq %rax,%r8
1634 adcq %rdx,%r9
1635
1636 movq 8(%rdi),%r12
1637 movq (%rsi),%rax
1638 mulq %r12
1639 addq %rax,%r8
1640 movq %r8,8(%rcx)
1641 adcq %rdx,%r9
1642 adcq $0x0,%r10
1643
1644 xorq %r8,%r8
1645 movq 16(%rsi),%rax
1646 mulq %r11
1647 addq %rax,%r9
1648 adcq %rdx,%r10
1649 adcq $0x0,%r8
1650
1651 movq (%rsi),%r13
1652 movq %r14,%rax
1653 mulq %r13
1654 addq %rax,%r9
1655 adcq %rdx,%r10
1656 adcq $0x0,%r8
1657
1658 movq 8(%rsi),%rax
1659 mulq %r12
1660 addq %rax,%r9
1661 movq %r9,16(%rcx)
1662 adcq %rdx,%r10
1663 adcq $0x0,%r8
1664
1665 xorq %r9,%r9
1666 movq 24(%rsi),%rax
1667 mulq %r11
1668 movq 24(%rdi),%r15
1669 addq %rax,%r10
1670 adcq %rdx,%r8
1671 adcq $0x0,%r9
1672
1673 movq %r15,%rax
1674 mulq %r13
1675 addq %rax,%r10
1676 adcq %rdx,%r8
1677 adcq $0x0,%r9
1678
1679 movq 16(%rsi),%rax
1680 mulq %r12
1681 addq %rax,%r10
1682 adcq %rdx,%r8
1683 adcq $0x0,%r9
1684
1685 movq 8(%rsi),%rax
1686 mulq %r14
1687 addq %rax,%r10
1688 movq %r10,24(%rcx)
1689 adcq %rdx,%r8
1690 adcq $0x0,%r9
1691
1692 xorq %r10,%r10
1693 movq 24(%rsi),%rax
1694 mulq %r12
1695 addq %rax,%r8
1696 adcq %rdx,%r9
1697 adcq $0x0,%r10
1698
1699 movq 8(%rsi),%rax
1700 mulq %r15
1701 addq %rax,%r8
1702 adcq %rdx,%r9
1703 adcq $0x0,%r10
1704
1705 movq 16(%rsi),%rax
1706 mulq %r14
1707 addq %rax,%r8
1708 movq %r8,32(%rcx)
1709 adcq %rdx,%r9
1710 adcq $0x0,%r10
1711
1712 xorq %r8,%r8
1713 movq 24(%rsi),%rax
1714 mulq %r14
1715 addq %rax,%r9
1716 adcq %rdx,%r10
1717 adcq $0x0,%r8
1718
1719 movq 16(%rsi),%rax
1720 mulq %r15
1721 addq %rax,%r9
1722 movq %r9,40(%rcx)
1723 adcq %rdx,%r10
1724 adcq $0x0,%r8
1725
1726 movq 24(%rsi),%rax
1727 mulq %r15
1728 addq %rax,%r10
1729 movq %r10,48(%rcx)
1730 adcq %rdx,%r8
1731 movq %r8,56(%rcx)
1732
1733
1734
1735 movq 32(%rdi),%r11
1736 movq 32(%rsi),%rax
1737 mulq %r11
1738 xorq %r9,%r9
1739 movq %rax,64(%rcx)
1740 movq %rdx,%r8
1741
1742 movq 48(%rdi),%r14
1743 movq 40(%rsi),%rax
1744 mulq %r11
1745 xorq %r10,%r10
1746 addq %rax,%r8
1747 adcq %rdx,%r9
1748
1749 movq 40(%rdi),%r12
1750 movq 32(%rsi),%rax
1751 mulq %r12
1752 addq %rax,%r8
1753 movq %r8,72(%rcx)
1754 adcq %rdx,%r9
1755 adcq $0x0,%r10
1756
1757 xorq %r8,%r8
1758 movq 48(%rsi),%rax
1759 mulq %r11
1760 addq %rax,%r9
1761 adcq %rdx,%r10
1762 adcq $0x0,%r8
1763
1764 movq 32(%rsi),%r13
1765 movq %r14,%rax
1766 mulq %r13
1767 addq %rax,%r9
1768 adcq %rdx,%r10
1769 adcq $0x0,%r8
1770
1771 movq 40(%rsi),%rax
1772 mulq %r12
1773 addq %rax,%r9
1774 movq %r9,80(%rcx)
1775 adcq %rdx,%r10
1776 adcq $0x0,%r8
1777
1778 movq 48(%rsi),%rax
1779 mulq %r12
1780 xorq %r12,%r12
1781 addq %rax,%r10
1782 adcq %rdx,%r8
1783 adcq $0x0,%r12
1784
1785 movq 40(%rsi),%rax
1786 mulq %r14
1787 addq %rax,%r10
1788 adcq %rdx,%r8
1789 adcq $0x0,%r12
1790 movq %r10,88(%rcx)
1791
1792 movq 48(%rsi),%rax
1793 mulq %r14
1794 addq %rax,%r8
1795 adcq $0x0,%r12
1796 movq %r8,96(%rcx)
1797
1798 addq %r12,%rdx
1799
1800
1801 movq 0(%rsp),%r8
1802 subq 0(%rcx),%r8
1803 movq 8(%rsp),%r9
1804 sbbq 8(%rcx),%r9
1805 movq 16(%rsp),%r10
1806 sbbq 16(%rcx),%r10
1807 movq 24(%rsp),%r11
1808 sbbq 24(%rcx),%r11
1809 movq 80(%rsp),%r12
1810 sbbq 32(%rcx),%r12
1811 movq 88(%rsp),%r13
1812 sbbq 40(%rcx),%r13
1813 movq 96(%rsp),%r14
1814 sbbq 48(%rcx),%r14
1815 movq 104(%rsp),%r15
1816 sbbq 56(%rcx),%r15
1817
1818
1819 movq 64(%rcx),%rax
1820 subq %rax,%r8
1821 movq 72(%rcx),%rax
1822 sbbq %rax,%r9
1823 movq 80(%rcx),%rax
1824 sbbq %rax,%r10
1825 movq 88(%rcx),%rax
1826 sbbq %rax,%r11
1827 movq 96(%rcx),%rax
1828 sbbq %rax,%r12
1829 sbbq %rdx,%r13
1830 sbbq $0x0,%r14
1831 sbbq $0x0,%r15
1832
1833
1834 addq 32(%rcx),%r8
1835 movq %r8,32(%rcx)
1836 adcq 40(%rcx),%r9
1837 movq %r9,40(%rcx)
1838 adcq 48(%rcx),%r10
1839 movq %r10,48(%rcx)
1840 adcq 56(%rcx),%r11
1841 movq %r11,56(%rcx)
1842 adcq 64(%rcx),%r12
1843 movq %r12,64(%rcx)
1844 adcq 72(%rcx),%r13
1845 movq %r13,72(%rcx)
1846 adcq 80(%rcx),%r14
1847 movq %r14,80(%rcx)
1848 adcq 88(%rcx),%r15
1849 movq %r15,88(%rcx)
1850 movq 96(%rcx),%r12
1851 adcq $0x0,%r12
1852 movq %r12,96(%rcx)
1853 adcq $0x0,%rdx
1854 movq %rdx,104(%rcx)
1855
1856 addq $112,%rsp
1857.cfi_adjust_cfa_offset -112
1858
1859
1860 popq %r15
1861.cfi_adjust_cfa_offset -8
1862 popq %r14
1863.cfi_adjust_cfa_offset -8
1864 popq %r13
1865.cfi_adjust_cfa_offset -8
1866 popq %r12
1867.cfi_adjust_cfa_offset -8
1868 .byte 0xf3,0xc3
1869.cfi_endproc
1870#endif