MicroMipsInstrFormats.td revision 47b33528d1b4298bf8cc5dcca8b531dfd0e704bb
1f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanakaclass MMArch { 2f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka string Arch = "micromips"; 3f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka list<dag> Pattern = []; 4f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka} 5f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 6f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanakaclass ADD_FM_MM<bits<6> op, bits<10> funct> : MMArch { 7f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<5> rt; 8f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<5> rs; 9f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<5> rd; 10f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 11f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<32> Inst; 12f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 13f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{31-26} = op; 14f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{25-21} = rt; 15f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{20-16} = rs; 16f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{15-11} = rd; 17f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{10} = 0; 18f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{9-0} = funct; 19f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka} 20f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 21f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanakaclass ADDI_FM_MM<bits<6> op> : MMArch { 22f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<5> rs; 23f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<5> rt; 24f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<16> imm16; 25f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 26f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<32> Inst; 27f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 28f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{31-26} = op; 29f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{25-21} = rt; 30f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{20-16} = rs; 31f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{15-0} = imm16; 32f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka} 33f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 34f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanakaclass SLTI_FM_MM<bits<6> op> : MMArch { 35f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<5> rt; 36f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<5> rs; 37f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<16> imm16; 38f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 39f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<32> Inst; 40f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 41f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{31-26} = op; 42f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{25-21} = rs; 43f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{20-16} = rt; 44f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{15-0} = imm16; 45f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka} 46f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 47f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanakaclass LUI_FM_MM : MMArch { 48f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<5> rt; 49f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<16> imm16; 50f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 51f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<32> Inst; 52f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 53f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{31-26} = 0x10; 54f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{25-21} = 0xd; 55f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{20-16} = rt; 56f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{15-0} = imm16; 57f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka} 58f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 59f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanakaclass MULT_FM_MM<bits<10> funct> : MMArch { 60f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<5> rs; 61f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<5> rt; 62f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 63f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka bits<32> Inst; 64f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka 65f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{31-26} = 0x00; 66f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{25-21} = rt; 67f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{20-16} = rs; 68f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{15-6} = funct; 69f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka let Inst{5-0} = 0x3c; 70f530aff9de2738db0e3471b259ff0b577a6603e6Akira Hatanaka} 71385de773033080503491919dc50be7203552247bAkira Hatanaka 72385de773033080503491919dc50be7203552247bAkira Hatanakaclass SRA_FM_MM<bits<10> funct, bit rotate> : MMArch { 73385de773033080503491919dc50be7203552247bAkira Hatanaka bits<5> rd; 74385de773033080503491919dc50be7203552247bAkira Hatanaka bits<5> rt; 75385de773033080503491919dc50be7203552247bAkira Hatanaka bits<5> shamt; 76385de773033080503491919dc50be7203552247bAkira Hatanaka 77385de773033080503491919dc50be7203552247bAkira Hatanaka bits<32> Inst; 78385de773033080503491919dc50be7203552247bAkira Hatanaka 79385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{31-26} = 0; 80385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{25-21} = rd; 81385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{20-16} = rt; 82385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{15-11} = shamt; 83385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{10} = rotate; 84385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{9-0} = funct; 85385de773033080503491919dc50be7203552247bAkira Hatanaka} 86385de773033080503491919dc50be7203552247bAkira Hatanaka 87385de773033080503491919dc50be7203552247bAkira Hatanakaclass SRLV_FM_MM<bits<10> funct, bit rotate> : MMArch { 88385de773033080503491919dc50be7203552247bAkira Hatanaka bits<5> rd; 89385de773033080503491919dc50be7203552247bAkira Hatanaka bits<5> rt; 90385de773033080503491919dc50be7203552247bAkira Hatanaka bits<5> rs; 91385de773033080503491919dc50be7203552247bAkira Hatanaka 92385de773033080503491919dc50be7203552247bAkira Hatanaka bits<32> Inst; 93385de773033080503491919dc50be7203552247bAkira Hatanaka 94385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{31-26} = 0; 95385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{25-21} = rt; 96385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{20-16} = rs; 97385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{15-11} = rd; 98385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{10} = rotate; 99385de773033080503491919dc50be7203552247bAkira Hatanaka let Inst{9-0} = funct; 100385de773033080503491919dc50be7203552247bAkira Hatanaka} 101089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka 102089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanakaclass LW_FM_MM<bits<6> op> : MMArch { 103089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka bits<5> rt; 104089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka bits<21> addr; 105089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka 106089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka bits<32> Inst; 107089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka 108089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka let Inst{31-26} = op; 109089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka let Inst{25-21} = rt; 110089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka let Inst{20-16} = addr{20-16}; 111089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka let Inst{15-0} = addr{15-0}; 112089741479be03b625f5a8cc52e750b4e532338c6Akira Hatanaka} 113da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter 114da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carterclass LWL_FM_MM<bits<4> funct> { 115da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter bits<5> rt; 116da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter bits<21> addr; 117da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter 118da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter bits<32> Inst; 119da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter 120da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter let Inst{31-26} = 0x18; 121da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter let Inst{25-21} = rt; 122da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter let Inst{20-16} = addr{20-16}; 123da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter let Inst{15-12} = funct; 124da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter let Inst{11-0} = addr{11-0}; 125da0860f78e6e43aca3333a7815b2f9bc0f8dfac0Jack Carter} 126bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic 127bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medicclass CMov_F_I_FM_MM<bits<7> func> : MMArch { 128bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic bits<5> rd; 129bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic bits<5> rs; 130bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic bits<3> fcc; 131bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic 132bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic bits<32> Inst; 133bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic 134bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic let Inst{31-26} = 0x15; 135bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic let Inst{25-21} = rd; 136bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic let Inst{20-16} = rs; 137bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic let Inst{15-13} = fcc; 138bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic let Inst{12-6} = func; 139bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic let Inst{5-0} = 0x3b; 140bf7f7b5e0eae40bb47a410c90f9f0885c0f38b2cVladimir Medic} 141dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic 142dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medicclass MTLO_FM_MM<bits<10> funct> : MMArch { 143dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic bits<5> rs; 144dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic 145dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic bits<32> Inst; 146dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic 147dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic let Inst{31-26} = 0x00; 148dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic let Inst{25-21} = 0x00; 149dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic let Inst{20-16} = rs; 150dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic let Inst{15-6} = funct; 151dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic let Inst{5-0} = 0x3c; 152dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic} 153dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic 154dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medicclass MFLO_FM_MM<bits<10> funct> : MMArch { 155dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic bits<5> rd; 156dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic 157dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic bits<32> Inst; 158dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic 159dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic let Inst{31-26} = 0x00; 160dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic let Inst{25-21} = 0x00; 161dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic let Inst{20-16} = rd; 162dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic let Inst{15-6} = funct; 163dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic let Inst{5-0} = 0x3c; 164dadd1fba3280295936f556acbdc3fbb68b496badVladimir Medic} 16547b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic 16647b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovicclass CLO_FM_MM<bits<10> funct> : MMArch { 16747b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<5> rd; 16847b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<5> rs; 16947b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic 17047b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<32> Inst; 17147b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic 17247b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{31-26} = 0x00; 17347b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{25-21} = rd; 17447b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{20-16} = rs; 17547b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{15-6} = funct; 17647b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{5-0} = 0x3c; 17747b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic} 17847b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic 17947b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovicclass SEB_FM_MM<bits<10> funct> : MMArch { 18047b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<5> rd; 18147b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<5> rt; 18247b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic 18347b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<32> Inst; 18447b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic 18547b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{31-26} = 0x00; 18647b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{25-21} = rd; 18747b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{20-16} = rt; 18847b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{15-6} = funct; 18947b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{5-0} = 0x3c; 19047b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic} 19147b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic 19247b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovicclass EXT_FM_MM<bits<6> funct> : MMArch { 19347b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<5> rt; 19447b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<5> rs; 19547b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<5> pos; 19647b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<5> size; 19747b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic 19847b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic bits<32> Inst; 19947b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic 20047b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{31-26} = 0x00; 20147b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{25-21} = rt; 20247b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{20-16} = rs; 20347b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{15-11} = size; 20447b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{10-6} = pos; 20547b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic let Inst{5-0} = funct; 20647b33528d1b4298bf8cc5dcca8b531dfd0e704bbZoran Jovanovic} 207