decoder.isa (3992:d08b4ae09876) | decoder.isa (3995:ef17a5754312) |
---|---|
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 --- 639 unchanged lines hidden (view full) --- 648 Fsr &= ~(0x1F); 649 }}); 650 0x02: fmovd({{ 651 Frd.udw = Frs2.udw; 652 //fsr.ftt = fsr.cexc = 0 653 Fsr &= ~(7 << 14); 654 Fsr &= ~(0x1F); 655 }}); | 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 --- 639 unchanged lines hidden (view full) --- 648 Fsr &= ~(0x1F); 649 }}); 650 0x02: fmovd({{ 651 Frd.udw = Frs2.udw; 652 //fsr.ftt = fsr.cexc = 0 653 Fsr &= ~(7 << 14); 654 Fsr &= ~(0x1F); 655 }}); |
656 0x03: Trap::fmovq({{fault = new FpExceptionOther;}}); //unimp fpop | 656 0x03: FpUnimpl::fmovq(); |
657 0x05: fnegs({{ 658 Frds.uw = Frs2s.uw ^ (1UL << 31); 659 //fsr.ftt = fsr.cexc = 0 660 Fsr &= ~(7 << 14); 661 Fsr &= ~(0x1F); 662 }}); 663 0x06: fnegd({{ 664 Frd.udw = Frs2.udw ^ (1ULL << 63); 665 //fsr.ftt = fsr.cexc = 0 666 Fsr &= ~(7 << 14); 667 Fsr &= ~(0x1F); 668 }}); | 657 0x05: fnegs({{ 658 Frds.uw = Frs2s.uw ^ (1UL << 31); 659 //fsr.ftt = fsr.cexc = 0 660 Fsr &= ~(7 << 14); 661 Fsr &= ~(0x1F); 662 }}); 663 0x06: fnegd({{ 664 Frd.udw = Frs2.udw ^ (1ULL << 63); 665 //fsr.ftt = fsr.cexc = 0 666 Fsr &= ~(7 << 14); 667 Fsr &= ~(0x1F); 668 }}); |
669 0x07: Trap::fnegq({{fault = new FpExceptionOther;}}); //fpop unimp | 669 0x07: FpUnimpl::fnegq(); |
670 0x09: fabss({{ 671 Frds.uw = ((1UL << 31) - 1) & Frs2s.uw; 672 //fsr.ftt = fsr.cexc = 0 673 Fsr &= ~(7 << 14); 674 Fsr &= ~(0x1F); 675 }}); 676 0x0A: fabsd({{ 677 Frd.udw = ((1ULL << 63) - 1) & Frs2.udw; 678 //fsr.ftt = fsr.cexc = 0 679 Fsr &= ~(7 << 14); 680 Fsr &= ~(0x1F); 681 }}); | 670 0x09: fabss({{ 671 Frds.uw = ((1UL << 31) - 1) & Frs2s.uw; 672 //fsr.ftt = fsr.cexc = 0 673 Fsr &= ~(7 << 14); 674 Fsr &= ~(0x1F); 675 }}); 676 0x0A: fabsd({{ 677 Frd.udw = ((1ULL << 63) - 1) & Frs2.udw; 678 //fsr.ftt = fsr.cexc = 0 679 Fsr &= ~(7 << 14); 680 Fsr &= ~(0x1F); 681 }}); |
682 0x0B: Trap::fabsq({{fault = new FpExceptionOther;}}); //fpop unimp | 682 0x0B: FpUnimpl::fabsq(); |
683 0x29: fsqrts({{Frds.sf = std::sqrt(Frs2s.sf);}}); 684 0x2A: fsqrtd({{Frd.df = std::sqrt(Frs2.df);}}); | 683 0x29: fsqrts({{Frds.sf = std::sqrt(Frs2s.sf);}}); 684 0x2A: fsqrtd({{Frd.df = std::sqrt(Frs2.df);}}); |
685 0x2B: Trap::fsqrtq({{fault = new FpExceptionOther;}}); //unimp fpop | 685 0x2B: FpUnimpl::fsqrtq(); |
686 0x41: fadds({{Frds.sf = Frs1s.sf + Frs2s.sf;}}); 687 0x42: faddd({{Frd.df = Frs1.df + Frs2.df;}}); | 686 0x41: fadds({{Frds.sf = Frs1s.sf + Frs2s.sf;}}); 687 0x42: faddd({{Frd.df = Frs1.df + Frs2.df;}}); |
688 0x43: Trap::faddq({{fault = new FpExceptionOther;}}); //unimp fpop | 688 0x43: FpUnimpl::faddq(); |
689 0x45: fsubs({{Frds.sf = Frs1s.sf - Frs2s.sf;}}); 690 0x46: fsubd({{Frd.df = Frs1.df - Frs2.df;}}); | 689 0x45: fsubs({{Frds.sf = Frs1s.sf - Frs2s.sf;}}); 690 0x46: fsubd({{Frd.df = Frs1.df - Frs2.df;}}); |
691 0x47: Trap::fsubq({{fault = new FpExceptionOther;}}); //unimp fpop | 691 0x47: FpUnimpl::fsubq(); |
692 0x49: fmuls({{Frds.sf = Frs1s.sf * Frs2s.sf;}}); 693 0x4A: fmuld({{Frd.df = Frs1.df * Frs2.df;}}); | 692 0x49: fmuls({{Frds.sf = Frs1s.sf * Frs2s.sf;}}); 693 0x4A: fmuld({{Frd.df = Frs1.df * Frs2.df;}}); |
694 0x4B: Trap::fmulq({{fault = new FpExceptionOther;}}); //unimp fpop | 694 0x4B: FpUnimpl::fmulq(); |
695 0x4D: fdivs({{Frds.sf = Frs1s.sf / Frs2s.sf;}}); 696 0x4E: fdivd({{Frd.df = Frs1.df / Frs2.df;}}); | 695 0x4D: fdivs({{Frds.sf = Frs1s.sf / Frs2s.sf;}}); 696 0x4E: fdivd({{Frd.df = Frs1.df / Frs2.df;}}); |
697 0x4F: Trap::fdivq({{fault = new FpExceptionOther;}}); //unimp fpop | 697 0x4F: FpUnimpl::fdivq(); |
698 0x69: fsmuld({{Frd.df = Frs1s.sf * Frs2s.sf;}}); | 698 0x69: fsmuld({{Frd.df = Frs1s.sf * Frs2s.sf;}}); |
699 0x6E: Trap::fdmulq({{fault = new FpExceptionOther;}}); //unimp fpop | 699 0x6E: FpUnimpl::fdmulq(); |
700 0x81: fstox({{ 701 Frd.df = (double)static_cast<int64_t>(Frs2s.sf); 702 }}); 703 0x82: fdtox({{ 704 Frd.df = (double)static_cast<int64_t>(Frs2.df); 705 }}); | 700 0x81: fstox({{ 701 Frd.df = (double)static_cast<int64_t>(Frs2s.sf); 702 }}); 703 0x82: fdtox({{ 704 Frd.df = (double)static_cast<int64_t>(Frs2.df); 705 }}); |
706 0x83: Trap::fqtox({{fault = new FpExceptionOther;}}); //unimp fpop | 706 0x83: FpUnimpl::fqtox(); |
707 0x84: fxtos({{ 708 Frds.sf = static_cast<float>((int64_t)Frs2.df); 709 }}); 710 0x88: fxtod({{ 711 Frd.df = static_cast<double>((int64_t)Frs2.df); 712 }}); | 707 0x84: fxtos({{ 708 Frds.sf = static_cast<float>((int64_t)Frs2.df); 709 }}); 710 0x88: fxtod({{ 711 Frd.df = static_cast<double>((int64_t)Frs2.df); 712 }}); |
713 0x8C: Trap::fxtoq({{fault = new FpExceptionOther;}}); //unimp fpop | 713 0x8C: FpUnimpl::fxtoq(); |
714 0xC4: fitos({{ 715 Frds.sf = static_cast<float>((int32_t)Frs2s.sf); 716 }}); 717 0xC6: fdtos({{Frds.sf = Frs2.df;}}); | 714 0xC4: fitos({{ 715 Frds.sf = static_cast<float>((int32_t)Frs2s.sf); 716 }}); 717 0xC6: fdtos({{Frds.sf = Frs2.df;}}); |
718 0xC7: Trap::fqtos({{fault = new FpExceptionOther;}}); //unimp fpop | 718 0xC7: FpUnimpl::fqtos(); |
719 0xC8: fitod({{ 720 Frd.df = static_cast<double>((int32_t)Frs2s.sf); 721 }}); 722 0xC9: fstod({{Frd.df = Frs2s.sf;}}); | 719 0xC8: fitod({{ 720 Frd.df = static_cast<double>((int32_t)Frs2s.sf); 721 }}); 722 0xC9: fstod({{Frd.df = Frs2s.sf;}}); |
723 0xCB: Trap::fqtod({{fault = new FpExceptionOther;}}); // unimp fpop 724 0xCC: Trap::fitoq({{fault = new FpExceptionOther;}}); // unimp fpop 725 0xCD: Trap::fstoq({{fault = new FpExceptionOther;}}); // unimp fpop 726 0xCE: Trap::fdtoq({{fault = new FpExceptionOther;}}); // unimp fpop | 723 0xCB: FpUnimpl::fqtod(); 724 0xCC: FpUnimpl::fitoq(); 725 0xCD: FpUnimpl::fstoq(); 726 0xCE: FpUnimpl::fdtoq(); |
727 0xD1: fstoi({{ 728 Frds.sf = (float)static_cast<int32_t>(Frs2s.sf); 729 }}); 730 0xD2: fdtoi({{ 731 Frds.sf = (float)static_cast<int32_t>(Frs2.df); 732 }}); | 727 0xD1: fstoi({{ 728 Frds.sf = (float)static_cast<int32_t>(Frs2s.sf); 729 }}); 730 0xD2: fdtoi({{ 731 Frds.sf = (float)static_cast<int32_t>(Frs2.df); 732 }}); |
733 0xD3: Trap::fqtoi({{fault = new FpExceptionOther;}}); // unimp fpop | 733 0xD3: FpUnimpl::fqtoi(); |
734 default: FailUnimpl::fpop1(); 735 } 736 } 737 0x35: decode OPF{ 738 format BasicOperate{ 739 0x51: fcmps({{ 740 uint8_t fcc; 741 if(isnan(Frs1s) || isnan(Frs2s)) --- 19 unchanged lines hidden (view full) --- 761 fcc = 2; 762 else 763 fcc = 0; 764 uint8_t firstbit = 10; 765 if(FCMPCC) 766 firstbit = FCMPCC * 2 + 30; 767 Fsr = insertBits(Fsr, firstbit +1, firstbit, fcc); 768 }}); | 734 default: FailUnimpl::fpop1(); 735 } 736 } 737 0x35: decode OPF{ 738 format BasicOperate{ 739 0x51: fcmps({{ 740 uint8_t fcc; 741 if(isnan(Frs1s) || isnan(Frs2s)) --- 19 unchanged lines hidden (view full) --- 761 fcc = 2; 762 else 763 fcc = 0; 764 uint8_t firstbit = 10; 765 if(FCMPCC) 766 firstbit = FCMPCC * 2 + 30; 767 Fsr = insertBits(Fsr, firstbit +1, firstbit, fcc); 768 }}); |
769 0x53: Trap::fcmpq({{fault = new FpExceptionOther;}}); | 769 0x53: FpUnimpl::fcmpq(); |
770 0x54: fcmpes({{ 771 uint8_t fcc = 0; 772 if(isnan(Frs1s) || isnan(Frs2s)) 773 fault = new FpExceptionIEEE754; 774 if(Frs1s < Frs2s) 775 fcc = 1; 776 else if(Frs1s > Frs2s) 777 fcc = 2; --- 10 unchanged lines hidden (view full) --- 788 fcc = 1; 789 else if(Frs1s > Frs2s) 790 fcc = 2; 791 uint8_t firstbit = 10; 792 if(FCMPCC) 793 firstbit = FCMPCC * 2 + 30; 794 Fsr = insertBits(Fsr, firstbit +1, firstbit, fcc); 795 }}); | 770 0x54: fcmpes({{ 771 uint8_t fcc = 0; 772 if(isnan(Frs1s) || isnan(Frs2s)) 773 fault = new FpExceptionIEEE754; 774 if(Frs1s < Frs2s) 775 fcc = 1; 776 else if(Frs1s > Frs2s) 777 fcc = 2; --- 10 unchanged lines hidden (view full) --- 788 fcc = 1; 789 else if(Frs1s > Frs2s) 790 fcc = 2; 791 uint8_t firstbit = 10; 792 if(FCMPCC) 793 firstbit = FCMPCC * 2 + 30; 794 Fsr = insertBits(Fsr, firstbit +1, firstbit, fcc); 795 }}); |
796 0x56: Trap::fcmpeq({{fault = new FpExceptionOther;}}); | 796 0x56: FpUnimpl::fcmpeq(); |
797 default: FailUnimpl::fpop2(); 798 } 799 } 800 //This used to be just impdep1, but now it's a whole bunch 801 //of instructions 802 0x36: decode OPF{ 803 0x00: FailUnimpl::edge8(); 804 0x01: FailUnimpl::edge8n(); --- 554 unchanged lines hidden --- | 797 default: FailUnimpl::fpop2(); 798 } 799 } 800 //This used to be just impdep1, but now it's a whole bunch 801 //of instructions 802 0x36: decode OPF{ 803 0x00: FailUnimpl::edge8(); 804 0x01: FailUnimpl::edge8n(); --- 554 unchanged lines hidden --- |