1 class MMArch { 2 string Arch = "micromips"; 3 list<dag> Pattern = []; 4 } 5 6 class 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 21 class 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 34 class 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 47 class 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 59 class 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 72 class 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 87 class 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 102 class LW_FM_MM<bits<6> op> : MMArch { 103 bits<5> rt; 104 bits<21> addr; 105 106 bits<32> Inst; 107 108 let Inst{31-26} = op; 109 let Inst{25-21} = rt; 110 let Inst{20-16} = addr{20-16}; 111 let Inst{15-0} = addr{15-0}; 112 } 113