//===-- MicroMipsInstrFormats.td - microMIPS Inst Formats -*- tablegen -*--===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// This files describes the formats of the microMIPS instruction set.
//
//===----------------------------------------------------------------------===//

//===----------------------------------------------------------------------===//
// MicroMIPS Base Classes
//===----------------------------------------------------------------------===//

//
// Base class for MicroMips instructions.
// This class does not depend on the instruction size.
//
class MicroMipsInstBase<dag outs, dag ins, string asmstr, list<dag> pattern,
                        InstrItinClass itin, Format f> : Instruction,
                        PredicateControl {
  let Namespace = "Mips";
  let DecoderNamespace = "MicroMips";

  let OutOperandList = outs;
  let InOperandList  = ins;

  let AsmString   = asmstr;
  let Pattern     = pattern;
  let Itinerary   = itin;

  let EncodingPredicates = [InMicroMips];

  Format Form = f;
}

//
// Base class for MicroMIPS 16-bit instructions.
//
class MicroMipsInst16<dag outs, dag ins, string asmstr, list<dag> pattern,
               InstrItinClass itin, Format f> :
  MicroMipsInstBase<outs, ins, asmstr, pattern, itin, f>
{
  let Size = 2;
  field bits<16> Inst;
  field bits<16> SoftFail = 0;
  bits<6> Opcode = 0x0;
}

//===----------------------------------------------------------------------===//
// MicroMIPS 16-bit Instruction Formats
//===----------------------------------------------------------------------===//

class ARITH_FM_MM16<bit funct> {
  bits<3> rd;
  bits<3> rt;
  bits<3> rs;

  bits<16> Inst;

  let Inst{15-10} = 0x01;
  let Inst{9-7}   = rd;
  let Inst{6-4}   = rt;
  let Inst{3-1}   = rs;
  let Inst{0}     = funct;
}

class ANDI_FM_MM16<bits<6> funct> {
  bits<3> rd;
  bits<3> rs;
  bits<4> imm;

  bits<16> Inst;

  let Inst{15-10} = funct;
  let Inst{9-7}   = rd;
  let Inst{6-4}   = rs;
  let Inst{3-0}   = imm;
}

class LOGIC_FM_MM16<bits<4> funct> {
  bits<3> rt;
  bits<3> rs;

  bits<16> Inst;

  let Inst{15-10} = 0x11;
  let Inst{9-6}   = funct;
  let Inst{5-3}   = rt;
  let Inst{2-0}   = rs;
}

class SHIFT_FM_MM16<bits<1> funct> {
  bits<3> rd;
  bits<3> rt;
  bits<3> shamt;

  bits<16> Inst;

  let Inst{15-10} = 0x09;
  let Inst{9-7}   = rd;
  let Inst{6-4}   = rt;
  let Inst{3-1}   = shamt;
  let Inst{0}     = funct;
}

class ADDIUR2_FM_MM16 {
  bits<3> rd;
  bits<3> rs;
  bits<3> imm;

  bits<16> Inst;

  let Inst{15-10} = 0x1b;
  let Inst{9-7}   = rd;
  let Inst{6-4}   = rs;
  let Inst{3-1}   = imm;
  let Inst{0}     = 0;
}

class LOAD_STORE_FM_MM16<bits<6> op> {
  bits<3> rt;
  bits<7> addr;

  bits<16> Inst;

  let Inst{15-10} = op;
  let Inst{9-7}   = rt;
  let Inst{6-4}   = addr{6-4};
  let Inst{3-0}   = addr{3-0};
}

class LOAD_STORE_SP_FM_MM16<bits<6> op> {
  bits<5> rt;
  bits<5> offset;

  bits<16> Inst;

  let Inst{15-10} = op;
  let Inst{9-5}   = rt;
  let Inst{4-0}   = offset;
}

class LOAD_GP_FM_MM16<bits<6> op> {
  bits<3> rt;
  bits<7> offset;

  bits<16> Inst;

  let Inst{15-10} = op;
  let Inst{9-7} = rt;
  let Inst{6-0} = offset;
}

class ADDIUS5_FM_MM16 {
  bits<5> rd;
  bits<4> imm;

  bits<16> Inst;

  let Inst{15-10} = 0x13;
  let Inst{9-5}   = rd;
  let Inst{4-1}   = imm;
  let Inst{0}     = 0;
}

