LLVM API Documentation

llvm::SelectionDAGLowering Class Reference

Collaboration diagram for llvm::SelectionDAGLowering:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 SelectionDAGLowering (SelectionDAG &dag, TargetLowering &tli, FunctionLoweringInfo &funcinfo)
SDOperand getRoot ()
void visit (Instruction &I)
void visit (unsigned Opcode, User &I)
void setCurrentBasicBlock (MachineBasicBlock *MBB)
SDOperand getLoadFrom (const Type *Ty, SDOperand Ptr, SDOperand SrcValue, SDOperand Root, bool isVolatile)
SDOperand getIntPtrConstant (uint64_t Val)
SDOperand getValue (const Value *V)
const SDOperandsetValue (const Value *V, SDOperand NewN)
RegsForValue GetRegistersForValue (const std::string &ConstrCode, MVT::ValueType VT, bool OutReg, bool InReg, std::set< unsigned > &OutputRegs, std::set< unsigned > &InputRegs)
void visitRet (ReturnInst &I)
void visitBr (BranchInst &I)
void visitSwitch (SwitchInst &I)
void visitUnreachable (UnreachableInst &I)
void visitSwitchCase (SelectionDAGISel::CaseBlock &CB)
void visitInvoke (InvokeInst &I)
void visitUnwind (UnwindInst &I)
void visitBinary (User &I, unsigned IntOp, unsigned FPOp, unsigned VecOp)
void visitShift (User &I, unsigned Opcode)
void visitAdd (User &I)
void visitSub (User &I)
void visitMul (User &I)
void visitDiv (User &I)
void visitRem (User &I)
void visitAnd (User &I)
void visitOr (User &I)
void visitXor (User &I)
void visitShl (User &I)
void visitShr (User &I)
void visitSetCC (User &I, ISD::CondCode SignedOpc, ISD::CondCode UnsignedOpc)
void visitSetEQ (User &I)
void visitSetNE (User &I)
void visitSetLE (User &I)
void visitSetGE (User &I)
void visitSetLT (User &I)
void visitSetGT (User &I)
void visitExtractElement (User &I)
void visitInsertElement (User &I)
void visitShuffleVector (User &I)
void visitGetElementPtr (User &I)
void visitCast (User &I)
void visitSelect (User &I)
void visitMalloc (MallocInst &I)
void visitFree (FreeInst &I)
void visitAlloca (AllocaInst &I)
void visitLoad (LoadInst &I)
void visitStore (StoreInst &I)
void visitPHI (PHINode &I)
void visitCall (CallInst &I)
void visitInlineAsm (CallInst &I)
const char * visitIntrinsicCall (CallInst &I, unsigned Intrinsic)
void visitTargetIntrinsic (CallInst &I, unsigned Intrinsic)
void visitVAStart (CallInst &I)
void visitVAArg (VAArgInst &I)
void visitVAEnd (CallInst &I)
void visitVACopy (CallInst &I)
void visitFrameReturnAddress (CallInst &I, bool isFrameAddress)
void visitMemIntrinsic (CallInst &I, unsigned Op)
void visitUserOp1 (Instruction &I)
void visitUserOp2 (Instruction &I)

Public Attributes

TargetLoweringTLI
SelectionDAGDAG
const TargetDataTD
std::vector< SelectionDAGISel::CaseBlockSwitchCases
FunctionLoweringInfoFuncInfo

Classes

struct  CaseCmp
 The comparison function for sorting Case values.
struct  CaseRec

Detailed Description

Definition at line 345 of file SelectionDAGISel.cpp.


Constructor & Destructor Documentation

llvm::SelectionDAGLowering::SelectionDAGLowering ( SelectionDAG dag,
TargetLowering tli,
FunctionLoweringInfo funcinfo 
) [inline]

Definition at line 406 of file SelectionDAGISel.cpp.


Member Function Documentation

SDOperand llvm::SelectionDAGLowering::getIntPtrConstant ( uint64_t  Val  )  [inline]

Definition at line 611 of file SelectionDAGISel.cpp.

Referenced by visitAlloca(), visitGetElementPtr(), and visitMalloc().

SDOperand SelectionDAGLowering::getLoadFrom ( const Type Ty,
SDOperand  Ptr,
SDOperand  SrcValue,
SDOperand  Root,
bool  isVolatile 
)

Definition at line 1229 of file SelectionDAGISel.cpp.

References DAG, llvm::SequentialType::getElementType(), llvm::SelectionDAG::getLoad(), llvm::PackedType::getNumElements(), llvm::SDOperand::getValue(), llvm::TargetLowering::getValueType(), llvm::SelectionDAG::getVecLoad(), Root, llvm::SelectionDAG::setRoot(), TLI, and Ty.

Referenced by visitLoad().

RegsForValue SelectionDAGLowering::GetRegistersForValue ( const std::string &  ConstrCode,
MVT::ValueType  VT,
bool  OutReg,
bool  InReg,
std::set< unsigned > &  OutputRegs,
std::set< unsigned > &  InputRegs 
)

Definition at line 1756 of file SelectionDAGISel.cpp.

