LLVM API Documentation
Definition at line 352 of file SelectionDAGISel.cpp.
llvm::SelectionDAGLowering::SelectionDAGLowering | ( | SelectionDAG & | dag, | |
TargetLowering & | tli, | |||
FunctionLoweringInfo & | funcinfo | |||
) | [inline] |
Definition at line 414 of file SelectionDAGISel.cpp.
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().
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().
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 | ) |
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.
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().
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().
Definition at line 403 of file SelectionDAGISel.cpp.
Referenced by visitGetElementPtr(), and visitMalloc().
SwitchCases - Vector of CaseBlock structures used to communicate SwitchInst code generation information.
Definition at line 407 of file SelectionDAGISel.cpp.
Referenced by visitSwitch().
Definition at line 408 of file SelectionDAGISel.cpp.
Referenced by visitJumpTable(), and visitSwitch().
FuncInfo - Information about the function as a whole.
Definition at line 412 of file SelectionDAGISel.cpp.
Referenced by visitAlloca(), visitBr(), and visitSwitch().