MicroMipsInstrFormats.td revision 385de773033080503491919dc50be7203552247b
1class MMArch { 2 string Arch = "micromips"; 3 list<dag> Pattern = []; 4} 5 6class ADD_FM_MM<bits<6> op, bits<10> funct> : MMArch { 7 bits<5> rt; 8 bits<5> rs; 9 bits<5> rd; 10 11 bits<32> Inst; 12 13 let Inst{31-26} = op; 14 let Inst{25-21} = rt; 15 let Inst{20-16} = rs; 16 let Inst{15-11} = rd; 17 let Inst{10} = 0; 18 let Inst{9-0} = funct; 19} 20 21class ADDI_FM_MM<bits<6> op> : MMArch { 22 bits<5> rs; 23 bits<5> rt; 24 bits<16> imm16; 25 26 bits<32> Inst; 27 28 let Inst{31-26} = op; 29 let Inst{25-21} = rt; 30 let Inst{20-16} = rs; 31 let Inst{15-0} = imm16; 32} 33 34class SLTI_FM_MM<bits<6> op> : MMArch { 35 bits<5> rt; 36 bits<5> rs; 37 bits<16> imm16; 38 39 bits<32> Inst; 40 41 let Inst{31-26} = op; 42 let Inst{25-21} = rs; 43 let Inst{20-16} = rt; 44 let Inst{15-0} = imm16; 45} 46 47class LUI_FM_MM : MMArch { 48 bits<5> rt; 49 bits<16> imm16; 50 51 bits<32> Inst; 52 53 let Inst{31-26} = 0x10; 54 let Inst{25-21} = 0xd; 55 let Inst{20-16} = rt; 56 let Inst{15-0} = imm16; 57} 58 59class MULT_FM_MM<bits<10> funct> : MMArch { 60 bits<5> rs; 61 bits<5> rt; 62 63 bits<32> Inst; 64 65 let Inst{31-26} = 0x00; 66 let Inst{25-21} = rt; 67 let Inst{20-16} = rs; 68 let Inst{15-6} = funct; 69 let Inst{5-0} = 0x3c; 70} 71 72class SRA_FM_MM<bits<10> funct, bit rotate> : MMArch { 73 bits<5> rd; 74 bits<5> rt; 75 bits<5> shamt; 76 77 bits<32> Inst; 78 79 let Inst{31-26} = 0; 80 let Inst{25-21} = rd; 81 let Inst{20-16} = rt; 82 let Inst{15-11} = shamt; 83 let Inst{10} = rotate; 84 let Inst{9-0} = funct; 85} 86 87class SRLV_FM_MM<bits<10> funct, bit rotate> : MMArch { 88 bits<5> rd; 89 bits<5> rt; 90 bits<5> rs; 91 92 bits<32> Inst; 93 94 let Inst{31-26} = 0; 95 let Inst{25-21} = rt; 96 let Inst{20-16} = rs; 97 let Inst{15-11} = rd; 98 let Inst{10} = rotate; 99 let Inst{9-0} = funct; 100} 101