/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|*                                                                            *|
|* Pseudo-instruction MC lowering Source Fragment                             *|
|*                                                                            *|
|* Automatically generated file, do not edit!                                 *|
|*                                                                            *|
\*===----------------------------------------------------------------------===*/

bool MipsAsmPrinter::
emitPseudoExpansionLowering(MCStreamer &OutStreamer,
                            const MachineInstr *MI) {
  switch (MI->getOpcode()) {
  default: return false;
  case Mips::AND_V_D_PSEUDO: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::AND_V);
    // Operand: wd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: ws
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::AND_V_H_PSEUDO: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::AND_V);
    // Operand: wd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: ws
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::AND_V_W_PSEUDO: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::AND_V);
    // Operand: wd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: ws
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::B: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::BEQ);
    // Operand: rs
    TmpInst.addOperand(MCOperand::createReg(Mips::ZERO));
    // Operand: rt
    TmpInst.addOperand(MCOperand::createReg(Mips::ZERO));
    // Operand: offset
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::BAL_BR: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::BGEZAL);
    // Operand: rs
    TmpInst.addOperand(MCOperand::createReg(Mips::ZERO));
    // Operand: offset
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::BAL_BR_MM: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::BGEZAL_MM);
    // Operand: rs
    TmpInst.addOperand(MCOperand::createReg(Mips::ZERO));
    // Operand: offset
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::BSEL_D_PSEUDO: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::BSEL_V);
    // Operand: wd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wd_in
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: ws
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wt
    lowerOperand(MI->getOperand(3), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::BSEL_FD_PSEUDO: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::BSEL_V);
    // Operand: wd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wd_in
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: ws
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wt
    lowerOperand(MI->getOperand(3), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::BSEL_FW_PSEUDO: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::BSEL_V);
    // Operand: wd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wd_in
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: ws
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wt
    lowerOperand(MI->getOperand(3), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::BSEL_H_PSEUDO: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::BSEL_V);
    // Operand: wd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wd_in
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: ws
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wt
    lowerOperand(MI->getOperand(3), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::BSEL_W_PSEUDO: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::BSEL_V);
    // Operand: wd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wd_in
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: ws
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wt
    lowerOperand(MI->getOperand(3), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::B_MM: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::BEQ_MM);
    // Operand: rs
    TmpInst.addOperand(MCOperand::createReg(Mips::ZERO));
    // Operand: rt
    TmpInst.addOperand(MCOperand::createReg(Mips::ZERO));
    // Operand: offset
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::FABS_D: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::FMAX_A_D);
    // Operand: wd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: ws
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wt
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::FABS_W: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::FMAX_A_W);
    // Operand: wd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: ws
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wt
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::JALR64Pseudo: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JALR);
    // Operand: rd
    TmpInst.addOperand(MCOperand::createReg(Mips::RA));
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::JALRHB64Pseudo: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JALR_HB64);
    // Operand: rd
    TmpInst.addOperand(MCOperand::createReg(Mips::RA_64));
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::JALRHBPseudo: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JALR_HB);
    // Operand: rd
    TmpInst.addOperand(MCOperand::createReg(Mips::RA));
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::JALRPseudo: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JALR);
    // Operand: rd
    TmpInst.addOperand(MCOperand::createReg(Mips::RA));
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::JAL_MMR6: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::BALC_MMR6);
    // Operand: offset
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::NOP: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::SLL);
    // Operand: rd
    TmpInst.addOperand(MCOperand::createReg(Mips::ZERO));
    // Operand: rt
    TmpInst.addOperand(MCOperand::createReg(Mips::ZERO));
    // Operand: shamt
    TmpInst.addOperand(MCOperand::createImm(0));
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::NOR_V_D_PSEUDO: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::NOR_V);
    // Operand: wd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: ws
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::NOR_V_H_PSEUDO: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::NOR_V);
    // Operand: wd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: ws
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::NOR_V_W_PSEUDO: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::NOR_V);
    // Operand: wd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: ws
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::OR_V_D_PSEUDO: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::OR_V);
    // Operand: wd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: ws
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::OR_V_H_PSEUDO: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::OR_V);
    // Operand: wd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: ws
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::OR_V_W_PSEUDO: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::OR_V);
    // Operand: wd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: ws
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoCMPU_EQ_QB: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::CMPU_EQ_QB);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoCMPU_LE_QB: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::CMPU_LE_QB);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoCMPU_LT_QB: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::CMPU_LT_QB);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoCMP_EQ_PH: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::CMP_EQ_PH);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoCMP_LE_PH: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::CMP_LE_PH);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoCMP_LT_PH: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::CMP_LT_PH);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoDMULT: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::DMULT);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoDMULTu: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::DMULTu);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoDSDIV: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::DSDIV);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoDUDIV: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::DUDIV);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoIndirectBranch: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JR);
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoIndirectBranch64: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JR64);
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoIndirectBranch64R6: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JALR64);
    // Operand: rd
    TmpInst.addOperand(MCOperand::createReg(Mips::ZERO_64));
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoIndirectBranchR6: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JALR);
    // Operand: rd
    TmpInst.addOperand(MCOperand::createReg(Mips::ZERO));
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoIndirectBranch_MM: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JR_MM);
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoIndirectBranch_MMR6: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JRC16_MMR6);
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoIndirectHazardBranch: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JR_HB);
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoIndirectHazardBranch64: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JR_HB64);
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoIndrectHazardBranch64R6: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JR_HB64_R6);
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoIndrectHazardBranchR6: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JR_HB_R6);
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoMADD: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::MADD);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoMADDU: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::MADDU);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoMADDU_MM: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::MADDU);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoMADD_MM: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::MADD);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoMSUB: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::MSUB);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoMSUBU: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::MSUBU);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoMSUBU_MM: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::MSUBU);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoMSUB_MM: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::MSUB);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoMULT: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::MULT);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoMULT_MM: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::MULT);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoMULTu: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::MULTu);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoMULTu_MM: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::MULTu);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoPICK_PH: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::PICK_PH);
    // Operand: rd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rs
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(3), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoPICK_QB: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::PICK_QB);
    // Operand: rd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rs
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(3), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoSDIV: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::SDIV);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::PseudoUDIV: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::UDIV);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::SDIV_MM_Pseudo: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::SDIV_MM);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::TAILCALL: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::J);
    // Operand: target
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::TAILCALL64R6REG: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JALR64);
    // Operand: rd
    TmpInst.addOperand(MCOperand::createReg(Mips::ZERO_64));
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::TAILCALLHB64R6REG: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JR_HB64_R6);
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::TAILCALLHBR6REG: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JR_HB_R6);
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::TAILCALLR6REG: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JALR);
    // Operand: rd
    TmpInst.addOperand(MCOperand::createReg(Mips::ZERO));
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::TAILCALLREG: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JR);
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::TAILCALLREG64: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JR64);
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::TAILCALLREGHB: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JR_HB);
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::TAILCALLREGHB64: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JR_HB64);
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::TAILCALLREG_MM: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JRC16_MM);
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::TAILCALLREG_MMR6: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::JRC16_MM);
    // Operand: rs
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::TAILCALL_MM: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::J_MM);
    // Operand: target
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::TAILCALL_MMR6: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::BC_MMR6);
    // Operand: offset
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::TRAP: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::BREAK);
    // Operand: code_1
    TmpInst.addOperand(MCOperand::createImm(0));
    // Operand: code_2
    TmpInst.addOperand(MCOperand::createImm(0));
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::TRAP_MM: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::BREAK_MM);
    // Operand: code_1
    TmpInst.addOperand(MCOperand::createImm(0));
    // Operand: code_2
    TmpInst.addOperand(MCOperand::createImm(0));
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::UDIV_MM_Pseudo: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::UDIV_MM);
    // Operand: rs
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: rt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::XOR_V_D_PSEUDO: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::XOR_V);
    // Operand: wd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: ws
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::XOR_V_H_PSEUDO: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::XOR_V);
    // Operand: wd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: ws
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case Mips::XOR_V_W_PSEUDO: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(Mips::XOR_V);
    // Operand: wd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: ws
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: wt
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  }
  return true;
}