References DAG, E, llvm::TargetLowering::getNumElements(), llvm::MachineBasicBlock::getParent(), llvm::TargetLowering::getRegClassForInlineAsmConstraint(), llvm::TargetLowering::getRegForInlineAsmConstraint(), llvm::TargetMachine::getRegisterInfo(), llvm::SelectionDAG::getTarget(), isAllocatableRegister(), MF, MRI, llvm::MVT::Other, RC, Reg, Regs, TLI, and ValueVT.

Referenced by visitInlineAsm().

SDOperand llvm::SelectionDAGLowering::getRoot (  )  [inline]

getRoot - Return the current virtual root of the Selection DAG.

Definition at line 414 of file SelectionDAGISel.cpp.

References DAG, llvm::SelectionDAG::getNode(), llvm::SelectionDAG::getRoot(), llvm::MVT::Other, Root, llvm::SelectionDAG::setRoot(), and llvm::ISD::TokenFactor.

Referenced by visitAlloca(), visitBr(), visitCall(), visitFrameReturnAddress(), visitFree(), visitInlineAsm(), visitIntrinsicCall(), visitLoad(), visitMalloc(), visitMemIntrinsic(), visitStore(), visitSwitch(), visitSwitchCase(), visitTargetIntrinsic(), visitVAArg(), visitVACopy(), visitVAEnd(), and visitVAStart().

SDOperand SelectionDAGLowering::getValue ( const Value V  ) 

Definition at line 555 of file SelectionDAGISel.cpp.

References llvm::CallingConv::C, CP, DAG, llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getConstantFP(), llvm::SequentialType::getElementType(), llvm::SelectionDAG::getGlobalAddress(), llvm::SelectionDAG::getNode(), llvm::PackedType::getNumElements(), llvm::Constant::getOperand(), llvm::TargetLowering::getPointerTy(), llvm::SelectionDAG::getValueType(), llvm::TargetLowering::getValueType(), GV, llvm::MVT::i32, llvm::MVT::isFloatingPoint(), Op, TLI, llvm::ISD::UNDEF, V, llvm::SDOperand::Val, llvm::ISD::VBUILD_VECTOR, llvm::MVT::Vector, and visit().

Referenced by visitAlloca(), visitBinary(), visitBr(), visitCall(), visitCast(), visitExtractElement(), visitFrameReturnAddress(), visitFree(), visitGetElementPtr(), visitInlineAsm(), visitInsertElement(), visitIntrinsicCall(), visitLoad(), visitMalloc(), visitMemIntrinsic(), visitSelect(), visitSetCC(), visitShift(), visitShuffleVector(), visitStore(), visitSub(), visitSwitchCase(), visitTargetIntrinsic(), visitUserOp2(), visitVAArg(), visitVACopy(), visitVAEnd(), and visitVAStart().

void llvm::SelectionDAGLowering::setCurrentBasicBlock ( MachineBasicBlock MBB  )  [inline]

Definition at line 605 of file SelectionDAGISel.cpp.

const SDOperand& llvm::SelectionDAGLowering::setValue ( const Value V,
SDOperand  NewN 
) [inline]

Definition at line 617 of file SelectionDAGISel.cpp.

Referenced by visitAlloca(), visitBinary(), visitCall(), visitCast(), visitExtractElement(), visitFrameReturnAddress(), visitGetElementPtr(), visitInlineAsm(), visitInsertElement(), visitIntrinsicCall(), visitLoad(), visitMalloc(), visitSelect(), visitSetCC(), visitShift(), visitShuffleVector(), visitSub(), visitTargetIntrinsic(), and visitVAArg().

void llvm::SelectionDAGLowering::visit ( unsigned  Opcode,
User I 
) [inline]

Definition at line 434 of file SelectionDAGISel.cpp.

References abort().

void llvm::SelectionDAGLowering::visit ( Instruction I  )  [inline]

Definition at line 432 of file SelectionDAGISel.cpp.

References llvm::Instruction::getOpcode().

Referenced by getValue().

void llvm::SelectionDAGLowering::visitAdd ( User I  )  [inline]

Definition at line 644 of file SelectionDAGISel.cpp.

void SelectionDAGLowering::visitAlloca ( AllocaInst I  ) 

Definition at line 1162 of file SelectionDAGISel.cpp.

References llvm::ISD::ADD, Align, llvm::ISD::AND, llvm::MachineFrameInfo::CreateVariableSizedObject(), DAG, llvm::ISD::DYNAMIC_STACKALLOC, FuncInfo, llvm::AllocationInst::getAlignment(), llvm::AllocationInst::getAllocatedType(), llvm::AllocationInst::getArraySize(), llvm::MachineFunction::getFrameInfo(), llvm::TargetMachine::getFrameInfo(), getIntPtrConstant(), llvm::SelectionDAG::getNode(), llvm::MachineBasicBlock::getParent(), llvm::TargetLowering::getPointerTy(), getRoot(), llvm::TargetFrameInfo::getStackAlignment(), llvm::TargetLowering::getTargetData(), llvm::TargetLowering::getTargetMachine(), llvm::TargetData::getTypeAlignment(), llvm::TargetData::getTypeSize(), getValue(), llvm::ISD::MUL, llvm::MVT::Other, llvm::SelectionDAG::setRoot(), setValue(), llvm::FunctionLoweringInfo::StaticAllocaMap, TLI, llvm::ISD::TRUNCATE, Ty, and llvm::ISD::ZERO_EXTEND.

