Home | History | Annotate | Download | only in Mips
      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