LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
llvm::SelectionDAGISel Class Referenceabstract

#include <SelectionDAGISel.h>

Inheritance diagram for llvm::SelectionDAGISel:
Inheritance graph
[legend]
Collaboration diagram for llvm::SelectionDAGISel:
Collaboration graph
[legend]

Public Types

enum  BuiltinOpcodes {
  OPC_Scope, OPC_RecordNode, OPC_RecordChild0, OPC_RecordChild1,
  OPC_RecordChild2, OPC_RecordChild3, OPC_RecordChild4, OPC_RecordChild5,
  OPC_RecordChild6, OPC_RecordChild7, OPC_RecordMemRef, OPC_CaptureGlueInput,
  OPC_MoveChild, OPC_MoveParent, OPC_CheckSame, OPC_CheckChild0Same,
  OPC_CheckChild1Same, OPC_CheckChild2Same, OPC_CheckChild3Same, OPC_CheckPatternPredicate,
  OPC_CheckPredicate, OPC_CheckOpcode, OPC_SwitchOpcode, OPC_CheckType,
  OPC_SwitchType, OPC_CheckChild0Type, OPC_CheckChild1Type, OPC_CheckChild2Type,
  OPC_CheckChild3Type, OPC_CheckChild4Type, OPC_CheckChild5Type, OPC_CheckChild6Type,
  OPC_CheckChild7Type, OPC_CheckInteger, OPC_CheckCondCode, OPC_CheckValueType,
  OPC_CheckComplexPat, OPC_CheckAndImm, OPC_CheckOrImm, OPC_CheckFoldableChainNode,
  OPC_EmitInteger, OPC_EmitRegister, OPC_EmitRegister2, OPC_EmitConvertToTarget,
  OPC_EmitMergeInputChains, OPC_EmitMergeInputChains1_0, OPC_EmitMergeInputChains1_1, OPC_EmitCopyToReg,
  OPC_EmitNodeXForm, OPC_EmitNode, OPC_MorphNodeTo, OPC_MarkGlueResults,
  OPC_CompleteMatch
}
 
enum  {
  OPFL_None = 0, OPFL_Chain = 1, OPFL_GlueInput = 2, OPFL_GlueOutput = 4,
  OPFL_MemRefs = 8, OPFL_Variadic0 = 1<<4, OPFL_Variadic1 = 2<<4, OPFL_Variadic2 = 3<<4,
  OPFL_Variadic3 = 4<<4, OPFL_Variadic4 = 5<<4, OPFL_Variadic5 = 6<<4, OPFL_Variadic6 = 7<<4,
  OPFL_VariadicInfo = OPFL_Variadic6
}
 

Public Member Functions

 SelectionDAGISel (TargetMachine &tm, CodeGenOpt::Level OL=CodeGenOpt::Default)
 
virtual ~SelectionDAGISel ()
 
const TargetLoweringgetTargetLowering () const
 
virtual void getAnalysisUsage (AnalysisUsage &AU) const
 
virtual bool runOnMachineFunction (MachineFunction &MF)
 
virtual void EmitFunctionEntryCode ()
 
virtual void PreprocessISelDAG ()
 
virtual void PostprocessISelDAG ()
 
virtual SDNodeSelect (SDNode *N)=0
 Select - Main hook targets implement to select a node. More...
 
virtual bool SelectInlineAsmMemoryOperand (const SDValue &Op, char ConstraintCode, std::vector< SDValue > &OutOps)
 
virtual bool IsProfitableToFold (SDValue N, SDNode *U, SDNode *Root) const
 
bool CheckAndMask (SDValue LHS, ConstantSDNode *RHS, int64_t DesiredMaskS) const
 
bool CheckOrMask (SDValue LHS, ConstantSDNode *RHS, int64_t DesiredMaskS) const
 
virtual bool CheckPatternPredicate (unsigned PredNo) const
 
