MicroMipsInstrFormats.td revision da0860f78e6e43aca3333a7815b2f9bc0f8dfac0
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MMArch { 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string Arch = "micromips"; 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) list<dag> Pattern = []; 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ADD_FM_MM<bits<6> op, bits<10> funct> : MMArch { 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bits<5> rt; 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bits<5> rs; 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bits<5> rd; 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bits<32> Inst; 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{31-26} = op; 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) let Inst{25-21} = rt; 155e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) let Inst{20-16} = rs; 16868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) let Inst{15-11} = rd; 17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) let Inst{10} = 0; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{9-0} = funct; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class ADDI_FM_MM<bits<6> op> : MMArch { 223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bits<5> rs; 23c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch bits<5> rt; 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bits<16> imm16; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bits<32> Inst; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{31-26} = op; 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) let Inst{25-21} = rt; 30c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch let Inst{20-16} = rs; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{15-0} = imm16; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SLTI_FM_MM<bits<6> op> : MMArch { 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bits<5> rt; 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bits<5> rs; 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bits<16> imm16; 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bits<32> Inst; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) let Inst{31-26} = op; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{25-21} = rs; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{20-16} = rt; 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) let Inst{15-0} = imm16; 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class LUI_FM_MM : MMArch { 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bits<5> rt; 493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bits<16> imm16; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bits<32> Inst; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{31-26} = 0x10; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{25-21} = 0xd; 553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) let Inst{20-16} = rt; 563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) let Inst{15-0} = imm16; 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MULT_FM_MM<bits<10> funct> : MMArch { 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bits<5> rs; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bits<5> rt; 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 63c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch bits<32> Inst; 64c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 65c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch let Inst{31-26} = 0x00; 66c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch let Inst{25-21} = rt; 67c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch let Inst{20-16} = rs; 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{15-6} = funct; 69c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch let Inst{5-0} = 0x3c; 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 71c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 72c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass SRA_FM_MM<bits<10> funct, bit rotate> : MMArch { 73c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch bits<5> rd; 74c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch bits<5> rt; 75c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch bits<5> shamt; 76c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 77c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch bits<32> Inst; 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{31-26} = 0; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{25-21} = rd; 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{20-16} = rt; 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{15-11} = shamt; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{10} = rotate; 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{9-0} = funct; 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SRLV_FM_MM<bits<10> funct, bit rotate> : MMArch { 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bits<5> rd; 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bits<5> rt; 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bits<5> rs; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bits<32> Inst; 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{31-26} = 0; 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{25-21} = rt; 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{20-16} = rs; 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{15-11} = rd; 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{10} = rotate; 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{9-0} = funct; 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class LW_FM_MM<bits<6> op> : MMArch { 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bits<5> rt; 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bits<21> addr; 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (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> { 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bits<5> rt; 116f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) bits<21> addr; 117f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 118f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) bits<32> Inst; 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{31-26} = 0x18; 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{25-21} = rt; 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{20-16} = addr{20-16}; 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{15-12} = funct; 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) let Inst{11-0} = addr{11-0}; 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)