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

bool ARMAsmPrinter::
emitPseudoExpansionLowering(MCStreamer &OutStreamer,
                            const MachineInstr *MI) {
  switch (MI->getOpcode()) {
  default: return false;
  case ARM::B: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::Bcc);
    // Operand: target
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: p
    TmpInst.addOperand(MCOperand::createImm(14));
    TmpInst.addOperand(MCOperand::createReg(0));
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::BLX_noip: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::BLX);
    // Operand: func
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::BLX_pred_noip: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::BLX_pred);
    // Operand: func
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: p
    TmpInst.addOperand(MCOperand::createImm(14));
    TmpInst.addOperand(MCOperand::createReg(0));
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::LDMIA_RET: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::LDMIA_UPD);
    // Operand: wb
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: Rn
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: p
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    lowerOperand(MI->getOperand(3), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: regs
    lowerOperand(MI->getOperand(4), MCOp);
    TmpInst.addOperand(MCOp);
    // variable_ops
    for (unsigned i = 5, e = MI->getNumOperands(); i != e; ++i)
      if (lowerOperand(MI->getOperand(i), MCOp))
        TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::MLAv5: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::MLA);
    // Operand: Rd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: Rn
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: Rm
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: Ra
    lowerOperand(MI->getOperand(3), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: p
    lowerOperand(MI->getOperand(4), MCOp);
    TmpInst.addOperand(MCOp);
    lowerOperand(MI->getOperand(5), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: s
    lowerOperand(MI->getOperand(6), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::MOVPCRX: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::MOVr);
    // Operand: Rd
    TmpInst.addOperand(MCOperand::createReg(ARM::PC));
    // Operand: Rm
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: p
    TmpInst.addOperand(MCOperand::createImm(14));
    TmpInst.addOperand(MCOperand::createReg(0));
    // Operand: s
    TmpInst.addOperand(MCOperand::createReg(0));
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::MULv5: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::MUL);
    // Operand: Rd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: Rn
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: Rm
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: p
    lowerOperand(MI->getOperand(3), MCOp);
    TmpInst.addOperand(MCOp);
    lowerOperand(MI->getOperand(4), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: s
    lowerOperand(MI->getOperand(5), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::SMLALv5: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::SMLAL);
    // Operand: RdLo
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: RdHi
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: Rn
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: Rm
    lowerOperand(MI->getOperand(3), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: RLo
    lowerOperand(MI->getOperand(4), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: RHi
    lowerOperand(MI->getOperand(5), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: p
    lowerOperand(MI->getOperand(6), MCOp);
    TmpInst.addOperand(MCOp);
    lowerOperand(MI->getOperand(7), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: s
    lowerOperand(MI->getOperand(8), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::SMULLv5: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::SMULL);
    // Operand: RdLo
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: RdHi
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: Rn
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: Rm
    lowerOperand(MI->getOperand(3), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: p
    lowerOperand(MI->getOperand(4), MCOp);
    TmpInst.addOperand(MCOp);
    lowerOperand(MI->getOperand(5), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: s
    lowerOperand(MI->getOperand(6), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::TAILJMPd: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::Bcc);
    // Operand: target
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: p
    TmpInst.addOperand(MCOperand::createImm(14));
    TmpInst.addOperand(MCOperand::createReg(0));
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::TAILJMPr: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::BX);
    // Operand: dst
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::TAILJMPr4: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::MOVr);
    // Operand: Rd
    TmpInst.addOperand(MCOperand::createReg(ARM::PC));
    // Operand: Rm
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: p
    TmpInst.addOperand(MCOperand::createImm(14));
    TmpInst.addOperand(MCOperand::createReg(0));
    // Operand: s
    TmpInst.addOperand(MCOperand::createReg(0));
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::UMLALv5: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::UMLAL);
    // Operand: RdLo
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: RdHi
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: Rn
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: Rm
    lowerOperand(MI->getOperand(3), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: RLo
    lowerOperand(MI->getOperand(4), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: RHi
    lowerOperand(MI->getOperand(5), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: p
    lowerOperand(MI->getOperand(6), MCOp);
    TmpInst.addOperand(MCOp);
    lowerOperand(MI->getOperand(7), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: s
    lowerOperand(MI->getOperand(8), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::UMULLv5: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::UMULL);
    // Operand: RdLo
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: RdHi
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: Rn
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: Rm
    lowerOperand(MI->getOperand(3), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: p
    lowerOperand(MI->getOperand(4), MCOp);
    TmpInst.addOperand(MCOp);
    lowerOperand(MI->getOperand(5), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: s
    lowerOperand(MI->getOperand(6), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::VMOVD0: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::VMOVv2i32);
    // Operand: Vd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: SIMM
    TmpInst.addOperand(MCOperand::createImm(0));
    // Operand: p
    TmpInst.addOperand(MCOperand::createImm(14));
    TmpInst.addOperand(MCOperand::createReg(0));
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::VMOVQ0: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::VMOVv4i32);
    // Operand: Vd
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: SIMM
    TmpInst.addOperand(MCOperand::createImm(0));
    // Operand: p
    TmpInst.addOperand(MCOperand::createImm(14));
    TmpInst.addOperand(MCOperand::createReg(0));
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::t2LDMIA_RET: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::t2LDMIA_UPD);
    // Operand: wb
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: Rn
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: p
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    lowerOperand(MI->getOperand(3), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: regs
    lowerOperand(MI->getOperand(4), MCOp);
    TmpInst.addOperand(MCOp);
    // variable_ops
    for (unsigned i = 5, e = MI->getNumOperands(); i != e; ++i)
      if (lowerOperand(MI->getOperand(i), MCOp))
        TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::tBLXr_noip: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::tBLXr);
    // Operand: p
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: func
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::tBRIND: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::tMOVr);
    // Operand: Rd
    TmpInst.addOperand(MCOperand::createReg(ARM::PC));
    // Operand: Rm
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: p
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::tBX_RET: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::tBX);
    // Operand: Rm
    TmpInst.addOperand(MCOperand::createReg(ARM::LR));
    // Operand: p
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::tBX_RET_vararg: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::tBX);
    // Operand: Rm
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: p
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::tBfar: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::tBL);
    // Operand: p
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: func
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::tLDMIA_UPD: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::tLDMIA);
    // Operand: Rn
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: p
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    lowerOperand(MI->getOperand(3), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: regs
    lowerOperand(MI->getOperand(4), MCOp);
    TmpInst.addOperand(MCOp);
    // variable_ops
    for (unsigned i = 5, e = MI->getNumOperands(); i != e; ++i)
      if (lowerOperand(MI->getOperand(i), MCOp))
        TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::tPOP_RET: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::tPOP);
    // Operand: p
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: regs
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    // variable_ops
    for (unsigned i = 3, e = MI->getNumOperands(); i != e; ++i)
      if (lowerOperand(MI->getOperand(i), MCOp))
        TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::tTAILJMPd: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::t2B);
    // Operand: target
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: p
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::tTAILJMPdND: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::tB);
    // Operand: target
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: p
    lowerOperand(MI->getOperand(1), MCOp);
    TmpInst.addOperand(MCOp);
    lowerOperand(MI->getOperand(2), MCOp);
    TmpInst.addOperand(MCOp);
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  case ARM::tTAILJMPr: {
    MCInst TmpInst;
    MCOperand MCOp;
    TmpInst.setOpcode(ARM::tBX);
    // Operand: Rm
    lowerOperand(MI->getOperand(0), MCOp);
    TmpInst.addOperand(MCOp);
    // Operand: p
    TmpInst.addOperand(MCOperand::createImm(14));
    TmpInst.addOperand(MCOperand::createReg(0));
    EmitToStreamer(OutStreamer, TmpInst);
    break;
  }
  }
  return true;
}