virtual bool CheckNodePredicate (SDNode *N, unsigned PredNo) const
 
virtual bool CheckComplexPattern (SDNode *Root, SDNode *Parent, SDValue N, unsigned PatternNo, SmallVectorImpl< std::pair< SDValue, SDNode * > > &Result)
 
virtual SDValue RunSDNodeXForm (SDValue V, unsigned XFormNo)
 
SDNodeSelectCodeCommon (SDNode *NodeToMatch, const unsigned char *MatcherTable, unsigned TableSize)
 
- Public Member Functions inherited from llvm::FunctionPass
 FunctionPass (char &pid)
 
PasscreatePrinterPass (raw_ostream &O, const std::string &Banner) const
 createPrinterPass - Get a function printer pass. More...
 
virtual void assignPassManager (PMStack &PMS, PassManagerType T)
 
virtual PassManagerType getPotentialPassManagerType () const
 Return what kind of Pass Manager can manage this pass. More...
 
- Public Member Functions inherited from llvm::Pass
 Pass (PassKind K, char &pid)
 
virtual ~Pass ()
 
PassKind getPassKind () const
 
virtual const char * getPassName () const
 
AnalysisID getPassID () const
 getPassID - Return the PassID number that corresponds to this pass. More...
 
virtual bool doInitialization (Module &)
 
virtual bool doFinalization (Module &)
 
virtual void print (raw_ostream &O, const Module *M) const
 
void dump () const
 
virtual void preparePassManager (PMStack &)
 Check if available pass managers are suitable for this pass or not. More...
 
void setResolver (AnalysisResolver *AR)
 
AnalysisResolvergetResolver () const
 
virtual void releaseMemory ()
 
virtual void * getAdjustedAnalysisPointer (AnalysisID ID)
 
virtual ImmutablePassgetAsImmutablePass ()
 
virtual PMDataManagergetAsPMDataManager ()
 
virtual void verifyAnalysis () const
 
virtual void dumpPassStructure (unsigned Offset=0)
 
template<typename AnalysisType >
AnalysisType * getAnalysisIfAvailable () const
 
bool mustPreserveAnalysisID (char &AID) const
 
template<typename AnalysisType >
AnalysisType & getAnalysis () const
 
template<typename AnalysisType >
AnalysisType & getAnalysis (Function &F)
 
template<typename AnalysisType >
AnalysisType & getAnalysisID (AnalysisID PI) const
 
template<typename AnalysisType >
AnalysisType & getAnalysisID (AnalysisID PI, Function &F)
 

Static Public Member Functions

static bool IsLegalToFold (SDValue N, SDNode *U, SDNode *Root, CodeGenOpt::Level OptLevel, bool IgnoreChains=false)
 
static int getNumFixedFromVariadicInfo (unsigned Flags)
 
- Static Public Member Functions inherited from llvm::Pass
static const PassInfolookupPassInfo (const void *TI)
 
static const PassInfolookupPassInfo (StringRef Arg)
 
static PasscreatePass (AnalysisID ID)
 

Public Attributes

TargetMachineTM
 
const TargetLibraryInfoLibInfo
 
const TargetTransformInfoTTI
 
FunctionLoweringInfoFuncInfo
 
MachineFunctionMF
 
MachineRegisterInfoRegInfo
 
SelectionDAGCurDAG
 
SelectionDAGBuilderSDB
 
AliasAnalysisAA
 
GCFunctionInfoGFI
 
CodeGenOpt::Level OptLevel
 

Static Public Attributes

static char ID = 0
 

Protected Member Functions

void ReplaceUses (SDValue F, SDValue T)
 
void ReplaceUses (const SDValue *F, const SDValue *T, unsigned Num)
 
void ReplaceUses (SDNode *F, SDNode *T)
 
void SelectInlineAsmMemoryOperands (std::vector< SDValue > &Ops)
 
