MicroMipsInstrFormats.td revision 5c042162beb3c2dd556e00aab84c4278a69cd5b1
15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class MMArch { 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) string Arch = "micromips"; 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) list<dag> Pattern = []; 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class ADD_FM_MM<bits<6> op, bits<10> funct> : MMArch { 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<5> rt; 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<5> rs; 903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bits<5> rd; 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<32> Inst; 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{31-26} = op; 1403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{25-21} = rt; 1503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{20-16} = rs; 1603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{15-11} = rd; 1703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{10} = 0; 1803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{9-0} = funct; 1903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} 2003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 2103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class ADDI_FM_MM<bits<6> op> : MMArch { 2203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bits<5> rs; 2303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bits<5> rt; 2403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bits<16> imm16; 2503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 2603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bits<32> Inst; 2703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 2803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{31-26} = op; 2903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{25-21} = rt; 3003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{20-16} = rs; 3103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{15-0} = imm16; 3203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} 3303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 3403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class SLTI_FM_MM<bits<6> op> : MMArch { 3503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bits<5> rt; 3603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bits<5> rs; 3703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bits<16> imm16; 3803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 3903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bits<32> Inst; 4003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 4103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{31-26} = op; 4203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{25-21} = rs; 4303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{20-16} = rt; 4403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{15-0} = imm16; 4503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} 4603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 4703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class LUI_FM_MM : MMArch { 4803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bits<5> rt; 4903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bits<16> imm16; 5003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 5103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bits<32> Inst; 5203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 5303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{31-26} = 0x10; 5403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{25-21} = 0xd; 5503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{20-16} = rt; 5603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{15-0} = imm16; 5703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} 5803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 5903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class MULT_FM_MM<bits<10> funct> : MMArch { 6003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bits<5> rs; 6103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bits<5> rt; 6203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 6303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bits<32> Inst; 6403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 6503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{31-26} = 0x00; 6603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{25-21} = rt; 6703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{20-16} = rs; 6803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{15-6} = funct; 6903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{5-0} = 0x3c; 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class SRA_FM_MM<bits<10> funct, bit rotate> : MMArch { 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<5> rd; 745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<5> rt; 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<5> shamt; 765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<32> Inst; 785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{31-26} = 0; 805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{25-21} = rd; 815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{20-16} = rt; 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{15-11} = shamt; 835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{10} = rotate; 845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{9-0} = funct; 855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class SRLV_FM_MM<bits<10> funct, bit rotate> : MMArch { 886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bits<5> rd; 896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bits<5> rt; 906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bits<5> rs; 916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bits<32> Inst; 936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{31-26} = 0; 956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{25-21} = rt; 966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{20-16} = rs; 976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{15-11} = rd; 986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{10} = rotate; 996e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{9-0} = funct; 1006e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 1016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class LW_FM_MM<bits<6> op> : MMArch { 1036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bits<5> rt; 1046e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bits<21> addr; 1056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<32> Inst; 1075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{31-26} = op; 1095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{25-21} = rt; 1105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{20-16} = addr{20-16}; 1115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{15-0} = addr{15-0}; 1125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class LWL_FM_MM<bits<4> funct> { 1155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<5> rt; 1165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<21> addr; 1175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<32> Inst; 1195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{31-26} = 0x18; 1215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{25-21} = rt; 1225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{20-16} = addr{20-16}; 1235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{15-12} = funct; 1245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{11-0} = addr{11-0}; 1255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class CMov_F_I_FM_MM<bits<7> func> : MMArch { 1285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<5> rd; 1295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<5> rs; 1305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<3> fcc; 1315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 13203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bits<32> Inst; 13303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 13403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{31-26} = 0x15; 13503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{25-21} = rd; 13603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{20-16} = rs; 13703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{15-13} = fcc; 13803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{12-6} = func; 13903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) let Inst{5-0} = 0x3b; 14003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} 1415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class MTLO_FM_MM<bits<10> funct> : MMArch { 1435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<5> rs; 1445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<32> Inst; 1465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{31-26} = 0x00; 1485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{25-21} = 0x00; 1495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{20-16} = rs; 1505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{15-6} = funct; 1515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{5-0} = 0x3c; 1525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class MFLO_FM_MM<bits<10> funct> : MMArch { 1555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<5> rd; 1565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<32> Inst; 1585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{31-26} = 0x00; 1605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{25-21} = 0x00; 1615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{20-16} = rd; 1625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{15-6} = funct; 1635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{5-0} = 0x3c; 1645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class CLO_FM_MM<bits<10> funct> : MMArch { 1675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<5> rd; 1685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<5> rs; 1695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bits<32> Inst; 1716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{31-26} = 0x00; 1736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{25-21} = rd; 1746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{20-16} = rs; 1756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{15-6} = funct; 1766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{5-0} = 0x3c; 1776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 1786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class SEB_FM_MM<bits<10> funct> : MMArch { 1806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bits<5> rd; 1816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bits<5> rt; 1826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bits<32> Inst; 1846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{31-26} = 0x00; 1866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{25-21} = rd; 1876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{20-16} = rt; 1886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{15-6} = funct; 1896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{5-0} = 0x3c; 1906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 1916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class EXT_FM_MM<bits<6> funct> : MMArch { 1936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bits<5> rt; 1946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bits<5> rs; 1956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bits<5> pos; 1966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bits<5> size; 1976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bits<32> Inst; 1996e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 2006e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{31-26} = 0x00; 2016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{25-21} = rt; 2026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{20-16} = rs; 2036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{15-11} = size; 2046e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{10-6} = pos; 2056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{5-0} = funct; 2066e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 2076e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 2086e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class J_FM_MM<bits<6> op> : MMArch { 2096e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bits<26> target; 2106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 2116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bits<32> Inst; 2126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 2136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{31-26} = op; 2146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{25-0} = target; 2156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 2166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 2176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class JR_FM_MM<bits<8> funct> : MMArch { 2186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bits<5> rs; 2196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 2206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bits<32> Inst; 2216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 2226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{31-21} = 0x00; 2236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) let Inst{20-16} = rs; 2245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{15-14} = 0x0; 2255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) let Inst{13-6} = funct; 226 let Inst{5-0} = 0x3c; 227} 228 229class JALR_FM_MM<bits<10> funct> : MMArch { 230 bits<5> rs; 231 bits<5> rd; 232 233 bits<32> Inst; 234 235 let Inst{31-26} = 0x00; 236 let Inst{25-21} = rd; 237 let Inst{20-16} = rs; 238 let Inst{15-6} = funct; 239 let Inst{5-0} = 0x3c; 240} 241 242class BEQ_FM_MM<bits<6> op> : MMArch { 243 bits<5> rs; 244 bits<5> rt; 245 bits<16> offset; 246 247 bits<32> Inst; 248 249 let Inst{31-26} = op; 250 let Inst{25-21} = rt; 251 let Inst{20-16} = rs; 252 let Inst{15-0} = offset; 253} 254 255class BGEZ_FM_MM<bits<5> funct> : MMArch { 256 bits<5> rs; 257 bits<16> offset; 258 259 bits<32> Inst; 260 261 let Inst{31-26} = 0x10; 262 let Inst{25-21} = funct; 263 let Inst{20-16} = rs; 264 let Inst{15-0} = offset; 265} 266 267class BGEZAL_FM_MM<bits<5> funct> : MMArch { 268 bits<5> rs; 269 bits<16> offset; 270 271 bits<32> Inst; 272 273 let Inst{31-26} = 0x10; 274 let Inst{25-21} = funct; 275 let Inst{20-16} = rs; 276 let Inst{15-0} = offset; 277} 278