data.isa (7223:a2e1b4f22550) | data.isa (7230:86187fa97285) |
---|---|
1// -*- mode:c++ -*- 2 3// Copyright (c) 2010 ARM Limited 4// All rights reserved 5// 6// The license below extends only to copyright in the software and shall 7// not be construed as granting a license to any other intellectual 8// property including but not limited to intellectual property relating --- 455 unchanged lines hidden (view full) --- 464 if (midRes >= 0) { 465 geBits = geBits | 0xc; 466 } 467 replaceBits(resTemp, 31, 16, midRes); 468 Dest = resTemp; 469 resTemp = geBits; 470 ''', flagType="ge", buildNonCc=True) 471 | 1// -*- mode:c++ -*- 2 3// Copyright (c) 2010 ARM Limited 4// All rights reserved 5// 6// The license below extends only to copyright in the software and shall 7// not be construed as granting a license to any other intellectual 8// property including but not limited to intellectual property relating --- 455 unchanged lines hidden (view full) --- 464 if (midRes >= 0) { 465 geBits = geBits | 0xc; 466 } 467 replaceBits(resTemp, 31, 16, midRes); 468 Dest = resTemp; 469 resTemp = geBits; 470 ''', flagType="ge", buildNonCc=True) 471 |
472 buildRegDataInst("shadd8", ''' 473 resTemp = 0; 474 for (unsigned i = 0; i < 4; i++) { 475 int high = (i + 1) * 8 - 1; 476 int low = i * 8; 477 int32_t midRes = 478 (uint64_t)(sext<8>(bits(Op1.sw, high, low)) + 479 sext<8>(bits(Op2.sw, high, low))) >> 1; 480 replaceBits(resTemp, high, low, midRes); 481 } 482 Dest = resTemp; 483 ''', flagType="none", buildCc=False) 484 buildRegDataInst("shadd16", ''' 485 resTemp = 0; 486 for (unsigned i = 0; i < 2; i++) { 487 int high = (i + 1) * 16 - 1; 488 int low = i * 16; 489 int32_t midRes = 490 (uint64_t)(sext<16>(bits(Op1.sw, high, low)) + 491 sext<16>(bits(Op2.sw, high, low))) >> 1; 492 replaceBits(resTemp, high, low, midRes); 493 } 494 Dest = resTemp; 495 ''', flagType="none", buildCc=False) 496 buildRegDataInst("shsub8", ''' 497 resTemp = 0; 498 for (unsigned i = 0; i < 4; i++) { 499 int high = (i + 1) * 8 - 1; 500 int low = i * 8; 501 int32_t midRes = 502 (uint64_t)(sext<8>(bits(Op1.sw, high, low)) - 503 sext<8>(bits(Op2.sw, high, low))) >> 1; 504 replaceBits(resTemp, high, low, midRes); 505 } 506 Dest = resTemp; 507 ''', flagType="none", buildCc=False) 508 buildRegDataInst("shsub16", ''' 509 resTemp = 0; 510 for (unsigned i = 0; i < 2; i++) { 511 int high = (i + 1) * 16 - 1; 512 int low = i * 16; 513 int32_t midRes = 514 (uint64_t)(sext<16>(bits(Op1.sw, high, low)) - 515 sext<16>(bits(Op2.sw, high, low))) >> 1; 516 replaceBits(resTemp, high, low, midRes); 517 } 518 Dest = resTemp; 519 ''', flagType="none", buildCc=False) 520 buildRegDataInst("shasx", ''' 521 int32_t midRes; 522 resTemp = 0; 523 int64_t arg1Low = sext<16>(bits(Op1.sw, 15, 0)); 524 int64_t arg1High = sext<16>(bits(Op1.sw, 31, 16)); 525 int64_t arg2Low = sext<16>(bits(Op2.sw, 15, 0)); 526 int64_t arg2High = sext<16>(bits(Op2.sw, 31, 16)); 527 midRes = (uint64_t)(arg1Low - arg2High) >> 1; 528 replaceBits(resTemp, 15, 0, midRes); 529 midRes = (arg1High + arg2Low) >> 1; 530 replaceBits(resTemp, 31, 16, midRes); 531 Dest = resTemp; 532 ''', flagType="none", buildCc=True) 533 buildRegDataInst("shsax", ''' 534 int32_t midRes; 535 resTemp = 0; 536 int64_t arg1Low = sext<16>(bits(Op1.sw, 15, 0)); 537 int64_t arg1High = sext<16>(bits(Op1.sw, 31, 16)); 538 int64_t arg2Low = sext<16>(bits(Op2.sw, 15, 0)); 539 int64_t arg2High = sext<16>(bits(Op2.sw, 31, 16)); 540 midRes = (uint64_t)(arg1Low + arg2High) >> 1; 541 replaceBits(resTemp, 15, 0, midRes); 542 midRes = (uint64_t)(arg1High - arg2Low) >> 1; 543 replaceBits(resTemp, 31, 16, midRes); 544 Dest = resTemp; 545 ''', flagType="none", buildCc=True) 546 |
|
472 buildRegDataInst("uqadd16", ''' 473 uint32_t midRes; 474 for (unsigned i = 0; i < 2; i++) { 475 int high = (i + 1) * 16 - 1; 476 int low = i * 16; 477 uint64_t arg1 = bits(Op1, high, low); 478 uint64_t arg2 = bits(Op2, high, low); 479 uSaturateOp<16>(midRes, arg1, arg2); --- 161 unchanged lines hidden (view full) --- 641 midRes = arg1High - arg2Low; 642 if (midRes >= 0) { 643 geBits = geBits | 0xc; 644 } 645 replaceBits(resTemp, 31, 16, midRes); 646 Dest = resTemp; 647 resTemp = geBits; 648 ''', flagType="ge", buildNonCc=False) | 547 buildRegDataInst("uqadd16", ''' 548 uint32_t midRes; 549 for (unsigned i = 0; i < 2; i++) { 550 int high = (i + 1) * 16 - 1; 551 int low = i * 16; 552 uint64_t arg1 = bits(Op1, high, low); 553 uint64_t arg2 = bits(Op2, high, low); 554 uSaturateOp<16>(midRes, arg1, arg2); --- 161 unchanged lines hidden (view full) --- 716 midRes = arg1High - arg2Low; 717 if (midRes >= 0) { 718 geBits = geBits | 0xc; 719 } 720 replaceBits(resTemp, 31, 16, midRes); 721 Dest = resTemp; 722 resTemp = geBits; 723 ''', flagType="ge", buildNonCc=False) |
724 725 buildRegDataInst("uhadd16", ''' 726 resTemp = 0; 727 for (unsigned i = 0; i < 2; i++) { 728 int high = (i + 1) * 16 - 1; 729 int low = i * 16; 730 int32_t midRes = (bits(Op1, high, low) + 731 bits(Op2, high, low)) >> 1; 732 replaceBits(resTemp, high, low, midRes); 733 } 734 Dest = resTemp; 735 ''', flagType="none", buildCc=False) 736 buildRegDataInst("uhadd8", ''' 737 resTemp = 0; 738 for (unsigned i = 0; i < 4; i++) { 739 int high = (i + 1) * 8 - 1; 740 int low = i * 8; 741 int32_t midRes = (bits(Op1, high, low) + 742 bits(Op2, high, low)) >> 1; 743 replaceBits(resTemp, high, low, midRes); 744 } 745 Dest = resTemp; 746 ''', flagType="none", buildCc=False) 747 buildRegDataInst("uhsub16", ''' 748 resTemp = 0; 749 for (unsigned i = 0; i < 2; i++) { 750 int high = (i + 1) * 16 - 1; 751 int low = i * 16; 752 int32_t midRes = (bits(Op1, high, low) - 753 bits(Op2, high, low)) >> 1; 754 replaceBits(resTemp, high, low, midRes); 755 } 756 Dest = resTemp; 757 ''', flagType="none", buildCc=False) 758 buildRegDataInst("uhsub8", ''' 759 resTemp = 0; 760 for (unsigned i = 0; i < 4; i++) { 761 int high = (i + 1) * 8 - 1; 762 int low = i * 8; 763 int32_t midRes = (bits(Op1, high, low) - 764 bits(Op2, high, low)) >> 1; 765 replaceBits(resTemp, high, low, midRes); 766 } 767 Dest = resTemp; 768 ''', flagType="none", buildCc=False) 769 buildRegDataInst("uhasx", ''' 770 int32_t midRes; 771 resTemp = 0; 772 int64_t arg1Low = bits(Op1.sw, 15, 0); 773 int64_t arg1High = bits(Op1.sw, 31, 16); 774 int64_t arg2Low = bits(Op2.sw, 15, 0); 775 int64_t arg2High = bits(Op2.sw, 31, 16); 776 midRes = (arg1Low - arg2High) >> 1; 777 replaceBits(resTemp, 15, 0, midRes); 778 midRes = (arg1High + arg2Low) >> 1; 779 replaceBits(resTemp, 31, 16, midRes); 780 Dest = resTemp; 781 ''', flagType="none", buildCc=False) 782 buildRegDataInst("uhsax", ''' 783 int32_t midRes; 784 resTemp = 0; 785 int64_t arg1Low = bits(Op1.sw, 15, 0); 786 int64_t arg1High = bits(Op1.sw, 31, 16); 787 int64_t arg2Low = bits(Op2.sw, 15, 0); 788 int64_t arg2High = bits(Op2.sw, 31, 16); 789 midRes = (arg1Low + arg2High) >> 1; 790 replaceBits(resTemp, 15, 0, midRes); 791 midRes = (arg1High - arg2Low) >> 1; 792 replaceBits(resTemp, 31, 16, midRes); 793 Dest = resTemp; 794 ''', flagType="none", buildCc=False) |
|
649}}; | 795}}; |