class ADDIUSP_FM_MM16 {
  bits<9> imm;

  bits<16> Inst;

  let Inst{15-10} = 0x13;
  let Inst{9-1}   = imm;
  let Inst{0}     = 1;
}

class MOVE_FM_MM16<bits<6> funct> {
  bits<5> rs;
  bits<5> rd;

  bits<16> Inst;

  let Inst{15-10} = funct;
  let Inst{9-5}   = rd;
  let Inst{4-0}   = rs;
}

class LI_FM_MM16 {
  bits<3> rd;
  bits<7> imm;

  bits<16> Inst;

  let Inst{15-10} = 0x3b;
  let Inst{9-7}   = rd;
  let Inst{6-0}   = imm;
}

class JALR_FM_MM16<bits<5> op> {
  bits<5> rs;

  bits<16> Inst;

  let Inst{15-10} = 0x11;
  let Inst{9-5}   = op;
  let Inst{4-0}   = rs;
}

class MFHILO_FM_MM16<bits<5> funct> {
  bits<5> rd;

  bits<16> Inst;

  let Inst{15-10} = 0x11;
  let Inst{9-5}   = funct;
  let Inst{4-0}   = rd;
}

class JRADDIUSP_FM_MM16<bits<5> op> {
  bits<5> rs;
  bits<5> imm;

  bits<16> Inst;

  let Inst{15-10} = 0x11;
  let Inst{9-5}   = op;
  let Inst{4-0}   = imm;
}

class ADDIUR1SP_FM_MM16 {
  bits<3> rd;
  bits<6> imm;

  bits<16> Inst;

  let Inst{15-10} = 0x1b;
  let Inst{9-7}   = rd;
  let Inst{6-1}   = imm;
  let Inst{0}     = 1;
}

class BRKSDBBP16_FM_MM<bits<6> op> {
  bits<4> code_;
  bits<16> Inst;

  let Inst{15-10} = 0x11;
  let Inst{9-4}   = op;
  let Inst{3-0}   = code_;
}

class BEQNEZ_FM_MM16<bits<6> op> {
  bits<3> rs;
  bits<7> offset;

  bits<16> Inst;

  let Inst{15-10} = op;
  let Inst{9-7}   = rs;
  let Inst{6-0}   = offset;
}

class B16_FM {
  bits<10> offset;

  bits<16> Inst;

  let Inst{15-10} = 0x33;
  let Inst{9-0}   = offset;
}

class MOVEP_FM_MM16 {
  bits<3> dst_regs;
  bits<3> rt;
  bits<3> rs;

  bits<16> Inst;

  let Inst{15-10} = 0x21;
  let Inst{9-7}   = dst_regs;
  let Inst{6-4}   = rt;
  let Inst{3-1}   = rs;
  let Inst{0}     = 0;
}

//===----------------------------------------------------------------------===//
// MicroMIPS 32-bit Instruction Formats
//===----------------------------------------------------------------------===//

class MMArch {
  string Arch = "micromips";
}

class ADD_FM_MM<bits<6> op, bits<10> funct> : MMArch {
  bits<5> rt;
  bits<5> rs;
  bits<5> rd;

  bits<32> Inst;

  let Inst{31-26} = op;
  let Inst{25-21} = rt;
  let Inst{20-16} = rs;
  let Inst{15-11} = rd;
  let Inst{10}    = 0;
  let Inst{9-0}   = funct;
}

class ADDI_FM_MM<bits<6> op> : MMArch {
  bits<5>  rs;
  bits<5>  rt;
  bits<16> imm16;

  bits<32> Inst;

  let Inst{31-26} = op;
  let Inst{25-21} = rt;
  let Inst{20-16} = rs;
  let Inst{15-0}  = imm16;
}

class SLTI_FM_MM<bits<6> op> : MMArch {
  bits<5> rt;
  bits<5> rs;
  bits<16> imm16;

  bits<32> Inst;

  let Inst{31-26} = op;
  let Inst{25-21} = rt;
  let Inst{20-16} = rs;
  let Inst{15-0}  = imm16;
}

class LUI_FM_MM : MMArch {
  bits<5> rt;
  bits<16> imm16;

  bits<32> Inst;

  let Inst{31-26} = 0x10;
  let Inst{25-21} = 0xd;
  let Inst{20-16} = rt;
  let Inst{15-0}  = imm16;
}

