LLVM
8.0.1
|
#include "CodeGen/SelectionDAG/InstrEmitter.h"
Public Member Functions | |
MachineInstr * | EmitDbgValue (SDDbgValue *SD, DenseMap< SDValue, unsigned > &VRBaseMap) |
EmitDbgValue - Generate machine instruction for a dbg_value node. More... | |
MachineInstr * | EmitDbgLabel (SDDbgLabel *SD) |
Generate machine instruction for a dbg_label node. More... | |
void | EmitNode (SDNode *Node, bool IsClone, bool IsCloned, DenseMap< SDValue, unsigned > &VRBaseMap) |
EmitNode - Generate machine code for a node and needed dependencies. More... | |
MachineBasicBlock * | getBlock () |
getBlock - Return the current basic block. More... | |
MachineBasicBlock::iterator | getInsertPos () |
getInsertPos - Return the current insertion position. More... | |
InstrEmitter (MachineBasicBlock *mbb, MachineBasicBlock::iterator insertpos) | |
InstrEmitter - Construct an InstrEmitter and set it to start inserting at the given position in the given block. More... | |
Static Public Member Functions | |
static unsigned | CountResults (SDNode *Node) |
CountResults - The results of target nodes have register or immediate operands first, then an optional chain, and optional flag operands (which do not go into the machine instrs.) More... | |
Definition at line 29 of file InstrEmitter.h.
InstrEmitter::InstrEmitter | ( | MachineBasicBlock * | mbb, |
MachineBasicBlock::iterator | insertpos | ||
) |
InstrEmitter - Construct an InstrEmitter and set it to start inserting at the given position in the given block.
Definition at line 1160 of file InstrEmitter.cpp.
CountResults - The results of target nodes have register or immediate operands first, then an optional chain, and optional flag operands (which do not go into the machine instrs.)
CountResults - The results of target nodes have register or immediate operands first, then an optional chain, and optional glue operands (which do not go into the resulting MachineInstr).
Definition at line 45 of file InstrEmitter.cpp.
Referenced by EmitDbgLabel().
MachineInstr * InstrEmitter::EmitDbgLabel | ( | SDDbgLabel * | SD | ) |
Generate machine instruction for a dbg_label node.
Definition at line 784 of file InstrEmitter.cpp.
References llvm::MachineInstrBuilder::addMetadata(), llvm::TargetLowering::AdjustInstrPostInstrSelection(), llvm::ISD::ANNOTATION_LABEL, llvm::CallingConv::AnyReg, llvm::SmallVectorImpl< T >::append(), assert(), llvm::BuildMI(), llvm::PatchPointOpers::CCPos, llvm::ISD::CopyFromReg, llvm::ISD::CopyToReg, countOperands(), CountResults(), llvm::SDNode::dump(), llvm::RegState::EarlyClobber, llvm::ISD::EH_LABEL, llvm::SmallVectorBase::empty(), llvm::ISD::EntryToken, F(), llvm::MCInstrInfo::get(), llvm::SDNode::getConstantOperandVal(), llvm::SDDbgLabel::getDebugLoc(), llvm::SDNode::getDebugLoc(), llvm::SDNode::getFlags(), llvm::SDNode::getGluedUser(), llvm::MCInstrDesc::getImplicitDefs(), llvm::MCInstrDesc::getImplicitUses(), llvm::SDDbgLabel::getLabel(), llvm::SDNode::getMachineOpcode(), llvm::MCInstrDesc::getNumDefs(), llvm::MCInstrDesc::getNumImplicitDefs(), llvm::MCInstrDesc::getNumImplicitUses(), llvm::MCInstrDesc::getNumOperands(), llvm::SDNode::getNumValues(), llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), getReg(), llvm::TargetLowering::getScratchRegisters(), llvm::SDNode::getValueType(), llvm::MVT::Glue, llvm::SDNodeFlags::hasAllowContract(), llvm::SDNodeFlags::hasAllowReassociation(), llvm::SDNodeFlags::hasAllowReciprocal(), llvm::SDNode::hasAnyUseOfValue(), llvm::SDNodeFlags::hasApproximateFuncs(), llvm::SDNodeFlags::hasExact(), llvm::SDNodeFlags::hasNoInfs(), llvm::SDNodeFlags::hasNoNaNs(), llvm::SDNodeFlags::hasNoSignedWrap(), llvm::SDNodeFlags::hasNoSignedZeros(), llvm::SDNodeFlags::hasNoUnsignedWrap(), llvm::RegState::ImplicitDefine, llvm::MachineBasicBlock::insert(), llvm::TargetRegisterInfo::isPhysicalRegister(), llvm::MCInstrDesc::isVariadic(), llvm_unreachable, llvm::ISD::MERGE_VALUES, MI, llvm::SmallVectorTemplateBase< T, bool >::push_back(), Reg, llvm::MachineInstr::setFlag(), and llvm::ISD::TokenFactor.
Referenced by llvm::ScheduleDAGSDNodes::EmitSchedule().
MachineInstr * InstrEmitter::EmitDbgValue | ( | SDDbgValue * | SD, |
DenseMap< SDValue, unsigned > & | VRBaseMap | ||
) |
EmitDbgValue - Generate machine instruction for a dbg_value node.
Definition at line 695 of file InstrEmitter.cpp.
References llvm::MachineInstrBuilder::addCImm(), llvm::MachineInstrBuilder::addFPImm(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addMetadata(), llvm::MachineInstrBuilder::addReg(), assert(), llvm::BuildMI(), llvm::SDDbgValue::CONST, llvm::RegState::Debug, llvm::DenseMapBase< DenseMap< KeyT, ValueT, KeyInfoT, BucketT >, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::DenseMapBase< DenseMap< KeyT, ValueT, KeyInfoT, BucketT >, KeyT, ValueT, KeyInfoT, BucketT >::find(), llvm::SDDbgValue::FRAMEIX, llvm::MCInstrInfo::get(), llvm::SDDbgValue::getConst(), llvm::SDDbgValue::getDebugLoc(), llvm::SDDbgValue::getExpression(), llvm::SDDbgValue::getFrameIx(), llvm::SDDbgValue::getKind(), llvm::SDValue::getNumOperands(), llvm::SDDbgValue::getResNo(), llvm::SDDbgValue::getSDNode(), llvm::SDDbgValue::getVariable(), llvm::SDDbgValue::getVReg(), I, llvm::SDDbgValue::isIndirect(), llvm::SDDbgValue::isInvalidated(), llvm::SDDbgValue::SDNODE, llvm::SDDbgValue::setIsEmitted(), and llvm::SDDbgValue::VREG.
Referenced by llvm::ScheduleDAGSDNodes::EmitSchedule(), and ProcessSDDbgValues().
|
inline |
EmitNode - Generate machine code for a node and needed dependencies.
Definition at line 121 of file InstrEmitter.h.
References llvm::SDNode::isMachineOpcode().
Referenced by llvm::ScheduleDAGSDNodes::EmitSchedule().
|
inline |
getBlock - Return the current basic block.
Definition at line 130 of file InstrEmitter.h.
Referenced by llvm::ScheduleDAGSDNodes::EmitSchedule(), ProcessSDDbgValues(), and ProcessSourceNode().
|
inline |
getInsertPos - Return the current insertion position.
Definition at line 133 of file InstrEmitter.h.
Referenced by llvm::ScheduleDAGSDNodes::EmitSchedule(), ProcessSDDbgValues(), and ProcessSourceNode().