- Protected Member Functions inherited from llvm::MachineFunctionPass
 MachineFunctionPass (char &ID)
 

Protected Attributes

unsigned DAGSize
 

Detailed Description

SelectionDAGISel - This is the common base class used for SelectionDAG-based pattern-matching instruction selectors.

Definition at line 42 of file SelectionDAGISel.h.

Member Enumeration Documentation

anonymous enum
Enumerator
OPFL_None 
OPFL_Chain 
OPFL_GlueInput 
OPFL_GlueOutput 
OPFL_MemRefs 
OPFL_Variadic0 
OPFL_Variadic1 
OPFL_Variadic2 
OPFL_Variadic3 
OPFL_Variadic4 
OPFL_Variadic5 
OPFL_Variadic6 
OPFL_VariadicInfo 

Definition at line 149 of file SelectionDAGISel.h.

Enumerator
OPC_Scope 
OPC_RecordNode 
OPC_RecordChild0 
OPC_RecordChild1 
OPC_RecordChild2 
OPC_RecordChild3 
OPC_RecordChild4 
OPC_RecordChild5 
OPC_RecordChild6 
OPC_RecordChild7 
OPC_RecordMemRef 
OPC_CaptureGlueInput 
OPC_MoveChild 
OPC_MoveParent 
OPC_CheckSame 
OPC_CheckChild0Same 
OPC_CheckChild1Same 
OPC_CheckChild2Same 
OPC_CheckChild3Same 
OPC_CheckPatternPredicate 
OPC_CheckPredicate 
OPC_CheckOpcode 
OPC_SwitchOpcode 
OPC_CheckType 
OPC_SwitchType 
OPC_CheckChild0Type 
OPC_CheckChild1Type 
OPC_CheckChild2Type 
OPC_CheckChild3Type 
OPC_CheckChild4Type 
OPC_CheckChild5Type 
OPC_CheckChild6Type 
OPC_CheckChild7Type 
OPC_CheckInteger 
OPC_CheckCondCode 
OPC_CheckValueType 
OPC_CheckComplexPat 
OPC_CheckAndImm 
OPC_CheckOrImm 
OPC_CheckFoldableChainNode 
OPC_EmitInteger 
OPC_EmitRegister 
OPC_EmitRegister2 
OPC_EmitConvertToTarget 
OPC_EmitMergeInputChains 
OPC_EmitMergeInputChains1_0 
OPC_EmitMergeInputChains1_1 
OPC_EmitCopyToReg 
OPC_EmitNodeXForm 
OPC_EmitNode 
OPC_MorphNodeTo 
OPC_MarkGlueResults 
OPC_CompleteMatch 

Definition at line 106 of file SelectionDAGISel.h.

Constructor & Destructor Documentation

SelectionDAGISel::SelectionDAGISel ( TargetMachine tm,
CodeGenOpt::Level  OL = CodeGenOpt::Default 
)
explicit
SelectionDAGISel::~SelectionDAGISel ( )
virtual

Definition at line 332 of file SelectionDAGISel.cpp.

References CurDAG, FuncInfo, and SDB.

Member Function Documentation

bool SelectionDAGISel::CheckAndMask ( SDValue  LHS,
ConstantSDNode RHS,
int64_t  DesiredMaskS 
) const

CheckAndMask - The isel is trying to match something like (and X, 255). If the dag combiner simplified the 255, we still want to match. RHS is the actual value in the DAG on the RHS of an AND, and DesiredMaskS is the value specified in the .td file (e.g. 255).

Definition at line 1559 of file SelectionDAGISel.cpp.

References CurDAG, llvm::ConstantSDNode::getAPIntValue(), llvm::SDValue::getValueSizeInBits(), llvm::APInt::intersects(), and llvm::SelectionDAG::MaskedValueIsZero().

Referenced by CheckAndImm().

