1// Code generated by command: go run nat_amd64_asm.go -out ../nat_amd64.s -pkg bigmod. DO NOT EDIT. 2 3//go:build !purego 4 5// func addMulVVW1024(z *uint, x *uint, y uint) (c uint) 6// Requires: ADX, BMI2 7TEXT ·addMulVVW1024(SB), $0-32 8 CMPB ·supportADX+0(SB), $0x01 9 JEQ adx 10 MOVQ z+0(FP), CX 11 MOVQ x+8(FP), BX 12 MOVQ y+16(FP), SI 13 XORQ DI, DI 14 15 // Iteration 0 16 MOVQ (BX), AX 17 MULQ SI 18 ADDQ (CX), AX 19 ADCQ $0x00, DX 20 ADDQ DI, AX 21 ADCQ $0x00, DX 22 MOVQ DX, DI 23 MOVQ AX, (CX) 24 25 // Iteration 1 26 MOVQ 8(BX), AX 27 MULQ SI 28 ADDQ 8(CX), AX 29 ADCQ $0x00, DX 30 ADDQ DI, AX 31 ADCQ $0x00, DX 32 MOVQ DX, DI 33 MOVQ AX, 8(CX) 34 35 // Iteration 2 36 MOVQ 16(BX), AX 37 MULQ SI 38 ADDQ 16(CX), AX 39 ADCQ $0x00, DX 40 ADDQ DI, AX 41 ADCQ $0x00, DX 42 MOVQ DX, DI 43 MOVQ AX, 16(CX) 44 45 // Iteration 3 46 MOVQ 24(BX), AX 47 MULQ SI 48 ADDQ 24(CX), AX 49 ADCQ $0x00, DX 50 ADDQ DI, AX 51 ADCQ $0x00, DX 52 MOVQ DX, DI 53 MOVQ AX, 24(CX) 54 55 // Iteration 4 56 MOVQ 32(BX), AX 57 MULQ SI 58 ADDQ 32(CX), AX 59 ADCQ $0x00, DX 60 ADDQ DI, AX 61 ADCQ $0x00, DX 62 MOVQ DX, DI 63 MOVQ AX, 32(CX) 64 65 // Iteration 5 66 MOVQ 40(BX), AX 67 MULQ SI 68 ADDQ 40(CX), AX 69 ADCQ $0x00, DX 70 ADDQ DI, AX 71 ADCQ $0x00, DX 72 MOVQ DX, DI 73 MOVQ AX, 40(CX) 74 75 // Iteration 6 76 MOVQ 48(BX), AX 77 MULQ SI 78 ADDQ 48(CX), AX 79 ADCQ $0x00, DX 80 ADDQ DI, AX 81 ADCQ $0x00, DX 82 MOVQ DX, DI 83 MOVQ AX, 48(CX) 84 85 // Iteration 7 86 MOVQ 56(BX), AX 87 MULQ SI 88 ADDQ 56(CX), AX 89 ADCQ $0x00, DX 90 ADDQ DI, AX 91 ADCQ $0x00, DX 92 MOVQ DX, DI 93 MOVQ AX, 56(CX) 94 95 // Iteration 8 96 MOVQ 64(BX), AX 97 MULQ SI 98 ADDQ 64(CX), AX 99 ADCQ $0x00, DX 100 ADDQ DI, AX 101 ADCQ $0x00, DX 102 MOVQ DX, DI 103 MOVQ AX, 64(CX) 104 105 // Iteration 9 106 MOVQ 72(BX), AX 107 MULQ SI 108 ADDQ 72(CX), AX 109 ADCQ $0x00, DX 110 ADDQ DI, AX 111 ADCQ $0x00, DX 112 MOVQ DX, DI 113 MOVQ AX, 72(CX) 114 115 // Iteration 10 116 MOVQ 80(BX), AX 117 MULQ SI 118 ADDQ 80(CX), AX 119 ADCQ $0x00, DX 120 ADDQ DI, AX 121 ADCQ $0x00, DX 122 MOVQ DX, DI 123 MOVQ AX, 80(CX) 124 125 // Iteration 11 126 MOVQ 88(BX), AX 127 MULQ SI 128 ADDQ 88(CX), AX 129 ADCQ $0x00, DX 130 ADDQ DI, AX 131 ADCQ $0x00, DX 132 MOVQ DX, DI 133 MOVQ AX, 88(CX) 134 135 // Iteration 12 136 MOVQ 96(BX), AX 137 MULQ SI 138 ADDQ 96(CX), AX 139 ADCQ $0x00, DX 140 ADDQ DI, AX 141 ADCQ $0x00, DX 142 MOVQ DX, DI 143 MOVQ AX, 96(CX) 144 145 // Iteration 13 146 MOVQ 104(BX), AX 147 MULQ SI 148 ADDQ 104(CX), AX 149 ADCQ $0x00, DX 150 ADDQ DI, AX 151 ADCQ $0x00, DX 152 MOVQ DX, DI 153 MOVQ AX, 104(CX) 154 155 // Iteration 14 156 MOVQ 112(BX), AX 157 MULQ SI 158 ADDQ 112(CX), AX 159 ADCQ $0x00, DX 160 ADDQ DI, AX 161 ADCQ $0x00, DX 162 MOVQ DX, DI 163 MOVQ AX, 112(CX) 164 165 // Iteration 15 166 MOVQ 120(BX), AX 167 MULQ SI 168 ADDQ 120(CX), AX 169 ADCQ $0x00, DX 170 ADDQ DI, AX 171 ADCQ $0x00, DX 172 MOVQ DX, DI 173 MOVQ AX, 120(CX) 174 MOVQ DI, c+24(FP) 175 RET 176 177adx: 178 MOVQ z+0(FP), AX 179 MOVQ x+8(FP), CX 180 MOVQ y+16(FP), DX 181 XORQ BX, BX 182 XORQ SI, SI 183 184 // Iteration 0 185 MULXQ (CX), R8, DI 186 ADCXQ BX, R8 187 ADOXQ (AX), R8 188 MOVQ R8, (AX) 189 190 // Iteration 1 191 MULXQ 8(CX), R8, BX 192 ADCXQ DI, R8 193 ADOXQ 8(AX), R8 194 MOVQ R8, 8(AX) 195 196 // Iteration 2 197 MULXQ 16(CX), R8, DI 198 ADCXQ BX, R8 199 ADOXQ 16(AX), R8 200 MOVQ R8, 16(AX) 201 202 // Iteration 3 203 MULXQ 24(CX), R8, BX 204 ADCXQ DI, R8 205 ADOXQ 24(AX), R8 206 MOVQ R8, 24(AX) 207 208 // Iteration 4 209 MULXQ 32(CX), R8, DI 210 ADCXQ BX, R8 211 ADOXQ 32(AX), R8 212 MOVQ R8, 32(AX) 213 214 // Iteration 5 215 MULXQ 40(CX), R8, BX 216 ADCXQ DI, R8 217 ADOXQ 40(AX), R8 218 MOVQ R8, 40(AX) 219 220 // Iteration 6 221 MULXQ 48(CX), R8, DI 222 ADCXQ BX, R8 223 ADOXQ 48(AX), R8 224 MOVQ R8, 48(AX) 225 226 // Iteration 7 227 MULXQ 56(CX), R8, BX 228 ADCXQ DI, R8 229 ADOXQ 56(AX), R8 230 MOVQ R8, 56(AX) 231 232 // Iteration 8 233 MULXQ 64(CX), R8, DI 234 ADCXQ BX, R8 235 ADOXQ 64(AX), R8 236 MOVQ R8, 64(AX) 237 238 // Iteration 9 239 MULXQ 72(CX), R8, BX 240 ADCXQ DI, R8 241 ADOXQ 72(AX), R8 242 MOVQ R8, 72(AX) 243 244 // Iteration 10 245 MULXQ 80(CX), R8, DI 246 ADCXQ BX, R8 247 ADOXQ 80(AX), R8 248 MOVQ R8, 80(AX) 249 250 // Iteration 11 251 MULXQ 88(CX), R8, BX 252 ADCXQ DI, R8 253 ADOXQ 88(AX), R8 254 MOVQ R8, 88(AX) 255 256 // Iteration 12 257 MULXQ 96(CX), R8, DI 258 ADCXQ BX, R8 259 ADOXQ 96(AX), R8 260 MOVQ R8, 96(AX) 261 262 // Iteration 13 263 MULXQ 104(CX), R8, BX 264 ADCXQ DI, R8 265 ADOXQ 104(AX), R8 266 MOVQ R8, 104(AX) 267 268 // Iteration 14 269 MULXQ 112(CX), R8, DI 270 ADCXQ BX, R8 271 ADOXQ 112(AX), R8 272 MOVQ R8, 112(AX) 273 274 // Iteration 15 275 MULXQ 120(CX), R8, BX 276 ADCXQ DI, R8 277 ADOXQ 120(AX), R8 278 MOVQ R8, 120(AX) 279 280 // Add back carry flags and return 281 ADCXQ SI, BX 282 ADOXQ SI, BX 283 MOVQ BX, c+24(FP) 284 RET 285 286// func addMulVVW1536(z *uint, x *uint, y uint) (c uint) 287// Requires: ADX, BMI2 288TEXT ·addMulVVW1536(SB), $0-32 289 CMPB ·supportADX+0(SB), $0x01 290 JEQ adx 291 MOVQ z+0(FP), CX 292 MOVQ x+8(FP), BX 293 MOVQ y+16(FP), SI 294 XORQ DI, DI 295 296 // Iteration 0 297 MOVQ (BX), AX 298 MULQ SI 299 ADDQ (CX), AX 300 ADCQ $0x00, DX 301 ADDQ DI, AX 302 ADCQ $0x00, DX 303 MOVQ DX, DI 304 MOVQ AX, (CX) 305 306 // Iteration 1 307 MOVQ 8(BX), AX 308 MULQ SI 309 ADDQ 8(CX), AX 310 ADCQ $0x00, DX 311 ADDQ DI, AX 312 ADCQ $0x00, DX 313 MOVQ DX, DI 314 MOVQ AX, 8(CX) 315 316 // Iteration 2 317 MOVQ 16(BX), AX 318 MULQ SI 319 ADDQ 16(CX), AX 320 ADCQ $0x00, DX 321 ADDQ DI, AX 322 ADCQ $0x00, DX 323 MOVQ DX, DI 324 MOVQ AX, 16(CX) 325 326 // Iteration 3 327 MOVQ 24(BX), AX 328 MULQ SI 329 ADDQ 24(CX), AX 330 ADCQ $0x00, DX 331 ADDQ DI, AX 332 ADCQ $0x00, DX 333 MOVQ DX, DI 334 MOVQ AX, 24(CX) 335 336 // Iteration 4 337 MOVQ 32(BX), AX 338 MULQ SI 339 ADDQ 32(CX), AX 340 ADCQ $0x00, DX 341 ADDQ DI, AX 342 ADCQ $0x00, DX 343 MOVQ DX, DI 344 MOVQ AX, 32(CX) 345 346 // Iteration 5 347 MOVQ 40(BX), AX 348 MULQ SI 349 ADDQ 40(CX), AX 350 ADCQ $0x00, DX 351 ADDQ DI, AX 352 ADCQ $0x00, DX 353 MOVQ DX, DI 354 MOVQ AX, 40(CX) 355 356 // Iteration 6 357 MOVQ 48(BX), AX 358 MULQ SI 359 ADDQ 48(CX), AX 360 ADCQ $0x00, DX 361 ADDQ DI, AX 362 ADCQ $0x00, DX 363 MOVQ DX, DI 364 MOVQ AX, 48(CX) 365 366 // Iteration 7 367 MOVQ 56(BX), AX 368 MULQ SI 369 ADDQ 56(CX), AX 370 ADCQ $0x00, DX 371 ADDQ DI, AX 372 ADCQ $0x00, DX 373 MOVQ DX, DI 374 MOVQ AX, 56(CX) 375 376 // Iteration 8 377 MOVQ 64(BX), AX 378 MULQ SI 379 ADDQ 64(CX), AX 380 ADCQ $0x00, DX 381 ADDQ DI, AX 382 ADCQ $0x00, DX 383 MOVQ DX, DI 384 MOVQ AX, 64(CX) 385 386 // Iteration 9 387 MOVQ 72(BX), AX 388 MULQ SI 389 ADDQ 72(CX), AX 390 ADCQ $0x00, DX 391 ADDQ DI, AX 392 ADCQ $0x00, DX 393 MOVQ DX, DI 394 MOVQ AX, 72(CX) 395 396 // Iteration 10 397 MOVQ 80(BX), AX 398 MULQ SI 399 ADDQ 80(CX), AX 400 ADCQ $0x00, DX 401 ADDQ DI, AX 402 ADCQ $0x00, DX 403 MOVQ DX, DI 404 MOVQ AX, 80(CX) 405 406 // Iteration 11 407 MOVQ 88(BX), AX 408 MULQ SI 409 ADDQ 88(CX), AX 410 ADCQ $0x00, DX 411 ADDQ DI, AX 412 ADCQ $0x00, DX 413 MOVQ DX, DI 414 MOVQ AX, 88(CX) 415 416 // Iteration 12 417 MOVQ 96(BX), AX 418 MULQ SI 419 ADDQ 96(CX), AX 420 ADCQ $0x00, DX 421 ADDQ DI, AX 422 ADCQ $0x00, DX 423 MOVQ DX, DI 424 MOVQ AX, 96(CX) 425 426 // Iteration 13 427 MOVQ 104(BX), AX 428 MULQ SI 429 ADDQ 104(CX), AX 430 ADCQ $0x00, DX 431 ADDQ DI, AX 432 ADCQ $0x00, DX 433 MOVQ DX, DI 434 MOVQ AX, 104(CX) 435 436 // Iteration 14 437 MOVQ 112(BX), AX 438 MULQ SI 439 ADDQ 112(CX), AX 440 ADCQ $0x00, DX 441 ADDQ DI, AX 442 ADCQ $0x00, DX 443 MOVQ DX, DI 444 MOVQ AX, 112(CX) 445 446 // Iteration 15 447 MOVQ 120(BX), AX 448 MULQ SI 449 ADDQ 120(CX), AX 450 ADCQ $0x00, DX 451 ADDQ DI, AX 452 ADCQ $0x00, DX 453 MOVQ DX, DI 454 MOVQ AX, 120(CX) 455 456 // Iteration 16 457 MOVQ 128(BX), AX 458 MULQ SI 459 ADDQ 128(CX), AX 460 ADCQ $0x00, DX 461 ADDQ DI, AX 462 ADCQ $0x00, DX 463 MOVQ DX, DI 464 MOVQ AX, 128(CX) 465 466 // Iteration 17 467 MOVQ 136(BX), AX 468 MULQ SI 469 ADDQ 136(CX), AX 470 ADCQ $0x00, DX 471 ADDQ DI, AX 472 ADCQ $0x00, DX 473 MOVQ DX, DI 474 MOVQ AX, 136(CX) 475 476 // Iteration 18 477 MOVQ 144(BX), AX 478 MULQ SI 479 ADDQ 144(CX), AX 480 ADCQ $0x00, DX 481 ADDQ DI, AX 482 ADCQ $0x00, DX 483 MOVQ DX, DI 484 MOVQ AX, 144(CX) 485 486 // Iteration 19 487 MOVQ 152(BX), AX 488 MULQ SI 489 ADDQ 152(CX), AX 490 ADCQ $0x00, DX 491 ADDQ DI, AX 492 ADCQ $0x00, DX 493 MOVQ DX, DI 494 MOVQ AX, 152(CX) 495 496 // Iteration 20 497 MOVQ 160(BX), AX 498 MULQ SI 499 ADDQ 160(CX), AX 500 ADCQ $0x00, DX 501 ADDQ DI, AX 502 ADCQ $0x00, DX 503 MOVQ DX, DI 504 MOVQ AX, 160(CX) 505 506 // Iteration 21 507 MOVQ 168(BX), AX 508 MULQ SI 509 ADDQ 168(CX), AX 510 ADCQ $0x00, DX 511 ADDQ DI, AX 512 ADCQ $0x00, DX 513 MOVQ DX, DI 514 MOVQ AX, 168(CX) 515 516 // Iteration 22 517 MOVQ 176(BX), AX 518 MULQ SI 519 ADDQ 176(CX), AX 520 ADCQ $0x00, DX 521 ADDQ DI, AX 522 ADCQ $0x00, DX 523 MOVQ DX, DI 524 MOVQ AX, 176(CX) 525 526 // Iteration 23 527 MOVQ 184(BX), AX 528 MULQ SI 529 ADDQ 184(CX), AX 530 ADCQ $0x00, DX 531 ADDQ DI, AX 532 ADCQ $0x00, DX 533 MOVQ DX, DI 534 MOVQ AX, 184(CX) 535 MOVQ DI, c+24(FP) 536 RET 537 538adx: 539 MOVQ z+0(FP), AX 540 MOVQ x+8(FP), CX 541 MOVQ y+16(FP), DX 542 XORQ BX, BX 543 XORQ SI, SI 544 545 // Iteration 0 546 MULXQ (CX), R8, DI 547 ADCXQ BX, R8 548 ADOXQ (AX), R8 549 MOVQ R8, (AX) 550 551 // Iteration 1 552 MULXQ 8(CX), R8, BX 553 ADCXQ DI, R8 554 ADOXQ 8(AX), R8 555 MOVQ R8, 8(AX) 556 557 // Iteration 2 558 MULXQ 16(CX), R8, DI 559 ADCXQ BX, R8 560 ADOXQ 16(AX), R8 561 MOVQ R8, 16(AX) 562 563 // Iteration 3 564 MULXQ 24(CX), R8, BX 565 ADCXQ DI, R8 566 ADOXQ 24(AX), R8 567 MOVQ R8, 24(AX) 568 569 // Iteration 4 570 MULXQ 32(CX), R8, DI 571 ADCXQ BX, R8 572 ADOXQ 32(AX), R8 573 MOVQ R8, 32(AX) 574 575 // Iteration 5 576 MULXQ 40(CX), R8, BX 577 ADCXQ DI, R8 578 ADOXQ 40(AX), R8 579 MOVQ R8, 40(AX) 580 581 // Iteration 6 582 MULXQ 48(CX), R8, DI 583 ADCXQ BX, R8 584 ADOXQ 48(AX), R8 585 MOVQ R8, 48(AX) 586 587 // Iteration 7 588 MULXQ 56(CX), R8, BX 589 ADCXQ DI, R8 590 ADOXQ 56(AX), R8 591 MOVQ R8, 56(AX) 592 593 // Iteration 8 594 MULXQ 64(CX), R8, DI 595 ADCXQ BX, R8 596 ADOXQ 64(AX), R8 597 MOVQ R8, 64(AX) 598 599 // Iteration 9 600 MULXQ 72(CX), R8, BX 601 ADCXQ DI, R8 602 ADOXQ 72(AX), R8 603 MOVQ R8, 72(AX) 604 605 // Iteration 10 606 MULXQ 80(CX), R8, DI 607 ADCXQ BX, R8 608 ADOXQ 80(AX), R8 609 MOVQ R8, 80(AX) 610 611 // Iteration 11 612 MULXQ 88(CX), R8, BX 613 ADCXQ DI, R8 614 ADOXQ 88(AX), R8 615 MOVQ R8, 88(AX) 616 617 // Iteration 12 618 MULXQ 96(CX), R8, DI 619 ADCXQ BX, R8 620 ADOXQ 96(AX), R8 621 MOVQ R8, 96(AX) 622 623 // Iteration 13 624 MULXQ 104(CX), R8, BX 625 ADCXQ DI, R8 626 ADOXQ 104(AX), R8 627 MOVQ R8, 104(AX) 628 629 // Iteration 14 630 MULXQ 112(CX), R8, DI 631 ADCXQ BX, R8 632 ADOXQ 112(AX), R8 633 MOVQ R8, 112(AX) 634 635 // Iteration 15 636 MULXQ 120(CX), R8, BX 637 ADCXQ DI, R8 638 ADOXQ 120(AX), R8 639 MOVQ R8, 120(AX) 640 641 // Iteration 16 642 MULXQ 128(CX), R8, DI 643 ADCXQ BX, R8 644 ADOXQ 128(AX), R8 645 MOVQ R8, 128(AX) 646 647 // Iteration 17 648 MULXQ 136(CX), R8, BX 649 ADCXQ DI, R8 650 ADOXQ 136(AX), R8 651 MOVQ R8, 136(AX) 652 653 // Iteration 18 654 MULXQ 144(CX), R8, DI 655 ADCXQ BX, R8 656 ADOXQ 144(AX), R8 657 MOVQ R8, 144(AX) 658 659 // Iteration 19 660 MULXQ 152(CX), R8, BX 661 ADCXQ DI, R8 662 ADOXQ 152(AX), R8 663 MOVQ R8, 152(AX) 664 665 // Iteration 20 666 MULXQ 160(CX), R8, DI 667 ADCXQ BX, R8 668 ADOXQ 160(AX), R8 669 MOVQ R8, 160(AX) 670 671 // Iteration 21 672 MULXQ 168(CX), R8, BX 673 ADCXQ DI, R8 674 ADOXQ 168(AX), R8 675 MOVQ R8, 168(AX) 676 677 // Iteration 22 678 MULXQ 176(CX), R8, DI 679 ADCXQ BX, R8 680 ADOXQ 176(AX), R8 681 MOVQ R8, 176(AX) 682 683 // Iteration 23 684 MULXQ 184(CX), R8, BX 685 ADCXQ DI, R8 686 ADOXQ 184(AX), R8 687 MOVQ R8, 184(AX) 688 689 // Add back carry flags and return 690 ADCXQ SI, BX 691 ADOXQ SI, BX 692 MOVQ BX, c+24(FP) 693 RET 694 695// func addMulVVW2048(z *uint, x *uint, y uint) (c uint) 696// Requires: ADX, BMI2 697TEXT ·addMulVVW2048(SB), $0-32 698 CMPB ·supportADX+0(SB), $0x01 699 JEQ adx 700 MOVQ z+0(FP), CX 701 MOVQ x+8(FP), BX 702 MOVQ y+16(FP), SI 703 XORQ DI, DI 704 705 // Iteration 0 706 MOVQ (BX), AX 707 MULQ SI 708 ADDQ (CX), AX 709 ADCQ $0x00, DX 710 ADDQ DI, AX 711 ADCQ $0x00, DX 712 MOVQ DX, DI 713 MOVQ AX, (CX) 714 715 // Iteration 1 716 MOVQ 8(BX), AX 717 MULQ SI 718 ADDQ 8(CX), AX 719 ADCQ $0x00, DX 720 ADDQ DI, AX 721 ADCQ $0x00, DX 722 MOVQ DX, DI 723 MOVQ AX, 8(CX) 724 725 // Iteration 2 726 MOVQ 16(BX), AX 727 MULQ SI 728 ADDQ 16(CX), AX 729 ADCQ $0x00, DX 730 ADDQ DI, AX 731 ADCQ $0x00, DX 732 MOVQ DX, DI 733 MOVQ AX, 16(CX) 734 735 // Iteration 3 736 MOVQ 24(BX), AX 737 MULQ SI 738 ADDQ 24(CX), AX 739 ADCQ $0x00, DX 740 ADDQ DI, AX 741 ADCQ $0x00, DX 742 MOVQ DX, DI 743 MOVQ AX, 24(CX) 744 745 // Iteration 4 746 MOVQ 32(BX), AX 747 MULQ SI 748 ADDQ 32(CX), AX 749 ADCQ $0x00, DX 750 ADDQ DI, AX 751 ADCQ $0x00, DX 752 MOVQ DX, DI 753 MOVQ AX, 32(CX) 754 755 // Iteration 5 756 MOVQ 40(BX), AX 757 MULQ SI 758 ADDQ 40(CX), AX 759 ADCQ $0x00, DX 760 ADDQ DI, AX 761 ADCQ $0x00, DX 762 MOVQ DX, DI 763 MOVQ AX, 40(CX) 764 765 // Iteration 6 766 MOVQ 48(BX), AX 767 MULQ SI 768 ADDQ 48(CX), AX 769 ADCQ $0x00, DX 770 ADDQ DI, AX 771 ADCQ $0x00, DX 772 MOVQ DX, DI 773 MOVQ AX, 48(CX) 774 775 // Iteration 7 776 MOVQ 56(BX), AX 777 MULQ SI 778 ADDQ 56(CX), AX 779 ADCQ $0x00, DX 780 ADDQ DI, AX 781 ADCQ $0x00, DX 782 MOVQ DX, DI 783 MOVQ AX, 56(CX) 784 785 // Iteration 8 786 MOVQ 64(BX), AX 787 MULQ SI 788 ADDQ 64(CX), AX 789 ADCQ $0x00, DX 790 ADDQ DI, AX 791 ADCQ $0x00, DX 792 MOVQ DX, DI 793 MOVQ AX, 64(CX) 794 795 // Iteration 9 796 MOVQ 72(BX), AX 797 MULQ SI 798 ADDQ 72(CX), AX 799 ADCQ $0x00, DX 800 ADDQ DI, AX 801 ADCQ $0x00, DX 802 MOVQ DX, DI 803 MOVQ AX, 72(CX) 804 805 // Iteration 10 806 MOVQ 80(BX), AX 807 MULQ SI 808 ADDQ 80(CX), AX 809 ADCQ $0x00, DX 810 ADDQ DI, AX 811 ADCQ $0x00, DX 812 MOVQ DX, DI 813 MOVQ AX, 80(CX) 814 815 // Iteration 11 816 MOVQ 88(BX), AX 817 MULQ SI 818 ADDQ 88(CX), AX 819 ADCQ $0x00, DX 820 ADDQ DI, AX 821 ADCQ $0x00, DX 822 MOVQ DX, DI 823 MOVQ AX, 88(CX) 824 825 // Iteration 12 826 MOVQ 96(BX), AX 827 MULQ SI 828 ADDQ 96(CX), AX 829 ADCQ $0x00, DX 830 ADDQ DI, AX 831 ADCQ $0x00, DX 832 MOVQ DX, DI 833 MOVQ AX, 96(CX) 834 835 // Iteration 13 836 MOVQ 104(BX), AX 837 MULQ SI 838 ADDQ 104(CX), AX 839 ADCQ $0x00, DX 840 ADDQ DI, AX 841 ADCQ $0x00, DX 842 MOVQ DX, DI 843 MOVQ AX, 104(CX) 844 845 // Iteration 14 846 MOVQ 112(BX), AX 847 MULQ SI 848 ADDQ 112(CX), AX 849 ADCQ $0x00, DX 850 ADDQ DI, AX 851 ADCQ $0x00, DX 852 MOVQ DX, DI 853 MOVQ AX, 112(CX) 854 855 // Iteration 15 856 MOVQ 120(BX), AX 857 MULQ SI 858 ADDQ 120(CX), AX 859 ADCQ $0x00, DX 860 ADDQ DI, AX 861 ADCQ $0x00, DX 862 MOVQ DX, DI 863 MOVQ AX, 120(CX) 864 865 // Iteration 16 866 MOVQ 128(BX), AX 867 MULQ SI 868 ADDQ 128(CX), AX 869 ADCQ $0x00, DX 870 ADDQ DI, AX 871 ADCQ $0x00, DX 872 MOVQ DX, DI 873 MOVQ AX, 128(CX) 874 875 // Iteration 17 876 MOVQ 136(BX), AX 877 MULQ SI 878 ADDQ 136(CX), AX 879 ADCQ $0x00, DX 880 ADDQ DI, AX 881 ADCQ $0x00, DX 882 MOVQ DX, DI 883 MOVQ AX, 136(CX) 884 885 // Iteration 18 886 MOVQ 144(BX), AX 887 MULQ SI 888 ADDQ 144(CX), AX 889 ADCQ $0x00, DX 890 ADDQ DI, AX 891 ADCQ $0x00, DX 892 MOVQ DX, DI 893 MOVQ AX, 144(CX) 894 895 // Iteration 19 896 MOVQ 152(BX), AX 897 MULQ SI 898 ADDQ 152(CX), AX 899 ADCQ $0x00, DX 900 ADDQ DI, AX 901 ADCQ $0x00, DX 902 MOVQ DX, DI 903 MOVQ AX, 152(CX) 904 905 // Iteration 20 906 MOVQ 160(BX), AX 907 MULQ SI 908 ADDQ 160(CX), AX 909 ADCQ $0x00, DX 910 ADDQ DI, AX 911 ADCQ $0x00, DX 912 MOVQ DX, DI 913 MOVQ AX, 160(CX) 914 915 // Iteration 21 916 MOVQ 168(BX), AX 917 MULQ SI 918 ADDQ 168(CX), AX 919 ADCQ $0x00, DX 920 ADDQ DI, AX 921 ADCQ $0x00, DX 922 MOVQ DX, DI 923 MOVQ AX, 168(CX) 924 925 // Iteration 22 926 MOVQ 176(BX), AX 927 MULQ SI 928 ADDQ 176(CX), AX 929 ADCQ $0x00, DX 930 ADDQ DI, AX 931 ADCQ $0x00, DX 932 MOVQ DX, DI 933 MOVQ AX, 176(CX) 934 935 // Iteration 23 936 MOVQ 184(BX), AX 937 MULQ SI 938 ADDQ 184(CX), AX 939 ADCQ $0x00, DX 940 ADDQ DI, AX 941 ADCQ $0x00, DX 942 MOVQ DX, DI 943 MOVQ AX, 184(CX) 944 945 // Iteration 24 946 MOVQ 192(BX), AX 947 MULQ SI 948 ADDQ 192(CX), AX 949 ADCQ $0x00, DX 950 ADDQ DI, AX 951 ADCQ $0x00, DX 952 MOVQ DX, DI 953 MOVQ AX, 192(CX) 954 955 // Iteration 25 956 MOVQ 200(BX), AX 957 MULQ SI 958 ADDQ 200(CX), AX 959 ADCQ $0x00, DX 960 ADDQ DI, AX 961 ADCQ $0x00, DX 962 MOVQ DX, DI 963 MOVQ AX, 200(CX) 964 965 // Iteration 26 966 MOVQ 208(BX), AX 967 MULQ SI 968 ADDQ 208(CX), AX 969 ADCQ $0x00, DX 970 ADDQ DI, AX 971 ADCQ $0x00, DX 972 MOVQ DX, DI 973 MOVQ AX, 208(CX) 974 975 // Iteration 27 976 MOVQ 216(BX), AX 977 MULQ SI 978 ADDQ 216(CX), AX 979 ADCQ $0x00, DX 980 ADDQ DI, AX 981 ADCQ $0x00, DX 982 MOVQ DX, DI 983 MOVQ AX, 216(CX) 984 985 // Iteration 28 986 MOVQ 224(BX), AX 987 MULQ SI 988 ADDQ 224(CX), AX 989 ADCQ $0x00, DX 990 ADDQ DI, AX 991 ADCQ $0x00, DX 992 MOVQ DX, DI 993 MOVQ AX, 224(CX) 994 995 // Iteration 29 996 MOVQ 232(BX), AX 997 MULQ SI 998 ADDQ 232(CX), AX 999 ADCQ $0x00, DX 1000 ADDQ DI, AX 1001 ADCQ $0x00, DX 1002 MOVQ DX, DI 1003 MOVQ AX, 232(CX) 1004 1005 // Iteration 30 1006 MOVQ 240(BX), AX 1007 MULQ SI 1008 ADDQ 240(CX), AX 1009 ADCQ $0x00, DX 1010 ADDQ DI, AX 1011 ADCQ $0x00, DX 1012 MOVQ DX, DI 1013 MOVQ AX, 240(CX) 1014 1015 // Iteration 31 1016 MOVQ 248(BX), AX 1017 MULQ SI 1018 ADDQ 248(CX), AX 1019 ADCQ $0x00, DX 1020 ADDQ DI, AX 1021 ADCQ $0x00, DX 1022 MOVQ DX, DI 1023 MOVQ AX, 248(CX) 1024 MOVQ DI, c+24(FP) 1025 RET 1026 1027adx: 1028 MOVQ z+0(FP), AX 1029 MOVQ x+8(FP), CX 1030 MOVQ y+16(FP), DX 1031 XORQ BX, BX 1032 XORQ SI, SI 1033 1034 // Iteration 0 1035 MULXQ (CX), R8, DI 1036 ADCXQ BX, R8 1037 ADOXQ (AX), R8 1038 MOVQ R8, (AX) 1039 1040 // Iteration 1 1041 MULXQ 8(CX), R8, BX 1042 ADCXQ DI, R8 1043 ADOXQ 8(AX), R8 1044 MOVQ R8, 8(AX) 1045 1046 // Iteration 2 1047 MULXQ 16(CX), R8, DI 1048 ADCXQ BX, R8 1049 ADOXQ 16(AX), R8 1050 MOVQ R8, 16(AX) 1051 1052 // Iteration 3 1053 MULXQ 24(CX), R8, BX 1054 ADCXQ DI, R8 1055 ADOXQ 24(AX), R8 1056 MOVQ R8, 24(AX) 1057 1058 // Iteration 4 1059 MULXQ 32(CX), R8, DI 1060 ADCXQ BX, R8 1061 ADOXQ 32(AX), R8 1062 MOVQ R8, 32(AX) 1063 1064 // Iteration 5 1065 MULXQ 40(CX), R8, BX 1066 ADCXQ DI, R8 1067 ADOXQ 40(AX), R8 1068 MOVQ R8, 40(AX) 1069 1070 // Iteration 6 1071 MULXQ 48(CX), R8, DI 1072 ADCXQ BX, R8 1073 ADOXQ 48(AX), R8 1074 MOVQ R8, 48(AX) 1075 1076 // Iteration 7 1077 MULXQ 56(CX), R8, BX 1078 ADCXQ DI, R8 1079 ADOXQ 56(AX), R8 1080 MOVQ R8, 56(AX) 1081 1082 // Iteration 8 1083 MULXQ 64(CX), R8, DI 1084 ADCXQ BX, R8 1085 ADOXQ 64(AX), R8 1086 MOVQ R8, 64(AX) 1087 1088 // Iteration 9 1089 MULXQ 72(CX), R8, BX 1090 ADCXQ DI, R8 1091 ADOXQ 72(AX), R8 1092 MOVQ R8, 72(AX) 1093 1094 // Iteration 10 1095 MULXQ 80(CX), R8, DI 1096 ADCXQ BX, R8 1097 ADOXQ 80(AX), R8 1098 MOVQ R8, 80(AX) 1099 1100 // Iteration 11 1101 MULXQ 88(CX), R8, BX 1102 ADCXQ DI, R8 1103 ADOXQ 88(AX), R8 1104 MOVQ R8, 88(AX) 1105 1106 // Iteration 12 1107 MULXQ 96(CX), R8, DI 1108 ADCXQ BX, R8 1109 ADOXQ 96(AX), R8 1110 MOVQ R8, 96(AX) 1111 1112 // Iteration 13 1113 MULXQ 104(CX), R8, BX 1114 ADCXQ DI, R8 1115 ADOXQ 104(AX), R8 1116 MOVQ R8, 104(AX) 1117 1118 // Iteration 14 1119 MULXQ 112(CX), R8, DI 1120 ADCXQ BX, R8 1121 ADOXQ 112(AX), R8 1122 MOVQ R8, 112(AX) 1123 1124 // Iteration 15 1125 MULXQ 120(CX), R8, BX 1126 ADCXQ DI, R8 1127 ADOXQ 120(AX), R8 1128 MOVQ R8, 120(AX) 1129 1130 // Iteration 16 1131 MULXQ 128(CX), R8, DI 1132 ADCXQ BX, R8 1133 ADOXQ 128(AX), R8 1134 MOVQ R8, 128(AX) 1135 1136 // Iteration 17 1137 MULXQ 136(CX), R8, BX 1138 ADCXQ DI, R8 1139 ADOXQ 136(AX), R8 1140 MOVQ R8, 136(AX) 1141 1142 // Iteration 18 1143 MULXQ 144(CX), R8, DI 1144 ADCXQ BX, R8 1145 ADOXQ 144(AX), R8 1146 MOVQ R8, 144(AX) 1147 1148 // Iteration 19 1149 MULXQ 152(CX), R8, BX 1150 ADCXQ DI, R8 1151 ADOXQ 152(AX), R8 1152 MOVQ R8, 152(AX) 1153 1154 // Iteration 20 1155 MULXQ 160(CX), R8, DI 1156 ADCXQ BX, R8 1157 ADOXQ 160(AX), R8 1158 MOVQ R8, 160(AX) 1159 1160 // Iteration 21 1161 MULXQ 168(CX), R8, BX 1162 ADCXQ DI, R8 1163 ADOXQ 168(AX), R8 1164 MOVQ R8, 168(AX) 1165 1166 // Iteration 22 1167 MULXQ 176(CX), R8, DI 1168 ADCXQ BX, R8 1169 ADOXQ 176(AX), R8 1170 MOVQ R8, 176(AX) 1171 1172 // Iteration 23 1173 MULXQ 184(CX), R8, BX 1174 ADCXQ DI, R8 1175 ADOXQ 184(AX), R8 1176 MOVQ R8, 184(AX) 1177 1178 // Iteration 24 1179 MULXQ 192(CX), R8, DI 1180 ADCXQ BX, R8 1181 ADOXQ 192(AX), R8 1182 MOVQ R8, 192(AX) 1183 1184 // Iteration 25 1185 MULXQ 200(CX), R8, BX 1186 ADCXQ DI, R8 1187 ADOXQ 200(AX), R8 1188 MOVQ R8, 200(AX) 1189 1190 // Iteration 26 1191 MULXQ 208(CX), R8, DI 1192 ADCXQ BX, R8 1193 ADOXQ 208(AX), R8 1194 MOVQ R8, 208(AX) 1195 1196 // Iteration 27 1197 MULXQ 216(CX), R8, BX 1198 ADCXQ DI, R8 1199 ADOXQ 216(AX), R8 1200 MOVQ R8, 216(AX) 1201 1202 // Iteration 28 1203 MULXQ 224(CX), R8, DI 1204 ADCXQ BX, R8 1205 ADOXQ 224(AX), R8 1206 MOVQ R8, 224(AX) 1207 1208 // Iteration 29 1209 MULXQ 232(CX), R8, BX 1210 ADCXQ DI, R8 1211 ADOXQ 232(AX), R8 1212 MOVQ R8, 232(AX) 1213 1214 // Iteration 30 1215 MULXQ 240(CX), R8, DI 1216 ADCXQ BX, R8 1217 ADOXQ 240(AX), R8 1218 MOVQ R8, 240(AX) 1219 1220 // Iteration 31 1221 MULXQ 248(CX), R8, BX 1222 ADCXQ DI, R8 1223 ADOXQ 248(AX), R8 1224 MOVQ R8, 248(AX) 1225 1226 // Add back carry flags and return 1227 ADCXQ SI, BX 1228 ADOXQ SI, BX 1229 MOVQ BX, c+24(FP) 1230 RET 1231