blob: 26f2d39039052252d196f36d350d059652ca82a4 [file] [log] [blame]
/*===- 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;
}