virtual bool llvm::SelectionDAGISel::CheckComplexPattern ( SDNode Root,
SDNode Parent,
SDValue  N,
unsigned  PatternNo,
SmallVectorImpl< std::pair< SDValue, SDNode * > > &  Result 
)
inlinevirtual

Definition at line 227 of file SelectionDAGISel.h.

References llvm_unreachable.

Referenced by SelectCodeCommon().

virtual bool llvm::SelectionDAGISel::CheckNodePredicate ( SDNode N,
unsigned  PredNo 
) const
inlinevirtual

CheckNodePredicate - This function is generated by tblgen in the target. It runs node predicate number PredNo and returns true if it succeeds or false if it fails. The number is a private implementation detail to the code tblgen produces.

Definition at line 223 of file SelectionDAGISel.h.

References llvm_unreachable.

Referenced by CheckNodePredicate(), and SelectCodeCommon().

bool SelectionDAGISel::CheckOrMask ( SDValue  LHS,
ConstantSDNode RHS,
int64_t  DesiredMaskS 
) const

CheckOrMask - The isel is trying to match something like (or X, 255). If the dag combiner simplified the 255, we still want to match. RHS is the actual value in the DAG on the RHS of an OR, and DesiredMaskS is the value specified in the .td file (e.g. 255).

Definition at line 1588 of file SelectionDAGISel.cpp.

References llvm::SelectionDAG::ComputeMaskedBits(), CurDAG, llvm::ConstantSDNode::getAPIntValue(), llvm::SDValue::getValueSizeInBits(), and llvm::APInt::intersects().

Referenced by CheckOrImm().

virtual bool llvm::SelectionDAGISel::CheckPatternPredicate ( unsigned  PredNo) const
inlinevirtual

CheckPatternPredicate - This function is generated by tblgen in the target. It runs the specified pattern predicate and returns true if it succeeds or false if it fails. The number is a private implementation detail to the code tblgen produces.

Definition at line 215 of file SelectionDAGISel.h.

References llvm_unreachable.

Referenced by CheckPatternPredicate(), and SelectCodeCommon().

virtual void llvm::SelectionDAGISel::EmitFunctionEntryCode ( )
inlinevirtual

Definition at line 69 of file SelectionDAGISel.h.

void SelectionDAGISel::getAnalysisUsage ( AnalysisUsage AU) const
virtual

getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.

For MachineFunctionPasses, calling AU.preservesCFG() indicates that the pass does not modify the MachineBasicBlock CFG.

Reimplemented from llvm::MachineFunctionPass.

Definition at line 338 of file SelectionDAGISel.cpp.

References llvm::AnalysisUsage::addPreserved(), llvm::AnalysisUsage::addRequired(), llvm::MachineFunctionPass::getAnalysisUsage(), llvm::CodeGenOpt::None, OptLevel, and UseMBPI.

static int llvm::SelectionDAGISel::getNumFixedFromVariadicInfo ( unsigned  Flags)
inlinestatic

getNumFixedFromVariadicInfo - Transform an EmitNode flags word into the number of fixed arity values that should be skipped when copying from the root.

Definition at line 169 of file SelectionDAGISel.h.

References OPFL_VariadicInfo.

Referenced by SelectCodeCommon().

const TargetLowering* llvm::SelectionDAGISel::getTargetLowering ( ) const
inline
bool SelectionDAGISel::IsLegalToFold ( SDValue  N,
SDNode U,
SDNode Root,
CodeGenOpt::Level  OptLevel,
bool  IgnoreChains = false 
)
static

IsLegalToFold - Returns true if the specific operand node N of U can be folded during instruction selection that starts at Root. FIXME: This is a static member function because the MSP430/X86 targets, which uses it during isel. This could become a proper member.

IsLegalToFold - Returns true if the specific operand node N of U can be folded during instruction selection that starts at Root.

Definition at line 1730 of file SelectionDAGISel.cpp.