class MULT_FM_MM<bits<10> funct> : MMArch {
  bits<5>  rs;
  bits<5>  rt;

  bits<32> Inst;

  let Inst{31-26} = 0x00;
  let Inst{25-21} = rt;
  let Inst{20-16} = rs;
  let Inst{15-6}  = funct;
  let Inst{5-0}   = 0x3c;
}

class SRA_FM_MM<bits<10> funct, bit rotate> : MMArch {
  bits<5> rd;
  bits<5> rt;
  bits<5> shamt;

  bits<32> Inst;

  let Inst{31-26} = 0;
  let Inst{25-21} = rd;
  let Inst{20-16} = rt;
  let Inst{15-11} = shamt;
  let Inst{10}    = rotate;
  let Inst{9-0}   = funct;
}

class SRLV_FM_MM<bits<10> funct, bit rotate> : MMArch {
  bits<5> rd;
  bits<5> rt;
  bits<5> rs;

  bits<32> Inst;

  let Inst{31-26} = 0;
  let Inst{25-21} = rt;
  let Inst{20-16} = rs;
  let Inst{15-11} = rd;
  let Inst{10}    = rotate;
  let Inst{9-0}   = funct;
}

class LW_FM_MM<bits<6> op> : MMArch {
  bits<5> rt;
  bits<21> addr;
  bits<5> base = addr{20-16};
  bits<16> offset = addr{15-0};

  bits<32> Inst;

  let Inst{31-26} = op;
  let Inst{25-21} = rt;
  let Inst{20-16} = base;
  let Inst{15-0}  = offset;
}

class POOL32C_LHUE_FM_MM<bits<6> op, bits<4> fmt, bits<3> funct> : MMArch {
  bits<5> rt;
  bits<21> addr;
  bits<5> base = addr{20-16};
  bits<9> offset = addr{8-0};

  bits<32> Inst;

  let Inst{31-26} = op;
  let Inst{25-21} = rt;
  let Inst{20-16} = base;
  let Inst{15-12} = fmt;
  let Inst{11-9} = funct;
  let Inst{8-0}  = offset;
}

class LWL_FM_MM<bits<4> funct> : MMArch {
  bits<5> rt;
  bits<21> addr;

  bits<32> Inst;

  let Inst{31-26} = 0x18;
  let Inst{25-21} = rt;
  let Inst{20-16} = addr{20-16};
  let Inst{15-12} = funct;
  let Inst{11-0}  = addr{11-0};
}

class POOL32C_STEVA_LDEVA_FM_MM<bits<4> type, bits<3> funct> : MMArch {
  bits<5> rt;
  bits<21> addr;
  bits<5> base = addr{20-16};
  bits<9> offset = addr{8-0};

  bits<32> Inst;

  let Inst{31-26} = 0x18;
  let Inst{25-21} = rt;
  let Inst{20-16} = base;
  let Inst{15-12} = type;
  let Inst{11-9} = funct;
  let Inst{8-0}  = offset;
}

class CMov_F_I_FM_MM<bits<7> func> : MMArch {
  bits<5> rd;
  bits<5> rs;
  bits<3> fcc;

  bits<32> Inst;

  let Inst{31-26} = 0x15;
  let Inst{25-21} = rd;
  let Inst{20-16} = rs;
  let Inst{15-13} = fcc;
  let Inst{12-6}  = func;
  let Inst{5-0}   = 0x3b;
}

class MTLO_FM_MM<bits<10> funct> : MMArch {
  bits<5> rs;

  bits<32> Inst;

  let Inst{31-26} = 0x00;
  let Inst{25-21} = 0x00;
  let Inst{20-16} = rs;
  let Inst{15-6}  = funct;
  let Inst{5-0}   = 0x3c;
}

class MFLO_FM_MM<bits<10> funct> : MMArch {
  bits<5> rd;

  bits<32> Inst;

  let Inst{31-26} = 0x00;
  let Inst{25-21} = 0x00;
  let Inst{20-16} = rd;
  let Inst{15-6}  = funct;
  let Inst{5-0}   = 0x3c;
}

class CLO_FM_MM<bits<10> funct> : MMArch {
  bits<5> rd;
  bits<5> rs;

  bits<32> Inst;

  let Inst{31-26} = 0x00;
  let Inst{25-21} = rd;
  let Inst{20-16} = rs;
  let Inst{15-6}  = funct;
  let Inst{5-0}   = 0x3c;
}

