1 /* $FreeBSD$ */
2 /* Do not modify. This file is auto-generated from x86-gf2m.pl. */
3 #ifdef PIC
4 .text
5 .type _mul_1x1_mmx,@function
6 .align 16
7 _mul_1x1_mmx:
8 subl $36,%esp
9 movl %eax,%ecx
10 leal (%eax,%eax,1),%edx
11 andl $1073741823,%ecx
12 leal (%edx,%edx,1),%ebp
13 movl $0,(%esp)
14 andl $2147483647,%edx
15 movd %eax,%mm2
16 movd %ebx,%mm3
17 movl %ecx,4(%esp)
18 xorl %edx,%ecx
19 pxor %mm5,%mm5
20 pxor %mm4,%mm4
21 movl %edx,8(%esp)
22 xorl %ebp,%edx
23 movl %ecx,12(%esp)
24 pcmpgtd %mm2,%mm5
25 paddd %mm2,%mm2
26 xorl %edx,%ecx
27 movl %ebp,16(%esp)
28 xorl %edx,%ebp
29 pand %mm3,%mm5
30 pcmpgtd %mm2,%mm4
31 movl %ecx,20(%esp)
32 xorl %ecx,%ebp
33 psllq $31,%mm5
34 pand %mm3,%mm4
35 movl %edx,24(%esp)
36 movl $7,%esi
37 movl %ebp,28(%esp)
38 movl %esi,%ebp
39 andl %ebx,%esi
40 shrl $3,%ebx
41 movl %ebp,%edi
42 psllq $30,%mm4
43 andl %ebx,%edi
44 shrl $3,%ebx
45 movd (%esp,%esi,4),%mm0
46 movl %ebp,%esi
47 andl %ebx,%esi
48 shrl $3,%ebx
49 movd (%esp,%edi,4),%mm2
50 movl %ebp,%edi
51 psllq $3,%mm2
52 andl %ebx,%edi
53 shrl $3,%ebx
54 pxor %mm2,%mm0
55 movd (%esp,%esi,4),%mm1
56 movl %ebp,%esi
57 psllq $6,%mm1
58 andl %ebx,%esi
59 shrl $3,%ebx
60 pxor %mm1,%mm0
61 movd (%esp,%edi,4),%mm2
62 movl %ebp,%edi
63 psllq $9,%mm2
64 andl %ebx,%edi
65 shrl $3,%ebx
66 pxor %mm2,%mm0
67 movd (%esp,%esi,4),%mm1
68 movl %ebp,%esi
69 psllq $12,%mm1
70 andl %ebx,%esi
71 shrl $3,%ebx
72 pxor %mm1,%mm0
73 movd (%esp,%edi,4),%mm2
74 movl %ebp,%edi
75 psllq $15,%mm2
76 andl %ebx,%edi
77 shrl $3,%ebx
78 pxor %mm2,%mm0
79 movd (%esp,%esi,4),%mm1
80 movl %ebp,%esi
81 psllq $18,%mm1
82 andl %ebx,%esi
83 shrl $3,%ebx
84 pxor %mm1,%mm0
85 movd (%esp,%edi,4),%mm2
86 movl %ebp,%edi
87 psllq $21,%mm2
88 andl %ebx,%edi
89 shrl $3,%ebx
90 pxor %mm2,%mm0
91 movd (%esp,%esi,4),%mm1
92 movl %ebp,%esi
93 psllq $24,%mm1
94 andl %ebx,%esi
95 shrl $3,%ebx
96 pxor %mm1,%mm0
97 movd (%esp,%edi,4),%mm2
98 pxor %mm4,%mm0
99 psllq $27,%mm2
100 pxor %mm2,%mm0
101 movd (%esp,%esi,4),%mm1
102 pxor %mm5,%mm0
103 psllq $30,%mm1
104 addl $36,%esp
105 pxor %mm1,%mm0
106 ret
107 .size _mul_1x1_mmx,.-_mul_1x1_mmx
108 .type _mul_1x1_ialu,@function
109 .align 16
110 _mul_1x1_ialu:
111 subl $36,%esp
112 movl %eax,%ecx
113 leal (%eax,%eax,1),%edx
114 leal (,%eax,4),%ebp
115 andl $1073741823,%ecx
116 leal (%eax,%eax,1),%edi
117 sarl $31,%eax
118 movl $0,(%esp)
119 andl $2147483647,%edx
120 movl %ecx,4(%esp)
121 xorl %edx,%ecx
122 movl %edx,8(%esp)
123 xorl %ebp,%edx
124 movl %ecx,12(%esp)
125 xorl %edx,%ecx
126 movl %ebp,16(%esp)
127 xorl %edx,%ebp
128 movl %ecx,20(%esp)
129 xorl %ecx,%ebp
130 sarl $31,%edi
131 andl %ebx,%eax
132 movl %edx,24(%esp)
133 andl %ebx,%edi
134 movl %ebp,28(%esp)
135 movl %eax,%edx
136 shll $31,%eax
137 movl %edi,%ecx
138 shrl $1,%edx
139 movl $7,%esi
140 shll $30,%edi
141 andl %ebx,%esi
142 shrl $2,%ecx
143 xorl %edi,%eax
144 shrl $3,%ebx
145 movl $7,%edi
146 andl %ebx,%edi
147 shrl $3,%ebx
148 xorl %ecx,%edx
149 xorl (%esp,%esi,4),%eax
150 movl $7,%esi
151 andl %ebx,%esi
152 shrl $3,%ebx
153 movl (%esp,%edi,4),%ebp
154 movl $7,%edi
155 movl %ebp,%ecx
156 shll $3,%ebp
157 andl %ebx,%edi
158 shrl $29,%ecx
159 xorl %ebp,%eax
160 shrl $3,%ebx
161 xorl %ecx,%edx
162 movl (%esp,%esi,4),%ecx
163 movl $7,%esi
164 movl %ecx,%ebp
165 shll $6,%ecx
166 andl %ebx,%esi
167 shrl $26,%ebp
168 xorl %ecx,%eax
169 shrl $3,%ebx
170 xorl %ebp,%edx
171 movl (%esp,%edi,4),%ebp
172 movl $7,%edi
173 movl %ebp,%ecx
174 shll $9,%ebp
175 andl %ebx,%edi
176 shrl $23,%ecx
177 xorl %ebp,%eax
178 shrl $3,%ebx
179 xorl %ecx,%edx
180 movl (%esp,%esi,4),%ecx
181 movl $7,%esi
182 movl %ecx,%ebp
183 shll $12,%ecx
184 andl %ebx,%esi
185 shrl $20,%ebp
186 xorl %ecx,%eax
187 shrl $3,%ebx
188 xorl %ebp,%edx
189 movl (%esp,%edi,4),%ebp
190 movl $7,%edi
191 movl %ebp,%ecx
192 shll $15,%ebp
193 andl %ebx,%edi
194 shrl $17,%ecx
195 xorl %ebp,%eax
196 shrl $3,%ebx
197 xorl %ecx,%edx
198 movl (%esp,%esi,4),%ecx
199 movl $7,%esi
200 movl %ecx,%ebp
201 shll $18,%ecx
202 andl %ebx,%esi
203 shrl $14,%ebp
204 xorl %ecx,%eax
205 shrl $3,%ebx
206 xorl %ebp,%edx
207 movl (%esp,%edi,4),%ebp
208 movl $7,%edi
209 movl %ebp,%ecx
210 shll $21,%ebp
211 andl %ebx,%edi
212 shrl $11,%ecx
213 xorl %ebp,%eax
214 shrl $3,%ebx
215 xorl %ecx,%edx
216 movl (%esp,%esi,4),%ecx
217 movl $7,%esi
218 movl %ecx,%ebp
219 shll $24,%ecx
220 andl %ebx,%esi
221 shrl $8,%ebp
222 xorl %ecx,%eax
223 shrl $3,%ebx
224 xorl %ebp,%edx
225 movl (%esp,%edi,4),%ebp
226 movl %ebp,%ecx
227 shll $27,%ebp
228 movl (%esp,%esi,4),%edi
229 shrl $5,%ecx
230 movl %edi,%esi
231 xorl %ebp,%eax
232 shll $30,%edi
233 xorl %ecx,%edx
234 shrl $2,%esi
235 xorl %edi,%eax
236 xorl %esi,%edx
237 addl $36,%esp
238 ret
239 .size _mul_1x1_ialu,.-_mul_1x1_ialu
240 .globl bn_GF2m_mul_2x2
241 .type bn_GF2m_mul_2x2,@function
242 .align 16
243 bn_GF2m_mul_2x2:
244 .L_bn_GF2m_mul_2x2_begin:
245 call .L000PIC_me_up
246 .L000PIC_me_up:
247 popl %edx
248 leal OPENSSL_ia32cap_P-.L000PIC_me_up(%edx),%edx
249 movl (%edx),%eax
250 movl 4(%edx),%edx
251 testl $8388608,%eax
252 jz .L001ialu
253 testl $16777216,%eax
254 jz .L002mmx
255 testl $2,%edx
256 jz .L002mmx
257 movups 8(%esp),%xmm0
258 shufps $177,%xmm0,%xmm0
259 .byte 102,15,58,68,192,1
260 movl 4(%esp),%eax
261 movups %xmm0,(%eax)
262 ret
263 .align 16
264 .L002mmx:
265 pushl %ebp
266 pushl %ebx
267 pushl %esi
268 pushl %edi
269 movl 24(%esp),%eax
270 movl 32(%esp),%ebx
271 call _mul_1x1_mmx
272 movq %mm0,%mm7
273 movl 28(%esp),%eax
274 movl 36(%esp),%ebx
275 call _mul_1x1_mmx
276 movq %mm0,%mm6
277 movl 24(%esp),%eax
278 movl 32(%esp),%ebx
279 xorl 28(%esp),%eax
280 xorl 36(%esp),%ebx
281 call _mul_1x1_mmx
282 pxor %mm7,%mm0
283 movl 20(%esp),%eax
284 pxor %mm6,%mm0
285 movq %mm0,%mm2
286 psllq $32,%mm0
287 popl %edi
288 psrlq $32,%mm2
289 popl %esi
290 pxor %mm6,%mm0
291 popl %ebx
292 pxor %mm7,%mm2
293 movq %mm0,(%eax)
294 popl %ebp
295 movq %mm2,8(%eax)
296 emms
297 ret
298 .align 16
299 .L001ialu:
300 pushl %ebp
301 pushl %ebx
302 pushl %esi
303 pushl %edi
304 subl $20,%esp
305 movl 44(%esp),%eax
306 movl 52(%esp),%ebx
307 call _mul_1x1_ialu
308 movl %eax,8(%esp)
309 movl %edx,12(%esp)
310 movl 48(%esp),%eax
311 movl 56(%esp),%ebx
312 call _mul_1x1_ialu
313 movl %eax,(%esp)
314 movl %edx,4(%esp)
315 movl 44(%esp),%eax
316 movl 52(%esp),%ebx
317 xorl 48(%esp),%eax
318 xorl 56(%esp),%ebx
319 call _mul_1x1_ialu
320 movl 40(%esp),%ebp
321 movl (%esp),%ebx
322 movl 4(%esp),%ecx
323 movl 8(%esp),%edi
324 movl 12(%esp),%esi
325 xorl %edx,%eax
326 xorl %ecx,%edx
327 xorl %ebx,%eax
328 movl %ebx,(%ebp)
329 xorl %edi,%edx
330 movl %esi,12(%ebp)
331 xorl %esi,%eax
332 addl $20,%esp
333 xorl %esi,%edx
334 popl %edi
335 xorl %edx,%eax
336 popl %esi
337 movl %edx,8(%ebp)
338 popl %ebx
339 movl %eax,4(%ebp)
340 popl %ebp
341 ret
342 .size bn_GF2m_mul_2x2,.-.L_bn_GF2m_mul_2x2_begin
343 .byte 71,70,40,50,94,109,41,32,77,117,108,116,105,112,108,105
344 .byte 99,97,116,105,111,110,32,102,111,114,32,120,56,54,44,32
345 .byte 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
346 .byte 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
347 .byte 62,0
348 .comm OPENSSL_ia32cap_P,16,4
349 #else
350 .text
351 .type _mul_1x1_mmx,@function
352 .align 16
353 _mul_1x1_mmx:
354 subl $36,%esp
355 movl %eax,%ecx
356 leal (%eax,%eax,1),%edx
357 andl $1073741823,%ecx
358 leal (%edx,%edx,1),%ebp
359 movl $0,(%esp)
360 andl $2147483647,%edx
361 movd %eax,%mm2
362 movd %ebx,%mm3
363 movl %ecx,4(%esp)
364 xorl %edx,%ecx
365 pxor %mm5,%mm5
366 pxor %mm4,%mm4
367 movl %edx,8(%esp)
368 xorl %ebp,%edx
369 movl %ecx,12(%esp)
370 pcmpgtd %mm2,%mm5
371 paddd %mm2,%mm2
372 xorl %edx,%ecx
373 movl %ebp,16(%esp)
374 xorl %edx,%ebp
375 pand %mm3,%mm5
376 pcmpgtd %mm2,%mm4
377 movl %ecx,20(%esp)
378 xorl %ecx,%ebp
379 psllq $31,%mm5
380 pand %mm3,%mm4
381 movl %edx,24(%esp)
382 movl $7,%esi
383 movl %ebp,28(%esp)
384 movl %esi,%ebp
385 andl %ebx,%esi
386 shrl $3,%ebx
387 movl %ebp,%edi
388 psllq $30,%mm4
389 andl %ebx,%edi
390 shrl $3,%ebx
391 movd (%esp,%esi,4),%mm0
392 movl %ebp,%esi
393 andl %ebx,%esi
394 shrl $3,%ebx
395 movd (%esp,%edi,4),%mm2
396 movl %ebp,%edi
397 psllq $3,%mm2
398 andl %ebx,%edi
399 shrl $3,%ebx
400 pxor %mm2,%mm0
401 movd (%esp,%esi,4),%mm1
402 movl %ebp,%esi
403 psllq $6,%mm1
404 andl %ebx,%esi
405 shrl $3,%ebx
406 pxor %mm1,%mm0
407 movd (%esp,%edi,4),%mm2
408 movl %ebp,%edi
409 psllq $9,%mm2
410 andl %ebx,%edi
411 shrl $3,%ebx
412 pxor %mm2,%mm0
413 movd (%esp,%esi,4),%mm1
414 movl %ebp,%esi
415 psllq $12,%mm1
416 andl %ebx,%esi
417 shrl $3,%ebx
418 pxor %mm1,%mm0
419 movd (%esp,%edi,4),%mm2
420 movl %ebp,%edi
421 psllq $15,%mm2
422 andl %ebx,%edi
423 shrl $3,%ebx
424 pxor %mm2,%mm0
425 movd (%esp,%esi,4),%mm1
426 movl %ebp,%esi
427 psllq $18,%mm1
428 andl %ebx,%esi
429 shrl $3,%ebx
430 pxor %mm1,%mm0
431 movd (%esp,%edi,4),%mm2
432 movl %ebp,%edi
433 psllq $21,%mm2
434 andl %ebx,%edi
435 shrl $3,%ebx
436 pxor %mm2,%mm0
437 movd (%esp,%esi,4),%mm1
438 movl %ebp,%esi
439 psllq $24,%mm1
440 andl %ebx,%esi
441 shrl $3,%ebx
442 pxor %mm1,%mm0
443 movd (%esp,%edi,4),%mm2
444 pxor %mm4,%mm0
445 psllq $27,%mm2
446 pxor %mm2,%mm0
447 movd (%esp,%esi,4),%mm1
448 pxor %mm5,%mm0
449 psllq $30,%mm1
450 addl $36,%esp
451 pxor %mm1,%mm0
452 ret
453 .size _mul_1x1_mmx,.-_mul_1x1_mmx
454 .type _mul_1x1_ialu,@function
455 .align 16
456 _mul_1x1_ialu:
457 subl $36,%esp
458 movl %eax,%ecx
459 leal (%eax,%eax,1),%edx
460 leal (,%eax,4),%ebp
461 andl $1073741823,%ecx
462 leal (%eax,%eax,1),%edi
463 sarl $31,%eax
464 movl $0,(%esp)
465 andl $2147483647,%edx
466 movl %ecx,4(%esp)
467 xorl %edx,%ecx
468 movl %edx,8(%esp)
469 xorl %ebp,%edx
470 movl %ecx,12(%esp)
471 xorl %edx,%ecx
472 movl %ebp,16(%esp)
473 xorl %edx,%ebp
474 movl %ecx,20(%esp)
475 xorl %ecx,%ebp
476 sarl $31,%edi
477 andl %ebx,%eax
478 movl %edx,24(%esp)
479 andl %ebx,%edi
480 movl %ebp,28(%esp)
481 movl %eax,%edx
482 shll $31,%eax
483 movl %edi,%ecx
484 shrl $1,%edx
485 movl $7,%esi
486 shll $30,%edi
487 andl %ebx,%esi
488 shrl $2,%ecx
489 xorl %edi,%eax
490 shrl $3,%ebx
491 movl $7,%edi
492 andl %ebx,%edi
493 shrl $3,%ebx
494 xorl %ecx,%edx
495 xorl (%esp,%esi,4),%eax
496 movl $7,%esi
497 andl %ebx,%esi
498 shrl $3,%ebx
499 movl (%esp,%edi,4),%ebp
500 movl $7,%edi
501 movl %ebp,%ecx
502 shll $3,%ebp
503 andl %ebx,%edi
504 shrl $29,%ecx
505 xorl %ebp,%eax
506 shrl $3,%ebx
507 xorl %ecx,%edx
508 movl (%esp,%esi,4),%ecx
509 movl $7,%esi
510 movl %ecx,%ebp
511 shll $6,%ecx
512 andl %ebx,%esi
513 shrl $26,%ebp
514 xorl %ecx,%eax
515 shrl $3,%ebx
516 xorl %ebp,%edx
517 movl (%esp,%edi,4),%ebp
518 movl $7,%edi
519 movl %ebp,%ecx
520 shll $9,%ebp
521 andl %ebx,%edi
522 shrl $23,%ecx
523 xorl %ebp,%eax
524 shrl $3,%ebx
525 xorl %ecx,%edx
526 movl (%esp,%esi,4),%ecx
527 movl $7,%esi
528 movl %ecx,%ebp
529 shll $12,%ecx
530 andl %ebx,%esi
531 shrl $20,%ebp
532 xorl %ecx,%eax
533 shrl $3,%ebx
534 xorl %ebp,%edx
535 movl (%esp,%edi,4),%ebp
536 movl $7,%edi
537 movl %ebp,%ecx
538 shll $15,%ebp
539 andl %ebx,%edi
540 shrl $17,%ecx
541 xorl %ebp,%eax
542 shrl $3,%ebx
543 xorl %ecx,%edx
544 movl (%esp,%esi,4),%ecx
545 movl $7,%esi
546 movl %ecx,%ebp
547 shll $18,%ecx
548 andl %ebx,%esi
549 shrl $14,%ebp
550 xorl %ecx,%eax
551 shrl $3,%ebx
552 xorl %ebp,%edx
553 movl (%esp,%edi,4),%ebp
554 movl $7,%edi
555 movl %ebp,%ecx
556 shll $21,%ebp
557 andl %ebx,%edi
558 shrl $11,%ecx
559 xorl %ebp,%eax
560 shrl $3,%ebx
561 xorl %ecx,%edx
562 movl (%esp,%esi,4),%ecx
563 movl $7,%esi
564 movl %ecx,%ebp
565 shll $24,%ecx
566 andl %ebx,%esi
567 shrl $8,%ebp
568 xorl %ecx,%eax
569 shrl $3,%ebx
570 xorl %ebp,%edx
571 movl (%esp,%edi,4),%ebp
572 movl %ebp,%ecx
573 shll $27,%ebp
574 movl (%esp,%esi,4),%edi
575 shrl $5,%ecx
576 movl %edi,%esi
577 xorl %ebp,%eax
578 shll $30,%edi
579 xorl %ecx,%edx
580 shrl $2,%esi
581 xorl %edi,%eax
582 xorl %esi,%edx
583 addl $36,%esp
584 ret
585 .size _mul_1x1_ialu,.-_mul_1x1_ialu
586 .globl bn_GF2m_mul_2x2
587 .type bn_GF2m_mul_2x2,@function
588 .align 16
589 bn_GF2m_mul_2x2:
590 .L_bn_GF2m_mul_2x2_begin:
591 leal OPENSSL_ia32cap_P,%edx
592 movl (%edx),%eax
593 movl 4(%edx),%edx
594 testl $8388608,%eax
595 jz .L000ialu
596 testl $16777216,%eax
597 jz .L001mmx
598 testl $2,%edx
599 jz .L001mmx
600 movups 8(%esp),%xmm0
601 shufps $177,%xmm0,%xmm0
602 .byte 102,15,58,68,192,1
603 movl 4(%esp),%eax
604 movups %xmm0,(%eax)
605 ret
606 .align 16
607 .L001mmx:
608 pushl %ebp
609 pushl %ebx
610 pushl %esi
611 pushl %edi
612 movl 24(%esp),%eax
613 movl 32(%esp),%ebx
614 call _mul_1x1_mmx
615 movq %mm0,%mm7
616 movl 28(%esp),%eax
617 movl 36(%esp),%ebx
618 call _mul_1x1_mmx
619 movq %mm0,%mm6
620 movl 24(%esp),%eax
621 movl 32(%esp),%ebx
622 xorl 28(%esp),%eax
623 xorl 36(%esp),%ebx
624 call _mul_1x1_mmx
625 pxor %mm7,%mm0
626 movl 20(%esp),%eax
627 pxor %mm6,%mm0
628 movq %mm0,%mm2
629 psllq $32,%mm0
630 popl %edi
631 psrlq $32,%mm2
632 popl %esi
633 pxor %mm6,%mm0
634 popl %ebx
635 pxor %mm7,%mm2
636 movq %mm0,(%eax)
637 popl %ebp
638 movq %mm2,8(%eax)
639 emms
640 ret
641 .align 16
642 .L000ialu:
643 pushl %ebp
644 pushl %ebx
645 pushl %esi
646 pushl %edi
647 subl $20,%esp
648 movl 44(%esp),%eax
649 movl 52(%esp),%ebx
650 call _mul_1x1_ialu
651 movl %eax,8(%esp)
652 movl %edx,12(%esp)
653 movl 48(%esp),%eax
654 movl 56(%esp),%ebx
655 call _mul_1x1_ialu
656 movl %eax,(%esp)
657 movl %edx,4(%esp)
658 movl 44(%esp),%eax
659 movl 52(%esp),%ebx
660 xorl 48(%esp),%eax
661 xorl 56(%esp),%ebx
662 call _mul_1x1_ialu
663 movl 40(%esp),%ebp
664 movl (%esp),%ebx
665 movl 4(%esp),%ecx
666 movl 8(%esp),%edi
667 movl 12(%esp),%esi
668 xorl %edx,%eax
669 xorl %ecx,%edx
670 xorl %ebx,%eax
671 movl %ebx,(%ebp)
672 xorl %edi,%edx
673 movl %esi,12(%ebp)
674 xorl %esi,%eax
675 addl $20,%esp
676 xorl %esi,%edx
677 popl %edi
678 xorl %edx,%eax
679 popl %esi
680 movl %edx,8(%ebp)
681 popl %ebx
682 movl %eax,4(%ebp)
683 popl %ebp
684 ret
685 .size bn_GF2m_mul_2x2,.-.L_bn_GF2m_mul_2x2_begin
686 .byte 71,70,40,50,94,109,41,32,77,117,108,116,105,112,108,105
687 .byte 99,97,116,105,111,110,32,102,111,114,32,120,56,54,44,32
688 .byte 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
689 .byte 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
690 .byte 62,0
691 .comm OPENSSL_ia32cap_P,16,4
692 #endif
Cache object: 66478f8f12f4e93f9b8c6dccfcfea25f
|