References findGlueUse(), findNonImmUse(), llvm::SDValue::getNode(), llvm::SDNode::getNumValues(), llvm::SDNode::getValueType(), llvm::MVT::Glue, and llvm::CodeGenOpt::None.

Referenced by SelectCodeCommon().

bool SelectionDAGISel::IsProfitableToFold ( SDValue  N,
SDNode U,
SDNode Root 
) const
virtual

IsProfitableToFold - Returns true if it's profitable to fold the specific operand node N of U during instruction selection that starts at Root.

Definition at line 1722 of file SelectionDAGISel.cpp.

References llvm::SDValue::hasOneUse(), llvm::CodeGenOpt::None, and OptLevel.

Referenced by SelectCodeCommon().

virtual void llvm::SelectionDAGISel::PostprocessISelDAG ( )
inlinevirtual

PostprocessISelDAG() - This hook allows the target to hack on the graph right after selection.

Definition at line 77 of file SelectionDAGISel.h.

virtual void llvm::SelectionDAGISel::PreprocessISelDAG ( )
inlinevirtual

PreprocessISelDAG - This hook allows targets to hack on the graph before instruction selection starts.

Definition at line 73 of file SelectionDAGISel.h.

void llvm::SelectionDAGISel::ReplaceUses ( SDValue  F,
SDValue  T 
)
inlineprotected

ReplaceUses - replace all uses of the old node F with the use of the new node T.

Definition at line 181 of file SelectionDAGISel.h.

References CurDAG, and llvm::SelectionDAG::ReplaceAllUsesOfValueWith().

void llvm::SelectionDAGISel::ReplaceUses ( const SDValue F,
const SDValue T,
unsigned  Num 
)
inlineprotected

ReplaceUses - replace all uses of the old nodes F with the use of the new nodes T.

Definition at line 187 of file SelectionDAGISel.h.

References CurDAG, and llvm::SelectionDAG::ReplaceAllUsesOfValuesWith().

void llvm::SelectionDAGISel::ReplaceUses ( SDNode F,
SDNode T 
)
inlineprotected

ReplaceUses - replace all uses of the old node F with the use of the new node T.

Definition at line 193 of file SelectionDAGISel.h.

References CurDAG, and llvm::SelectionDAG::ReplaceAllUsesWith().

bool SelectionDAGISel::runOnMachineFunction ( MachineFunction MF)
virtual

runOnMachineFunction - This method must be overloaded to perform the desired machine code transformation or analysis.

Implements llvm::MachineFunctionPass.

Reimplemented in llvm::MipsDAGToDAGISel.

Definition at line 387 of file SelectionDAGISel.cpp.