class SEB_FM_MM<bits<10> funct> : MMArch {
  bits<5> rd;
  bits<5> rt;

  bits<32> Inst;

  let Inst{31-26} = 0x00;
  let Inst{25-21} = rd;
  let Inst{20-16} = rt;
  let Inst{15-6}  = funct;
  let Inst{5-0}   = 0x3c;
}

class EXT_FM_MM<bits<6> funct> : MMArch {
  bits<5> rt;
  bits<5> rs;
  bits<5> pos;
  bits<5> size;

  bits<32> Inst;

  let Inst{31-26} = 0x00;
  let Inst{25-21} = rt;
  let Inst{20-16} = rs;
  let Inst{15-11} = size;
  let Inst{10-6}  = pos;
  let Inst{5-0}   = funct;
}

class J_FM_MM<bits<6> op> : MMArch {
  bits<26> target;

  bits<32> Inst;

  let Inst{31-26} = op;
  let Inst{25-0}  = target;
}

class JR_FM_MM<bits<8> funct> : MMArch {
  bits<5> rs;

  bits<32> Inst;

  let Inst{31-21} = 0x00;
  let Inst{20-16} = rs;
  let Inst{15-14} = 0x0;
  let Inst{13-6}  = funct;
  let Inst{5-0}   = 0x3c;
}

class JALR_FM_MM<bits<10> funct> {
  bits<5> rs;
  bits<5> rd;

  bits<32> Inst;

  let Inst{31-26} = 0x00;
  let Inst{25-21} = rd;
  let Inst{20-16} = rs;
  let Inst{15-6}  = funct;
  let Inst{5-0}   = 0x3c;
}

class BEQ_FM_MM<bits<6> op> : MMArch {
  bits<5>  rs;
  bits<5>  rt;
  bits<16> offset;

  bits<32> Inst;

  let Inst{31-26} = op;
  let Inst{25-21} = rt;
  let Inst{20-16} = rs;
  let Inst{15-0}  = offset;
}

class BGEZ_FM_MM<bits<5> funct> : MMArch {
  bits<5>  rs;
  bits<16> offset;

  bits<32> Inst;

  let Inst{31-26} = 0x10;
  let Inst{25-21} = funct;
  let Inst{20-16} = rs;
  let Inst{15-0}  = offset;
}

class BGEZAL_FM_MM<bits<5> funct> : MMArch {
  bits<5>  rs;
  bits<16> offset;

  bits<32> Inst;

  let Inst{31-26} = 0x10;
  let Inst{25-21} = funct;
  let Inst{20-16} = rs;
  let Inst{15-0}  = offset;
}

class SYNC_FM_MM : MMArch {
  bits<5> stype;

  bits<32> Inst;

  let Inst{31-26} = 0x00;
  let Inst{25-21} = 0x0;
  let Inst{20-16} = stype;
  let Inst{15-6}  = 0x1ad;
  let Inst{5-0}   = 0x3c;
}

class SYNCI_FM_MM : MMArch {
  bits<21> addr;
  bits<5> rs = addr{20-16};
  bits<16> offset = addr{15-0};
  bits<32> Inst;

  let Inst{31-26} = 0b010000;
  let Inst{25-21} = 0b10000;
  let Inst{20-16} = rs;
  let Inst{15-0}  = offset;
}

class BRK_FM_MM : MMArch {
  bits<10> code_1;
  bits<10> code_2;
  bits<32> Inst;
  let Inst{31-26} = 0x0;
  let Inst{25-16} = code_1;
  let Inst{15-6}  = code_2;
  let Inst{5-0}   = 0x07;
}

class SYS_FM_MM : MMArch {
  bits<10> code_;
  bits<32> Inst;
  let Inst{31-26} = 0x0;
  let Inst{25-16} = code_;
  let Inst{15-6}  = 0x22d;
  let Inst{5-0}   = 0x3c;
}

class WAIT_FM_MM : MMArch {
  bits<10> code_;
  bits<32> Inst;

  let Inst{31-26} = 0x00;
  let Inst{25-16} = code_;
  let Inst{15-6}  = 0x24d;
  let Inst{5-0}   = 0x3c;
}

class ER_FM_MM<bits<10> funct> : MMArch {
  bits<32> Inst;

  let Inst{31-26} = 0x00;
  let Inst{25-16} = 0x00;
  let Inst{15-6}  = funct;
  let Inst{5-0}   = 0x3c;
}

class EI_FM_MM<bits<10> funct> : MMArch {
  bits<32> Inst;
  bits<5> rt;

  let Inst{31-26} = 0x00;
  let Inst{25-21} = 0x00;
  let Inst{20-16} = rt;
  let Inst{15-6}  = funct;
  let Inst{5-0}   = 0x3c;
}

class TEQ_FM_MM<bits<6> funct> : MMArch {
  bits<5> rs;
  bits<5> rt;
  bits<4> code_;

  bits<32> Inst;

  let Inst{31-26} = 0x00;
  let Inst{25-21} = rt;
  let Inst{20-16} = rs;
  let Inst{15-12} = code_;
  let Inst{11-6}  = funct;
  let Inst{5-0}   = 0x3c;
}

class TEQI_FM_MM<bits<5> funct> : MMArch {
  bits<5> rs;
  bits<16> imm16;

  bits<32> Inst;

  let Inst{31-26} = 0x10;
  let Inst{25-21} = funct;
  let Inst{20-16} = rs;
  let Inst{15-0}  = imm16;
}

class LL_FM_MM<bits<4> funct> : MMArch {
  bits<5> rt;
  bits<21> addr;

  bits<32> Inst;

  let Inst{31-26} = 0x18;
  let Inst{25-21} = rt;
  let Inst{20-16} = addr{20-16};
  let Inst{15-12} = funct;
  let Inst{11-0}  = addr{11-0};
}

class LLE_FM_MM<bits<4> funct> : MMArch {
  bits<5> rt;
  bits<21> addr;
  bits<5> base = addr{20-16};
  bits<9> offset = addr{8-0};

  bits<32> Inst;

  let Inst{31-26} = 0x18;
  let Inst{25-21} = rt;
  let Inst{20-16} = base;
  let Inst{15-12} = funct;
  let Inst{11-9} = 0x6;
  let Inst{8-0} = offset;
}

class ADDS_FM_MM<bits<2> fmt, bits<8> funct> : MMArch {
  bits<5> ft;
  bits<5> fs;
  bits<5> fd;

  bits<32> Inst;

  let Inst{31-26} = 0x15;
  let Inst{25-21} = ft;
  let Inst{20-16} = fs;
  let Inst{15-11} = fd;
  let Inst{10}    = 0;
  let Inst{9-8}   = fmt;
  let Inst{7-0}   = funct;

}

class LWXC1_FM_MM<bits<9> funct> : MMArch {
  bits<5> fd;
  bits<5> base;
  bits<5> index;

  bits<32> Inst;

  let Inst{31-26} = 0x15;
  let Inst{25-21} = index;
  let Inst{20-16} = base;
  let Inst{15-11} = fd;
  let Inst{10-9}  = 0x0;
  let Inst{8-0}   = funct;
}

class SWXC1_FM_MM<bits<9> funct> : MMArch {
  bits<5> fs;
  bits<5> base;
  bits<5> index;

  bits<32> Inst;

  let Inst{31-26} = 0x15;
  let Inst{25-21} = index;
  let Inst{20-16} = base;
  let Inst{15-11} = fs;
  let Inst{10-9}  = 0x0;
  let Inst{8-0}   = funct;
}

class CEQS_FM_MM<bits<2> fmt> : MMArch {
  bits<5> fs;
  bits<5> ft;
  bits<3> fcc;
  bits<4> cond;

  bits<32> Inst;

  let Inst{31-26} = 0x15;
  let Inst{25-21} = ft;
  let Inst{20-16} = fs;
  let Inst{15-13} = fcc;
  let Inst{12}    = 0;
  let Inst{11-10} = fmt;
  let Inst{9-6}   = cond;
  let Inst{5-0}   = 0x3c;
}

class C_COND_FM_MM<bits <2> fmt, bits<4> c> : CEQS_FM_MM<fmt> {
  let cond = c;
}

class BC1F_FM_MM<bits<5> tf> : MMArch {
  bits<3> fcc;
  bits<16> offset;

  bits<32> Inst;

  let Inst{31-26} = 0x10;
  let Inst{25-21} = tf;
  let Inst{20-18} = fcc; // cc
  let Inst{17-16} = 0x0;
  let Inst{15-0}  = offset;
}

