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 visitJumpTable (SelectionDAGISel::JumpTable &JT)
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, ISD::CondCode FPOpc)
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
SelectionDAGISel::JumpTable JT
FunctionLoweringInfoFuncInfo

Classes

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

Detailed Description

Definition at line 352 of file SelectionDAGISel.cpp.


Constructor & Destructor Documentation

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

Definition at line 414 of file SelectionDAGISel.cpp.


Member Function Documentation

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

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

Definition at line 422 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(), visitJumpTable(), visitLoad(), visitMalloc(), visitMemIntrinsic(), visitStore(), visitSwitch(), visitSwitchCase(), visitTargetIntrinsic(), visitVAArg(), visitVACopy(), visitVAEnd(), and visitVAStart().

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

Definition at line 440 of file SelectionDAGISel.cpp.

References llvm::Instruction::getOpcode().

Referenced by getValue().

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

Definition at line 442 of file SelectionDAGISel.cpp.

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

Definition at line 613 of file SelectionDAGISel.cpp.

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

Definition at line 1365 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().

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

Definition at line 619 of file SelectionDAGISel.cpp.

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

SDOperand SelectionDAGLowering::getValue ( const Value V  ) 

Definition at line 571 of file SelectionDAGISel.cpp.

References C, CP, DAG, llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getConstantFP(), llvm::SequentialType::getElementType(), llvm::SelectionDAG::getGlobalAddress(), llvm::SelectionDAG::getNode(), llvm::PackedType::getNumElements(), llvm::TargetLowering::getPointerTy(), llvm::SelectionDAG::getValueType(), llvm::TargetLowering::getValueType(), GV, llvm::MVT::i32, Ops, 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(), visitSwitch(), visitSwitchCase(), visitTargetIntrinsic(), visitUserOp2(), visitVAArg(), visitVACopy(), visitVAEnd(), and visitVAStart().

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

Definition at line 625 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().

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 1900 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().

void SelectionDAGLowering::visitRet ( ReturnInst I  ) 

Definition at line 718 of file SelectionDAGISel.cpp.

References llvm::User::getNumOperands().

void SelectionDAGLowering::visitBr ( BranchInst I  ) 

Definition at line 753 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::visitSwitch ( SwitchInst I  ) 

Definition at line 864 of file SelectionDAGISel.cpp.

