136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===----------------------------------------------------------------------===// 236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// MicroMIPS Base Classes 336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===----------------------------------------------------------------------===// 436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// 636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// Base class for MicroMips instructions. 736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// This class does not depend on the instruction size. 836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// 936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MicroMipsInstBase<dag outs, dag ins, string asmstr, list<dag> pattern, 1036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines InstrItinClass itin, Format f> : Instruction 1136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines{ 1236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Namespace = "Mips"; 1336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let DecoderNamespace = "MicroMips"; 1436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 1536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let OutOperandList = outs; 1636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let InOperandList = ins; 1736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 1836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let AsmString = asmstr; 1936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Pattern = pattern; 2036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Itinerary = itin; 2136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 2236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Predicates = [InMicroMips]; 2336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 2436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines Format Form = f; 2536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 2636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 2736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// 2836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// Base class for MicroMIPS 16-bit instructions. 2936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// 3036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MicroMipsInst16<dag outs, dag ins, string asmstr, list<dag> pattern, 3136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines InstrItinClass itin, Format f> : 3236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines MicroMipsInstBase<outs, ins, asmstr, pattern, itin, f> 3336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines{ 3436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Size = 2; 3536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines field bits<16> Inst; 3636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines field bits<16> SoftFail = 0; 3736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<6> Opcode = 0x0; 3836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 3936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 4036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===----------------------------------------------------------------------===// 4136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// MicroMIPS 16-bit Instruction Formats 4236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===----------------------------------------------------------------------===// 4336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 4436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MOVE_FM_MM16<bits<6> funct> { 4536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> rs; 4636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> rd; 4736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 4836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<16> Inst; 4936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 5036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15-10} = funct; 5136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{9-5} = rd; 5236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{4-0} = rs; 5336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 5436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 5536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass JALR_FM_MM16<bits<5> op> { 5636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> rs; 5736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 5836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<16> Inst; 5936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 6036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15-10} = 0x11; 6136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{9-5} = op; 6236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{4-0} = rs; 6336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 6436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 6536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MFHILO_FM_MM16<bits<5> funct> { 6636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> rd; 6736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 6836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<16> Inst; 6936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 7036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15-10} = 0x11; 7136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{9-5} = funct; 7236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{4-0} = rd; 7336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 7436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 7536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===----------------------------------------------------------------------===// 7636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// MicroMIPS 32-bit Instruction Formats 7736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===----------------------------------------------------------------------===// 7836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 79f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanakaclass MMArch { 80f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka string Arch = "micromips"; 81f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka list<dag> Pattern = []; 82f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka} 83f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 84f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanakaclass ADD_FM_MM<bits<6> op, bits<10> funct> : MMArch { 85f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<5> rt; 86f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<5> rs; 87f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<5> rd; 88f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 89f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<32> Inst; 90f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 91f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{31-26} = op; 92f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{25-21} = rt; 93f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{20-16} = rs; 94f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{15-11} = rd; 95f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{10} = 0; 96f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{9-0} = funct; 97f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka} 98f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 99f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanakaclass ADDI_FM_MM<bits<6> op> : MMArch { 100f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<5> rs; 101f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<5> rt; 102f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<16> imm16; 103f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 104f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<32> Inst; 105f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 106f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{31-26} = op; 107f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{25-21} = rt; 108f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{20-16} = rs; 109f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{15-0} = imm16; 110f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka} 111f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 112f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanakaclass SLTI_FM_MM<bits<6> op> : MMArch { 113f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<5> rt; 114f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<5> rs; 115f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<16> imm16; 116f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 117f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<32> Inst; 118f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 119f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{31-26} = op; 12042cb3abaddfcff16ab18b114c3de034839c85e05Zoran Jovanovic let Inst{25-21} = rt; 12142cb3abaddfcff16ab18b114c3de034839c85e05Zoran Jovanovic let Inst{20-16} = rs; 122f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{15-0} = imm16; 123f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka} 124f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 125f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanakaclass LUI_FM_MM : MMArch { 126f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<5> rt; 127f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<16> imm16; 128f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 129f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<32> Inst; 130f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 131f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{31-26} = 0x10; 132f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{25-21} = 0xd; 133f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{20-16} = rt; 134f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{15-0} = imm16; 135f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka} 136f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 137f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanakaclass MULT_FM_MM<bits<10> funct> : MMArch { 138f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<5> rs; 139f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<5> rt; 140f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 141f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<32> Inst; 142f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 143f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{31-26} = 0x00; 144f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{25-21} = rt; 145f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{20-16} = rs; 146f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{15-6} = funct; 147f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{5-0} = 0x3c; 148f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka} 149385de773033080503491919dc50be7203552247bAkira Hatanaka 150385de773033080503491919dc50be7203552247bAkira Hatanakaclass SRA_FM_MM<bits<10> funct, bit rotate> : MMArch { 151385de773033080503491919dc50be7203552247bAkira Hatanaka bits<5> rd; 152385de773033080503491919dc50be7203552247bAkira Hatanaka bits<5> rt; 153385de773033080503491919dc50be7203552247bAkira Hatanaka bits<5> shamt; 154385de773033080503491919dc50be7203552247bAkira Hatanaka 155385de773033080503491919dc50be7203552247bAkira Hatanaka bits<32> Inst; 156385de773033080503491919dc50be7203552247bAkira Hatanaka 157385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{31-26} = 0; 158385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{25-21} = rd; 159385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{20-16} = rt; 160385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{15-11} = shamt; 161385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{10} = rotate; 162385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{9-0} = funct; 163385de773033080503491919dc50be7203552247bAkira Hatanaka} 164385de773033080503491919dc50be7203552247bAkira Hatanaka 165385de773033080503491919dc50be7203552247bAkira Hatanakaclass SRLV_FM_MM<bits<10> funct, bit rotate> : MMArch { 166385de773033080503491919dc50be7203552247bAkira Hatanaka bits<5> rd; 167385de773033080503491919dc50be7203552247bAkira Hatanaka bits<5> rt; 168385de773033080503491919dc50be7203552247bAkira Hatanaka bits<5> rs; 169385de773033080503491919dc50be7203552247bAkira Hatanaka 170385de773033080503491919dc50be7203552247bAkira Hatanaka bits<32> Inst; 171385de773033080503491919dc50be7203552247bAkira Hatanaka 172385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{31-26} = 0; 173385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{25-21} = rt; 174385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{20-16} = rs; 175385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{15-11} = rd; 176385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{10} = rotate; 177385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{9-0} = funct; 178385de773033080503491919dc50be7203552247bAkira Hatanaka} 179089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka 180089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanakaclass LW_FM_MM<bits<6> op> : MMArch { 181089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka bits<5> rt; 182089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka bits<21> addr; 183089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka 184089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka bits<32> Inst; 185089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka 186089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka let Inst{31-26} = op; 187089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka let Inst{25-21} = rt; 188089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka let Inst{20-16} = addr{20-16}; 189089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka let Inst{15-0} = addr{15-0}; 190089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka} 191da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter 192da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carterclass LWL_FM_MM<bits<4> funct> { 193da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter bits<5> rt; 194da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter bits<21> addr; 195da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter 196da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter bits<32> Inst; 197da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter 198da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter let Inst{31-26} = 0x18; 199da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter let Inst{25-21} = rt; 200da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter let Inst{20-16} = addr{20-16}; 201da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter let Inst{15-12} = funct; 202da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter let Inst{11-0} = addr{11-0}; 203da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter} 204bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic 205bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medicclass CMov_F_I_FM_MM<bits<7> func> : MMArch { 206bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic bits<5> rd; 207bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic bits<5> rs; 208bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic bits<3> fcc; 209bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic 210bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic bits<32> Inst; 211bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic 212bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic let Inst{31-26} = 0x15; 213bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic let Inst{25-21} = rd; 214bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic let Inst{20-16} = rs; 215bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic let Inst{15-13} = fcc; 216bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic let Inst{12-6} = func; 217bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic let Inst{5-0} = 0x3b; 218bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic} 219dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic 220dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medicclass MTLO_FM_MM<bits<10> funct> : MMArch { 221dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic bits<5> rs; 222dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic 223dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic bits<32> Inst; 224dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic 225dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic let Inst{31-26} = 0x00; 226dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic let Inst{25-21} = 0x00; 227dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic let Inst{20-16} = rs; 228dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic let Inst{15-6} = funct; 229dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic let Inst{5-0} = 0x3c; 230dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic} 231dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic 232dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medicclass MFLO_FM_MM<bits<10> funct> : MMArch { 233dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic bits<5> rd; 234dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic 235dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic bits<32> Inst; 236dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic 237dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic let Inst{31-26} = 0x00; 238dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic let Inst{25-21} = 0x00; 239dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic let Inst{20-16} = rd; 240dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic let Inst{15-6} = funct; 241dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic let Inst{5-0} = 0x3c; 242dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic} 24347b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic 24447b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovicclass CLO_FM_MM<bits<10> funct> : MMArch { 24547b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<5> rd; 24647b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<5> rs; 24747b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic 24847b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<32> Inst; 24947b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic 25047b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{31-26} = 0x00; 25147b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{25-21} = rd; 25247b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{20-16} = rs; 25347b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{15-6} = funct; 25447b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{5-0} = 0x3c; 25547b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic} 25647b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic 25747b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovicclass SEB_FM_MM<bits<10> funct> : MMArch { 25847b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<5> rd; 25947b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<5> rt; 26047b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic 26147b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<32> Inst; 26247b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic 26347b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{31-26} = 0x00; 26447b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{25-21} = rd; 26547b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{20-16} = rt; 26647b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{15-6} = funct; 26747b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{5-0} = 0x3c; 26847b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic} 26947b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic 27047b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovicclass EXT_FM_MM<bits<6> funct> : MMArch { 27147b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<5> rt; 27247b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<5> rs; 27347b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<5> pos; 27447b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<5> size; 27547b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic 27647b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<32> Inst; 27747b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic 27847b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{31-26} = 0x00; 27947b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{25-21} = rt; 28047b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{20-16} = rs; 28147b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{15-11} = size; 28247b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{10-6} = pos; 28347b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{5-0} = funct; 28447b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic} 2851aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic 2861aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovicclass J_FM_MM<bits<6> op> : MMArch { 2871aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic bits<26> target; 2881aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic 2891aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic bits<32> Inst; 2901aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic 2911aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic let Inst{31-26} = op; 2921aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic let Inst{25-0} = target; 2931aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic} 2941aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic 2951aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovicclass JR_FM_MM<bits<8> funct> : MMArch { 2961aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic bits<5> rs; 2971aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic 2981aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic bits<32> Inst; 2991aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic 3001aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic let Inst{31-21} = 0x00; 3011aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic let Inst{20-16} = rs; 3021aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic let Inst{15-14} = 0x0; 3031aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic let Inst{13-6} = funct; 3041aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic let Inst{5-0} = 0x3c; 3051aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic} 3061aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic 30736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass JALR_FM_MM<bits<10> funct> { 3081aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic bits<5> rs; 3091aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic bits<5> rd; 3101aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic 3111aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic bits<32> Inst; 3121aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic 3131aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic let Inst{31-26} = 0x00; 3141aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic let Inst{25-21} = rd; 3151aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic let Inst{20-16} = rs; 3161aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic let Inst{15-6} = funct; 3171aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic let Inst{5-0} = 0x3c; 3181aaf43c2a2ec0fd4c8dbfe56558237219c5f8af7Zoran Jovanovic} 3195c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic 3205c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovicclass BEQ_FM_MM<bits<6> op> : MMArch { 3215c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic bits<5> rs; 3225c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic bits<5> rt; 3235c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic bits<16> offset; 3245c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic 3255c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic bits<32> Inst; 3265c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic 3275c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic let Inst{31-26} = op; 3285c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic let Inst{25-21} = rt; 3295c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic let Inst{20-16} = rs; 3305c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic let Inst{15-0} = offset; 3315c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic} 3325c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic 3335c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovicclass BGEZ_FM_MM<bits<5> funct> : MMArch { 3345c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic bits<5> rs; 3355c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic bits<16> offset; 3365c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic 3375c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic bits<32> Inst; 3385c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic 3395c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic let Inst{31-26} = 0x10; 3405c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic let Inst{25-21} = funct; 3415c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic let Inst{20-16} = rs; 3425c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic let Inst{15-0} = offset; 3435c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic} 3445c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic 3455c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovicclass BGEZAL_FM_MM<bits<5> funct> : MMArch { 3465c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic bits<5> rs; 3475c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic bits<16> offset; 3485c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic 3495c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic bits<32> Inst; 3505c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic 3515c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic let Inst{31-26} = 0x10; 3525c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic let Inst{25-21} = funct; 3535c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic let Inst{20-16} = rs; 3545c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic let Inst{15-0} = offset; 3555c042162beb3c2dd556e00aab84c4278a69cd5b1Zoran Jovanovic} 3569f471750fa6f34120d4758d5d14f54f899e34a54Zoran Jovanovic 35736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass SYNC_FM_MM : MMArch { 35836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> stype; 35936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 36036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<32> Inst; 36136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 36236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{31-26} = 0x00; 36336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{25-21} = 0x0; 36436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{20-16} = stype; 36536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15-6} = 0x1ad; 36636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{5-0} = 0x3c; 36736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 36836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 36936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass BRK_FM_MM : MMArch { 37036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<10> code_1; 37136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<10> code_2; 37236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<32> Inst; 37336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{31-26} = 0x0; 37436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{25-16} = code_1; 37536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15-6} = code_2; 37636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{5-0} = 0x07; 37736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 37836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 37936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass SYS_FM_MM : MMArch { 38036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<10> code_; 38136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<32> Inst; 38236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{31-26} = 0x0; 38336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{25-16} = code_; 38436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15-6} = 0x22d; 38536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{5-0} = 0x3c; 38636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 38736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 38836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass WAIT_FM_MM { 38936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<10> code_; 39036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<32> Inst; 39136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 39236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{31-26} = 0x00; 39336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{25-16} = code_; 39436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15-6} = 0x24d; 39536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{5-0} = 0x3c; 39636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 39736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 39836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass ER_FM_MM<bits<10> funct> : MMArch { 39936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<32> Inst; 40036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 40136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{31-26} = 0x00; 40236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{25-16} = 0x00; 40336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15-6} = funct; 40436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{5-0} = 0x3c; 40536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 40636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 40736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass EI_FM_MM<bits<10> funct> : MMArch { 40836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<32> Inst; 40936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> rt; 41036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 41136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{31-26} = 0x00; 41236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{25-21} = 0x00; 41336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{20-16} = rt; 41436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15-6} = funct; 41536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{5-0} = 0x3c; 41636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 41736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 4189f471750fa6f34120d4758d5d14f54f899e34a54Zoran Jovanovicclass TEQ_FM_MM<bits<6> funct> : MMArch { 4199f471750fa6f34120d4758d5d14f54f899e34a54Zoran Jovanovic bits<5> rs; 4209f471750fa6f34120d4758d5d14f54f899e34a54Zoran Jovanovic bits<5> rt; 4219f471750fa6f34120d4758d5d14f54f899e34a54Zoran Jovanovic bits<4> code_; 4229f471750fa6f34120d4758d5d14f54f899e34a54Zoran Jovanovic 4239f471750fa6f34120d4758d5d14f54f899e34a54Zoran Jovanovic bits<32> Inst; 4249f471750fa6f34120d4758d5d14f54f899e34a54Zoran Jovanovic 4259f471750fa6f34120d4758d5d14f54f899e34a54Zoran Jovanovic let Inst{31-26} = 0x00; 4269f471750fa6f34120d4758d5d14f54f899e34a54Zoran Jovanovic let Inst{25-21} = rt; 4279f471750fa6f34120d4758d5d14f54f899e34a54Zoran Jovanovic let Inst{20-16} = rs; 4289f471750fa6f34120d4758d5d14f54f899e34a54Zoran Jovanovic let Inst{15-12} = code_; 4299f471750fa6f34120d4758d5d14f54f899e34a54Zoran Jovanovic let Inst{11-6} = funct; 4309f471750fa6f34120d4758d5d14f54f899e34a54Zoran Jovanovic let Inst{5-0} = 0x3c; 4319f471750fa6f34120d4758d5d14f54f899e34a54Zoran Jovanovic} 4321206f1968b0886ab41739aebe113dd4813f3fc46Zoran Jovanovic 4331206f1968b0886ab41739aebe113dd4813f3fc46Zoran Jovanovicclass TEQI_FM_MM<bits<5> funct> : MMArch { 4341206f1968b0886ab41739aebe113dd4813f3fc46Zoran Jovanovic bits<5> rs; 4351206f1968b0886ab41739aebe113dd4813f3fc46Zoran Jovanovic bits<16> imm16; 4361206f1968b0886ab41739aebe113dd4813f3fc46Zoran Jovanovic 4371206f1968b0886ab41739aebe113dd4813f3fc46Zoran Jovanovic bits<32> Inst; 4381206f1968b0886ab41739aebe113dd4813f3fc46Zoran Jovanovic 4391206f1968b0886ab41739aebe113dd4813f3fc46Zoran Jovanovic let Inst{31-26} = 0x10; 4401206f1968b0886ab41739aebe113dd4813f3fc46Zoran Jovanovic let Inst{25-21} = funct; 4411206f1968b0886ab41739aebe113dd4813f3fc46Zoran Jovanovic let Inst{20-16} = rs; 4421206f1968b0886ab41739aebe113dd4813f3fc46Zoran Jovanovic let Inst{15-0} = imm16; 4431206f1968b0886ab41739aebe113dd4813f3fc46Zoran Jovanovic} 44436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 44536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass LL_FM_MM<bits<4> funct> { 44636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> rt; 44736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<21> addr; 44836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 44936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<32> Inst; 45036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 45136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{31-26} = 0x18; 45236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{25-21} = rt; 45336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{20-16} = addr{20-16}; 45436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15-12} = funct; 45536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{11-0} = addr{11-0}; 45636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 45736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 45836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass ADDS_FM_MM<bits<2> fmt, bits<8> funct> : MMArch { 45936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> ft; 46036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> fs; 46136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> fd; 46236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 46336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<32> Inst; 46436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 46536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{31-26} = 0x15; 46636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{25-21} = ft; 46736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{20-16} = fs; 46836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15-11} = fd; 46936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{10} = 0; 47036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{9-8} = fmt; 47136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{7-0} = funct; 47236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 47336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines list<dag> Pattern = []; 47436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 47536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 47636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass LWXC1_FM_MM<bits<9> funct> : MMArch { 47736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> fd; 47836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> base; 47936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> index; 48036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 48136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<32> Inst; 48236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 48336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{31-26} = 0x15; 48436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{25-21} = index; 48536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{20-16} = base; 48636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15-11} = fd; 48736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{10-9} = 0x0; 48836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{8-0} = funct; 48936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 49036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 49136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass SWXC1_FM_MM<bits<9> funct> : MMArch { 49236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> fs; 49336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> base; 49436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> index; 49536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 49636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<32> Inst; 49736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 49836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{31-26} = 0x15; 49936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{25-21} = index; 50036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{20-16} = base; 50136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15-11} = fs; 50236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{10-9} = 0x0; 50336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{8-0} = funct; 50436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 50536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 50636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass CEQS_FM_MM<bits<2> fmt> : MMArch { 50736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> fs; 50836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> ft; 50936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<4> cond; 51036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 51136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<32> Inst; 51236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 51336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{31-26} = 0x15; 51436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{25-21} = ft; 51536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{20-16} = fs; 51636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15-13} = 0x0; // cc 51736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{12} = 0; 51836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{11-10} = fmt; 51936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{9-6} = cond; 52036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{5-0} = 0x3c; 52136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 52236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 52336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass BC1F_FM_MM<bits<5> tf> : MMArch { 52436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<16> offset; 52536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 52636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<32> Inst; 52736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 52836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{31-26} = 0x10; 52936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{25-21} = tf; 53036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{20-18} = 0x0; // cc 53136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{17-16} = 0x0; 53236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15-0} = offset; 53336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 53436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 53536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass ROUND_W_FM_MM<bits<1> fmt, bits<8> funct> : MMArch { 53636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> fd; 53736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> fs; 53836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 53936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<32> Inst; 54036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 54136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{31-26} = 0x15; 54236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{25-21} = fd; 54336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{20-16} = fs; 54436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15} = 0; 54536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{14} = fmt; 54636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{13-6} = funct; 54736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{5-0} = 0x3b; 54836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 54936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 55036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass ABS_FM_MM<bits<2> fmt, bits<7> funct> : MMArch { 55136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> fd; 55236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> fs; 55336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 55436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<32> Inst; 55536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 55636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{31-26} = 0x15; 55736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{25-21} = fd; 55836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{20-16} = fs; 55936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15} = 0; 56036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{14-13} = fmt; 56136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{12-6} = funct; 56236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{5-0} = 0x3b; 56336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 56436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 56536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass CMov_F_F_FM_MM<bits<9> func, bits<2> fmt> : MMArch { 56636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> fd; 56736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> fs; 56836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 56936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<32> Inst; 57036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 57136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{31-26} = 0x15; 57236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{25-21} = fd; 57336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{20-16} = fs; 57436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15-13} = 0x0; //cc 57536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{12-11} = 0x0; 57636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{10-9} = fmt; 57736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{8-0} = func; 57836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 57936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 58036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass CMov_I_F_FM_MM<bits<8> funct, bits<2> fmt> : MMArch { 58136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> fd; 58236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> fs; 58336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> rt; 58436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 58536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<32> Inst; 58636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 58736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{31-26} = 0x15; 58836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{25-21} = rt; 58936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{20-16} = fs; 59036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15-11} = fd; 59136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{9-8} = fmt; 59236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{7-0} = funct; 59336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 59436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 59536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MFC1_FM_MM<bits<8> funct> : MMArch { 59636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> rt; 59736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> fs; 59836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 59936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<32> Inst; 60036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 60136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{31-26} = 0x15; 60236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{25-21} = rt; 60336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{20-16} = fs; 60436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15-14} = 0x0; 60536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{13-6} = funct; 60636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{5-0} = 0x3b; 60736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 60836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 60936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MADDS_FM_MM<bits<6> funct>: MMArch { 61036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> ft; 61136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> fs; 61236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> fd; 61336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<5> fr; 61436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 61536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bits<32> Inst; 61636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 61736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{31-26} = 0x15; 61836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{25-21} = ft; 61936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{20-16} = fs; 62036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{15-11} = fd; 62136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{10-6} = fr; 62236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines let Inst{5-0} = funct; 62336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 624