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 243bn_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 589bn_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 693