References llvm::MachineBasicBlock::addSuccessor(), llvm::ISD::BR, llvm::ISD::BRCOND, llvm::ISD::BRIND, C, llvm::X86ISD::CMP, DAG, llvm::SelectionDAGISel::JumpTable::Default, llvm::CodeModel::Default, llvm::MachineFunction::end(), FuncInfo, llvm::MachineBasicBlock::getBasicBlock(), llvm::SelectionDAG::getBasicBlock(), llvm::MachineFunction::getBasicBlockList(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getCopyToReg(), llvm::SwitchInst::getDefaultDest(), llvm::MachineJumpTableInfo::getJumpTableIndex(), llvm::MachineFunction::getJumpTableInfo(), llvm::SelectionDAG::getNode(), llvm::User::getNumOperands(), llvm::SwitchInst::getNumSuccessors(), llvm::User::getOperand(), llvm::MachineBasicBlock::getParent(), llvm::TargetLowering::getPointerTy(), llvm::TargetMachine::getRelocationModel(), getRoot(), llvm::SelectionDAG::getSetCC(), llvm::TargetLowering::getSetCCResultTy(), llvm::SwitchInst::getSuccessor(), llvm::SwitchInst::getSuccessorValue(), llvm::TargetLowering::getTargetMachine(), getValue(), llvm::SDOperand::getValueType(), llvm::TargetLowering::isOperationLegal(), JT, llvm::SelectionDAGISel::JumpTable::JTI, llvm::FunctionLoweringInfo::MakeReg(), llvm::SelectionDAGISel::JumpTable::MBB, llvm::FunctionLoweringInfo::MBBMap, llvm::MVT::Other, llvm::SelectionDAGISel::JumpTable::Reg, llvm::ISD::SETEQ, llvm::ISD::SETLT, llvm::SelectionDAG::setRoot(), llvm::ISD::SETUGT, llvm::ISD::SETULT, llvm::ISD::SUB, SUB, SwitchCases, TLI, llvm::ISD::TRUNCATE, visitSwitchCase(), and llvm::ISD::ZERO_EXTEND.

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

Definition at line 641 of file SelectionDAGISel.cpp.

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 808 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::visitJumpTable ( SelectionDAGISel::JumpTable JT  ) 

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

Definition at line 841 of file SelectionDAGISel.cpp.

References llvm::ISD::ADD, ADD, llvm::ISD::BRIND, DAG, llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getCopyFromReg(), llvm::SelectionDAG::getJumpTable(), llvm::SelectionDAG::getLoad(), llvm::SelectionDAG::getNode(), llvm::TargetLowering::getPointerTy(), llvm::TargetMachine::getRelocationModel(), getRoot(), llvm::MVT::getSizeInBits(), llvm::SelectionDAG::getSrcValue(), llvm::TargetLowering::getTargetMachine(), llvm::SDOperand::getValue(), JT, llvm::SelectionDAGISel::JumpTable::JTI, llvm::ISD::MUL, llvm::MVT::Other, llvm::Reloc::PIC_, llvm::SelectionDAGISel::JumpTable::Reg, llvm::SelectionDAG::setRoot(), and TLI.

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

Definition at line 648 of file SelectionDAGISel.cpp.

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

Definition at line 649 of file SelectionDAGISel.cpp.

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

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

Definition at line 1088 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::visitShift ( User I,
unsigned  Opcode 
)

Definition at line 1106 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::visitAdd ( User I  )  [inline]

Definition at line 653 of file SelectionDAGISel.cpp.

References llvm::ISD::BUILD_PAIR, DAG, and llvm::SelectionDAG::getNode().

void SelectionDAGLowering::visitSub ( User I  ) 

Definition at line 1075 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 llvm::SelectionDAGLowering::visitMul ( User I  )  [inline]

Definition at line 657 of file SelectionDAGISel.cpp.

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

Definition at line 660 of file SelectionDAGISel.cpp.

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

Definition at line 666 of file SelectionDAGISel.cpp.

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

Definition at line 670 of file SelectionDAGISel.cpp.

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

Definition at line 671 of file SelectionDAGISel.cpp.

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

Definition at line 672 of file SelectionDAGISel.cpp.

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

Definition at line 673 of file SelectionDAGISel.cpp.

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

Definition at line 674 of file SelectionDAGISel.cpp.

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

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

Definition at line 1115 of file SelectionDAGISel.cpp.

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

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

Definition at line 680 of file SelectionDAGISel.cpp.

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

Definition at line 682 of file SelectionDAGISel.cpp.

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

Definition at line 684 of file SelectionDAGISel.cpp.

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

Definition at line 686 of file SelectionDAGISel.cpp.

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

Definition at line 688 of file SelectionDAGISel.cpp.

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

Definition at line 690 of file SelectionDAGISel.cpp.

void SelectionDAGLowering::visitExtractElement ( User I  ) 

Definition at line 1213 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::visitInsertElement ( User I  ) 

Definition at line 1201 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.

void SelectionDAGLowering::visitShuffleVector ( User I  ) 

Definition at line 1222 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::visitGetElementPtr ( User I  ) 

Definition at line 1234 of file SelectionDAGISel.cpp.

References llvm::ISD::ADD, DAG, E, llvm::SelectionDAG::getConstant(), getIntPtrConstant(), 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, and llvm::ISD::ZERO_EXTEND.

void SelectionDAGLowering::visitCast ( User I  ) 

Definition at line 1142 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 SelectionDAGLowering::visitSelect ( User I  ) 

Definition at line 1128 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::visitMalloc ( MallocInst I  ) 

Definition at line 2303 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::visitFree ( FreeInst I  ) 

Definition at line 2329 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::visitAlloca ( AllocaInst I  ) 

Definition at line 1298 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 SelectionDAGLowering::visitLoad ( LoadInst I  ) 

Definition at line 1350 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::visitStore ( StoreInst I  ) 

Definition at line 1385 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 llvm::SelectionDAGLowering::visitPHI ( PHINode I  )  [inline]

Definition at line 706 of file SelectionDAGISel.cpp.

void SelectionDAGLowering::visitCall ( CallInst I  ) 

Definition at line 1697 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::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 1994 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().

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 1499 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 SelectionDAGLowering::visitTargetIntrinsic ( CallInst I,
unsigned  Intrinsic 
)

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

Definition at line 1413 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 SelectionDAGLowering::visitVAStart ( CallInst I  ) 

Definition at line 2354 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 SelectionDAGLowering::visitVAArg ( VAArgInst I  ) 

Definition at line 2360 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::visitVAEnd ( CallInst I  ) 

Definition at line 2368 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::visitVACopy ( CallInst I  ) 

Definition at line 2374 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::visitFrameReturnAddress ( CallInst I,
bool  isFrameAddress 
)

Definition at line 2725 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::visitMemIntrinsic ( CallInst I,
unsigned  Op 
)

Definition at line 2841 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, llvm::SPII::Store, TLI, and llvm::ISD::TokenFactor.

Referenced by visitIntrinsicCall().

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

Definition at line 720 of file SelectionDAGISel.cpp.

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

Definition at line 724 of file SelectionDAGISel.cpp.

References DAG, llvm::SelectionDAG::getConstant(), 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.


Member Data Documentation

TargetLowering& llvm::SelectionDAGLowering::TLI

Definition at line 401 of file SelectionDAGISel.cpp.

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

SelectionDAG& llvm::SelectionDAGLowering::DAG

Definition at line 402 of file SelectionDAGISel.cpp.

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

const TargetData* llvm::SelectionDAGLowering::TD

Definition at line 403 of file SelectionDAGISel.cpp.

Referenced by visitGetElementPtr(), and visitMalloc().

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

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

Definition at line 407 of file SelectionDAGISel.cpp.

Referenced by visitSwitch().

SelectionDAGISel::JumpTable llvm::SelectionDAGLowering::JT

Definition at line 408 of file SelectionDAGISel.cpp.

Referenced by visitJumpTable(), and visitSwitch().

FunctionLoweringInfo& llvm::SelectionDAGLowering::FuncInfo

FuncInfo - Information about the function as a whole.

Definition at line 412 of file SelectionDAGISel.cpp.

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


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