decoder.isa (3937:a210ce8d4546) | decoder.isa (3941:127f839a18c1) |
---|---|
1// Copyright (c) 2006-2007 The Regents of The University of Michigan 2// All rights reserved. 3// 4// Redistribution and use in source and binary forms, with or without 5// modification, are permitted provided that the following conditions are 6// met: redistributions of source code must retain the above copyright 7// notice, this list of conditions and the following disclaimer; 8// redistributions in binary form must reproduce the above copyright --- 145 unchanged lines hidden (view full) --- 154 NNPC = xc->readPC() + disp; 155 else 156 handle_annul 157 }}); 158 } 159 } 160 //SETHI (or NOP if rd == 0 and imm == 0) 161 0x4: SetHi::sethi({{Rd.udw = imm;}}); | 1// Copyright (c) 2006-2007 The Regents of The University of Michigan 2// All rights reserved. 3// 4// Redistribution and use in source and binary forms, with or without 5// modification, are permitted provided that the following conditions are 6// met: redistributions of source code must retain the above copyright 7// notice, this list of conditions and the following disclaimer; 8// redistributions in binary form must reproduce the above copyright --- 145 unchanged lines hidden (view full) --- 154 NNPC = xc->readPC() + disp; 155 else 156 handle_annul 157 }}); 158 } 159 } 160 //SETHI (or NOP if rd == 0 and imm == 0) 161 0x4: SetHi::sethi({{Rd.udw = imm;}}); |
162 0x5: Trap::fbpfcc({{fault = new FpDisabled;}}); 163 0x6: Trap::fbfcc({{fault = new FpDisabled;}}); | 162 0x5: FailUnimpl::fbpfcc(); 163 0x6: FailUnimpl::fbfcc(); |
164 } 165 0x1: BranchN::call(30, {{ 166 if (Pstate<3:>) 167 R15 = (xc->readPC())<31:0>; 168 else 169 R15 = xc->readPC(); 170 NNPC = R15 + disp; 171 }}); --- 324 unchanged lines hidden (view full) --- 496 Rd = Rd; 497 }}); 498 } 499 } 500 0x2D: sdivx({{ 501 if(Rs2_or_imm13.sdw == 0) fault = new DivisionByZero; 502 else Rd.sdw = Rs1.sdw / Rs2_or_imm13.sdw; 503 }}); | 164 } 165 0x1: BranchN::call(30, {{ 166 if (Pstate<3:>) 167 R15 = (xc->readPC())<31:0>; 168 else 169 R15 = xc->readPC(); 170 NNPC = R15 + disp; 171 }}); --- 324 unchanged lines hidden (view full) --- 496 Rd = Rd; 497 }}); 498 } 499 } 500 0x2D: sdivx({{ 501 if(Rs2_or_imm13.sdw == 0) fault = new DivisionByZero; 502 else Rd.sdw = Rs1.sdw / Rs2_or_imm13.sdw; 503 }}); |
504 0x2E: decode RS1 { 505 0x0: IntOp::popc({{ 506 int64_t count = 0; 507 uint64_t temp = Rs2_or_imm13; 508 //Count the 1s in the front 4bits until none are left 509 uint8_t oneBits[] = {0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4}; 510 while(temp) 511 { 512 count += oneBits[temp & 0xF]; 513 temp = temp >> 4; 514 } 515 Rd = count; 516 }}); 517 } | 504 0x2E: Trap::popc({{fault = new IllegalInstruction;}}); |
518 0x2F: decode RCOND3 519 { 520 0x1: movreq({{Rd = (Rs1.sdw == 0) ? Rs2_or_imm10 : Rd;}}); 521 0x2: movrle({{Rd = (Rs1.sdw <= 0) ? Rs2_or_imm10 : Rd;}}); 522 0x3: movrl({{Rd = (Rs1.sdw < 0) ? Rs2_or_imm10 : Rd;}}); 523 0x5: movrne({{Rd = (Rs1.sdw != 0) ? Rs2_or_imm10 : Rd;}}); 524 0x6: movrg({{Rd = (Rs1.sdw > 0) ? Rs2_or_imm10 : Rd;}}); 525 0x7: movrge({{Rd = (Rs1.sdw >= 0) ? Rs2_or_imm10 : Rd;}}); --- 132 unchanged lines hidden (view full) --- 658 Fsr &= ~(0x1F); 659 }}); 660 0x02: fmovd({{ 661 Frd.udw = Frs2.udw; 662 //fsr.ftt = fsr.cexc = 0 663 Fsr &= ~(7 << 14); 664 Fsr &= ~(0x1F); 665 }}); | 505 0x2F: decode RCOND3 506 { 507 0x1: movreq({{Rd = (Rs1.sdw == 0) ? Rs2_or_imm10 : Rd;}}); 508 0x2: movrle({{Rd = (Rs1.sdw <= 0) ? Rs2_or_imm10 : Rd;}}); 509 0x3: movrl({{Rd = (Rs1.sdw < 0) ? Rs2_or_imm10 : Rd;}}); 510 0x5: movrne({{Rd = (Rs1.sdw != 0) ? Rs2_or_imm10 : Rd;}}); 511 0x6: movrg({{Rd = (Rs1.sdw > 0) ? Rs2_or_imm10 : Rd;}}); 512 0x7: movrge({{Rd = (Rs1.sdw >= 0) ? Rs2_or_imm10 : Rd;}}); --- 132 unchanged lines hidden (view full) --- 645 Fsr &= ~(0x1F); 646 }}); 647 0x02: fmovd({{ 648 Frd.udw = Frs2.udw; 649 //fsr.ftt = fsr.cexc = 0 650 Fsr &= ~(7 << 14); 651 Fsr &= ~(0x1F); 652 }}); |
666 0x03: Trap::fmovq({{fault = new FpExceptionOther;}}); | 653 0x03: Trap::fmovq({{fault = new FpExceptionOther;}}); //unimp fpop |
667 0x05: fnegs({{ 668 Frds.uw = Frs2s.uw ^ (1UL << 31); 669 //fsr.ftt = fsr.cexc = 0 670 Fsr &= ~(7 << 14); 671 Fsr &= ~(0x1F); 672 }}); 673 0x06: fnegd({{ 674 Frd.udw = Frs2.udw ^ (1ULL << 63); 675 //fsr.ftt = fsr.cexc = 0 676 Fsr &= ~(7 << 14); 677 Fsr &= ~(0x1F); 678 }}); | 654 0x05: fnegs({{ 655 Frds.uw = Frs2s.uw ^ (1UL << 31); 656 //fsr.ftt = fsr.cexc = 0 657 Fsr &= ~(7 << 14); 658 Fsr &= ~(0x1F); 659 }}); 660 0x06: fnegd({{ 661 Frd.udw = Frs2.udw ^ (1ULL << 63); 662 //fsr.ftt = fsr.cexc = 0 663 Fsr &= ~(7 << 14); 664 Fsr &= ~(0x1F); 665 }}); |
679 0x07: Trap::fnegq({{fault = new FpDisabled;}}); | 666 0x07: Trap::fnegq({{fault = new FpExceptionOther;}}); //fpop unimp |
680 0x09: fabss({{ 681 Frds.uw = ((1UL << 31) - 1) & Frs2s.uw; 682 //fsr.ftt = fsr.cexc = 0 683 Fsr &= ~(7 << 14); 684 Fsr &= ~(0x1F); 685 }}); 686 0x0A: fabsd({{ 687 Frd.udw = ((1ULL << 63) - 1) & Frs2.udw; 688 //fsr.ftt = fsr.cexc = 0 689 Fsr &= ~(7 << 14); 690 Fsr &= ~(0x1F); 691 }}); | 667 0x09: fabss({{ 668 Frds.uw = ((1UL << 31) - 1) & Frs2s.uw; 669 //fsr.ftt = fsr.cexc = 0 670 Fsr &= ~(7 << 14); 671 Fsr &= ~(0x1F); 672 }}); 673 0x0A: fabsd({{ 674 Frd.udw = ((1ULL << 63) - 1) & Frs2.udw; 675 //fsr.ftt = fsr.cexc = 0 676 Fsr &= ~(7 << 14); 677 Fsr &= ~(0x1F); 678 }}); |
692 0x0B: Trap::fabsq({{fault = new FpDisabled;}}); | 679 0x0B: Trap::fabsq({{fault = new FpExceptionOther;}}); //fpop unimp |
693 0x29: fsqrts({{Frds.sf = std::sqrt(Frs2s.sf);}}); 694 0x2A: fsqrtd({{Frd.df = std::sqrt(Frs2.df);}}); | 680 0x29: fsqrts({{Frds.sf = std::sqrt(Frs2s.sf);}}); 681 0x2A: fsqrtd({{Frd.df = std::sqrt(Frs2.df);}}); |
695 0x2B: Trap::fsqrtq({{fault = new FpDisabled;}}); | 682 0x2B: Trap::fsqrtq({{fault = new FpExceptionOther;}}); //unimp fpop |
696 0x41: fadds({{Frds.sf = Frs1s.sf + Frs2s.sf;}}); 697 0x42: faddd({{Frd.df = Frs1.df + Frs2.df;}}); | 683 0x41: fadds({{Frds.sf = Frs1s.sf + Frs2s.sf;}}); 684 0x42: faddd({{Frd.df = Frs1.df + Frs2.df;}}); |
698 0x43: Trap::faddq({{fault = new FpDisabled;}}); | 685 0x43: Trap::faddq({{fault = new FpExceptionOther;}}); //unimp fpop |
699 0x45: fsubs({{Frds.sf = Frs1s.sf - Frs2s.sf;}}); 700 0x46: fsubd({{Frd.df = Frs1.df - Frs2.df;}}); | 686 0x45: fsubs({{Frds.sf = Frs1s.sf - Frs2s.sf;}}); 687 0x46: fsubd({{Frd.df = Frs1.df - Frs2.df;}}); |
701 0x47: Trap::fsubq({{fault = new FpDisabled;}}); | 688 0x47: Trap::fsubq({{fault = new FpExceptionOther;}}); //unimp fpop |
702 0x49: fmuls({{Frds.sf = Frs1s.sf * Frs2s.sf;}}); 703 0x4A: fmuld({{Frd.df = Frs1.df * Frs2.df;}}); | 689 0x49: fmuls({{Frds.sf = Frs1s.sf * Frs2s.sf;}}); 690 0x4A: fmuld({{Frd.df = Frs1.df * Frs2.df;}}); |
704 0x4B: Trap::fmulq({{fault = new FpDisabled;}}); | 691 0x4B: Trap::fmulq({{fault = new FpExceptionOther;}}); //unimp fpop |
705 0x4D: fdivs({{Frds.sf = Frs1s.sf / Frs2s.sf;}}); 706 0x4E: fdivd({{Frd.df = Frs1.df / Frs2.df;}}); | 692 0x4D: fdivs({{Frds.sf = Frs1s.sf / Frs2s.sf;}}); 693 0x4E: fdivd({{Frd.df = Frs1.df / Frs2.df;}}); |
707 0x4F: Trap::fdivq({{fault = new FpDisabled;}}); | 694 0x4F: Trap::fdivq({{fault = new FpExceptionOther;}}); //unimp fpop |
708 0x69: fsmuld({{Frd.df = Frs1s.sf * Frs2s.sf;}}); | 695 0x69: fsmuld({{Frd.df = Frs1s.sf * Frs2s.sf;}}); |
709 0x6E: Trap::fdmulq({{fault = new FpDisabled;}}); | 696 0x6E: Trap::fdmulq({{fault = new FpExceptionOther;}}); //unimp fpop |
710 0x81: fstox({{ 711 Frd.df = (double)static_cast<int64_t>(Frs2s.sf); 712 }}); 713 0x82: fdtox({{ 714 Frd.df = (double)static_cast<int64_t>(Frs2.df); 715 }}); | 697 0x81: fstox({{ 698 Frd.df = (double)static_cast<int64_t>(Frs2s.sf); 699 }}); 700 0x82: fdtox({{ 701 Frd.df = (double)static_cast<int64_t>(Frs2.df); 702 }}); |
716 0x83: Trap::fqtox({{fault = new FpDisabled;}}); | 703 0x83: Trap::fqtox({{fault = new FpExceptionOther;}}); //unimp fpop |
717 0x84: fxtos({{ 718 Frds.sf = static_cast<float>((int64_t)Frs2.df); 719 }}); 720 0x88: fxtod({{ 721 Frd.df = static_cast<double>((int64_t)Frs2.df); 722 }}); | 704 0x84: fxtos({{ 705 Frds.sf = static_cast<float>((int64_t)Frs2.df); 706 }}); 707 0x88: fxtod({{ 708 Frd.df = static_cast<double>((int64_t)Frs2.df); 709 }}); |
723 0x8C: Trap::fxtoq({{fault = new FpDisabled;}}); | 710 0x8C: Trap::fxtoq({{fault = new FpExceptionOther;}}); //unimp fpop |
724 0xC4: fitos({{ 725 Frds.sf = static_cast<float>((int32_t)Frs2s.sf); 726 }}); 727 0xC6: fdtos({{Frds.sf = Frs2.df;}}); | 711 0xC4: fitos({{ 712 Frds.sf = static_cast<float>((int32_t)Frs2s.sf); 713 }}); 714 0xC6: fdtos({{Frds.sf = Frs2.df;}}); |
728 0xC7: Trap::fqtos({{fault = new FpDisabled;}}); | 715 0xC7: Trap::fqtos({{fault = new FpExceptionOther;}}); //unimp fpop |
729 0xC8: fitod({{ 730 Frd.df = static_cast<double>((int32_t)Frs2s.sf); 731 }}); 732 0xC9: fstod({{Frd.df = Frs2s.sf;}}); | 716 0xC8: fitod({{ 717 Frd.df = static_cast<double>((int32_t)Frs2s.sf); 718 }}); 719 0xC9: fstod({{Frd.df = Frs2s.sf;}}); |
733 0xCB: Trap::fqtod({{fault = new FpDisabled;}}); 734 0xCC: Trap::fitoq({{fault = new FpDisabled;}}); 735 0xCD: Trap::fstoq({{fault = new FpDisabled;}}); 736 0xCE: Trap::fdtoq({{fault = new FpDisabled;}}); | 720 0xCB: Trap::fqtod({{fault = new FpExceptionOther;}}); // unimp fpop 721 0xCC: Trap::fitoq({{fault = new FpExceptionOther;}}); // unimp fpop 722 0xCD: Trap::fstoq({{fault = new FpExceptionOther;}}); // unimp fpop 723 0xCE: Trap::fdtoq({{fault = new FpExceptionOther;}}); // unimp fpop |
737 0xD1: fstoi({{ 738 Frds.sf = (float)static_cast<int32_t>(Frs2s.sf); 739 }}); 740 0xD2: fdtoi({{ 741 Frds.sf = (float)static_cast<int32_t>(Frs2.df); 742 }}); | 724 0xD1: fstoi({{ 725 Frds.sf = (float)static_cast<int32_t>(Frs2s.sf); 726 }}); 727 0xD2: fdtoi({{ 728 Frds.sf = (float)static_cast<int32_t>(Frs2.df); 729 }}); |
743 0xD3: Trap::fqtoi({{fault = new FpDisabled;}}); 744 default: Trap::fpop1({{fault = new FpDisabled;}}); | 730 0xD3: Trap::fqtoi({{fault = new FpExceptionOther;}}); // unimp fpop 731 default: FailUnimpl::fpop1(); |
745 } 746 } 747 0x35: Trap::fpop2({{fault = new FpDisabled;}}); 748 //This used to be just impdep1, but now it's a whole bunch 749 //of instructions 750 0x36: decode OPF{ | 732 } 733 } 734 0x35: Trap::fpop2({{fault = new FpDisabled;}}); 735 //This used to be just impdep1, but now it's a whole bunch 736 //of instructions 737 0x36: decode OPF{ |
751 0x00: Trap::edge8({{fault = new IllegalInstruction;}}); 752 0x01: Trap::edge8n({{fault = new IllegalInstruction;}}); 753 0x02: Trap::edge8l({{fault = new IllegalInstruction;}}); 754 0x03: Trap::edge8ln({{fault = new IllegalInstruction;}}); 755 0x04: Trap::edge16({{fault = new IllegalInstruction;}}); 756 0x05: Trap::edge16n({{fault = new IllegalInstruction;}}); 757 0x06: Trap::edge16l({{fault = new IllegalInstruction;}}); 758 0x07: Trap::edge16ln({{fault = new IllegalInstruction;}}); 759 0x08: Trap::edge32({{fault = new IllegalInstruction;}}); 760 0x09: Trap::edge32n({{fault = new IllegalInstruction;}}); 761 0x0A: Trap::edge32l({{fault = new IllegalInstruction;}}); 762 0x0B: Trap::edge32ln({{fault = new IllegalInstruction;}}); 763 0x10: Trap::array8({{fault = new IllegalInstruction;}}); 764 0x12: Trap::array16({{fault = new IllegalInstruction;}}); 765 0x14: Trap::array32({{fault = new IllegalInstruction;}}); | 738 0x00: FailUnimpl::edge8(); 739 0x01: FailUnimpl::edge8n(); 740 0x02: FailUnimpl::edge8l(); 741 0x03: FailUnimpl::edge8ln(); 742 0x04: FailUnimpl::edge16(); 743 0x05: FailUnimpl::edge16n(); 744 0x06: FailUnimpl::edge16l(); 745 0x07: FailUnimpl::edge16ln(); 746 0x08: FailUnimpl::edge32(); 747 0x09: FailUnimpl::edge32n(); 748 0x0A: FailUnimpl::edge32l(); 749 0x0B: FailUnimpl::edge32ln(); 750 0x10: FailUnimpl::array8(); 751 0x12: FailUnimpl::array16(); 752 0x14: FailUnimpl::array32(); |
766 0x18: BasicOperate::alignaddr({{ 767 uint64_t sum = Rs1 + Rs2; 768 Rd = sum & ~7; 769 Gsr = (Gsr & ~7) | (sum & 7); 770 }}); | 753 0x18: BasicOperate::alignaddr({{ 754 uint64_t sum = Rs1 + Rs2; 755 Rd = sum & ~7; 756 Gsr = (Gsr & ~7) | (sum & 7); 757 }}); |
771 0x19: Trap::bmask({{fault = new IllegalInstruction;}}); | 758 0x19: FailUnimpl::bmask(); |
772 0x1A: BasicOperate::alignaddresslittle({{ 773 uint64_t sum = Rs1 + Rs2; 774 Rd = sum & ~7; 775 Gsr = (Gsr & ~7) | ((~sum + 1) & 7); 776 }}); | 759 0x1A: BasicOperate::alignaddresslittle({{ 760 uint64_t sum = Rs1 + Rs2; 761 Rd = sum & ~7; 762 Gsr = (Gsr & ~7) | ((~sum + 1) & 7); 763 }}); |
777 0x20: Trap::fcmple16({{fault = new IllegalInstruction;}}); 778 0x22: Trap::fcmpne16({{fault = new IllegalInstruction;}}); 779 0x24: Trap::fcmple32({{fault = new IllegalInstruction;}}); 780 0x26: Trap::fcmpne32({{fault = new IllegalInstruction;}}); 781 0x28: Trap::fcmpgt16({{fault = new IllegalInstruction;}}); 782 0x2A: Trap::fcmpeq16({{fault = new IllegalInstruction;}}); 783 0x2C: Trap::fcmpgt32({{fault = new IllegalInstruction;}}); 784 0x2E: Trap::fcmpeq32({{fault = new IllegalInstruction;}}); 785 0x31: Trap::fmul8x16({{fault = new IllegalInstruction;}}); 786 0x33: Trap::fmul8x16au({{fault = new IllegalInstruction;}}); 787 0x35: Trap::fmul8x16al({{fault = new IllegalInstruction;}}); 788 0x36: Trap::fmul8sux16({{fault = new IllegalInstruction;}}); 789 0x37: Trap::fmul8ulx16({{fault = new IllegalInstruction;}}); 790 0x38: Trap::fmuld8sux16({{fault = new IllegalInstruction;}}); 791 0x39: Trap::fmuld8ulx16({{fault = new IllegalInstruction;}}); | 764 0x20: FailUnimpl::fcmple16(); 765 0x22: FailUnimpl::fcmpne16(); 766 0x24: FailUnimpl::fcmple32(); 767 0x26: FailUnimpl::fcmpne32(); 768 0x28: FailUnimpl::fcmpgt16(); 769 0x2A: FailUnimpl::fcmpeq16(); 770 0x2C: FailUnimpl::fcmpgt32(); 771 0x2E: FailUnimpl::fcmpeq32(); 772 0x31: FailUnimpl::fmul8x16(); 773 0x33: FailUnimpl::fmul8x16au(); 774 0x35: FailUnimpl::fmul8x16al(); 775 0x36: FailUnimpl::fmul8sux16(); 776 0x37: FailUnimpl::fmul8ulx16(); 777 0x38: FailUnimpl::fmuld8sux16(); 778 0x39: FailUnimpl::fmuld8ulx16(); |
792 0x3A: Trap::fpack32({{fault = new IllegalInstruction;}}); 793 0x3B: Trap::fpack16({{fault = new IllegalInstruction;}}); 794 0x3D: Trap::fpackfix({{fault = new IllegalInstruction;}}); 795 0x3E: Trap::pdist({{fault = new IllegalInstruction;}}); 796 0x48: BasicOperate::faligndata({{ 797 uint64_t msbX = Frs1.udw; 798 uint64_t lsbX = Frs2.udw; 799 //Some special cases need to be split out, first --- 15 unchanged lines hidden (view full) --- 815 uint64_t lsbShift = (8 - Gsr<2:0>) * 8; 816 uint64_t msbMask = ((uint64_t)(-1)) >> msbShift; 817 uint64_t lsbMask = ((uint64_t)(-1)) << lsbShift; 818 Frd.udw = ((msbX & msbMask) << msbShift) | 819 ((lsbX & lsbMask) >> lsbShift); 820 } 821 }}); 822 0x4B: Trap::fpmerge({{fault = new IllegalInstruction;}}); | 779 0x3A: Trap::fpack32({{fault = new IllegalInstruction;}}); 780 0x3B: Trap::fpack16({{fault = new IllegalInstruction;}}); 781 0x3D: Trap::fpackfix({{fault = new IllegalInstruction;}}); 782 0x3E: Trap::pdist({{fault = new IllegalInstruction;}}); 783 0x48: BasicOperate::faligndata({{ 784 uint64_t msbX = Frs1.udw; 785 uint64_t lsbX = Frs2.udw; 786 //Some special cases need to be split out, first --- 15 unchanged lines hidden (view full) --- 802 uint64_t lsbShift = (8 - Gsr<2:0>) * 8; 803 uint64_t msbMask = ((uint64_t)(-1)) >> msbShift; 804 uint64_t lsbMask = ((uint64_t)(-1)) << lsbShift; 805 Frd.udw = ((msbX & msbMask) << msbShift) | 806 ((lsbX & lsbMask) >> lsbShift); 807 } 808 }}); 809 0x4B: Trap::fpmerge({{fault = new IllegalInstruction;}}); |
823 0x4C: Trap::bshuffle({{fault = new IllegalInstruction;}}); 824 0x4D: Trap::fexpand({{fault = new IllegalInstruction;}}); 825 0x50: Trap::fpadd16({{fault = new IllegalInstruction;}}); 826 0x51: Trap::fpadd16s({{fault = new IllegalInstruction;}}); 827 0x52: Trap::fpadd32({{fault = new IllegalInstruction;}}); 828 0x53: Trap::fpadd32s({{fault = new IllegalInstruction;}}); 829 0x54: Trap::fpsub16({{fault = new IllegalInstruction;}}); 830 0x55: Trap::fpsub16s({{fault = new IllegalInstruction;}}); 831 0x56: Trap::fpsub32({{fault = new IllegalInstruction;}}); 832 0x57: Trap::fpsub32s({{fault = new IllegalInstruction;}}); | 810 0x4C: FailUnimpl::bshuffle(); 811 0x4D: FailUnimpl::fexpand(); 812 0x50: FailUnimpl::fpadd16(); 813 0x51: FailUnimpl::fpadd16s(); 814 0x52: FailUnimpl::fpadd32(); 815 0x53: FailUnimpl::fpadd32s(); 816 0x54: FailUnimpl::fpsub16(); 817 0x55: FailUnimpl::fpsub16s(); 818 0x56: FailUnimpl::fpsub32(); 819 0x57: FailUnimpl::fpsub32s(); |
833 0x60: BasicOperate::fzero({{Frd.df = 0;}}); 834 0x61: BasicOperate::fzeros({{Frds.sf = 0;}}); | 820 0x60: BasicOperate::fzero({{Frd.df = 0;}}); 821 0x61: BasicOperate::fzeros({{Frds.sf = 0;}}); |
835 0x62: Trap::fnor({{fault = new IllegalInstruction;}}); 836 0x63: Trap::fnors({{fault = new IllegalInstruction;}}); 837 0x64: Trap::fandnot2({{fault = new IllegalInstruction;}}); 838 0x65: Trap::fandnot2s({{fault = new IllegalInstruction;}}); | 822 0x62: FailUnimpl::fnor(); 823 0x63: FailUnimpl::fnors(); 824 0x64: FailUnimpl::fandnot2(); 825 0x65: FailUnimpl::fandnot2s(); |
839 0x66: BasicOperate::fnot2({{ 840 Frd.df = (double)(~((uint64_t)Frs2.df)); 841 }}); 842 0x67: BasicOperate::fnot2s({{ 843 Frds.sf = (float)(~((uint32_t)Frs2s.sf)); 844 }}); | 826 0x66: BasicOperate::fnot2({{ 827 Frd.df = (double)(~((uint64_t)Frs2.df)); 828 }}); 829 0x67: BasicOperate::fnot2s({{ 830 Frds.sf = (float)(~((uint32_t)Frs2s.sf)); 831 }}); |
845 0x68: Trap::fandnot1({{fault = new IllegalInstruction;}}); 846 0x69: Trap::fandnot1s({{fault = new IllegalInstruction;}}); | 832 0x68: FailUnimpl::fandnot1(); 833 0x69: FailUnimpl::fandnot1s(); |
847 0x6A: BasicOperate::fnot1({{ 848 Frd.df = (double)(~((uint64_t)Frs1.df)); 849 }}); 850 0x6B: BasicOperate::fnot1s({{ 851 Frds.sf = (float)(~((uint32_t)Frs1s.sf)); 852 }}); | 834 0x6A: BasicOperate::fnot1({{ 835 Frd.df = (double)(~((uint64_t)Frs1.df)); 836 }}); 837 0x6B: BasicOperate::fnot1s({{ 838 Frds.sf = (float)(~((uint32_t)Frs1s.sf)); 839 }}); |
853 0x6C: Trap::fxor({{fault = new IllegalInstruction;}}); 854 0x6D: Trap::fxors({{fault = new IllegalInstruction;}}); 855 0x6E: Trap::fnand({{fault = new IllegalInstruction;}}); 856 0x6F: Trap::fnands({{fault = new IllegalInstruction;}}); 857 0x70: Trap::fand({{fault = new IllegalInstruction;}}); 858 0x71: Trap::fands({{fault = new IllegalInstruction;}}); 859 0x72: Trap::fxnor({{fault = new IllegalInstruction;}}); 860 0x73: Trap::fxnors({{fault = new IllegalInstruction;}}); | 840 0x6C: FailUnimpl::fxor(); 841 0x6D: FailUnimpl::fxors(); 842 0x6E: FailUnimpl::fnand(); 843 0x6F: FailUnimpl::fnands(); 844 0x70: FailUnimpl::fand(); 845 0x71: FailUnimpl::fands(); 846 0x72: FailUnimpl::fxnor(); 847 0x73: FailUnimpl::fxnors(); |
861 0x74: BasicOperate::fsrc1({{Frd.udw = Frs1.udw;}}); 862 0x75: BasicOperate::fsrc1s({{Frds.uw = Frs1s.uw;}}); | 848 0x74: BasicOperate::fsrc1({{Frd.udw = Frs1.udw;}}); 849 0x75: BasicOperate::fsrc1s({{Frds.uw = Frs1s.uw;}}); |
863 0x76: Trap::fornot2({{fault = new IllegalInstruction;}}); 864 0x77: Trap::fornot2s({{fault = new IllegalInstruction;}}); | 850 0x76: FailUnimpl::fornot2(); 851 0x77: FailUnimpl::fornot2s(); |
865 0x78: BasicOperate::fsrc2({{Frd.udw = Frs2.udw;}}); 866 0x79: BasicOperate::fsrc2s({{Frds.uw = Frs2s.uw;}}); | 852 0x78: BasicOperate::fsrc2({{Frd.udw = Frs2.udw;}}); 853 0x79: BasicOperate::fsrc2s({{Frds.uw = Frs2s.uw;}}); |
867 0x7A: Trap::fornot1({{fault = new IllegalInstruction;}}); 868 0x7B: Trap::fornot1s({{fault = new IllegalInstruction;}}); 869 0x7C: Trap::for({{fault = new IllegalInstruction;}}); 870 0x7D: Trap::fors({{fault = new IllegalInstruction;}}); 871 0x7E: Trap::fone({{fault = new IllegalInstruction;}}); 872 0x7F: Trap::fones({{fault = new IllegalInstruction;}}); | 854 0x7A: FailUnimpl::fornot1(); 855 0x7B: FailUnimpl::fornot1s(); 856 0x7C: FailUnimpl::for(); 857 0x7D: FailUnimpl::fors(); 858 0x7E: BasicOperate::fone({{Frd.udw = std::numeric_limits<uint64_t>::max();}}); 859 0x7F: BasicOperate::fones({{Frds.uw = std::numeric_limits<uint32_t>::max();}}); |
873 0x80: Trap::shutdown({{fault = new IllegalInstruction;}}); | 860 0x80: Trap::shutdown({{fault = new IllegalInstruction;}}); |
874 0x81: Trap::siam({{fault = new IllegalInstruction;}}); | 861 0x81: FailUnimpl::siam(); |
875 } 876 0x37: Trap::impdep2({{fault = new IllegalInstruction;}}); 877 0x38: Branch::jmpl({{ 878 Addr target = Rs1 + Rs2_or_imm13; 879 if(target & 0x3) 880 fault = new MemAddressNotAligned; 881 else 882 { --- 448 unchanged lines hidden --- | 862 } 863 0x37: Trap::impdep2({{fault = new IllegalInstruction;}}); 864 0x38: Branch::jmpl({{ 865 Addr target = Rs1 + Rs2_or_imm13; 866 if(target & 0x3) 867 fault = new MemAddressNotAligned; 868 else 869 { --- 448 unchanged lines hidden --- |