/*===- 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::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::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::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::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::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; }