void llvm::SelectionDAGLowering::visitAnd ( User I  )  [inline]

Definition at line 661 of file SelectionDAGISel.cpp.

void SelectionDAGLowering::visitBinary ( User I,
unsigned  IntOp,
unsigned  FPOp,
unsigned  VecOp 
)

Definition at line 954 of file SelectionDAGISel.cpp.

References DAG, llvm::SelectionDAG::getConstant(), llvm::SequentialType::getElementType(), llvm::SelectionDAG::getNode(), llvm::PackedType::getNumElements(), llvm::User::getOperand(), llvm::Value::getType(), getValue(), llvm::TargetLowering::getValueType(), llvm::SelectionDAG::getValueType(), llvm::SDOperand::getValueType(), llvm::MVT::i32, llvm::Type::isFloatingPoint(), llvm::Type::isIntegral(), setValue(), TLI, Ty, and llvm::MVT::Vector.

Referenced by visitSub().

void SelectionDAGLowering::visitBr ( BranchInst I  ) 

Definition at line 733 of file SelectionDAGISel.cpp.

References llvm::MachineBasicBlock::addSuccessor(), llvm::ISD::BR, llvm::ISD::BRCOND, DAG, llvm::MachineFunction::end(), FuncInfo, llvm::SelectionDAG::getBasicBlock(), llvm::BranchInst::getCondition(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getNode(), llvm::MachineBasicBlock::getParent(), getRoot(), llvm::BranchInst::getSuccessor(), getValue(), llvm::SDOperand::getValueType(), llvm::BranchInst::isUnconditional(), llvm::FunctionLoweringInfo::MBBMap, llvm::MVT::Other, llvm::SelectionDAG::setRoot(), True, and llvm::ISD::XOR.

void SelectionDAGLowering::visitCall ( CallInst I  ) 

Definition at line 1561 of file SelectionDAGISel.cpp.

References DAG, F, llvm::ISD::FABS, llvm::ISD::FCOPYSIGN, llvm::ISD::FCOS, llvm::ISD::FSIN, llvm::CallInst::getCalledFunction(), llvm::CallInst::getCalledValue(), llvm::CallInst::getCallingConv(), llvm::SequentialType::getElementType(), llvm::SelectionDAG::getExternalSymbol(), llvm::SelectionDAG::getNode(), llvm::User::getNumOperands(), llvm::User::getOperand(), llvm::TargetLowering::getPointerTy(), getRoot(), llvm::Value::getType(), getValue(), llvm::Type::isFloatingPoint(), llvm::CallInst::isTailCall(), llvm::TargetLowering::LowerCallTo(), Name, llvm::SelectionDAG::setRoot(), setValue(), TLI, visitInlineAsm(), visitIntrinsicCall(), and llvm::Type::VoidTy.

void SelectionDAGLowering::visitCast ( User I  ) 

Definition at line 1005 of file SelectionDAGISel.cpp.

References DAG, llvm::ISD::FP_EXTEND, llvm::ISD::FP_ROUND, llvm::ISD::FP_TO_SINT, llvm::ISD::FP_TO_UINT, llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getConstantFP(), llvm::SequentialType::getElementType(), llvm::SelectionDAG::getNode(), llvm::PackedType::getNumElements(), llvm::User::getOperand(), llvm::SelectionDAG::getSetCC(), llvm::Value::getType(), getValue(), llvm::SelectionDAG::getValueType(), llvm::TargetLowering::getValueType(), llvm::SDOperand::getValueType(), llvm::MVT::i1, llvm::MVT::i32, llvm::MVT::isFloatingPoint(), llvm::MVT::isInteger(), llvm::Type::isSigned(), llvm::ISD::SETNE, setValue(), llvm::ISD::SIGN_EXTEND, llvm::ISD::SINT_TO_FP, TLI, llvm::ISD::TRUNCATE, llvm::ISD::UINT_TO_FP, llvm::ISD::VBIT_CONVERT, llvm::MVT::Vector, and llvm::ISD::ZERO_EXTEND.

void llvm::SelectionDAGLowering::visitDiv ( User I  )  [inline]

Definition at line 651 of file SelectionDAGISel.cpp.

void SelectionDAGLowering::visitExtractElement ( User I  ) 

Definition at line 1076 of file SelectionDAGISel.cpp.

References DAG, llvm::SelectionDAG::getNode(), llvm::User::getOperand(), llvm::TargetLowering::getPointerTy(), llvm::Value::getType(), getValue(), llvm::TargetLowering::getValueType(), llvm::SDNode::op_end(), setValue(), TLI, llvm::SDOperand::Val, llvm::ISD::VEXTRACT_VECTOR_ELT, and llvm::ISD::ZERO_EXTEND.

void SelectionDAGLowering::visitFrameReturnAddress ( CallInst I,
bool  isFrameAddress 
)

Definition at line 2373 of file SelectionDAGISel.cpp.

References DAG, llvm::User::getOperand(), getRoot(), getValue(), llvm::TargetLowering::LowerFrameReturnAddress(), llvm::SelectionDAG::setRoot(), setValue(), and TLI.

Referenced by visitIntrinsicCall().

void SelectionDAGLowering::visitFree ( FreeInst I  ) 

Definition at line 2180 of file SelectionDAGISel.cpp.

References llvm::CallingConv::C, DAG, llvm::SelectionDAG::getExternalSymbol(), llvm::TargetData::getIntPtrType(), llvm::UnaryInstruction::getOperand(), llvm::TargetLowering::getPointerTy(), getRoot(), llvm::TargetLowering::getTargetData(), getValue(), llvm::TargetLowering::LowerCallTo(), llvm::SelectionDAG::setRoot(), TLI, and llvm::Type::VoidTy.

void SelectionDAGLowering::visitGetElementPtr ( User I  ) 

Definition at line 1097 of file SelectionDAGISel.cpp.

References llvm::ISD::ADD, DAG, E, llvm::SelectionDAG::getConstant(), getIntPtrConstant(), llvm::TargetData::getIntPtrType(), llvm::SelectionDAG::getNode(), llvm::User::getOperand(), llvm::TargetLowering::getShiftAmountTy(), llvm::TargetData::getStructLayout(), llvm::Value::getType(), llvm::TargetData::getTypeSize(), getValue(), llvm::SDOperand::getValueType(), Idx, llvm::isPowerOf2_64(), llvm::Log2_64(), llvm::StructLayout::MemberOffsets, llvm::ISD::MUL, Offset, OI, llvm::User::op_begin(), llvm::User::op_end(), Scale, setValue(), llvm::ISD::SHL, llvm::ISD::SIGN_EXTEND, TD, TLI, llvm::ISD::TRUNCATE, Ty, UIntPtrTy, and llvm::ISD::ZERO_EXTEND.

void SelectionDAGLowering::visitInlineAsm ( CallInst I  ) 

visitInlineAsm - Handle a call to an InlineAsm object.

AsmNodeOperands - A list of pairs. The first element is a register, the second is a bitfield where bit #0 is set if it is a use and bit #1 is set if it is a def of that register.

Definition at line 1847 of file SelectionDAGISel.cpp.

References llvm::TargetLowering::C_Memory, llvm::TargetLowering::C_Other, llvm::TargetLowering::C_RegisterClass, Constraints, DAG, first, llvm::MVT::Flag, llvm::InlineAsm::getAsmString(), llvm::SelectionDAG::getConstant(), llvm::TargetLowering::getConstraintType(), llvm::SelectionDAG::getNode(), llvm::User::getOperand(), llvm::TargetLowering::getPointerTy(), llvm::TargetLowering::getRegForInlineAsmConstraint(), GetRegistersForValue(), getRoot(), llvm::SelectionDAG::getSrcValue(), llvm::SelectionDAG::getTargetExternalSymbol(), llvm::Value::getType(), llvm::SDOperand::getValue(), getValue(), llvm::SDOperand::getValueType(), llvm::TargetLowering::getValueType(), llvm::InlineAsm::hasSideEffects(), llvm::MVT::i32, llvm::ISD::INLINEASM, llvm::InlineAsm::isClobber, llvm::InlineAsm::isInput, llvm::MVT::isInteger(), llvm::TargetLowering::isOperandValidForConstraint(), llvm::InlineAsm::isOutput, llvm::MVT::Other, llvm::InlineAsm::ParseConstraints(), Reg, Regs, second, llvm::SelectionDAG::setRoot(), setValue(), llvm::ISD::STORE, TLI, llvm::ISD::TokenFactor, llvm::Type::VoidTy, and llvm::ISD::ZERO_EXTEND.

Referenced by visitCall().

void SelectionDAGLowering::visitInsertElement ( User I  ) 

Definition at line 1064 of file SelectionDAGISel.cpp.

References DAG, llvm::SelectionDAG::getNode(), llvm::User::getOperand(), llvm::TargetLowering::getPointerTy(), getValue(), llvm::SDNode::op_end(), setValue(), TLI, llvm::SDOperand::Val, llvm::MVT::Vector, llvm::ISD::VINSERT_VECTOR_ELT, and llvm::ISD::ZERO_EXTEND.

const char * SelectionDAGLowering::visitIntrinsicCall ( CallInst I,
unsigned  Intrinsic 
)

visitIntrinsicCall - Lower the call to the specified intrinsic function. If we want to emit this as a call to a named external function, return the name otherwise lower it and return null.

Definition at line 1363 of file SelectionDAGISel.cpp.

References llvm::ISD::BSWAP, llvm::Intrinsic::bswap_i16, llvm::Intrinsic::bswap_i32, llvm::Intrinsic::bswap_i64, llvm::ISD::CTLZ, llvm::Intrinsic::ctlz_i16, llvm::Intrinsic::ctlz_i32, llvm::Intrinsic::ctlz_i64, llvm::Intrinsic::ctlz_i8, llvm::ISD::CTPOP, llvm::Intrinsic::ctpop_i16, llvm::Intrinsic::ctpop_i32, llvm::Intrinsic::ctpop_i64, llvm::Intrinsic::ctpop_i8, llvm::ISD::CTTZ, llvm::Intrinsic::cttz_i16, llvm::Intrinsic::cttz_i32, llvm::Intrinsic::cttz_i64, llvm::Intrinsic::cttz_i8, DAG, llvm::Intrinsic::dbg_declare, llvm::Intrinsic::dbg_func_start, llvm::Intrinsic::dbg_region_end, llvm::Intrinsic::dbg_region_start, llvm::Intrinsic::dbg_stoppoint, llvm::X86II::DD, llvm::ISD::DEBUG_LABEL, llvm::Intrinsic::frameaddress, llvm::ISD::FSQRT, llvm::DbgDeclareInst::getAddress(), llvm::DbgStopPointInst::getColumnValue(), llvm::SelectionDAG::getConstant(), llvm::DbgRegionEndInst::getContext(), llvm::DbgRegionStartInst::getContext(), llvm::DbgStopPointInst::getContext(), llvm::MachineDebugInfo::getDescFor(), llvm::CompileUnitDesc::getDirectory(), llvm::CompileUnitDesc::getFileName(), llvm::DbgStopPointInst::getLineValue(), llvm::SelectionDAG::getMachineDebugInfo(), llvm::SelectionDAG::getNode(), llvm::TargetLowering::getPointerTy(), getRoot(), llvm::SelectionDAG::getSetCC(), llvm::SelectionDAG::getString(), llvm::DbgFuncStartInst::getSubprogram(), llvm::SDOperand::getValue(), getValue(), llvm::DbgDeclareInst::getVariable(), llvm::MVT::i1, llvm::MVT::i32, llvm::MVT::i64, llvm::Intrinsic::isunordered_f32, llvm::Intrinsic::isunordered_f64, llvm::ISD::LOCATION, llvm::Intrinsic::longjmp, llvm::ISD::MEMCPY, llvm::Intrinsic::memcpy_i32, llvm::Intrinsic::memcpy_i64, llvm::ISD::MEMMOVE, llvm::Intrinsic::memmove_i32, llvm::Intrinsic::memmove_i64, llvm::ISD::MEMSET, llvm::Intrinsic::memset_i32, llvm::Intrinsic::memset_i64, llvm::MVT::Other, llvm::ISD::PCMARKER, llvm::Intrinsic::pcmarker, llvm::Intrinsic::prefetch, llvm::ISD::READCYCLECOUNTER, llvm::Intrinsic::readcyclecounter, llvm::MachineDebugInfo::RecordRegionEnd(), llvm::MachineDebugInfo::RecordRegionStart(), llvm::MachineDebugInfo::RecordVariable(), llvm::Intrinsic::returnaddress, llvm::Intrinsic::setjmp, llvm::SelectionDAG::setRoot(), llvm::ISD::SETUO, setValue(), llvm::Intrinsic::sqrt_f32, llvm::Intrinsic::sqrt_f64, llvm::ISD::STACKRESTORE, llvm::Intrinsic::stackrestore, llvm::ISD::STACKSAVE, llvm::Intrinsic::stacksave, TLI, llvm::TargetLowering::usesUnderscoreSetJmpLongJmp(), llvm::Intrinsic::vacopy, llvm::Intrinsic::vaend, llvm::Intrinsic::vastart, llvm::MachineDebugInfo::Verify(), visitFrameReturnAddress(), visitMemIntrinsic(), visitTargetIntrinsic(), visitVACopy(), visitVAEnd(), and visitVAStart().

Referenced by visitCall().

void llvm::SelectionDAGLowering::visitInvoke ( InvokeInst I  )  [inline]

Definition at line 639 of file SelectionDAGISel.cpp.

void SelectionDAGLowering::visitLoad ( LoadInst I  ) 

Definition at line 1214 of file SelectionDAGISel.cpp.

References DAG, getLoadFrom(), llvm::UnaryInstruction::getOperand(), llvm::SelectionDAG::getRoot(), getRoot(), llvm::SelectionDAG::getSrcValue(), llvm::Value::getType(), getValue(), llvm::LoadInst::isVolatile(), Root, and setValue().

void SelectionDAGLowering::visitMalloc ( MallocInst I  ) 

Definition at line 2154 of file SelectionDAGISel.cpp.

References llvm::CallingConv::C, DAG, llvm::SequentialType::getElementType(), llvm::SelectionDAG::getExternalSymbol(), getIntPtrConstant(), llvm::TargetData::getIntPtrType(), llvm::SelectionDAG::getNode(), llvm::UnaryInstruction::getOperand(), llvm::TargetLowering::getPointerTy(), getRoot(), llvm::TargetLowering::getTargetData(), llvm::AllocationInst::getType(), llvm::TargetData::getTypeSize(), getValue(), llvm::TargetLowering::LowerCallTo(), llvm::ISD::MUL, llvm::SelectionDAG::setRoot(), setValue(), Src, TD, TLI, and llvm::ISD::ZERO_EXTEND.

void SelectionDAGLowering::visitMemIntrinsic ( CallInst I,
unsigned  Op 
)

Definition at line 2489 of file SelectionDAGISel.cpp.

References llvm::ISD::ADD, Align, llvm::ISD::Constant, DAG, G, llvm::SelectionDAG::getLoad(), llvm::TargetLowering::getMaxStoresPerMemcpy(), llvm::TargetLowering::getMaxStoresPerMemset(), getMemBasePlusOffset(), getMemsetStringVal(), getMemsetValue(), llvm::SelectionDAG::getNode(), llvm::User::getOperand(), getRoot(), llvm::MVT::getSizeInBits(), llvm::SelectionDAG::getSrcValue(), llvm::Constant::getStringValue(), llvm::SDOperand::getValue(), getValue(), llvm::ISD::GlobalAddress, GV, MeetsMaxMemopRequirement(), llvm::ISD::MEMCPY, llvm::ISD::MEMSET, Offset, llvm::MVT::Other, llvm::SelectionDAG::setRoot(), llvm::ISD::STORE, Store, TLI, and llvm::ISD::TokenFactor.

Referenced by visitIntrinsicCall().

void llvm::SelectionDAGLowering::visitMul ( User I  )  [inline]

Definition at line 648 of file SelectionDAGISel.cpp.

void llvm::SelectionDAGLowering::visitOr ( User I  )  [inline]

Definition at line 662 of file SelectionDAGISel.cpp.

void llvm::SelectionDAGLowering::visitPHI ( PHINode I  )  [inline]

Definition at line 690 of file SelectionDAGISel.cpp.

void llvm::SelectionDAGLowering::visitRem ( User I  )  [inline]

Definition at line 657 of file SelectionDAGISel.cpp.

void SelectionDAGLowering::visitRet ( ReturnInst I  ) 

Definition at line 702 of file SelectionDAGISel.cpp.

References llvm::User::getNumOperands().

void SelectionDAGLowering::visitSelect ( User I  ) 

Definition at line 991 of file SelectionDAGISel.cpp.

References DAG, llvm::SelectionDAG::getNode(), llvm::User::getOperand(), llvm::Value::getType(), getValue(), llvm::ISD::SELECT, setValue(), llvm::MVT::Vector, and llvm::ISD::VSELECT.

void SelectionDAGLowering::visitSetCC ( User I,
ISD::CondCode  SignedOpc,
ISD::CondCode  UnsignedOpc 
)

Definition at line 981 of file SelectionDAGISel.cpp.

References DAG, llvm::User::getOperand(), llvm::SelectionDAG::getSetCC(), llvm::Value::getType(), getValue(), llvm::MVT::i1, llvm::Type::isUnsigned(), and setValue().

void llvm::SelectionDAGLowering::visitSetEQ ( User I  )  [inline]

Definition at line 670 of file SelectionDAGISel.cpp.

void llvm::SelectionDAGLowering::visitSetGE ( User I  )  [inline]

Definition at line 673 of file SelectionDAGISel.cpp.

void llvm::SelectionDAGLowering::visitSetGT ( User I  )  [inline]

Definition at line 675 of file SelectionDAGISel.cpp.

void llvm::SelectionDAGLowering::visitSetLE ( User I  )  [inline]

Definition at line 672 of file SelectionDAGISel.cpp.

void llvm::SelectionDAGLowering::visitSetLT ( User I  )  [inline]

Definition at line 674 of file SelectionDAGISel.cpp.

void llvm::SelectionDAGLowering::visitSetNE ( User I  )  [inline]

Definition at line 671 of file SelectionDAGISel.cpp.

void SelectionDAGLowering::visitShift ( User I,
unsigned  Opcode 
)

Definition at line 972 of file SelectionDAGISel.cpp.

References llvm::ISD::ANY_EXTEND, DAG, llvm::SelectionDAG::getNode(), llvm::User::getOperand(), llvm::TargetLowering::getShiftAmountTy(), getValue(), llvm::SDOperand::getValueType(), setValue(), and TLI.

void llvm::SelectionDAGLowering::visitShl ( User I  )  [inline]

Definition at line 664 of file SelectionDAGISel.cpp.

void llvm::SelectionDAGLowering::visitShr ( User I  )  [inline]

Definition at line 665 of file SelectionDAGISel.cpp.

References DAG, llvm::ISD::FP_ROUND, llvm::SelectionDAG::getCopyFromReg(), llvm::SelectionDAG::getEntryNode(), llvm::SelectionDAG::getNode(), llvm::MVT::isFloatingPoint(), and Op.

void SelectionDAGLowering::visitShuffleVector ( User I  ) 

Definition at line 1085 of file SelectionDAGISel.cpp.

References DAG, llvm::SelectionDAG::getNode(), llvm::User::getOperand(), getValue(), llvm::SDNode::op_end(), setValue(), llvm::SDOperand::Val, llvm::MVT::Vector, and llvm::ISD::VVECTOR_SHUFFLE.

void SelectionDAGLowering::visitStore ( StoreInst I  ) 

Definition at line 1249 of file SelectionDAGISel.cpp.

References DAG, llvm::SelectionDAG::getNode(), llvm::StoreInst::getOperand(), getRoot(), llvm::SelectionDAG::getSrcValue(), getValue(), llvm::MVT::Other, llvm::SelectionDAG::setRoot(), Src, and llvm::ISD::STORE.

void SelectionDAGLowering::visitSub ( User I  ) 

Definition at line 941 of file SelectionDAGISel.cpp.

References DAG, llvm::ISD::FNEG, llvm::ISD::FSUB, llvm::SelectionDAG::getNode(), llvm::User::getOperand(), llvm::Value::getType(), getValue(), llvm::Type::isFloatingPoint(), setValue(), llvm::ISD::SUB, visitBinary(), and llvm::ISD::VSUB.

void SelectionDAGLowering::visitSwitch ( SwitchInst I  ) 

Definition at line 819 of file SelectionDAGISel.cpp.

References llvm::BasicBlock::back(), llvm::ISD::BR, llvm::CallingConv::C, DAG, llvm::Reloc::Default, llvm::MachineFunction::end(), FuncInfo, llvm::MachineBasicBlock::getBasicBlock(), llvm::SelectionDAG::getBasicBlock(), llvm::MachineFunction::getBasicBlockList(), llvm::SwitchInst::getDefaultDest(), llvm::SelectionDAG::getNode(), llvm::User::getNumOperands(), llvm::SwitchInst::getNumSuccessors(), llvm::User::getOperand(), llvm::MachineBasicBlock::getParent(), getRoot(), llvm::SwitchInst::getSuccessor(), llvm::SwitchInst::getSuccessorValue(), llvm::FunctionLoweringInfo::MBBMap, llvm::MVT::Other, llvm::ISD::SETEQ, llvm::ISD::SETLT, llvm::SelectionDAG::setRoot(), llvm::ISD::SETULT, SwitchCases, Target, and visitSwitchCase().

void SelectionDAGLowering::visitSwitchCase ( SelectionDAGISel::CaseBlock CB  ) 

visitSwitchCase - Emits the necessary code to represent a single node in the binary search tree resulting from lowering a switch instruction.

Definition at line 788 of file SelectionDAGISel.cpp.

References llvm::MachineBasicBlock::addSuccessor(), llvm::ISD::BR, llvm::ISD::BRCOND, llvm::SelectionDAGISel::CaseBlock::CaseC, llvm::SelectionDAGISel::CaseBlock::CC, DAG, llvm::MachineFunction::end(), llvm::SelectionDAG::getBasicBlock(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getNode(), llvm::MachineBasicBlock::getParent(), getRoot(), llvm::SelectionDAG::getSetCC(), getValue(), llvm::SDOperand::getValueType(), llvm::MVT::i1, llvm::SelectionDAGISel::CaseBlock::LHSBB, llvm::MVT::Other, llvm::SelectionDAGISel::CaseBlock::RHSBB, llvm::SelectionDAG::setRoot(), llvm::SelectionDAGISel::CaseBlock::SwitchV, True, and llvm::ISD::XOR.

Referenced by visitSwitch().

void SelectionDAGLowering::visitTargetIntrinsic ( CallInst I,
unsigned  Intrinsic 
)

visitTargetIntrinsic - Lower a call of a target intrinsic to an INTRINSIC node.

Definition at line 1277 of file SelectionDAGISel.cpp.

References DAG, llvm::SelectionDAG::getConstant(), llvm::SequentialType::getElementType(), llvm::SelectionDAG::getNode(), llvm::PackedType::getNumElements(), llvm::User::getNumOperands(), llvm::SDNode::getNumValues(), llvm::User::getOperand(), llvm::TargetLowering::getPointerTy(), getRoot(), llvm::SelectionDAG::getRoot(), llvm::Value::getType(), llvm::SDOperand::getValue(), getValue(), llvm::SelectionDAG::getValueType(), llvm::TargetLowering::getValueType(), llvm::MVT::getVectorType(), llvm::MVT::i32, llvm::ISD::INTRINSIC_VOID, llvm::ISD::INTRINSIC_W_CHAIN, llvm::ISD::INTRINSIC_WO_CHAIN, IntrinsicCannotAccessMemory(), IntrinsicOnlyReadsMemory(), llvm::TargetLowering::isTypeLegal(), Op, llvm::MVT::Other, llvm::SelectionDAG::setRoot(), setValue(), TLI, llvm::SDOperand::Val, llvm::ISD::VBIT_CONVERT, llvm::MVT::Vector, and llvm::Type::VoidTy.

Referenced by visitIntrinsicCall().

void llvm::SelectionDAGLowering::visitUnreachable ( UnreachableInst I  )  [inline]

Definition at line 633 of file SelectionDAGISel.cpp.

References DAG, llvm::SelectionDAG::getCopyFromReg(), llvm::SelectionDAG::getEntryNode(), llvm::TargetLowering::getTypeToTransformTo(), and TLI.

void llvm::SelectionDAGLowering::visitUnwind ( UnwindInst I  )  [inline]

Definition at line 640 of file SelectionDAGISel.cpp.

void llvm::SelectionDAGLowering::visitUserOp1 ( Instruction I  )  [inline]

Definition at line 704 of file SelectionDAGISel.cpp.

void llvm::SelectionDAGLowering::visitUserOp2 ( Instruction I  )  [inline]

Definition at line 708 of file SelectionDAGISel.cpp.

References DAG, llvm::SelectionDAG::getNode(), llvm::ReturnInst::getOperand(), llvm::Value::getType(), llvm::TargetLowering::getTypeAction(), llvm::TargetLowering::getTypeToTransformTo(), getValue(), llvm::MVT::i32, llvm::MVT::i64, llvm::MVT::isInteger(), llvm::Type::isSigned(), llvm::TargetLowering::Promote, llvm::ISD::SIGN_EXTEND, TLI, and llvm::ISD::ZERO_EXTEND.

void SelectionDAGLowering::visitVAArg ( VAArgInst I  ) 

Definition at line 2211 of file SelectionDAGISel.cpp.

References DAG, llvm::UnaryInstruction::getOperand(), getRoot(), llvm::SelectionDAG::getSrcValue(), llvm::Value::getType(), llvm::SelectionDAG::getVAArg(), getValue(), llvm::TargetLowering::getValueType(), llvm::SelectionDAG::setRoot(), setValue(), TLI, and V.

void SelectionDAGLowering::visitVACopy ( CallInst I  ) 

Definition at line 2225 of file SelectionDAGISel.cpp.

References DAG, llvm::SelectionDAG::getNode(), llvm::User::getOperand(), getRoot(), llvm::SelectionDAG::getSrcValue(), getValue(), llvm::MVT::Other, llvm::SelectionDAG::setRoot(), and llvm::ISD::VACOPY.

Referenced by visitIntrinsicCall().

void SelectionDAGLowering::visitVAEnd ( CallInst I  ) 

Definition at line 2219 of file SelectionDAGISel.cpp.

References DAG, llvm::SelectionDAG::getNode(), llvm::User::getOperand(), getRoot(), llvm::SelectionDAG::getSrcValue(), getValue(), llvm::MVT::Other, llvm::SelectionDAG::setRoot(), and llvm::ISD::VAEND.

Referenced by visitIntrinsicCall().

void SelectionDAGLowering::visitVAStart ( CallInst I  ) 

Definition at line 2205 of file SelectionDAGISel.cpp.

References DAG, llvm::SelectionDAG::getNode(), llvm::User::getOperand(), getRoot(), llvm::SelectionDAG::getSrcValue(), getValue(), llvm::MVT::Other, llvm::SelectionDAG::setRoot(), and llvm::ISD::VASTART.

Referenced by visitIntrinsicCall().

void llvm::SelectionDAGLowering::visitXor ( User I  )  [inline]

Definition at line 663 of file SelectionDAGISel.cpp.


Member Data Documentation

SelectionDAG& llvm::SelectionDAGLowering::DAG

Definition at line 395 of file SelectionDAGISel.cpp.

Referenced by getLoadFrom(), GetRegistersForValue(), getValue(), visitAlloca(), visitBinary(), visitBr(), visitCall(), visitCast(), visitExtractElement(), visitFrameReturnAddress(), visitFree(), visitGetElementPtr(), visitInlineAsm(), visitInsertElement(), visitIntrinsicCall(), visitLoad(), visitMalloc(), visitMemIntrinsic(), visitSelect(), visitSetCC(), visitShift(), visitShr(), visitShuffleVector(), visitStore(), visitSub(), visitSwitch(), visitSwitchCase(), visitTargetIntrinsic(), visitUnreachable(), visitUserOp2(), visitVAArg(), visitVACopy(), visitVAEnd(), and visitVAStart().

FunctionLoweringInfo& llvm::SelectionDAGLowering::FuncInfo

FuncInfo - Information about the function as a whole.

Definition at line 404 of file SelectionDAGISel.cpp.

Referenced by visitAlloca(), visitBr(), and visitSwitch().

std::vector<SelectionDAGISel::CaseBlock> llvm::SelectionDAGLowering::SwitchCases

SwitchCases - Vector of CaseBlock structures used to communicate SwitchInst code generation information.

Definition at line 400 of file SelectionDAGISel.cpp.

Referenced by visitSwitch().

const TargetData& llvm::SelectionDAGLowering::TD

Definition at line 396 of file SelectionDAGISel.cpp.

Referenced by visitGetElementPtr(), and visitMalloc().

TargetLowering& llvm::SelectionDAGLowering::TLI

Definition at line 394 of file SelectionDAGISel.cpp.

Referenced by getLoadFrom(), GetRegistersForValue(), getValue(), visitAlloca(), visitBinary(), visitCall(), visitCast(), visitExtractElement(), visitFrameReturnAddress(), visitFree(), visitGetElementPtr(), visitInlineAsm(), visitInsertElement(), visitIntrinsicCall(), visitMalloc(), visitMemIntrinsic(), visitShift(), visitTargetIntrinsic(), visitUnreachable(), visitUserOp2(), and visitVAArg().


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