References AA, llvm::FunctionLoweringInfo::ArgDbgValues, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT >::begin(), llvm::MachineBasicBlock::begin(), llvm::MachineFunction::begin(), llvm::FunctionLoweringInfo::BPI, llvm::BuildMI(), llvm::Function::callsFunctionThatReturnsTwice(), llvm::FunctionLoweringInfo::clear(), llvm::MachineRegisterInfo::constrainRegClass(), CurDAG, llvm::TargetOpcode::DBG_VALUE, llvm::dbgs(), DEBUG, llvm::tgtok::Def, llvm::MachineRegisterInfo::EmitLiveInCopies(), llvm::TargetOptions::EnableFastISel, EnableFastISelAbort, EnableFastISelVerbose, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT >::end(), llvm::MachineBasicBlock::end(), llvm::MachineFunction::end(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT >::find(), llvm::MachineRegisterInfo::freezeReservedRegs(), FuncInfo, llvm::MCInstrInfo::get(), llvm::MachineInstr::getDebugLoc(), llvm::MachineFunction::getFrameInfo(), llvm::TargetRegisterInfo::getFrameRegister(), llvm::MachineFunction::getFunction(), llvm::MachineOperand::getImm(), llvm::TargetMachine::getInstrInfo(), llvm::Value::getName(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getReg(), llvm::MachineRegisterInfo::getRegClass(), llvm::MachineFunction::getRegInfo(), llvm::TargetMachine::getRegisterInfo(), llvm::TargetMachine::getSubtarget(), llvm::TargetMachine::getTargetLowering(), llvm::MachineRegisterInfo::getVRegDef(), GFI, llvm::MachineFrameInfo::hasCalls(), llvm::Function::hasFnAttribute(), llvm::Function::hasGC(), llvm::MachineFunction::hasMSInlineAsm(), I, llvm::ARM_PROC::IE, llvm::SelectionDAG::init(), llvm::SelectionDAGBuilder::init(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT >::insert(), llvm::MachineBasicBlock::insert(), llvm::MachineBasicBlock::insertAfter(), llvm::MCInstrDesc::isCall(), llvm::MachineInstr::isCopy(), llvm::MachineInstr::isDebugValue(), llvm::MachineOperand::isFI(), llvm::MachineInstr::isIndirectDebugValue(), llvm::TargetRegisterInfo::isPhysicalRegister(), llvm::MCInstrDesc::isReturn(), llvm::TargetRegisterInfo::isVirtualRegister(), LI, LibInfo, llvm::MachineRegisterInfo::livein_begin(), llvm::MachineRegisterInfo::livein_end(), MF, llvm::A64CC::MI, MRI, llvm::next(), llvm::CodeGenOpt::None, llvm::Attribute::OptimizeNone, llvm::TargetMachine::Options, OptLevel, llvm::FunctionLoweringInfo::RegFixups, RegInfo, llvm::MachineRegisterInfo::replaceRegWith(), llvm::TargetSubtargetInfo::resetSubtargetFeatures(), llvm::TargetMachine::resetTargetOptions(), SDB, llvm::FunctionLoweringInfo::set(), llvm::MachineFunction::setExposesReturnsTwice(), llvm::MachineFrameInfo::setHasCalls(), llvm::MachineFunction::setHasMSInlineAsm(), SplitCriticalSideEffectEdges(), llvm::A64DB::ST, TII, TM, TTI, llvm::MachineRegisterInfo::use_begin(), UseMBPI, and llvm::TargetRegisterInfo::virtReg2Index().

Referenced by llvm::MipsDAGToDAGISel::runOnMachineFunction().

virtual SDValue llvm::SelectionDAGISel::RunSDNodeXForm ( SDValue  V,
unsigned  XFormNo 
)
inlinevirtual

Definition at line 233 of file SelectionDAGISel.h.

References llvm_unreachable.

Referenced by SelectCodeCommon().

virtual SDNode* llvm::SelectionDAGISel::Select ( SDNode N)
pure virtual

Select - Main hook targets implement to select a node.

SDNode * SelectionDAGISel::SelectCodeCommon ( SDNode NodeToMatch,
const unsigned char *  MatcherTable,
unsigned  TableSize 
)

Definition at line 2350 of file SelectionDAGISel.cpp.

References llvm::MachineFunction::allocateMemRefsArray(), llvm::ISD::AssertSext, llvm::ISD::AssertZext, llvm::SmallVectorTemplateCommon< T >::back(), llvm::ISD::BasicBlock, llvm::SmallVectorTemplateCommon< T >::begin(), CheckAndImm(), CheckChildSame(), CheckChildType(), CheckComplexPattern(), CheckCondCode(), CheckInteger(), CheckNodePredicate(), CheckOpcode(), CheckOrImm(), CheckPatternPredicate(), CheckSame(), CheckType(), CheckValueType(), llvm::SmallVectorImpl< T >::clear(), llvm::ISD::Constant, llvm::ISD::ConstantFP, llvm::ISD::CopyFromReg, llvm::ISD::CopyToReg, CurDAG, llvm::SmallVectorTemplateCommon< T >::data(), llvm::dbgs(), DEBUG, llvm::ISD::DELETED_NODE, llvm::SDNode::dump(), llvm::ISD::EH_LABEL, llvm::SmallVectorBase::empty(), llvm::SmallVectorTemplateCommon< T >::end(), llvm::ISD::EntryToken, llvm::MCInstrInfo::get(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getConstantFP(), llvm::SelectionDAG::getCopyToReg(), llvm::SelectionDAG::getEntryNode(), llvm::TargetMachine::getInstrInfo(), llvm::SelectionDAG::getMachineNode(), llvm::SDValue::getNode(), getNumFixedFromVariadicInfo(), llvm::SDValue::getNumOperands(), llvm::SDNode::getNumOperands(), llvm::SDNode::getNumValues(), llvm::SDValue::getOpcode(), llvm::SDNode::getOpcode(), llvm::SDValue::getOperand(), llvm::SDNode::getOperand(), llvm::TargetLoweringBase::getPointerTy(), llvm::SelectionDAG::getRegister(), llvm::EVT::getSizeInBits(), llvm::SelectionDAG::getTargetConstant(), getTargetLowering(), llvm::SDValue::getValue(), llvm::SDValue::getValueType(), llvm::SDNode::getValueType(), GetVBR(), llvm::SelectionDAG::getVTList(), llvm::MVT::Glue, HandleMergeInputChains(), llvm::ISD::HANDLENODE, I, llvm::ISD::INLINEASM, llvm::MVT::iPTR, IsLegalToFold(), llvm::SDNode::isMachineOpcode(), IsPredicateKnownToFail(), IsProfitableToFold(), llvm::ISD::LIFETIME_END, llvm::ISD::LIFETIME_START, llvm::MCInstrDesc::mayLoad(), llvm::MCInstrDesc::mayStore(), llvm::ISD::MDNODE_SDNODE, MF, OPC_CaptureGlueInput, OPC_CheckAndImm, OPC_CheckChild0Same, OPC_CheckChild0Type, OPC_CheckChild1Same, OPC_CheckChild1Type, OPC_CheckChild2Same, OPC_CheckChild2Type, OPC_CheckChild3Same, OPC_CheckChild3Type, OPC_CheckChild4Type, OPC_CheckChild5Type, OPC_CheckChild6Type, OPC_CheckChild7Type, OPC_CheckComplexPat, OPC_CheckCondCode, OPC_CheckFoldableChainNode, OPC_CheckInteger, OPC_CheckOpcode, OPC_CheckOrImm, OPC_CheckPatternPredicate, OPC_CheckPredicate, OPC_CheckSame, OPC_CheckType, OPC_CheckValueType, OPC_CompleteMatch, OPC_EmitConvertToTarget, OPC_EmitCopyToReg, OPC_EmitInteger, OPC_EmitMergeInputChains, OPC_EmitMergeInputChains1_0, OPC_EmitMergeInputChains1_1, OPC_EmitNode, OPC_EmitNodeXForm, OPC_EmitRegister, OPC_EmitRegister2, OPC_MarkGlueResults, OPC_MorphNodeTo, OPC_MoveChild, OPC_MoveParent, OPC_RecordChild0, OPC_RecordChild1, OPC_RecordChild2, OPC_RecordChild3, OPC_RecordChild4, OPC_RecordChild5, OPC_RecordChild6, OPC_RecordChild7, OPC_RecordMemRef, OPC_RecordNode, OPC_Scope, OPC_SwitchOpcode, OPC_SwitchType, OPFL_Chain, OPFL_GlueInput, OPFL_MemRefs, OPFL_VariadicInfo, OptLevel, llvm::MVT::Other, llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::pop_back(), llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::ISD::Register, llvm::ISD::RegisterMask, llvm::SelectionDAG::ReplaceAllUsesOfValueWith(), llvm::SmallVectorImpl< T >::resize(), RunSDNodeXForm(), llvm::SDNode::setNodeId(), llvm::MVT::SimpleTy, llvm::SmallVectorTemplateCommon< T >::size(), llvm::ISD::TargetBlockAddress, llvm::ISD::TargetConstant, llvm::ISD::TargetConstantFP, llvm::ISD::TargetConstantPool, llvm::ISD::TargetExternalSymbol, llvm::ISD::TargetFrameIndex, llvm::ISD::TargetGlobalAddress, llvm::ISD::TargetGlobalTLSAddress, llvm::ISD::TargetJumpTable, TM, llvm::ISD::TokenFactor, llvm::ISD::UNDEF, and llvm::SDNode::use_empty().

virtual bool llvm::SelectionDAGISel::SelectInlineAsmMemoryOperand ( const SDValue Op,
char  ConstraintCode,
std::vector< SDValue > &  OutOps 
)
inlinevirtual

SelectInlineAsmMemoryOperand - Select the specified address as a target addressing mode, according to the specified constraint code. If this does not match or is not implemented, return true. The resultant operands (which will appear in the machine instruction) should be added to the OutOps vector.

Definition at line 87 of file SelectionDAGISel.h.

Referenced by SelectInlineAsmMemoryOperands().

void SelectionDAGISel::SelectInlineAsmMemoryOperands ( std::vector< SDValue > &  Ops)
protected

SelectInlineAsmMemoryOperands - Calls to this are automatically generated by tblgen. Others should not call it.

Definition at line 1622 of file SelectionDAGISel.cpp.

References CurDAG, llvm::InlineAsm::getFlagWord(), llvm::InlineAsm::getNumOperandRegisters(), llvm::SelectionDAG::getTargetConstant(), llvm::MVT::Glue, llvm::MVT::i32, llvm::InlineAsm::isMemKind(), llvm::report_fatal_error(), SelectInlineAsmMemoryOperand(), and std::swap().

Member Data Documentation

AliasAnalysis* llvm::SelectionDAGISel::AA

Definition at line 52 of file SelectionDAGISel.h.

Referenced by llvm::createVLIWDAGScheduler(), and runOnMachineFunction().

SelectionDAG* llvm::SelectionDAGISel::CurDAG
unsigned llvm::SelectionDAGISel::DAGSize
protected

DAGSize - Size of DAG being instruction selected.

Definition at line 177 of file SelectionDAGISel.h.

FunctionLoweringInfo* llvm::SelectionDAGISel::FuncInfo

Definition at line 47 of file SelectionDAGISel.h.

Referenced by runOnMachineFunction(), and ~SelectionDAGISel().

GCFunctionInfo* llvm::SelectionDAGISel::GFI

Definition at line 53 of file SelectionDAGISel.h.

Referenced by runOnMachineFunction().

char SelectionDAGISel::ID = 0
static

Definition at line 55 of file SelectionDAGISel.h.

Referenced by initializePassOnce().

const TargetLibraryInfo* llvm::SelectionDAGISel::LibInfo

Definition at line 45 of file SelectionDAGISel.h.

Referenced by runOnMachineFunction().

MachineFunction* llvm::SelectionDAGISel::MF
CodeGenOpt::Level llvm::SelectionDAGISel::OptLevel
MachineRegisterInfo* llvm::SelectionDAGISel::RegInfo

Definition at line 49 of file SelectionDAGISel.h.

Referenced by runOnMachineFunction().

SelectionDAGBuilder* llvm::SelectionDAGISel::SDB

Definition at line 51 of file SelectionDAGISel.h.

Referenced by runOnMachineFunction(), and ~SelectionDAGISel().

TargetMachine& llvm::SelectionDAGISel::TM
const TargetTransformInfo* llvm::SelectionDAGISel::TTI

Definition at line 46 of file SelectionDAGISel.h.

Referenced by runOnMachineFunction().


The documentation for this class was generated from the following files: