1*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 2*9880d681SAndroid Build Coastguard Worker// MicroMIPS Base Classes 3*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker// 6*9880d681SAndroid Build Coastguard Worker// Base class for MicroMips instructions. 7*9880d681SAndroid Build Coastguard Worker// This class does not depend on the instruction size. 8*9880d681SAndroid Build Coastguard Worker// 9*9880d681SAndroid Build Coastguard Workerclass MicroMipsInstBase<dag outs, dag ins, string asmstr, list<dag> pattern, 10*9880d681SAndroid Build Coastguard Worker InstrItinClass itin, Format f> : Instruction 11*9880d681SAndroid Build Coastguard Worker{ 12*9880d681SAndroid Build Coastguard Worker let Namespace = "Mips"; 13*9880d681SAndroid Build Coastguard Worker let DecoderNamespace = "MicroMips"; 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker let OutOperandList = outs; 16*9880d681SAndroid Build Coastguard Worker let InOperandList = ins; 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker let AsmString = asmstr; 19*9880d681SAndroid Build Coastguard Worker let Pattern = pattern; 20*9880d681SAndroid Build Coastguard Worker let Itinerary = itin; 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Worker let Predicates = [InMicroMips]; 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker Format Form = f; 25*9880d681SAndroid Build Coastguard Worker} 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker// 28*9880d681SAndroid Build Coastguard Worker// Base class for MicroMIPS 16-bit instructions. 29*9880d681SAndroid Build Coastguard Worker// 30*9880d681SAndroid Build Coastguard Workerclass MicroMipsInst16<dag outs, dag ins, string asmstr, list<dag> pattern, 31*9880d681SAndroid Build Coastguard Worker InstrItinClass itin, Format f> : 32*9880d681SAndroid Build Coastguard Worker MicroMipsInstBase<outs, ins, asmstr, pattern, itin, f> 33*9880d681SAndroid Build Coastguard Worker{ 34*9880d681SAndroid Build Coastguard Worker let Size = 2; 35*9880d681SAndroid Build Coastguard Worker field bits<16> Inst; 36*9880d681SAndroid Build Coastguard Worker field bits<16> SoftFail = 0; 37*9880d681SAndroid Build Coastguard Worker bits<6> Opcode = 0x0; 38*9880d681SAndroid Build Coastguard Worker} 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 41*9880d681SAndroid Build Coastguard Worker// MicroMIPS 16-bit Instruction Formats 42*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Workerclass ARITH_FM_MM16<bit funct> { 45*9880d681SAndroid Build Coastguard Worker bits<3> rd; 46*9880d681SAndroid Build Coastguard Worker bits<3> rt; 47*9880d681SAndroid Build Coastguard Worker bits<3> rs; 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = 0x01; 52*9880d681SAndroid Build Coastguard Worker let Inst{9-7} = rd; 53*9880d681SAndroid Build Coastguard Worker let Inst{6-4} = rt; 54*9880d681SAndroid Build Coastguard Worker let Inst{3-1} = rs; 55*9880d681SAndroid Build Coastguard Worker let Inst{0} = funct; 56*9880d681SAndroid Build Coastguard Worker} 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Workerclass ANDI_FM_MM16<bits<6> funct> { 59*9880d681SAndroid Build Coastguard Worker bits<3> rd; 60*9880d681SAndroid Build Coastguard Worker bits<3> rs; 61*9880d681SAndroid Build Coastguard Worker bits<4> imm; 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = funct; 66*9880d681SAndroid Build Coastguard Worker let Inst{9-7} = rd; 67*9880d681SAndroid Build Coastguard Worker let Inst{6-4} = rs; 68*9880d681SAndroid Build Coastguard Worker let Inst{3-0} = imm; 69*9880d681SAndroid Build Coastguard Worker} 70*9880d681SAndroid Build Coastguard Worker 71*9880d681SAndroid Build Coastguard Workerclass LOGIC_FM_MM16<bits<4> funct> { 72*9880d681SAndroid Build Coastguard Worker bits<3> rt; 73*9880d681SAndroid Build Coastguard Worker bits<3> rs; 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 76*9880d681SAndroid Build Coastguard Worker 77*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = 0x11; 78*9880d681SAndroid Build Coastguard Worker let Inst{9-6} = funct; 79*9880d681SAndroid Build Coastguard Worker let Inst{5-3} = rt; 80*9880d681SAndroid Build Coastguard Worker let Inst{2-0} = rs; 81*9880d681SAndroid Build Coastguard Worker} 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Workerclass SHIFT_FM_MM16<bits<1> funct> { 84*9880d681SAndroid Build Coastguard Worker bits<3> rd; 85*9880d681SAndroid Build Coastguard Worker bits<3> rt; 86*9880d681SAndroid Build Coastguard Worker bits<3> shamt; 87*9880d681SAndroid Build Coastguard Worker 88*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 89*9880d681SAndroid Build Coastguard Worker 90*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = 0x09; 91*9880d681SAndroid Build Coastguard Worker let Inst{9-7} = rd; 92*9880d681SAndroid Build Coastguard Worker let Inst{6-4} = rt; 93*9880d681SAndroid Build Coastguard Worker let Inst{3-1} = shamt; 94*9880d681SAndroid Build Coastguard Worker let Inst{0} = funct; 95*9880d681SAndroid Build Coastguard Worker} 96*9880d681SAndroid Build Coastguard Worker 97*9880d681SAndroid Build Coastguard Workerclass ADDIUR2_FM_MM16 { 98*9880d681SAndroid Build Coastguard Worker bits<3> rd; 99*9880d681SAndroid Build Coastguard Worker bits<3> rs; 100*9880d681SAndroid Build Coastguard Worker bits<3> imm; 101*9880d681SAndroid Build Coastguard Worker 102*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = 0x1b; 105*9880d681SAndroid Build Coastguard Worker let Inst{9-7} = rd; 106*9880d681SAndroid Build Coastguard Worker let Inst{6-4} = rs; 107*9880d681SAndroid Build Coastguard Worker let Inst{3-1} = imm; 108*9880d681SAndroid Build Coastguard Worker let Inst{0} = 0; 109*9880d681SAndroid Build Coastguard Worker} 110*9880d681SAndroid Build Coastguard Worker 111*9880d681SAndroid Build Coastguard Workerclass LOAD_STORE_FM_MM16<bits<6> op> { 112*9880d681SAndroid Build Coastguard Worker bits<3> rt; 113*9880d681SAndroid Build Coastguard Worker bits<7> addr; 114*9880d681SAndroid Build Coastguard Worker 115*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 116*9880d681SAndroid Build Coastguard Worker 117*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = op; 118*9880d681SAndroid Build Coastguard Worker let Inst{9-7} = rt; 119*9880d681SAndroid Build Coastguard Worker let Inst{6-4} = addr{6-4}; 120*9880d681SAndroid Build Coastguard Worker let Inst{3-0} = addr{3-0}; 121*9880d681SAndroid Build Coastguard Worker} 122*9880d681SAndroid Build Coastguard Worker 123*9880d681SAndroid Build Coastguard Workerclass LOAD_STORE_SP_FM_MM16<bits<6> op> { 124*9880d681SAndroid Build Coastguard Worker bits<5> rt; 125*9880d681SAndroid Build Coastguard Worker bits<5> offset; 126*9880d681SAndroid Build Coastguard Worker 127*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 128*9880d681SAndroid Build Coastguard Worker 129*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = op; 130*9880d681SAndroid Build Coastguard Worker let Inst{9-5} = rt; 131*9880d681SAndroid Build Coastguard Worker let Inst{4-0} = offset; 132*9880d681SAndroid Build Coastguard Worker} 133*9880d681SAndroid Build Coastguard Worker 134*9880d681SAndroid Build Coastguard Workerclass LOAD_GP_FM_MM16<bits<6> op> { 135*9880d681SAndroid Build Coastguard Worker bits<3> rt; 136*9880d681SAndroid Build Coastguard Worker bits<7> offset; 137*9880d681SAndroid Build Coastguard Worker 138*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 139*9880d681SAndroid Build Coastguard Worker 140*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = op; 141*9880d681SAndroid Build Coastguard Worker let Inst{9-7} = rt; 142*9880d681SAndroid Build Coastguard Worker let Inst{6-0} = offset; 143*9880d681SAndroid Build Coastguard Worker} 144*9880d681SAndroid Build Coastguard Worker 145*9880d681SAndroid Build Coastguard Workerclass ADDIUS5_FM_MM16 { 146*9880d681SAndroid Build Coastguard Worker bits<5> rd; 147*9880d681SAndroid Build Coastguard Worker bits<4> imm; 148*9880d681SAndroid Build Coastguard Worker 149*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 150*9880d681SAndroid Build Coastguard Worker 151*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = 0x13; 152*9880d681SAndroid Build Coastguard Worker let Inst{9-5} = rd; 153*9880d681SAndroid Build Coastguard Worker let Inst{4-1} = imm; 154*9880d681SAndroid Build Coastguard Worker let Inst{0} = 0; 155*9880d681SAndroid Build Coastguard Worker} 156*9880d681SAndroid Build Coastguard Worker 157*9880d681SAndroid Build Coastguard Workerclass ADDIUSP_FM_MM16 { 158*9880d681SAndroid Build Coastguard Worker bits<9> imm; 159*9880d681SAndroid Build Coastguard Worker 160*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 161*9880d681SAndroid Build Coastguard Worker 162*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = 0x13; 163*9880d681SAndroid Build Coastguard Worker let Inst{9-1} = imm; 164*9880d681SAndroid Build Coastguard Worker let Inst{0} = 1; 165*9880d681SAndroid Build Coastguard Worker} 166*9880d681SAndroid Build Coastguard Worker 167*9880d681SAndroid Build Coastguard Workerclass MOVE_FM_MM16<bits<6> funct> { 168*9880d681SAndroid Build Coastguard Worker bits<5> rs; 169*9880d681SAndroid Build Coastguard Worker bits<5> rd; 170*9880d681SAndroid Build Coastguard Worker 171*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = funct; 174*9880d681SAndroid Build Coastguard Worker let Inst{9-5} = rd; 175*9880d681SAndroid Build Coastguard Worker let Inst{4-0} = rs; 176*9880d681SAndroid Build Coastguard Worker} 177*9880d681SAndroid Build Coastguard Worker 178*9880d681SAndroid Build Coastguard Workerclass LI_FM_MM16 { 179*9880d681SAndroid Build Coastguard Worker bits<3> rd; 180*9880d681SAndroid Build Coastguard Worker bits<7> imm; 181*9880d681SAndroid Build Coastguard Worker 182*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 183*9880d681SAndroid Build Coastguard Worker 184*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = 0x3b; 185*9880d681SAndroid Build Coastguard Worker let Inst{9-7} = rd; 186*9880d681SAndroid Build Coastguard Worker let Inst{6-0} = imm; 187*9880d681SAndroid Build Coastguard Worker} 188*9880d681SAndroid Build Coastguard Worker 189*9880d681SAndroid Build Coastguard Workerclass JALR_FM_MM16<bits<5> op> { 190*9880d681SAndroid Build Coastguard Worker bits<5> rs; 191*9880d681SAndroid Build Coastguard Worker 192*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 193*9880d681SAndroid Build Coastguard Worker 194*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = 0x11; 195*9880d681SAndroid Build Coastguard Worker let Inst{9-5} = op; 196*9880d681SAndroid Build Coastguard Worker let Inst{4-0} = rs; 197*9880d681SAndroid Build Coastguard Worker} 198*9880d681SAndroid Build Coastguard Worker 199*9880d681SAndroid Build Coastguard Workerclass MFHILO_FM_MM16<bits<5> funct> { 200*9880d681SAndroid Build Coastguard Worker bits<5> rd; 201*9880d681SAndroid Build Coastguard Worker 202*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 203*9880d681SAndroid Build Coastguard Worker 204*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = 0x11; 205*9880d681SAndroid Build Coastguard Worker let Inst{9-5} = funct; 206*9880d681SAndroid Build Coastguard Worker let Inst{4-0} = rd; 207*9880d681SAndroid Build Coastguard Worker} 208*9880d681SAndroid Build Coastguard Worker 209*9880d681SAndroid Build Coastguard Workerclass JRADDIUSP_FM_MM16<bits<5> op> { 210*9880d681SAndroid Build Coastguard Worker bits<5> rs; 211*9880d681SAndroid Build Coastguard Worker bits<5> imm; 212*9880d681SAndroid Build Coastguard Worker 213*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 214*9880d681SAndroid Build Coastguard Worker 215*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = 0x11; 216*9880d681SAndroid Build Coastguard Worker let Inst{9-5} = op; 217*9880d681SAndroid Build Coastguard Worker let Inst{4-0} = imm; 218*9880d681SAndroid Build Coastguard Worker} 219*9880d681SAndroid Build Coastguard Worker 220*9880d681SAndroid Build Coastguard Workerclass ADDIUR1SP_FM_MM16 { 221*9880d681SAndroid Build Coastguard Worker bits<3> rd; 222*9880d681SAndroid Build Coastguard Worker bits<6> imm; 223*9880d681SAndroid Build Coastguard Worker 224*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 225*9880d681SAndroid Build Coastguard Worker 226*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = 0x1b; 227*9880d681SAndroid Build Coastguard Worker let Inst{9-7} = rd; 228*9880d681SAndroid Build Coastguard Worker let Inst{6-1} = imm; 229*9880d681SAndroid Build Coastguard Worker let Inst{0} = 1; 230*9880d681SAndroid Build Coastguard Worker} 231*9880d681SAndroid Build Coastguard Worker 232*9880d681SAndroid Build Coastguard Workerclass BRKSDBBP16_FM_MM<bits<6> op> { 233*9880d681SAndroid Build Coastguard Worker bits<4> code_; 234*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 235*9880d681SAndroid Build Coastguard Worker 236*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = 0x11; 237*9880d681SAndroid Build Coastguard Worker let Inst{9-4} = op; 238*9880d681SAndroid Build Coastguard Worker let Inst{3-0} = code_; 239*9880d681SAndroid Build Coastguard Worker} 240*9880d681SAndroid Build Coastguard Worker 241*9880d681SAndroid Build Coastguard Workerclass BEQNEZ_FM_MM16<bits<6> op> { 242*9880d681SAndroid Build Coastguard Worker bits<3> rs; 243*9880d681SAndroid Build Coastguard Worker bits<7> offset; 244*9880d681SAndroid Build Coastguard Worker 245*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 246*9880d681SAndroid Build Coastguard Worker 247*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = op; 248*9880d681SAndroid Build Coastguard Worker let Inst{9-7} = rs; 249*9880d681SAndroid Build Coastguard Worker let Inst{6-0} = offset; 250*9880d681SAndroid Build Coastguard Worker} 251*9880d681SAndroid Build Coastguard Worker 252*9880d681SAndroid Build Coastguard Workerclass B16_FM { 253*9880d681SAndroid Build Coastguard Worker bits<10> offset; 254*9880d681SAndroid Build Coastguard Worker 255*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 256*9880d681SAndroid Build Coastguard Worker 257*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = 0x33; 258*9880d681SAndroid Build Coastguard Worker let Inst{9-0} = offset; 259*9880d681SAndroid Build Coastguard Worker} 260*9880d681SAndroid Build Coastguard Worker 261*9880d681SAndroid Build Coastguard Workerclass MOVEP_FM_MM16 { 262*9880d681SAndroid Build Coastguard Worker bits<3> dst_regs; 263*9880d681SAndroid Build Coastguard Worker bits<3> rt; 264*9880d681SAndroid Build Coastguard Worker bits<3> rs; 265*9880d681SAndroid Build Coastguard Worker 266*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 267*9880d681SAndroid Build Coastguard Worker 268*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = 0x21; 269*9880d681SAndroid Build Coastguard Worker let Inst{9-7} = dst_regs; 270*9880d681SAndroid Build Coastguard Worker let Inst{6-4} = rt; 271*9880d681SAndroid Build Coastguard Worker let Inst{3-1} = rs; 272*9880d681SAndroid Build Coastguard Worker let Inst{0} = 0; 273*9880d681SAndroid Build Coastguard Worker} 274*9880d681SAndroid Build Coastguard Worker 275*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 276*9880d681SAndroid Build Coastguard Worker// MicroMIPS 32-bit Instruction Formats 277*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 278*9880d681SAndroid Build Coastguard Worker 279*9880d681SAndroid Build Coastguard Workerclass MMArch { 280*9880d681SAndroid Build Coastguard Worker string Arch = "micromips"; 281*9880d681SAndroid Build Coastguard Worker} 282*9880d681SAndroid Build Coastguard Worker 283*9880d681SAndroid Build Coastguard Workerclass ADD_FM_MM<bits<6> op, bits<10> funct> : MMArch { 284*9880d681SAndroid Build Coastguard Worker bits<5> rt; 285*9880d681SAndroid Build Coastguard Worker bits<5> rs; 286*9880d681SAndroid Build Coastguard Worker bits<5> rd; 287*9880d681SAndroid Build Coastguard Worker 288*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 289*9880d681SAndroid Build Coastguard Worker 290*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = op; 291*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rt; 292*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rs; 293*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = rd; 294*9880d681SAndroid Build Coastguard Worker let Inst{10} = 0; 295*9880d681SAndroid Build Coastguard Worker let Inst{9-0} = funct; 296*9880d681SAndroid Build Coastguard Worker} 297*9880d681SAndroid Build Coastguard Worker 298*9880d681SAndroid Build Coastguard Workerclass ADDI_FM_MM<bits<6> op> : MMArch { 299*9880d681SAndroid Build Coastguard Worker bits<5> rs; 300*9880d681SAndroid Build Coastguard Worker bits<5> rt; 301*9880d681SAndroid Build Coastguard Worker bits<16> imm16; 302*9880d681SAndroid Build Coastguard Worker 303*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 304*9880d681SAndroid Build Coastguard Worker 305*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = op; 306*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rt; 307*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rs; 308*9880d681SAndroid Build Coastguard Worker let Inst{15-0} = imm16; 309*9880d681SAndroid Build Coastguard Worker} 310*9880d681SAndroid Build Coastguard Worker 311*9880d681SAndroid Build Coastguard Workerclass SLTI_FM_MM<bits<6> op> : MMArch { 312*9880d681SAndroid Build Coastguard Worker bits<5> rt; 313*9880d681SAndroid Build Coastguard Worker bits<5> rs; 314*9880d681SAndroid Build Coastguard Worker bits<16> imm16; 315*9880d681SAndroid Build Coastguard Worker 316*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 317*9880d681SAndroid Build Coastguard Worker 318*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = op; 319*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rt; 320*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rs; 321*9880d681SAndroid Build Coastguard Worker let Inst{15-0} = imm16; 322*9880d681SAndroid Build Coastguard Worker} 323*9880d681SAndroid Build Coastguard Worker 324*9880d681SAndroid Build Coastguard Workerclass LUI_FM_MM : MMArch { 325*9880d681SAndroid Build Coastguard Worker bits<5> rt; 326*9880d681SAndroid Build Coastguard Worker bits<16> imm16; 327*9880d681SAndroid Build Coastguard Worker 328*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 329*9880d681SAndroid Build Coastguard Worker 330*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x10; 331*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = 0xd; 332*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rt; 333*9880d681SAndroid Build Coastguard Worker let Inst{15-0} = imm16; 334*9880d681SAndroid Build Coastguard Worker} 335*9880d681SAndroid Build Coastguard Worker 336*9880d681SAndroid Build Coastguard Workerclass MULT_FM_MM<bits<10> funct> : MMArch { 337*9880d681SAndroid Build Coastguard Worker bits<5> rs; 338*9880d681SAndroid Build Coastguard Worker bits<5> rt; 339*9880d681SAndroid Build Coastguard Worker 340*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 341*9880d681SAndroid Build Coastguard Worker 342*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x00; 343*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rt; 344*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rs; 345*9880d681SAndroid Build Coastguard Worker let Inst{15-6} = funct; 346*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3c; 347*9880d681SAndroid Build Coastguard Worker} 348*9880d681SAndroid Build Coastguard Worker 349*9880d681SAndroid Build Coastguard Workerclass SRA_FM_MM<bits<10> funct, bit rotate> : MMArch { 350*9880d681SAndroid Build Coastguard Worker bits<5> rd; 351*9880d681SAndroid Build Coastguard Worker bits<5> rt; 352*9880d681SAndroid Build Coastguard Worker bits<5> shamt; 353*9880d681SAndroid Build Coastguard Worker 354*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 355*9880d681SAndroid Build Coastguard Worker 356*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0; 357*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rd; 358*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rt; 359*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = shamt; 360*9880d681SAndroid Build Coastguard Worker let Inst{10} = rotate; 361*9880d681SAndroid Build Coastguard Worker let Inst{9-0} = funct; 362*9880d681SAndroid Build Coastguard Worker} 363*9880d681SAndroid Build Coastguard Worker 364*9880d681SAndroid Build Coastguard Workerclass SRLV_FM_MM<bits<10> funct, bit rotate> : MMArch { 365*9880d681SAndroid Build Coastguard Worker bits<5> rd; 366*9880d681SAndroid Build Coastguard Worker bits<5> rt; 367*9880d681SAndroid Build Coastguard Worker bits<5> rs; 368*9880d681SAndroid Build Coastguard Worker 369*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 370*9880d681SAndroid Build Coastguard Worker 371*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0; 372*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rt; 373*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rs; 374*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = rd; 375*9880d681SAndroid Build Coastguard Worker let Inst{10} = rotate; 376*9880d681SAndroid Build Coastguard Worker let Inst{9-0} = funct; 377*9880d681SAndroid Build Coastguard Worker} 378*9880d681SAndroid Build Coastguard Worker 379*9880d681SAndroid Build Coastguard Workerclass LW_FM_MM<bits<6> op> : MMArch { 380*9880d681SAndroid Build Coastguard Worker bits<5> rt; 381*9880d681SAndroid Build Coastguard Worker bits<21> addr; 382*9880d681SAndroid Build Coastguard Worker bits<5> base = addr{20-16}; 383*9880d681SAndroid Build Coastguard Worker bits<16> offset = addr{15-0}; 384*9880d681SAndroid Build Coastguard Worker 385*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 386*9880d681SAndroid Build Coastguard Worker 387*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = op; 388*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rt; 389*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = base; 390*9880d681SAndroid Build Coastguard Worker let Inst{15-0} = offset; 391*9880d681SAndroid Build Coastguard Worker} 392*9880d681SAndroid Build Coastguard Worker 393*9880d681SAndroid Build Coastguard Workerclass POOL32C_LHUE_FM_MM<bits<6> op, bits<4> fmt, bits<3> funct> : MMArch { 394*9880d681SAndroid Build Coastguard Worker bits<5> rt; 395*9880d681SAndroid Build Coastguard Worker bits<21> addr; 396*9880d681SAndroid Build Coastguard Worker bits<5> base = addr{20-16}; 397*9880d681SAndroid Build Coastguard Worker bits<9> offset = addr{8-0}; 398*9880d681SAndroid Build Coastguard Worker 399*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 400*9880d681SAndroid Build Coastguard Worker 401*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = op; 402*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rt; 403*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = base; 404*9880d681SAndroid Build Coastguard Worker let Inst{15-12} = fmt; 405*9880d681SAndroid Build Coastguard Worker let Inst{11-9} = funct; 406*9880d681SAndroid Build Coastguard Worker let Inst{8-0} = offset; 407*9880d681SAndroid Build Coastguard Worker} 408*9880d681SAndroid Build Coastguard Worker 409*9880d681SAndroid Build Coastguard Workerclass LWL_FM_MM<bits<4> funct> { 410*9880d681SAndroid Build Coastguard Worker bits<5> rt; 411*9880d681SAndroid Build Coastguard Worker bits<21> addr; 412*9880d681SAndroid Build Coastguard Worker 413*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 414*9880d681SAndroid Build Coastguard Worker 415*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x18; 416*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rt; 417*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = addr{20-16}; 418*9880d681SAndroid Build Coastguard Worker let Inst{15-12} = funct; 419*9880d681SAndroid Build Coastguard Worker let Inst{11-0} = addr{11-0}; 420*9880d681SAndroid Build Coastguard Worker} 421*9880d681SAndroid Build Coastguard Worker 422*9880d681SAndroid Build Coastguard Workerclass POOL32C_STEVA_LDEVA_FM_MM<bits<4> type, bits<3> funct> { 423*9880d681SAndroid Build Coastguard Worker bits<5> rt; 424*9880d681SAndroid Build Coastguard Worker bits<21> addr; 425*9880d681SAndroid Build Coastguard Worker bits<5> base = addr{20-16}; 426*9880d681SAndroid Build Coastguard Worker bits<9> offset = addr{8-0}; 427*9880d681SAndroid Build Coastguard Worker 428*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 429*9880d681SAndroid Build Coastguard Worker 430*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x18; 431*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rt; 432*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = base; 433*9880d681SAndroid Build Coastguard Worker let Inst{15-12} = type; 434*9880d681SAndroid Build Coastguard Worker let Inst{11-9} = funct; 435*9880d681SAndroid Build Coastguard Worker let Inst{8-0} = offset; 436*9880d681SAndroid Build Coastguard Worker} 437*9880d681SAndroid Build Coastguard Worker 438*9880d681SAndroid Build Coastguard Workerclass CMov_F_I_FM_MM<bits<7> func> : MMArch { 439*9880d681SAndroid Build Coastguard Worker bits<5> rd; 440*9880d681SAndroid Build Coastguard Worker bits<5> rs; 441*9880d681SAndroid Build Coastguard Worker bits<3> fcc; 442*9880d681SAndroid Build Coastguard Worker 443*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 444*9880d681SAndroid Build Coastguard Worker 445*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x15; 446*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rd; 447*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rs; 448*9880d681SAndroid Build Coastguard Worker let Inst{15-13} = fcc; 449*9880d681SAndroid Build Coastguard Worker let Inst{12-6} = func; 450*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3b; 451*9880d681SAndroid Build Coastguard Worker} 452*9880d681SAndroid Build Coastguard Worker 453*9880d681SAndroid Build Coastguard Workerclass MTLO_FM_MM<bits<10> funct> : MMArch { 454*9880d681SAndroid Build Coastguard Worker bits<5> rs; 455*9880d681SAndroid Build Coastguard Worker 456*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 457*9880d681SAndroid Build Coastguard Worker 458*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x00; 459*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = 0x00; 460*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rs; 461*9880d681SAndroid Build Coastguard Worker let Inst{15-6} = funct; 462*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3c; 463*9880d681SAndroid Build Coastguard Worker} 464*9880d681SAndroid Build Coastguard Worker 465*9880d681SAndroid Build Coastguard Workerclass MFLO_FM_MM<bits<10> funct> : MMArch { 466*9880d681SAndroid Build Coastguard Worker bits<5> rd; 467*9880d681SAndroid Build Coastguard Worker 468*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 469*9880d681SAndroid Build Coastguard Worker 470*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x00; 471*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = 0x00; 472*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rd; 473*9880d681SAndroid Build Coastguard Worker let Inst{15-6} = funct; 474*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3c; 475*9880d681SAndroid Build Coastguard Worker} 476*9880d681SAndroid Build Coastguard Worker 477*9880d681SAndroid Build Coastguard Workerclass CLO_FM_MM<bits<10> funct> : MMArch { 478*9880d681SAndroid Build Coastguard Worker bits<5> rd; 479*9880d681SAndroid Build Coastguard Worker bits<5> rs; 480*9880d681SAndroid Build Coastguard Worker 481*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 482*9880d681SAndroid Build Coastguard Worker 483*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x00; 484*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rd; 485*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rs; 486*9880d681SAndroid Build Coastguard Worker let Inst{15-6} = funct; 487*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3c; 488*9880d681SAndroid Build Coastguard Worker} 489*9880d681SAndroid Build Coastguard Worker 490*9880d681SAndroid Build Coastguard Workerclass SEB_FM_MM<bits<10> funct> : MMArch { 491*9880d681SAndroid Build Coastguard Worker bits<5> rd; 492*9880d681SAndroid Build Coastguard Worker bits<5> rt; 493*9880d681SAndroid Build Coastguard Worker 494*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 495*9880d681SAndroid Build Coastguard Worker 496*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x00; 497*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rd; 498*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rt; 499*9880d681SAndroid Build Coastguard Worker let Inst{15-6} = funct; 500*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3c; 501*9880d681SAndroid Build Coastguard Worker} 502*9880d681SAndroid Build Coastguard Worker 503*9880d681SAndroid Build Coastguard Workerclass EXT_FM_MM<bits<6> funct> : MMArch { 504*9880d681SAndroid Build Coastguard Worker bits<5> rt; 505*9880d681SAndroid Build Coastguard Worker bits<5> rs; 506*9880d681SAndroid Build Coastguard Worker bits<5> pos; 507*9880d681SAndroid Build Coastguard Worker bits<5> size; 508*9880d681SAndroid Build Coastguard Worker 509*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 510*9880d681SAndroid Build Coastguard Worker 511*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x00; 512*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rt; 513*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rs; 514*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = size; 515*9880d681SAndroid Build Coastguard Worker let Inst{10-6} = pos; 516*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = funct; 517*9880d681SAndroid Build Coastguard Worker} 518*9880d681SAndroid Build Coastguard Worker 519*9880d681SAndroid Build Coastguard Workerclass J_FM_MM<bits<6> op> : MMArch { 520*9880d681SAndroid Build Coastguard Worker bits<26> target; 521*9880d681SAndroid Build Coastguard Worker 522*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 523*9880d681SAndroid Build Coastguard Worker 524*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = op; 525*9880d681SAndroid Build Coastguard Worker let Inst{25-0} = target; 526*9880d681SAndroid Build Coastguard Worker} 527*9880d681SAndroid Build Coastguard Worker 528*9880d681SAndroid Build Coastguard Workerclass JR_FM_MM<bits<8> funct> : MMArch { 529*9880d681SAndroid Build Coastguard Worker bits<5> rs; 530*9880d681SAndroid Build Coastguard Worker 531*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 532*9880d681SAndroid Build Coastguard Worker 533*9880d681SAndroid Build Coastguard Worker let Inst{31-21} = 0x00; 534*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rs; 535*9880d681SAndroid Build Coastguard Worker let Inst{15-14} = 0x0; 536*9880d681SAndroid Build Coastguard Worker let Inst{13-6} = funct; 537*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3c; 538*9880d681SAndroid Build Coastguard Worker} 539*9880d681SAndroid Build Coastguard Worker 540*9880d681SAndroid Build Coastguard Workerclass JALR_FM_MM<bits<10> funct> { 541*9880d681SAndroid Build Coastguard Worker bits<5> rs; 542*9880d681SAndroid Build Coastguard Worker bits<5> rd; 543*9880d681SAndroid Build Coastguard Worker 544*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 545*9880d681SAndroid Build Coastguard Worker 546*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x00; 547*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rd; 548*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rs; 549*9880d681SAndroid Build Coastguard Worker let Inst{15-6} = funct; 550*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3c; 551*9880d681SAndroid Build Coastguard Worker} 552*9880d681SAndroid Build Coastguard Worker 553*9880d681SAndroid Build Coastguard Workerclass BEQ_FM_MM<bits<6> op> : MMArch { 554*9880d681SAndroid Build Coastguard Worker bits<5> rs; 555*9880d681SAndroid Build Coastguard Worker bits<5> rt; 556*9880d681SAndroid Build Coastguard Worker bits<16> offset; 557*9880d681SAndroid Build Coastguard Worker 558*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 559*9880d681SAndroid Build Coastguard Worker 560*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = op; 561*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rt; 562*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rs; 563*9880d681SAndroid Build Coastguard Worker let Inst{15-0} = offset; 564*9880d681SAndroid Build Coastguard Worker} 565*9880d681SAndroid Build Coastguard Worker 566*9880d681SAndroid Build Coastguard Workerclass BGEZ_FM_MM<bits<5> funct> : MMArch { 567*9880d681SAndroid Build Coastguard Worker bits<5> rs; 568*9880d681SAndroid Build Coastguard Worker bits<16> offset; 569*9880d681SAndroid Build Coastguard Worker 570*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 571*9880d681SAndroid Build Coastguard Worker 572*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x10; 573*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = funct; 574*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rs; 575*9880d681SAndroid Build Coastguard Worker let Inst{15-0} = offset; 576*9880d681SAndroid Build Coastguard Worker} 577*9880d681SAndroid Build Coastguard Worker 578*9880d681SAndroid Build Coastguard Workerclass BGEZAL_FM_MM<bits<5> funct> : MMArch { 579*9880d681SAndroid Build Coastguard Worker bits<5> rs; 580*9880d681SAndroid Build Coastguard Worker bits<16> offset; 581*9880d681SAndroid Build Coastguard Worker 582*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 583*9880d681SAndroid Build Coastguard Worker 584*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x10; 585*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = funct; 586*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rs; 587*9880d681SAndroid Build Coastguard Worker let Inst{15-0} = offset; 588*9880d681SAndroid Build Coastguard Worker} 589*9880d681SAndroid Build Coastguard Worker 590*9880d681SAndroid Build Coastguard Workerclass SYNC_FM_MM : MMArch { 591*9880d681SAndroid Build Coastguard Worker bits<5> stype; 592*9880d681SAndroid Build Coastguard Worker 593*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 594*9880d681SAndroid Build Coastguard Worker 595*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x00; 596*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = 0x0; 597*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = stype; 598*9880d681SAndroid Build Coastguard Worker let Inst{15-6} = 0x1ad; 599*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3c; 600*9880d681SAndroid Build Coastguard Worker} 601*9880d681SAndroid Build Coastguard Worker 602*9880d681SAndroid Build Coastguard Workerclass BRK_FM_MM : MMArch { 603*9880d681SAndroid Build Coastguard Worker bits<10> code_1; 604*9880d681SAndroid Build Coastguard Worker bits<10> code_2; 605*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 606*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x0; 607*9880d681SAndroid Build Coastguard Worker let Inst{25-16} = code_1; 608*9880d681SAndroid Build Coastguard Worker let Inst{15-6} = code_2; 609*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x07; 610*9880d681SAndroid Build Coastguard Worker} 611*9880d681SAndroid Build Coastguard Worker 612*9880d681SAndroid Build Coastguard Workerclass SYS_FM_MM : MMArch { 613*9880d681SAndroid Build Coastguard Worker bits<10> code_; 614*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 615*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x0; 616*9880d681SAndroid Build Coastguard Worker let Inst{25-16} = code_; 617*9880d681SAndroid Build Coastguard Worker let Inst{15-6} = 0x22d; 618*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3c; 619*9880d681SAndroid Build Coastguard Worker} 620*9880d681SAndroid Build Coastguard Worker 621*9880d681SAndroid Build Coastguard Workerclass WAIT_FM_MM { 622*9880d681SAndroid Build Coastguard Worker bits<10> code_; 623*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 624*9880d681SAndroid Build Coastguard Worker 625*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x00; 626*9880d681SAndroid Build Coastguard Worker let Inst{25-16} = code_; 627*9880d681SAndroid Build Coastguard Worker let Inst{15-6} = 0x24d; 628*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3c; 629*9880d681SAndroid Build Coastguard Worker} 630*9880d681SAndroid Build Coastguard Worker 631*9880d681SAndroid Build Coastguard Workerclass ER_FM_MM<bits<10> funct> : MMArch { 632*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 633*9880d681SAndroid Build Coastguard Worker 634*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x00; 635*9880d681SAndroid Build Coastguard Worker let Inst{25-16} = 0x00; 636*9880d681SAndroid Build Coastguard Worker let Inst{15-6} = funct; 637*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3c; 638*9880d681SAndroid Build Coastguard Worker} 639*9880d681SAndroid Build Coastguard Worker 640*9880d681SAndroid Build Coastguard Workerclass EI_FM_MM<bits<10> funct> : MMArch { 641*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 642*9880d681SAndroid Build Coastguard Worker bits<5> rt; 643*9880d681SAndroid Build Coastguard Worker 644*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x00; 645*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = 0x00; 646*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rt; 647*9880d681SAndroid Build Coastguard Worker let Inst{15-6} = funct; 648*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3c; 649*9880d681SAndroid Build Coastguard Worker} 650*9880d681SAndroid Build Coastguard Worker 651*9880d681SAndroid Build Coastguard Workerclass TEQ_FM_MM<bits<6> funct> : MMArch { 652*9880d681SAndroid Build Coastguard Worker bits<5> rs; 653*9880d681SAndroid Build Coastguard Worker bits<5> rt; 654*9880d681SAndroid Build Coastguard Worker bits<4> code_; 655*9880d681SAndroid Build Coastguard Worker 656*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 657*9880d681SAndroid Build Coastguard Worker 658*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x00; 659*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rt; 660*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rs; 661*9880d681SAndroid Build Coastguard Worker let Inst{15-12} = code_; 662*9880d681SAndroid Build Coastguard Worker let Inst{11-6} = funct; 663*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3c; 664*9880d681SAndroid Build Coastguard Worker} 665*9880d681SAndroid Build Coastguard Worker 666*9880d681SAndroid Build Coastguard Workerclass TEQI_FM_MM<bits<5> funct> : MMArch { 667*9880d681SAndroid Build Coastguard Worker bits<5> rs; 668*9880d681SAndroid Build Coastguard Worker bits<16> imm16; 669*9880d681SAndroid Build Coastguard Worker 670*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 671*9880d681SAndroid Build Coastguard Worker 672*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x10; 673*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = funct; 674*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rs; 675*9880d681SAndroid Build Coastguard Worker let Inst{15-0} = imm16; 676*9880d681SAndroid Build Coastguard Worker} 677*9880d681SAndroid Build Coastguard Worker 678*9880d681SAndroid Build Coastguard Workerclass LL_FM_MM<bits<4> funct> : MMArch { 679*9880d681SAndroid Build Coastguard Worker bits<5> rt; 680*9880d681SAndroid Build Coastguard Worker bits<21> addr; 681*9880d681SAndroid Build Coastguard Worker 682*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 683*9880d681SAndroid Build Coastguard Worker 684*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x18; 685*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rt; 686*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = addr{20-16}; 687*9880d681SAndroid Build Coastguard Worker let Inst{15-12} = funct; 688*9880d681SAndroid Build Coastguard Worker let Inst{11-0} = addr{11-0}; 689*9880d681SAndroid Build Coastguard Worker} 690*9880d681SAndroid Build Coastguard Worker 691*9880d681SAndroid Build Coastguard Workerclass LLE_FM_MM<bits<4> funct> { 692*9880d681SAndroid Build Coastguard Worker bits<5> rt; 693*9880d681SAndroid Build Coastguard Worker bits<21> addr; 694*9880d681SAndroid Build Coastguard Worker bits<5> base = addr{20-16}; 695*9880d681SAndroid Build Coastguard Worker bits<9> offset = addr{8-0}; 696*9880d681SAndroid Build Coastguard Worker 697*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 698*9880d681SAndroid Build Coastguard Worker 699*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x18; 700*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rt; 701*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = base; 702*9880d681SAndroid Build Coastguard Worker let Inst{15-12} = funct; 703*9880d681SAndroid Build Coastguard Worker let Inst{11-9} = 0x6; 704*9880d681SAndroid Build Coastguard Worker let Inst{8-0} = offset; 705*9880d681SAndroid Build Coastguard Worker} 706*9880d681SAndroid Build Coastguard Worker 707*9880d681SAndroid Build Coastguard Workerclass ADDS_FM_MM<bits<2> fmt, bits<8> funct> : MMArch { 708*9880d681SAndroid Build Coastguard Worker bits<5> ft; 709*9880d681SAndroid Build Coastguard Worker bits<5> fs; 710*9880d681SAndroid Build Coastguard Worker bits<5> fd; 711*9880d681SAndroid Build Coastguard Worker 712*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 713*9880d681SAndroid Build Coastguard Worker 714*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x15; 715*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = ft; 716*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = fs; 717*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = fd; 718*9880d681SAndroid Build Coastguard Worker let Inst{10} = 0; 719*9880d681SAndroid Build Coastguard Worker let Inst{9-8} = fmt; 720*9880d681SAndroid Build Coastguard Worker let Inst{7-0} = funct; 721*9880d681SAndroid Build Coastguard Worker 722*9880d681SAndroid Build Coastguard Worker list<dag> Pattern = []; 723*9880d681SAndroid Build Coastguard Worker} 724*9880d681SAndroid Build Coastguard Worker 725*9880d681SAndroid Build Coastguard Workerclass LWXC1_FM_MM<bits<9> funct> : MMArch { 726*9880d681SAndroid Build Coastguard Worker bits<5> fd; 727*9880d681SAndroid Build Coastguard Worker bits<5> base; 728*9880d681SAndroid Build Coastguard Worker bits<5> index; 729*9880d681SAndroid Build Coastguard Worker 730*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 731*9880d681SAndroid Build Coastguard Worker 732*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x15; 733*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = index; 734*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = base; 735*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = fd; 736*9880d681SAndroid Build Coastguard Worker let Inst{10-9} = 0x0; 737*9880d681SAndroid Build Coastguard Worker let Inst{8-0} = funct; 738*9880d681SAndroid Build Coastguard Worker} 739*9880d681SAndroid Build Coastguard Worker 740*9880d681SAndroid Build Coastguard Workerclass SWXC1_FM_MM<bits<9> funct> : MMArch { 741*9880d681SAndroid Build Coastguard Worker bits<5> fs; 742*9880d681SAndroid Build Coastguard Worker bits<5> base; 743*9880d681SAndroid Build Coastguard Worker bits<5> index; 744*9880d681SAndroid Build Coastguard Worker 745*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 746*9880d681SAndroid Build Coastguard Worker 747*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x15; 748*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = index; 749*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = base; 750*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = fs; 751*9880d681SAndroid Build Coastguard Worker let Inst{10-9} = 0x0; 752*9880d681SAndroid Build Coastguard Worker let Inst{8-0} = funct; 753*9880d681SAndroid Build Coastguard Worker} 754*9880d681SAndroid Build Coastguard Worker 755*9880d681SAndroid Build Coastguard Workerclass CEQS_FM_MM<bits<2> fmt> : MMArch { 756*9880d681SAndroid Build Coastguard Worker bits<5> fs; 757*9880d681SAndroid Build Coastguard Worker bits<5> ft; 758*9880d681SAndroid Build Coastguard Worker bits<4> cond; 759*9880d681SAndroid Build Coastguard Worker 760*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 761*9880d681SAndroid Build Coastguard Worker 762*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x15; 763*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = ft; 764*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = fs; 765*9880d681SAndroid Build Coastguard Worker let Inst{15-13} = 0x0; // cc 766*9880d681SAndroid Build Coastguard Worker let Inst{12} = 0; 767*9880d681SAndroid Build Coastguard Worker let Inst{11-10} = fmt; 768*9880d681SAndroid Build Coastguard Worker let Inst{9-6} = cond; 769*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3c; 770*9880d681SAndroid Build Coastguard Worker} 771*9880d681SAndroid Build Coastguard Worker 772*9880d681SAndroid Build Coastguard Workerclass BC1F_FM_MM<bits<5> tf> : MMArch { 773*9880d681SAndroid Build Coastguard Worker bits<16> offset; 774*9880d681SAndroid Build Coastguard Worker 775*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 776*9880d681SAndroid Build Coastguard Worker 777*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x10; 778*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = tf; 779*9880d681SAndroid Build Coastguard Worker let Inst{20-18} = 0x0; // cc 780*9880d681SAndroid Build Coastguard Worker let Inst{17-16} = 0x0; 781*9880d681SAndroid Build Coastguard Worker let Inst{15-0} = offset; 782*9880d681SAndroid Build Coastguard Worker} 783*9880d681SAndroid Build Coastguard Worker 784*9880d681SAndroid Build Coastguard Workerclass ROUND_W_FM_MM<bits<1> fmt, bits<8> funct> : MMArch { 785*9880d681SAndroid Build Coastguard Worker bits<5> fd; 786*9880d681SAndroid Build Coastguard Worker bits<5> fs; 787*9880d681SAndroid Build Coastguard Worker 788*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 789*9880d681SAndroid Build Coastguard Worker 790*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x15; 791*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = fd; 792*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = fs; 793*9880d681SAndroid Build Coastguard Worker let Inst{15} = 0; 794*9880d681SAndroid Build Coastguard Worker let Inst{14} = fmt; 795*9880d681SAndroid Build Coastguard Worker let Inst{13-6} = funct; 796*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3b; 797*9880d681SAndroid Build Coastguard Worker} 798*9880d681SAndroid Build Coastguard Worker 799*9880d681SAndroid Build Coastguard Workerclass ABS_FM_MM<bits<2> fmt, bits<7> funct> : MMArch { 800*9880d681SAndroid Build Coastguard Worker bits<5> fd; 801*9880d681SAndroid Build Coastguard Worker bits<5> fs; 802*9880d681SAndroid Build Coastguard Worker 803*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 804*9880d681SAndroid Build Coastguard Worker 805*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x15; 806*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = fd; 807*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = fs; 808*9880d681SAndroid Build Coastguard Worker let Inst{15} = 0; 809*9880d681SAndroid Build Coastguard Worker let Inst{14-13} = fmt; 810*9880d681SAndroid Build Coastguard Worker let Inst{12-6} = funct; 811*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3b; 812*9880d681SAndroid Build Coastguard Worker} 813*9880d681SAndroid Build Coastguard Worker 814*9880d681SAndroid Build Coastguard Workerclass CMov_F_F_FM_MM<bits<9> func, bits<2> fmt> : MMArch { 815*9880d681SAndroid Build Coastguard Worker bits<5> fd; 816*9880d681SAndroid Build Coastguard Worker bits<5> fs; 817*9880d681SAndroid Build Coastguard Worker 818*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 819*9880d681SAndroid Build Coastguard Worker 820*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x15; 821*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = fd; 822*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = fs; 823*9880d681SAndroid Build Coastguard Worker let Inst{15-13} = 0x0; //cc 824*9880d681SAndroid Build Coastguard Worker let Inst{12-11} = 0x0; 825*9880d681SAndroid Build Coastguard Worker let Inst{10-9} = fmt; 826*9880d681SAndroid Build Coastguard Worker let Inst{8-0} = func; 827*9880d681SAndroid Build Coastguard Worker} 828*9880d681SAndroid Build Coastguard Worker 829*9880d681SAndroid Build Coastguard Workerclass CMov_I_F_FM_MM<bits<8> funct, bits<2> fmt> : MMArch { 830*9880d681SAndroid Build Coastguard Worker bits<5> fd; 831*9880d681SAndroid Build Coastguard Worker bits<5> fs; 832*9880d681SAndroid Build Coastguard Worker bits<5> rt; 833*9880d681SAndroid Build Coastguard Worker 834*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 835*9880d681SAndroid Build Coastguard Worker 836*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x15; 837*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rt; 838*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = fs; 839*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = fd; 840*9880d681SAndroid Build Coastguard Worker let Inst{9-8} = fmt; 841*9880d681SAndroid Build Coastguard Worker let Inst{7-0} = funct; 842*9880d681SAndroid Build Coastguard Worker} 843*9880d681SAndroid Build Coastguard Worker 844*9880d681SAndroid Build Coastguard Workerclass MFC1_FM_MM<bits<8> funct> : MMArch { 845*9880d681SAndroid Build Coastguard Worker bits<5> rt; 846*9880d681SAndroid Build Coastguard Worker bits<5> fs; 847*9880d681SAndroid Build Coastguard Worker 848*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 849*9880d681SAndroid Build Coastguard Worker 850*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x15; 851*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rt; 852*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = fs; 853*9880d681SAndroid Build Coastguard Worker let Inst{15-14} = 0x0; 854*9880d681SAndroid Build Coastguard Worker let Inst{13-6} = funct; 855*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3b; 856*9880d681SAndroid Build Coastguard Worker} 857*9880d681SAndroid Build Coastguard Worker 858*9880d681SAndroid Build Coastguard Workerclass MADDS_FM_MM<bits<6> funct>: MMArch { 859*9880d681SAndroid Build Coastguard Worker bits<5> ft; 860*9880d681SAndroid Build Coastguard Worker bits<5> fs; 861*9880d681SAndroid Build Coastguard Worker bits<5> fd; 862*9880d681SAndroid Build Coastguard Worker bits<5> fr; 863*9880d681SAndroid Build Coastguard Worker 864*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 865*9880d681SAndroid Build Coastguard Worker 866*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x15; 867*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = ft; 868*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = fs; 869*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = fd; 870*9880d681SAndroid Build Coastguard Worker let Inst{10-6} = fr; 871*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = funct; 872*9880d681SAndroid Build Coastguard Worker} 873*9880d681SAndroid Build Coastguard Worker 874*9880d681SAndroid Build Coastguard Workerclass COMPACT_BRANCH_FM_MM<bits<5> funct> { 875*9880d681SAndroid Build Coastguard Worker bits<5> rs; 876*9880d681SAndroid Build Coastguard Worker bits<16> offset; 877*9880d681SAndroid Build Coastguard Worker 878*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 879*9880d681SAndroid Build Coastguard Worker 880*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x10; 881*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = funct; 882*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rs; 883*9880d681SAndroid Build Coastguard Worker let Inst{15-0} = offset; 884*9880d681SAndroid Build Coastguard Worker} 885*9880d681SAndroid Build Coastguard Worker 886*9880d681SAndroid Build Coastguard Workerclass COP0_TLB_FM_MM<bits<10> op> : MMArch { 887*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 888*9880d681SAndroid Build Coastguard Worker 889*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x0; 890*9880d681SAndroid Build Coastguard Worker let Inst{25-16} = 0x0; 891*9880d681SAndroid Build Coastguard Worker let Inst{15-6} = op; 892*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3c; 893*9880d681SAndroid Build Coastguard Worker} 894*9880d681SAndroid Build Coastguard Worker 895*9880d681SAndroid Build Coastguard Workerclass SDBBP_FM_MM : MMArch { 896*9880d681SAndroid Build Coastguard Worker bits<10> code_; 897*9880d681SAndroid Build Coastguard Worker 898*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 899*9880d681SAndroid Build Coastguard Worker 900*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x0; 901*9880d681SAndroid Build Coastguard Worker let Inst{25-16} = code_; 902*9880d681SAndroid Build Coastguard Worker let Inst{15-6} = 0x36d; 903*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3c; 904*9880d681SAndroid Build Coastguard Worker} 905*9880d681SAndroid Build Coastguard Worker 906*9880d681SAndroid Build Coastguard Workerclass RDHWR_FM_MM : MMArch { 907*9880d681SAndroid Build Coastguard Worker bits<5> rt; 908*9880d681SAndroid Build Coastguard Worker bits<5> rd; 909*9880d681SAndroid Build Coastguard Worker 910*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 911*9880d681SAndroid Build Coastguard Worker 912*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x0; 913*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rt; 914*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = rd; 915*9880d681SAndroid Build Coastguard Worker let Inst{15-6} = 0x1ac; 916*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x3c; 917*9880d681SAndroid Build Coastguard Worker} 918*9880d681SAndroid Build Coastguard Worker 919*9880d681SAndroid Build Coastguard Workerclass LWXS_FM_MM<bits<10> funct> { 920*9880d681SAndroid Build Coastguard Worker bits<5> rd; 921*9880d681SAndroid Build Coastguard Worker bits<5> base; 922*9880d681SAndroid Build Coastguard Worker bits<5> index; 923*9880d681SAndroid Build Coastguard Worker 924*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 925*9880d681SAndroid Build Coastguard Worker 926*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x0; 927*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = index; 928*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = base; 929*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = rd; 930*9880d681SAndroid Build Coastguard Worker let Inst{10} = 0; 931*9880d681SAndroid Build Coastguard Worker let Inst{9-0} = funct; 932*9880d681SAndroid Build Coastguard Worker} 933*9880d681SAndroid Build Coastguard Worker 934*9880d681SAndroid Build Coastguard Workerclass LWM_FM_MM<bits<4> funct> : MMArch { 935*9880d681SAndroid Build Coastguard Worker bits<5> rt; 936*9880d681SAndroid Build Coastguard Worker bits<21> addr; 937*9880d681SAndroid Build Coastguard Worker 938*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 939*9880d681SAndroid Build Coastguard Worker 940*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x8; 941*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = rt; 942*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = addr{20-16}; 943*9880d681SAndroid Build Coastguard Worker let Inst{15-12} = funct; 944*9880d681SAndroid Build Coastguard Worker let Inst{11-0} = addr{11-0}; 945*9880d681SAndroid Build Coastguard Worker} 946*9880d681SAndroid Build Coastguard Worker 947*9880d681SAndroid Build Coastguard Workerclass LWM_FM_MM16<bits<4> funct> : MMArch, PredicateControl { 948*9880d681SAndroid Build Coastguard Worker bits<2> rt; 949*9880d681SAndroid Build Coastguard Worker bits<4> addr; 950*9880d681SAndroid Build Coastguard Worker 951*9880d681SAndroid Build Coastguard Worker bits<16> Inst; 952*9880d681SAndroid Build Coastguard Worker 953*9880d681SAndroid Build Coastguard Worker let Inst{15-10} = 0x11; 954*9880d681SAndroid Build Coastguard Worker let Inst{9-6} = funct; 955*9880d681SAndroid Build Coastguard Worker let Inst{5-4} = rt; 956*9880d681SAndroid Build Coastguard Worker let Inst{3-0} = addr; 957*9880d681SAndroid Build Coastguard Worker} 958*9880d681SAndroid Build Coastguard Worker 959*9880d681SAndroid Build Coastguard Workerclass CACHE_PREF_FM_MM<bits<6> op, bits<4> funct> : MMArch { 960*9880d681SAndroid Build Coastguard Worker bits<21> addr; 961*9880d681SAndroid Build Coastguard Worker bits<5> hint; 962*9880d681SAndroid Build Coastguard Worker bits<5> base = addr{20-16}; 963*9880d681SAndroid Build Coastguard Worker bits<12> offset = addr{11-0}; 964*9880d681SAndroid Build Coastguard Worker 965*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 966*9880d681SAndroid Build Coastguard Worker 967*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = op; 968*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = hint; 969*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = base; 970*9880d681SAndroid Build Coastguard Worker let Inst{15-12} = funct; 971*9880d681SAndroid Build Coastguard Worker let Inst{11-0} = offset; 972*9880d681SAndroid Build Coastguard Worker} 973*9880d681SAndroid Build Coastguard Worker 974*9880d681SAndroid Build Coastguard Workerclass CACHE_PREFE_FM_MM<bits<6> op, bits<3> funct> : MMArch { 975*9880d681SAndroid Build Coastguard Worker bits<21> addr; 976*9880d681SAndroid Build Coastguard Worker bits<5> hint; 977*9880d681SAndroid Build Coastguard Worker bits<5> base = addr{20-16}; 978*9880d681SAndroid Build Coastguard Worker bits<9> offset = addr{8-0}; 979*9880d681SAndroid Build Coastguard Worker 980*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 981*9880d681SAndroid Build Coastguard Worker 982*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = op; 983*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = hint; 984*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = base; 985*9880d681SAndroid Build Coastguard Worker let Inst{15-12} = 0xA; 986*9880d681SAndroid Build Coastguard Worker let Inst{11-9} = funct; 987*9880d681SAndroid Build Coastguard Worker let Inst{8-0} = offset; 988*9880d681SAndroid Build Coastguard Worker} 989*9880d681SAndroid Build Coastguard Worker 990*9880d681SAndroid Build Coastguard Workerclass POOL32F_PREFX_FM_MM<bits<6> op, bits<9> funct> : MMArch { 991*9880d681SAndroid Build Coastguard Worker bits<5> index; 992*9880d681SAndroid Build Coastguard Worker bits<5> base; 993*9880d681SAndroid Build Coastguard Worker bits<5> hint; 994*9880d681SAndroid Build Coastguard Worker 995*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 996*9880d681SAndroid Build Coastguard Worker 997*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = op; 998*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = index; 999*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = base; 1000*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = hint; 1001*9880d681SAndroid Build Coastguard Worker let Inst{10-9} = 0x0; 1002*9880d681SAndroid Build Coastguard Worker let Inst{8-0} = funct; 1003*9880d681SAndroid Build Coastguard Worker} 1004*9880d681SAndroid Build Coastguard Worker 1005*9880d681SAndroid Build Coastguard Workerclass BARRIER_FM_MM<bits<5> op> : MMArch { 1006*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 1007*9880d681SAndroid Build Coastguard Worker 1008*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x0; 1009*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = 0x0; 1010*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = 0x0; 1011*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = op; 1012*9880d681SAndroid Build Coastguard Worker let Inst{10-6} = 0x0; 1013*9880d681SAndroid Build Coastguard Worker let Inst{5-0} = 0x0; 1014*9880d681SAndroid Build Coastguard Worker} 1015*9880d681SAndroid Build Coastguard Worker 1016*9880d681SAndroid Build Coastguard Workerclass ADDIUPC_FM_MM { 1017*9880d681SAndroid Build Coastguard Worker bits<3> rs; 1018*9880d681SAndroid Build Coastguard Worker bits<23> imm; 1019*9880d681SAndroid Build Coastguard Worker 1020*9880d681SAndroid Build Coastguard Worker bits<32> Inst; 1021*9880d681SAndroid Build Coastguard Worker 1022*9880d681SAndroid Build Coastguard Worker let Inst{31-26} = 0x1e; 1023*9880d681SAndroid Build Coastguard Worker let Inst{25-23} = rs; 1024*9880d681SAndroid Build Coastguard Worker let Inst{22-0} = imm; 1025*9880d681SAndroid Build Coastguard Worker} 1026