class ROUND_W_FM_MM<bits<1> fmt, bits<8> funct> : MMArch {
  bits<5> fd;
  bits<5> fs;

  bits<32> Inst;

  let Inst{31-26} = 0x15;
  let Inst{25-21} = fd;
  let Inst{20-16} = fs;
  let Inst{15}    = 0;
  let Inst{14}    = fmt;
  let Inst{13-6}  = funct;
  let Inst{5-0}   = 0x3b;
}

class ABS_FM_MM<bits<2> fmt, bits<7> funct> : MMArch {
  bits<5> fd;
  bits<5> fs;

  bits<32> Inst;

  let Inst{31-26} = 0x15;
  let Inst{25-21} = fd;
  let Inst{20-16} = fs;
  let Inst{15}    = 0;
  let Inst{14-13} = fmt;
  let Inst{12-6}  = funct;
  let Inst{5-0}   = 0x3b;
}

class CMov_F_F_FM_MM<bits<9> func, bits<2> fmt> : MMArch {
  bits<5> fd;
  bits<5> fs;
  bits<3> fcc;
  bits<32> Inst;

  let Inst{31-26} = 0x15;
  let Inst{25-21} = fd;
  let Inst{20-16} = fs;
  let Inst{15-13} = fcc; //cc
  let Inst{12-11} = 0x0;
  let Inst{10-9}  = fmt;
  let Inst{8-0}   = func;
}

class CMov_I_F_FM_MM<bits<8> funct, bits<2> fmt> : MMArch {
  bits<5> fd;
  bits<5> fs;
  bits<5> rt;

  bits<32> Inst;

  let Inst{31-26} = 0x15;
  let Inst{25-21} = rt;
  let Inst{20-16} = fs;
  let Inst{15-11} = fd;
  let Inst{9-8}   = fmt;
  let Inst{7-0}   = funct;
}

class MFC1_FM_MM<bits<8> funct> : MMArch {
  bits<5> rt;
  bits<5> fs;

  bits<32> Inst;

  let Inst{31-26} = 0x15;
  let Inst{25-21} = rt;
  let Inst{20-16} = fs;
  let Inst{15-14} = 0x0;
  let Inst{13-6}  = funct;
  let Inst{5-0}   = 0x3b;
}

class MADDS_FM_MM<bits<6> funct>: MMArch {
  bits<5> ft;
  bits<5> fs;
  bits<5> fd;
  bits<5> fr;

  bits<32> Inst;

  let Inst{31-26} = 0x15;
  let Inst{25-21} = ft;
  let Inst{20-16} = fs;
  let Inst{15-11} = fd;
  let Inst{10-6}  = fr;
  let Inst{5-0}   = funct;
}

class COMPACT_BRANCH_FM_MM<bits<5> funct> {
  bits<5>  rs;
  bits<16> offset;

  bits<32> Inst;

  let Inst{31-26} = 0x10;
  let Inst{25-21} = funct;
  let Inst{20-16} = rs;
  let Inst{15-0}  = offset;
}

class COP0_TLB_FM_MM<bits<10> op> : MMArch {
  bits<32> Inst;

  let Inst{31-26} = 0x0;
  let Inst{25-16} = 0x0;
  let Inst{15-6}  = op;
  let Inst{5-0}   = 0x3c;
}

class SDBBP_FM_MM : MMArch {
  bits<10> code_;

  bits<32> Inst;

  let Inst{31-26} = 0x0;
  let Inst{25-16} = code_;
  let Inst{15-6}  = 0x36d;
  let Inst{5-0}   = 0x3c;
}

class SIGRIE_FM_MM : MMArch {
  bits<16> code_;

  bits<32> Inst;

  let Inst{31-26} = 0x0;
  let Inst{25-22} = 0x0;
  let Inst{21-6} = code_;
  let Inst{5-0} = 0b111111;
}

class RDHWR_FM_MM : MMArch {
  bits<5> rt;
  bits<5> rd;

  bits<32> Inst;

  let Inst{31-26} = 0x0;
  let Inst{25-21} = rt;
  let Inst{20-16} = rd;
  let Inst{15-6}  = 0x1ac;
  let Inst{5-0}   = 0x3c;
}

class LWXS_FM_MM<bits<10> funct> {
  bits<5> rd;
  bits<5> base;
  bits<5> index;

  bits<32> Inst;

  let Inst{31-26} = 0x0;
  let Inst{25-21} = index;
  let Inst{20-16} = base;
  let Inst{15-11} = rd;
  let Inst{10}    = 0;
  let Inst{9-0}   = funct;
}

class LWM_FM_MM<bits<4> funct> : MMArch {
  bits<5> rt;
  bits<21> addr;

  bits<32> Inst;

  let Inst{31-26} = 0x8;
  let Inst{25-21} = rt;
  let Inst{20-16} = addr{20-16};
  let Inst{15-12} = funct;
  let Inst{11-0}  = addr{11-0};
}

class LWM_FM_MM16<bits<4> funct> : MMArch {
  bits<2> rt;
  bits<4> addr;

  bits<16> Inst;

  let Inst{15-10} = 0x11;
  let Inst{9-6}   = funct;
  let Inst{5-4}   = rt;
  let Inst{3-0}   = addr;
}

class CACHE_PREF_FM_MM<bits<6> op, bits<4> funct> : MMArch {
  bits<21> addr;
  bits<5> hint;
  bits<5> base = addr{20-16};
  bits<12> offset = addr{11-0};

  bits<32> Inst;

  let Inst{31-26} = op;
  let Inst{25-21} = hint;
  let Inst{20-16} = base;
  let Inst{15-12} = funct;
  let Inst{11-0}  = offset;
}

class CACHE_PREFE_FM_MM<bits<6> op, bits<3> funct> : MMArch {
  bits<21> addr;
  bits<5> hint;
  bits<5> base = addr{20-16};
  bits<9> offset = addr{8-0};

  bits<32> Inst;

  let Inst{31-26} = op;
  let Inst{25-21} = hint;
  let Inst{20-16} = base;
  let Inst{15-12} = 0xA;
  let Inst{11-9} = funct;
  let Inst{8-0}  = offset;
}

class POOL32F_PREFX_FM_MM<bits<6> op, bits<9> funct> : MMArch {
  bits<5> index;
  bits<5> base;
  bits<5> hint;

  bits<32> Inst;

  let Inst{31-26} = op;
  let Inst{25-21} = index;
  let Inst{20-16} = base;
  let Inst{15-11} = hint;
  let Inst{10-9}  = 0x0;
  let Inst{8-0}   = funct;
}

class BARRIER_FM_MM<bits<5> op> : MMArch {
  bits<32> Inst;

  let Inst{31-26} = 0x0;
  let Inst{25-21} = 0x0;
  let Inst{20-16} = 0x0;
  let Inst{15-11} = op;
  let Inst{10-6}  = 0x0;
  let Inst{5-0}   = 0x0;
}

class ADDIUPC_FM_MM {
  bits<3> rs;
  bits<23> imm;

  bits<32> Inst;

  let Inst{31-26} = 0x1e;
  let Inst{25-23} = rs;
  let Inst{22-0} = imm;
}

class POOL32A_CFTC2_FM_MM<bits<10> funct> : MMArch {
  bits<5> rt;
  bits<5> impl;

  bits<32> Inst;

  let Inst{31-26} = 0b000000;
  let Inst{25-21} = rt;
  let Inst{20-16} = impl;
  let Inst{15-6}  = funct;
  let Inst{5-0}   = 0b111100;
}

class POOL32A_TLBINV_FM_MM<bits<10> funct> : MMArch {
  bits<32> Inst;

  let Inst{31-26} = 0x0;
  let Inst{25-16} = 0x0;
  let Inst{15-6}  = funct;
  let Inst{5-0}   = 0b111100;
}

class POOL32A_MFTC0_FM_MM<bits<5> funct, bits<6> opcode> : MMArch {
  bits<5> rt;
  bits<5> rs;
  bits<3> sel;

  bits<32> Inst;

  let Inst{31-26} = 0b000000;
  let Inst{25-21} = rt;
  let Inst{20-16} = rs;
  let Inst{15-14} = 0;
  let Inst{13-11} = sel;
  let Inst{10-6}  = funct;
  let Inst{5-0}   = opcode;
}

class POOL32A_HYPCALL_FM_MM : MMArch {
  bits<32> Inst;

  bits<10> code_;

  let Inst{31-26} = 0x0;
  let Inst{25-16} = code_;
  let Inst{15-6}  = 0b1100001101;
  let Inst{5-0}   = 0b111100;
}
