LLVM API Documentation
#include <SelectionDAG.h>
Classes | |
struct | DAGUpdateListener |
Public Types | |
typedef ilist< SDNode > ::const_iterator | allnodes_const_iterator |
typedef ilist< SDNode >::iterator | allnodes_iterator |
Static Public Member Functions | |
static bool | isCommutativeBinOp (unsigned Opcode) |
static const fltSemantics & | EVTToAPFloatSemantics (EVT VT) |
Public Attributes | |
bool | NewNodesMustHaveLegalTypes |
std::map< const SDNode *, std::string > | NodeGraphAttrs |
Friends | |
struct | DAGUpdateListener |
DAGUpdateListener is a friend so it can manipulate the listener stack. More... | |
SelectionDAG class - This is used to represent a portion of an LLVM function in a low-level Data Dependence DAG representation suitable for instruction selection. This DAG is constructed as the first step of instruction selection in order to allow implementation of machine specific optimizations and code simplifications.
The representation used by the SelectionDAG is a target-independent representation, which has some similarities to the GCC RTL representation, but is significantly more simple, powerful, and is a graph form instead of a linear form.
Definition at line 169 of file SelectionDAG.h.
typedef ilist<SDNode>::const_iterator llvm::SelectionDAG::allnodes_const_iterator |
Definition at line 316 of file SelectionDAG.h.
typedef ilist<SDNode>::iterator llvm::SelectionDAG::allnodes_iterator |
Definition at line 319 of file SelectionDAG.h.
|
explicit |
Definition at line 871 of file SelectionDAG.cpp.
SelectionDAG::~SelectionDAG | ( | ) |
Definition at line 888 of file SelectionDAG.cpp.
void SelectionDAG::AddDbgValue | ( | SDDbgValue * | DB, |
SDNode * | SD, | ||
bool | isParameter | ||
) |
AddDbgValue - Add a dbg_value SDNode. If SD is non-null that means the value is produced by SD.
Definition at line 6009 of file SelectionDAG.cpp.
References llvm::SDDbgInfo::add(), and llvm::SDNode::setHasDebugValue().
Referenced by llvm::SelectionDAGBuilder::resolveDanglingDebugInfo(), and TransferDbgValues().
|
inline |
Definition at line 317 of file SelectionDAG.h.
Referenced by AssignTopologicalOrder(), dump(), llvm::GraphTraits< SelectionDAG * >::nodes_begin(), RemoveDeadNodes(), and llvm::DAGTypeLegalizer::run().
|
inline |
Definition at line 320 of file SelectionDAG.h.
|
inline |
Definition at line 318 of file SelectionDAG.h.
Referenced by AssignTopologicalOrder(), dump(), llvm::GraphTraits< SelectionDAG * >::nodes_end(), RemoveDeadNodes(), and llvm::DAGTypeLegalizer::run().
|
inline |
Definition at line 321 of file SelectionDAG.h.
Definition at line 322 of file SelectionDAG.h.
Referenced by AssignTopologicalOrder().
unsigned SelectionDAG::AssignTopologicalOrder | ( | ) |
AssignTopologicalOrder - Topological-sort the AllNodes list and a assign a unique node id for each node in the DAG based on their topological order. Returns the number of nodes.
AssignTopologicalOrder - Assign a unique node id for each node in the DAG based on their topological order. It returns the maximum id and a vector of the SDNodes* in assigned order by reference.
Definition at line 5922 of file SelectionDAG.cpp.
References allnodes_begin(), allnodes_end(), allnodes_size(), llvm::checkForCycles(), llvm::dbgs(), llvm::SDNode::dumprFull(), llvm::ISD::EntryToken, llvm::SDNode::getNodeId(), llvm::SDNode::getNumOperands(), I, llvm_unreachable, N, P, llvm::SDNode::setNodeId(), llvm::SDNode::use_begin(), and llvm::SDNode::use_end().
|
inline |
Definition at line 1043 of file SelectionDAG.h.
References llvm::SDDbgInfo::ByvalParmDbgBegin().
Referenced by llvm::ScheduleDAGSDNodes::EmitSchedule().
|
inline |
Definition at line 1046 of file SelectionDAG.h.
References llvm::SDDbgInfo::ByvalParmDbgEnd().
Referenced by llvm::ScheduleDAGSDNodes::EmitSchedule().
void SelectionDAG::clear | ( | ) |
clear - Clear state and free memory necessary to make this SelectionDAG ready to process a new block.
Definition at line 901 of file SelectionDAG.cpp.
References llvm::SDDbgInfo::clear(), getEntryNode(), and llvm::BumpPtrAllocator::Reset().
void SelectionDAG::clearGraphAttrs | ( | ) |
clearGraphAttrs - Clear all previously defined node graph attributes. Intended to be used from a debugging tool (eg. gdb).
Definition at line 164 of file SelectionDAGPrinter.cpp.
References llvm::errs(), and NodeGraphAttrs.
void SelectionDAG::Combine | ( | CombineLevel | Level, |
AliasAnalysis & | AA, | ||
CodeGenOpt::Level | OptLevel | ||
) |
Combine - This iterates over the nodes in the SelectionDAG, folding certain types of nodes together, or eliminating superfluous nodes. The Level argument controls whether Combine is allowed to produce nodes and types that are illegal on the target.
run - This is the main entry point to this class.
Definition at line 11091 of file DAGCombiner.cpp.
void SelectionDAG::ComputeMaskedBits | ( | SDValue | Op, |
APInt & | KnownZero, | ||
APInt & | KnownOne, | ||
unsigned | Depth = 0 |
||
) | const |
ComputeMaskedBits - Determine which of the bits specified in Mask are known to be either zero or one and return them in the KnownZero/KnownOne bitsets. This code only analyzes bits in Mask, in order to short-circuit processing. Targets can implement the computeMaskedBitsForTargetNode method in the TargetLowering class to allow target nodes to be understood.
ComputeMaskedBits - Determine which of the bits specified in Mask are known to be either zero or one and return them in the KnownZero/KnownOne bitsets. This code only analyzes bits in Mask, in order to short-circuit processing.
Definition at line 1759 of file SelectionDAG.cpp.
References llvm::APInt::abs(), llvm::ISD::ADD, llvm::ISD::ADDE, Align(), llvm::ISD::AND, llvm::ISD::ANY_EXTEND, llvm::ISD::AssertZext, llvm::ISD::BUILTIN_OP_END, llvm::APInt::clearAllBits(), llvm::TargetLowering::computeMaskedBitsForTargetNode(), llvm::computeMaskedBitsLoad(), llvm::ISD::Constant, llvm::APInt::countLeadingOnes(), llvm::countLeadingZeros(), llvm::APInt::countTrailingOnes(), llvm::ISD::CTLZ, llvm::ISD::CTLZ_ZERO_UNDEF, llvm::ISD::CTPOP, llvm::ISD::CTTZ, llvm::ISD::CTTZ_ZERO_UNDEF, llvm::ISD::FGETSIGN, llvm::ISD::FrameIndex, llvm::APInt::getBitsSet(), llvm::TargetLoweringBase::getBooleanContents(), llvm::APInt::getBoolValue(), llvm::APInt::getHighBitsSet(), llvm::APInt::getLowBitsSet(), llvm::MemSDNode::getMemoryVT(), llvm::SDValue::getNode(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::MemSDNode::getRanges(), llvm::SDValue::getResNo(), llvm::EVT::getScalarType(), llvm::APInt::getSignBit(), llvm::EVT::getSizeInBits(), llvm::TargetMachine::getTargetLowering(), llvm::SDValue::getValueType(), InferPtrAlignment(), llvm::APInt::intersects(), llvm::ISD::INTRINSIC_VOID, llvm::ISD::INTRINSIC_W_CHAIN, llvm::ISD::INTRINSIC_WO_CHAIN, llvm::APInt::isNegative(), llvm::APInt::isPowerOf2(), llvm::EVT::isVector(), llvm::ISD::isZEXTLoad(), llvm::A64DB::LD, llvm::ISD::LOAD, llvm::Log2_32(), llvm::APInt::lshr(), llvm::ISD::MUL, llvm::ISD::OR, llvm::ISD::SADDO, llvm::ISD::SELECT, llvm::ISD::SELECT_CC, llvm::ISD::SETCC, llvm::ISD::SHL, llvm::ISD::SIGN_EXTEND, llvm::ISD::SIGN_EXTEND_INREG, llvm::ISD::SMULO, llvm::ISD::SRA, llvm::ISD::SREM, llvm::ISD::SRL, llvm::ISD::SSUBO, llvm::ISD::SUB, llvm::ISD::TargetFrameIndex, llvm::APInt::trunc(), llvm::ISD::TRUNCATE, llvm::ISD::UADDO, llvm::ISD::UDIV, llvm::ISD::UMULO, llvm::ISD::UREM, llvm::ISD::USUBO, llvm::ISD::XOR, llvm::ISD::ZERO_EXTEND, llvm::TargetLoweringBase::ZeroOrOneBooleanContent, and llvm::APInt::zext().
Referenced by llvm::SelectionDAGISel::CheckOrMask(), llvm::SparcTargetLowering::computeMaskedBitsForTargetNode(), llvm::AMDGPUTargetLowering::computeMaskedBitsForTargetNode(), llvm::ARMTargetLowering::computeMaskedBitsForTargetNode(), ComputeNumSignBits(), FoldMaskAndShiftToScale(), isTruncateOf(), isWordAligned(), MaskedValueIsZero(), llvm::ARMTargetLowering::PerformCMOVCombine(), llvm::PPCTargetLowering::SelectAddressRegImm(), llvm::PPCTargetLowering::SelectAddressRegReg(), llvm::TargetLowering::SimplifyDemandedBits(), and ValueHasExactlyOneBitSet().
ComputeNumSignBits - Return the number of times the sign bit of the register is replicated into the other bits. We know that at least 1 bit is always equal to the sign bit (itself), but other cases can give us information. For example, immediately after an "SRA X, 2", we know that the top 3 bits are all equal to each other, so we return 3. Targets can implement the ComputeNumSignBitsForTarget method in the TargetLowering class to allow target nodes to be understood.
ComputeNumSignBits - Return the number of times the sign bit of the register is replicated into the other bits. We know that at least 1 bit is always equal to the sign bit (itself), but other cases can give us information. For example, immediately after an "SRA X, 2", we know that the top 3 bits are all equal to each other, so we return 3.
Definition at line 2204 of file SelectionDAG.cpp.
References llvm::ISD::ADD, llvm::ISD::AND, llvm::ISD::AssertSext, llvm::ISD::AssertZext, llvm::ISD::BUILTIN_OP_END, llvm::CallingConv::C, ComputeMaskedBits(), llvm::TargetLowering::ComputeNumSignBitsForTargetNode(), llvm::ISD::Constant, llvm::APInt::countLeadingZeros(), llvm::APInt::getBitWidth(), llvm::TargetLoweringBase::getBooleanContents(), llvm::APInt::getNumSignBits(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDValue::getResNo(), llvm::EVT::getScalarType(), llvm::EVT::getSizeInBits(), llvm::TargetMachine::getTargetLowering(), llvm::SDValue::getValueType(), llvm::ISD::INTRINSIC_VOID, llvm::ISD::INTRINSIC_W_CHAIN, llvm::ISD::INTRINSIC_WO_CHAIN, llvm::EVT::isInteger(), llvm::APInt::isNegative(), llvm::EVT::isVector(), llvm::A64DB::LD, llvm::ISD::OR, llvm::ISD::ROTL, llvm::ISD::ROTR, llvm::ISD::SADDO, llvm::ISD::SELECT, llvm::ISD::SETCC, llvm::ISD::SEXTLOAD, llvm::ISD::SHL, llvm::ISD::SIGN_EXTEND, llvm::ISD::SIGN_EXTEND_INREG, llvm::ISD::SMULO, llvm::ISD::SRA, llvm::ISD::SSUBO, llvm::ISD::SUB, llvm::ISD::TRUNCATE, llvm::ISD::UADDO, llvm::ISD::UMULO, llvm::ISD::USUBO, llvm::ISD::XOR, llvm::TargetLoweringBase::ZeroOrNegativeOneBooleanContent, and llvm::ISD::ZEXTLOAD.
CreateStackTemporary - Create a stack temporary, suitable for holding the specified value type. If minAlign is specified, the slot size will have at least that alignment.
CreateStackTemporary - Create a stack temporary, suitable for holding the specified value type.
Definition at line 1596 of file SelectionDAG.cpp.
References llvm::MachineFrameInfo::CreateStackObject(), getContext(), llvm::TargetLoweringBase::getDataLayout(), getFrameIndex(), llvm::MachineFunction::getFrameInfo(), getMachineFunction(), llvm::TargetLoweringBase::getPointerTy(), llvm::DataLayout::getPrefTypeAlignment(), llvm::EVT::getStoreSize(), llvm::TargetMachine::getTargetLowering(), and llvm::EVT::getTypeForEVT().
Referenced by llvm::X86TargetLowering::BuildFILD(), ExpandUnalignedLoad(), ExpandUnalignedStore(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), and PerformEXTRACT_VECTOR_ELTCombine().
CreateStackTemporary - Create a stack temporary suitable for holding either of the specified value types.
Definition at line 1610 of file SelectionDAG.cpp.
References Align(), llvm::MachineFrameInfo::CreateStackObject(), getContext(), llvm::TargetLoweringBase::getDataLayout(), getFrameIndex(), llvm::MachineFunction::getFrameInfo(), getMachineFunction(), llvm::TargetLoweringBase::getPointerTy(), llvm::DataLayout::getPrefTypeAlignment(), llvm::EVT::getStoreSizeInBits(), llvm::TargetMachine::getTargetLowering(), llvm::EVT::getTypeForEVT(), and TD.
|
inline |
Definition at line 1041 of file SelectionDAG.h.
References llvm::SDDbgInfo::DbgBegin().
Referenced by llvm::ScheduleDAGSDNodes::EmitSchedule().
|
inline |
Definition at line 1042 of file SelectionDAG.h.
References llvm::SDDbgInfo::DbgEnd().
Referenced by llvm::ScheduleDAGSDNodes::EmitSchedule().
void SelectionDAG::DeleteNode | ( | SDNode * | N | ) |
DeleteNode - Remove the specified node from the system. This node must have no referrers.
Definition at line 609 of file SelectionDAG.cpp.
void SelectionDAG::dump | ( | ) | const |
Definition at line 535 of file SelectionDAGDumper.cpp.
References allnodes_begin(), allnodes_end(), llvm::dbgs(), DumpNodes(), llvm::SDValue::getNode(), getRoot(), llvm::SDNode::hasOneUse(), I, and N.
|
inlinestatic |
Returns an APFloat semantics tag appropriate for the given type. If VT is a vector type, the element semantics are returned.
Definition at line 1013 of file SelectionDAG.h.
References llvm::MVT::f128, llvm::MVT::f16, llvm::MVT::f32, llvm::MVT::f64, llvm::MVT::f80, llvm::EVT::getScalarType(), llvm::EVT::getSimpleVT(), llvm::APFloat::IEEEdouble, llvm::APFloat::IEEEhalf, llvm::APFloat::IEEEquad, llvm::APFloat::IEEEsingle, llvm_unreachable, llvm::APFloat::PPCDoubleDouble, llvm::MVT::ppcf128, llvm::MVT::SimpleTy, and llvm::APFloat::x87DoubleExtended.
Referenced by getConstantFP(), getMemsetValue(), getNode(), and llvm::ConstantFPSDNode::isValueValidForType().
SDValue SelectionDAG::FoldConstantArithmetic | ( | unsigned | Opcode, |
EVT | VT, | ||
SDNode * | Cst1, | ||
SDNode * | Cst2 | ||
) |
FoldConstantArithmetic -.
Definition at line 2769 of file SelectionDAG.cpp.
References llvm::ISD::ADD, llvm::ISD::AND, llvm::APInt::ashr(), llvm::SmallVectorTemplateCommon< T >::back(), llvm::ISD::BUILD_VECTOR, llvm::SmallVectorTemplateCommon< T >::data(), llvm::dyn_cast(), getConstant(), getNode(), llvm::SDNode::getNumOperands(), llvm::SDNode::getOperand(), llvm::EVT::getScalarType(), llvm::SDNode::getValueType(), I, llvm::APInt::lshr(), llvm::ISD::MUL, llvm::ISD::OR, llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::ISD::ROTL, llvm::APInt::rotl(), llvm::ISD::ROTR, llvm::APInt::rotr(), llvm::ISD::SDIV, llvm::APInt::sdiv(), llvm::ISD::SHL, llvm::SmallVectorTemplateCommon< T >::size(), llvm::ISD::SRA, llvm::ISD::SREM, llvm::APInt::srem(), llvm::ISD::SRL, llvm::ISD::SUB, llvm::ISD::UDIV, llvm::APInt::udiv(), llvm::ISD::UREM, llvm::APInt::urem(), llvm::NVPTX::PTXLdStInstCode::V2, and llvm::ISD::XOR.
Referenced by getNode().
FoldSetCC - Constant fold a setcc to true or false.
Definition at line 1625 of file SelectionDAG.cpp.
References llvm::APFloat::cmpEqual, llvm::APFloat::cmpGreaterThan, llvm::APFloat::cmpLessThan, llvm::APFloat::cmpUnordered, llvm::TargetLoweringBase::getBooleanContents(), getConstant(), llvm::SDValue::getNode(), getSetCC(), llvm::ISD::getSetCCSwappedOperands(), llvm::EVT::getSimpleVT(), llvm::TargetMachine::getTargetLowering(), getUNDEF(), llvm::SDValue::getValueType(), llvm::TargetLoweringBase::isCondCodeLegal(), llvm::EVT::isInteger(), llvm::EVT::isVector(), llvm_unreachable, llvm::ISD::SETEQ, llvm::ISD::SETFALSE, llvm::ISD::SETFALSE2, llvm::ISD::SETGE, llvm::ISD::SETGT, llvm::ISD::SETLE, llvm::ISD::SETLT, llvm::ISD::SETNE, llvm::ISD::SETO, llvm::ISD::SETOEQ, llvm::ISD::SETOGE, llvm::ISD::SETOGT, llvm::ISD::SETOLE, llvm::ISD::SETOLT, llvm::ISD::SETONE, llvm::ISD::SETTRUE, llvm::ISD::SETTRUE2, llvm::ISD::SETUEQ, llvm::ISD::SETUGE, llvm::ISD::SETUGT, llvm::ISD::SETULE, llvm::ISD::SETULT, llvm::ISD::SETUNE, llvm::ISD::SETUO, llvm::APInt::sge(), llvm::APInt::sgt(), llvm::APInt::sle(), llvm::APInt::slt(), llvm::APInt::uge(), llvm::APInt::ugt(), llvm::APInt::ule(), llvm::APInt::ult(), and llvm::TargetLoweringBase::ZeroOrNegativeOneBooleanContent.
Referenced by getNode(), and llvm::TargetLowering::SimplifySetCC().
SDValue SelectionDAG::getAddrSpaceCast | ( | SDLoc | dl, |
EVT | VT, | ||
SDValue | Ptr, | ||
unsigned | SrcAS, | ||
unsigned | DestAS | ||
) |
getAddrSpaceCast - Return an AddrSpaceCastSDNode.
Definition at line 1563 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::ISD::ADDRSPACECAST, llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), and getVTList().
getAnyExtOrTrunc - Convert Op, which must be of integer type, to the integer type VT, by either any-extending or truncating it.
Definition at line 920 of file SelectionDAG.cpp.
References llvm::ISD::ANY_EXTEND, llvm::EVT::bitsGT(), getNode(), llvm::SDValue::getValueType(), and llvm::ISD::TRUNCATE.
Referenced by getNode().
SDValue SelectionDAG::getAtomic | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | MemVT, | ||
SDValue | Chain, | ||
SDValue | Ptr, | ||
SDValue | Cmp, | ||
SDValue | Swp, | ||
MachinePointerInfo | PtrInfo, | ||
unsigned | Alignment, | ||
AtomicOrdering | Ordering, | ||
SynchronizationScope | SynchScope | ||
) |
getAtomic - Gets a node for an atomic op, produces result and chain and takes 3 operands
Definition at line 4215 of file SelectionDAG.cpp.
References llvm::ISD::ATOMIC_LOAD, llvm::ISD::ATOMIC_STORE, getMachineFunction(), llvm::MachineFunction::getMachineMemOperand(), llvm::EVT::getStoreSize(), llvm::MachineMemOperand::MOLoad, llvm::MachineMemOperand::MOStore, and llvm::MachineMemOperand::MOVolatile.
Referenced by getAtomic(), LowerATOMIC_STORE(), LowerLOAD_SUB(), ReplaceATOMIC_LOAD(), and ReplaceATOMIC_OP_64().
SDValue SelectionDAG::getAtomic | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | MemVT, | ||
SDValue | Chain, | ||
SDValue | Ptr, | ||
SDValue | Cmp, | ||
SDValue | Swp, | ||
MachineMemOperand * | MMO, | ||
AtomicOrdering | Ordering, | ||
SynchronizationScope | SynchScope | ||
) |
Definition at line 4243 of file SelectionDAG.cpp.
References llvm::ISD::ATOMIC_CMP_SWAP, getAtomic(), llvm::SDValue::getValueType(), getVTList(), and llvm::MVT::Other.
SDValue SelectionDAG::getAtomic | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | MemVT, | ||
SDValue | Chain, | ||
SDValue | Ptr, | ||
SDValue | Val, | ||
const Value * | PtrVal, | ||
unsigned | Alignment, | ||
AtomicOrdering | Ordering, | ||
SynchronizationScope | SynchScope | ||
) |
getAtomic - Gets a node for an atomic op, produces result (if relevant) and chain and takes 2 operands.
Definition at line 4259 of file SelectionDAG.cpp.
References llvm::ISD::ATOMIC_LOAD, llvm::ISD::ATOMIC_STORE, getAtomic(), getMachineFunction(), llvm::MachineFunction::getMachineMemOperand(), llvm::EVT::getStoreSize(), llvm::MachineMemOperand::MOLoad, llvm::MachineMemOperand::MOStore, and llvm::MachineMemOperand::MOVolatile.
SDValue SelectionDAG::getAtomic | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | MemVT, | ||
SDValue | Chain, | ||
SDValue | Ptr, | ||
SDValue | Val, | ||
MachineMemOperand * | MMO, | ||
AtomicOrdering | Ordering, | ||
SynchronizationScope | SynchScope | ||
) |
Definition at line 4290 of file SelectionDAG.cpp.
References llvm::ISD::ATOMIC_LOAD_ADD, llvm::ISD::ATOMIC_LOAD_AND, llvm::ISD::ATOMIC_LOAD_MAX, llvm::ISD::ATOMIC_LOAD_MIN, llvm::ISD::ATOMIC_LOAD_NAND, llvm::ISD::ATOMIC_LOAD_OR, llvm::ISD::ATOMIC_LOAD_SUB, llvm::ISD::ATOMIC_LOAD_UMAX, llvm::ISD::ATOMIC_LOAD_UMIN, llvm::ISD::ATOMIC_LOAD_XOR, llvm::ISD::ATOMIC_STORE, llvm::ISD::ATOMIC_SWAP, getAtomic(), llvm::SDValue::getValueType(), getVTList(), and llvm::MVT::Other.
SDValue SelectionDAG::getAtomic | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | MemVT, | ||
EVT | VT, | ||
SDValue | Chain, | ||
SDValue | Ptr, | ||
const Value * | PtrVal, | ||
unsigned | Alignment, | ||
AtomicOrdering | Ordering, | ||
SynchronizationScope | SynchScope | ||
) |
getAtomic - Gets a node for an atomic op, produces result and chain and takes 1 operand.
Definition at line 4318 of file SelectionDAG.cpp.
References llvm::ISD::ATOMIC_LOAD, llvm::ISD::ATOMIC_STORE, getAtomic(), getMachineFunction(), llvm::MachineFunction::getMachineMemOperand(), llvm::EVT::getStoreSize(), llvm::MachineMemOperand::MOLoad, llvm::MachineMemOperand::MOStore, and llvm::MachineMemOperand::MOVolatile.
SDValue SelectionDAG::getAtomic | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | MemVT, | ||
EVT | VT, | ||
SDValue | Chain, | ||
SDValue | Ptr, | ||
MachineMemOperand * | MMO, | ||
AtomicOrdering | Ordering, | ||
SynchronizationScope | SynchScope | ||
) |
Definition at line 4349 of file SelectionDAG.cpp.
References llvm::ISD::ATOMIC_LOAD, getAtomic(), getVTList(), and llvm::MVT::Other.
SDValue SelectionDAG::getAtomic | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | MemVT, | ||
SDVTList | VTList, | ||
SDValue * | Ops, | ||
unsigned | NumOps, | ||
MachineMemOperand * | MMO, | ||
AtomicOrdering | Ordering, | ||
SynchronizationScope | SynchScope | ||
) |
getAtomic - Gets a node for an atomic op, produces result and chain and takes N operands.
Definition at line 4184 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::BumpPtrAllocator::Allocate(), llvm::MachinePointerInfo::getAddrSpace(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), llvm::MachineMemOperand::getPointerInfo(), and llvm::EVT::getRawBits().
SDValue SelectionDAG::getBasicBlock | ( | MachineBasicBlock * | MBB | ) |
Definition at line 1277 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::FoldingSetNodeID::AddPointer(), llvm::ISD::BasicBlock, getVTList(), and llvm::MVT::Other.
Referenced by AddNodeIDCustom(), llvm::SelectionDAGBuilder::visitBitTestCase(), llvm::SelectionDAGBuilder::visitBitTestHeader(), llvm::SelectionDAGBuilder::visitJumpTableHeader(), llvm::SelectionDAGBuilder::visitSPDescriptorParent(), and llvm::SelectionDAGBuilder::visitSwitchCase().
SDValue llvm::SelectionDAG::getBasicBlock | ( | MachineBasicBlock * | MBB, |
SDLoc | dl | ||
) |
SDValue SelectionDAG::getBlockAddress | ( | const BlockAddress * | BA, |
EVT | VT, | ||
int64_t | Offset = 0 , |
||
bool | isTarget = false , |
||
unsigned char | TargetFlags = 0 |
||
) |
Definition at line 1506 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::FoldingSetNodeID::AddPointer(), llvm::ISD::BlockAddress, getVTList(), and llvm::ISD::TargetBlockAddress.
Referenced by getTargetBlockAddress(), and llvm::SelectionDAGBuilder::getValueImpl().
|
inline |
getCALLSEQ_END - Return a new CALLSEQ_END node, which always must have a glue result (to ensure it's not CSE'd). CALLSEQ_END does not have a useful SDLoc.
Definition at line 572 of file SelectionDAG.h.
References llvm::ISD::CALLSEQ_END, llvm::SDValue::getNode(), getNode(), getVTList(), llvm::MVT::Glue, llvm::MVT::Other, llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), and llvm::SmallVectorTemplateCommon< T >::size().
Referenced by llvm::HexagonTargetLowering::LowerCall(), llvm::NVPTXTargetLowering::LowerCall(), llvm::AArch64TargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::SparcTargetLowering::LowerGlobalTLSAddress(), and PrepareTailCall().
getCALLSEQ_START - Return a new CALLSEQ_START node, which always must have a glue result (to ensure it's not CSE'd). CALLSEQ_START does not have a useful SDLoc.
Definition at line 563 of file SelectionDAG.h.
References llvm::ISD::CALLSEQ_START, getNode(), getVTList(), llvm::MVT::Glue, and llvm::MVT::Other.
Referenced by llvm::HexagonTargetLowering::LowerCall(), llvm::NVPTXTargetLowering::LowerCall(), llvm::AArch64TargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), and llvm::SparcTargetLowering::LowerGlobalTLSAddress().
SDValue SelectionDAG::getCondCode | ( | ISD::CondCode | Cond | ) |
Definition at line 1324 of file SelectionDAG.cpp.
References N.
Referenced by llvm::AArch64TargetLowering::getSelectableIntSetCC(), getSelectCC(), getSetCC(), llvm::AArch64TargetLowering::LowerBR_CC(), llvm::AArch64TargetLowering::LowerBRCOND(), llvm::AArch64TargetLowering::LowerSELECT(), llvm::AArch64TargetLowering::LowerSELECT_CC(), llvm::AArch64TargetLowering::LowerSETCC(), LowerVectorSETCC(), and llvm::TargetLowering::softenSetCCOperands().
Definition at line 959 of file SelectionDAG.cpp.
References llvm::EVT::getScalarType(), and llvm::EVT::getSizeInBits().
Referenced by AddCombineToVPADDL(), addIPMSequence(), adjustForTestUnderMask(), adjustSubwordCmp(), adjustZeroCmp(), bitcastf32Toi32(), llvm::TargetLowering::BuildExactSDIV(), llvm::X86TargetLowering::BuildFILD(), BuildIntrinsicOp(), llvm::TargetLowering::BuildSDIV(), BuildSplatI(), llvm::TargetLowering::BuildUDIV(), BuildVectorFromScalar(), CMPEQCombine(), CreateCopyOfByValArgument(), createFPCmp(), createLoadLR(), createStoreLR(), emitCLC(), EmitCMP(), emitCmp(), emitMemMem(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForMemchr(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForMemset(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrcmp(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrcpy(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrlen(), Expand64BitShift(), ExpandBITCAST(), expandExp(), expandExp2(), expandf64Toi32(), expandPow(), ExpandUnalignedLoad(), ExpandUnalignedStore(), ExtractBitFromMaskVector(), FoldConstantArithmetic(), FoldMaskAndShiftToExtract(), FoldMaskAndShiftToScale(), FoldMaskedShiftToScaledMask(), FoldSetCC(), genConstMult(), GeneratePerfectShuffle(), getARMIndexedAddressParts(), getBoundedStrlen(), getBuildVectorSplat(), getConstant(), getCopyFromParts(), getCopyFromPartsVector(), getCopyToPartsVector(), GetExponent(), getIntPtrConstant(), getLSBForBFI(), getMemBasePlusOffset(), getMemsetStringVal(), getMemsetValue(), getNode(), getNOT(), getScatterNode(), llvm::AArch64TargetLowering::getSelectableIntSetCC(), GetSignificand(), getT2IndexedAddressParts(), getTargetConstant(), getTargetShuffleNode(), getTargetVShiftByConstNode(), getTargetVShiftNode(), llvm::SelectionDAGBuilder::getValueImpl(), getVShift(), getZeroExtendInReg(), initAccumulator(), InsertFenceForAtomic(), isBLACompatibleAddress(), isConditionalZeroOrAllOnes(), llvm::AArch64TargetLowering::isKnownShuffleVector(), IsSingleInstrConstant(), LowerADDC_ADDE_SUBC_SUBE(), LowerAsSplatVectorLoad(), LowerATOMIC_FENCE(), llvm::AArch64TargetLowering::LowerBlockAddress(), llvm::AArch64TargetLowering::LowerBR_CC(), LowerBR_CC(), llvm::HexagonTargetLowering::LowerBR_JT(), llvm::AArch64TargetLowering::LowerBRCOND(), llvm::AArch64TargetLowering::LowerBUILD_VECTOR(), LowerBuildVectorv16i8(), llvm::HexagonTargetLowering::LowerCall(), llvm::NVPTXTargetLowering::LowerCall(), llvm::AArch64TargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::SelectionDAGBuilder::LowerCallTo(), LowerCTLZ(), LowerCTLZ_ZERO_UNDEF(), LowerCTTZ(), llvm::HexagonTargetLowering::LowerDYNAMIC_STACKALLOC(), LowerDYNAMIC_STACKALLOC(), LowerF128Load(), LowerF128Store(), lowerFABS32(), lowerFABS64(), lowerFCOPYSIGN32(), lowerFCOPYSIGN64(), LowerFGETSIGN(), llvm::R600TargetLowering::LowerFormalArguments(), llvm::NVPTXTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::SparcTargetLowering::LowerFormalArguments_64(), llvm::AMDGPUTargetLowering::LowerGlobalAddress(), llvm::AArch64TargetLowering::LowerGlobalAddressELFLarge(), llvm::AArch64TargetLowering::LowerGlobalAddressELFSmall(), llvm::AArch64TargetLowering::LowerGlobalTLSAddress(), LowerInterruptReturn(), LowerINTRINSIC_W_CHAIN(), LowerINTRINSIC_WO_CHAIN(), llvm::AMDGPUTargetLowering::LowerIntrinsicIABS(), LowerIntVSETCC_AVX512(), llvm::AArch64TargetLowering::LowerJumpTable(), LowerLabelRef(), llvm::MipsTargetLowering::lowerLOAD(), LowerLOAD_SUB(), LowerMemOpCallTo(), lowerMSABinaryBitImmIntr(), lowerMSABitClear(), lowerMSABitClearImm(), lowerMSASplatImm(), lowerMSASplatZExt(), lowerMUL_LOHI32(), llvm::R600TargetLowering::LowerOperation(), LowerPREFETCH(), LowerREADCYCLECOUNTER(), llvm::NVPTXTargetLowering::LowerReturn(), llvm::SparcTargetLowering::LowerReturn_32(), llvm::SparcTargetLowering::LowerReturn_64(), llvm::MSP430TargetLowering::LowerRETURNADDR(), llvm::HexagonTargetLowering::LowerRETURNADDR(), llvm::AArch64TargetLowering::LowerRETURNADDR(), LowerReverse_VECTOR_SHUFFLEv16i8_v8i16(), LowerScalarImmediateShift(), LowerSDIV(), LowerSDIV_v4i16(), LowerSDIV_v4i8(), llvm::AArch64TargetLowering::LowerSELECT(), llvm::AArch64TargetLowering::LowerSELECT_CC(), LowerSELECT_CC(), llvm::MSP430TargetLowering::LowerSETCC(), llvm::AArch64TargetLowering::LowerSETCC(), LowerShift(), LowerUDIV(), llvm::AArch64TargetLowering::LowerVACOPY(), llvm::AArch64TargetLowering::LowerVASTART(), llvm::AArch64TargetLowering::LowerVECTOR_SHUFFLE(), LowerVECTOR_SHUFFLE(), lowerVECTOR_SHUFFLE_SHF(), LowerVECTOR_SHUFFLEtoBlend(), LowerVECTOR_SHUFFLEv16i8(), LowerVECTOR_SHUFFLEv32i8(), LowerVECTOR_SHUFFLEv8i16(), LowerVECTOR_SHUFFLEv8i8(), LowerVectorSETCC(), LowerVSETCC(), LowerXALUO(), llvm::SparcTargetLowering::makeAddress(), MaterializeSETB(), memsetStore(), OptimizeConditionalInDecrement(), PerformADCCombine(), performANDCombine(), PerformANDCombine(), PerformAndCombine(), PerformARMBUILD_VECTORCombine(), PerformBrCondCombine(), PerformCMOVCombine(), llvm::R600TargetLowering::PerformDAGCombine(), llvm::SITargetLowering::PerformDAGCombine(), llvm::PPCTargetLowering::PerformDAGCombine(), performDSPShiftCombine(), PerformEXTRACT_VECTOR_ELTCombine(), performIntegerAbsCombine(), PerformIntrinsicCombine(), PerformISDSETCCCombine(), PerformLOADCombine(), PerformMULCombine(), PerformMulCombine(), performORCombine(), PerformORCombine(), PerformSELECTCombine(), PerformSETCCCombine(), PerformShiftCombine(), PerformSHLCombine(), PerformSRACombine(), PerformSTORECombine(), PerformSubCombine(), PerformVCVTCombine(), PerformVDIVCombine(), PerformZExtCombine(), PrepareCall(), ReplaceATOMIC_LOAD(), llvm::X86TargetLowering::ReplaceNodeResults(), ReplaceREADCYCLECOUNTER(), llvm::AArch64TargetLowering::SaveVarArgRegisters(), llvm::SelectionDAGISel::SelectCodeCommon(), ShrinkLoadReplaceStoreWithStore(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::TargetLowering::SimplifySetCC(), SkipExtensionForVMULL(), llvm::TargetLowering::softenSetCCOperands(), SplitVector(), llvm::AMDGPUTargetLowering::SplitVectorLoad(), llvm::AMDGPUTargetLowering::SplitVectorStore(), TranslateX86CC(), tryCombineToBFI(), tryCombineToEXTR(), tryCombineToLargerBFI(), tryFoldToZero(), UnrollVectorOp(), llvm::SelectionDAGBuilder::visitBitTestCase(), llvm::SelectionDAGBuilder::visitBitTestHeader(), llvm::SelectionDAGBuilder::visitJumpTableHeader(), llvm::SelectionDAGBuilder::visitSPDescriptorParent(), llvm::SelectionDAGBuilder::visitSwitchCase(), and WidenMaskArithmetic().
Definition at line 967 of file SelectionDAG.cpp.
References llvm::ConstantInt::get(), and getConstant().
SDValue SelectionDAG::getConstant | ( | const ConstantInt & | Val, |
EVT | VT, | ||
bool | isTarget = false |
||
) |
Definition at line 971 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::FoldingSetNodeID::AddPointer(), llvm::SmallVectorImpl< T >::assign(), llvm::ISD::BITCAST, llvm::ISD::BUILD_VECTOR, llvm::ISD::Constant, llvm::SmallVectorTemplateCommon< T >::end(), llvm::ConstantInt::get(), llvm::ConstantInt::getBitWidth(), getConstant(), getContext(), getNode(), llvm::EVT::getScalarType(), llvm::EVT::getSizeInBits(), llvm::TargetMachine::getTargetLowering(), llvm::TargetLoweringBase::getTypeAction(), llvm::TargetLoweringBase::getTypeToTransformTo(), llvm::ConstantInt::getValue(), llvm::EVT::getVectorNumElements(), llvm::EVT::getVectorVT(), getVTList(), llvm::SmallVectorImpl< T >::insert(), llvm::TargetLoweringBase::isBigEndian(), llvm::EVT::isInteger(), llvm::EVT::isVector(), llvm::APInt::lshr(), NewNodesMustHaveLegalTypes, llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), llvm::SmallVectorTemplateCommon< T >::size(), llvm::ISD::TargetConstant, llvm::APInt::trunc(), llvm::TargetLoweringBase::TypeExpandInteger, llvm::TargetLoweringBase::TypePromoteInteger, and llvm::APInt::zext().
Definition at line 1108 of file SelectionDAG.cpp.
References llvm::lltok::APFloat, llvm::APFloat::convert(), EVTToAPFloatSemantics(), llvm::MVT::f128, llvm::MVT::f16, llvm::MVT::f32, llvm::MVT::f64, llvm::MVT::f80, llvm::EVT::getScalarType(), llvm_unreachable, llvm::MVT::ppcf128, and llvm::APFloat::rmNearestTiesToEven.
Referenced by llvm::X86TargetLowering::BuildFILD(), ExpandPowI(), getConstantFP(), getF32Constant(), getMemsetStringVal(), getMemsetValue(), GetNegatedExpression(), getNode(), getTargetConstantFP(), llvm::SelectionDAGBuilder::getValueImpl(), llvm::AMDGPUTargetLowering::LowerIntrinsicLRP(), LowerVectorSETCC(), llvm::PPCTargetLowering::PerformDAGCombine(), llvm::X86TargetLowering::ReplaceNodeResults(), and llvm::SelectionDAGISel::SelectCodeCommon().
Definition at line 1070 of file SelectionDAG.cpp.
References llvm::ConstantFP::get(), getConstantFP(), and getContext().
SDValue SelectionDAG::getConstantFP | ( | const ConstantFP & | CF, |
EVT | VT, | ||
bool | isTarget = false |
||
) |
Definition at line 1074 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::FoldingSetNodeID::AddPointer(), llvm::SmallVectorImpl< T >::assign(), llvm::ISD::BUILD_VECTOR, llvm::ISD::ConstantFP, getNode(), llvm::EVT::getScalarType(), llvm::EVT::getVectorNumElements(), getVTList(), llvm::EVT::isFloatingPoint(), llvm::EVT::isVector(), llvm::SmallVectorTemplateCommon< T >::size(), and llvm::ISD::TargetConstantFP.
SDValue SelectionDAG::getConstantPool | ( | const Constant * | C, |
EVT | VT, | ||
unsigned | Align = 0 , |
||
int | Offs = 0 , |
||
bool | isT = false , |
||
unsigned char | TargetFlags = 0 |
||
) |
Definition at line 1204 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::FoldingSetNodeID::AddPointer(), llvm::ISD::ConstantPool, llvm::TargetLoweringBase::getDataLayout(), llvm::DataLayout::getPrefTypeAlignment(), llvm::TargetMachine::getTargetLowering(), llvm::Value::getType(), getVTList(), and llvm::ISD::TargetConstantPool.
Referenced by llvm::X86TargetLowering::BuildFILD(), getTargetConstantPool(), LowerSIGN_EXTEND_AVX512(), LowerVectorBroadcast(), and LowerZERO_EXTEND_AVX512().
SDValue SelectionDAG::getConstantPool | ( | MachineConstantPoolValue * | C, |
EVT | VT, | ||
unsigned | Align = 0 , |
||
int | Offs = 0 , |
||
bool | isT = false , |
||
unsigned char | TargetFlags = 0 |
||
) |
Definition at line 1232 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::MachineConstantPoolValue::addSelectionDAGCSEId(), llvm::ISD::ConstantPool, llvm::TargetLoweringBase::getDataLayout(), llvm::DataLayout::getPrefTypeAlignment(), llvm::TargetMachine::getTargetLowering(), llvm::MachineConstantPoolValue::getType(), getVTList(), and llvm::ISD::TargetConstantPool.
|
inline |
Definition at line 285 of file SelectionDAG.h.
Referenced by llvm::X86TargetLowering::BuildFILD(), BuildVectorFromScalar(), canFoldInAddressingMode(), CreateStackTemporary(), llvm::SelectionDAGBuilder::EmitBranchForMergedCondition(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset(), llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemset(), ExpandUnalignedLoad(), ExpandUnalignedStore(), ExtractSubVector(), getConstant(), getConstantFP(), getCopyFromParts(), getCopyFromPartsVector(), getCopyToParts(), getCopyToPartsVector(), getMemcpy(), getMemcpyLoadsAndStores(), getMemmove(), getMemmoveLoadsAndStores(), getMemset(), getMemsetStores(), getMemsetStringVal(), GetRegistersForValue(), GetSplitDestVTs(), llvm::SelectionDAGBuilder::getValue(), llvm::SelectionDAGBuilder::getValueImpl(), llvm::SelectionDAGBuilder::init(), llvm::AArch64TargetLowering::IsEligibleForTailCallOptimization(), llvm::X86TargetLowering::LowerAsmOperandForConstraint(), LowerAsSplatVectorLoad(), llvm::HexagonTargetLowering::LowerCall(), llvm::AArch64TargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::SelectionDAGBuilder::LowerCallOperands(), llvm::HexagonTargetLowering::LowerCallResult(), llvm::AArch64TargetLowering::LowerCallResult(), llvm::SparcTargetLowering::LowerF128_LibCallArg(), llvm::SparcTargetLowering::LowerF128Compare(), llvm::SparcTargetLowering::LowerF128Op(), llvm::AArch64TargetLowering::LowerF128ToCall(), llvm::R600TargetLowering::LowerFormalArguments(), llvm::SITargetLowering::LowerFormalArguments(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::AArch64TargetLowering::LowerFormalArguments(), llvm::SystemZTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::SparcTargetLowering::LowerFormalArguments_64(), LowerFSINCOS(), llvm::HexagonTargetLowering::LowerReturn(), llvm::AArch64TargetLowering::LowerReturn(), llvm::SystemZTargetLowering::LowerReturn(), llvm::SparcTargetLowering::LowerReturn_32(), llvm::SparcTargetLowering::LowerReturn_64(), LowerSIGN_EXTEND_AVX512(), LowerToTLSExecModel(), LowerVECTOR_SHUFFLE(), llvm::TargetLowering::makeLibCall(), PerformARMBUILD_VECTORCombine(), PerformBUILD_VECTORCombine(), llvm::PPCTargetLowering::PerformDAGCombine(), PerformInsertEltCombine(), PerformLOADCombine(), PerformSELECTCombine(), PerformSTORECombine(), llvm::PPCTargetLowering::ReplaceNodeResults(), llvm::TargetLowering::SimplifySetCC(), llvm::TargetLowering::softenSetCCOperands(), UnrollVectorOp(), llvm::SelectionDAGBuilder::visitBitTestCase(), llvm::SelectionDAGBuilder::visitBitTestHeader(), llvm::SelectionDAGBuilder::visitJumpTableHeader(), llvm::SelectionDAGBuilder::visitSPDescriptorParent(), llvm::SelectionDAGBuilder::visitSwitchCase(), and XFormVExtractWithShuffleIntoLoad().
SDValue SelectionDAG::getConvertRndSat | ( | EVT | VT, |
SDLoc | dl, | ||
SDValue | Val, | ||
SDValue | DTy, | ||
SDValue | STy, | ||
SDValue | Rnd, | ||
SDValue | Sat, | ||
ISD::CvtCode | Code | ||
) |
Returns the ConvertRndSat Note: Avoid using this node because it may disappear in the future and most targets don't support it.
Definition at line 1436 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::tgtok::Code, llvm::ISD::CONVERT_RNDSAT, llvm::ISD::CVT_FF, llvm::ISD::CVT_SS, llvm::ISD::CVT_UU, llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), and getVTList().
Definition at line 510 of file SelectionDAG.h.
References llvm::ISD::CopyFromReg, getNode(), getRegister(), getVTList(), and llvm::MVT::Other.
Referenced by llvm::X86TargetLowering::BuildFILD(), llvm::SITargetLowering::CreateLiveInRegister(), GetTLSADDR(), llvm::HexagonTargetLowering::LowerCall(), llvm::AArch64TargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::HexagonTargetLowering::LowerCallResult(), llvm::AArch64TargetLowering::LowerCallResult(), LowerCMP_SWAP(), llvm::HexagonTargetLowering::LowerDYNAMIC_STACKALLOC(), LowerDYNAMIC_STACKALLOC(), llvm::R600TargetLowering::LowerFormalArguments(), llvm::SITargetLowering::LowerFormalArguments(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::AArch64TargetLowering::LowerFormalArguments(), llvm::SystemZTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::SparcTargetLowering::LowerFormalArguments_64(), llvm::MSP430TargetLowering::LowerFRAMEADDR(), llvm::HexagonTargetLowering::LowerFRAMEADDR(), llvm::AArch64TargetLowering::LowerFRAMEADDR(), LowerFRAMEADDR(), llvm::SparcTargetLowering::LowerGlobalTLSAddress(), LowerINTRINSIC_W_CHAIN(), llvm::R600TargetLowering::LowerOperation(), LowerREADCYCLECOUNTER(), llvm::SparcTargetLowering::LowerReturn_32(), llvm::HexagonTargetLowering::LowerRETURNADDR(), llvm::AArch64TargetLowering::LowerRETURNADDR(), LowerRETURNADDR(), llvm::MSP430TargetLowering::LowerSETCC(), llvm::AArch64TargetLowering::LowerTLSDescCall(), performDivRemCombine(), llvm::X86TargetLowering::ReplaceNodeResults(), llvm::AArch64TargetLowering::SaveVarArgRegisters(), llvm::SelectionDAGBuilder::visitBitTestCase(), and llvm::SelectionDAGBuilder::visitJumpTable().
|
inline |
Definition at line 519 of file SelectionDAG.h.
References llvm::ISD::CopyFromReg, llvm::SDValue::getNode(), getNode(), getRegister(), getVTList(), llvm::MVT::Glue, and llvm::MVT::Other.
|
inline |
Definition at line 487 of file SelectionDAG.h.
References llvm::ISD::CopyToReg, getNode(), getRegister(), llvm::SDValue::getValueType(), and llvm::MVT::Other.
Referenced by llvm::X86SelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset(), llvm::MipsTargetLowering::getOpndList(), llvm::HexagonTargetLowering::LowerCall(), llvm::AArch64TargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), LowerCMP_SWAP(), llvm::HexagonTargetLowering::LowerDYNAMIC_STACKALLOC(), LowerDYNAMIC_STACKALLOC(), llvm::HexagonTargetLowering::LowerEH_RETURN(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::SparcTargetLowering::LowerGlobalTLSAddress(), LowerINTRINSIC_W_CHAIN(), llvm::R600TargetLowering::LowerOperation(), llvm::HexagonTargetLowering::LowerReturn(), llvm::AArch64TargetLowering::LowerReturn(), llvm::SystemZTargetLowering::LowerReturn(), llvm::SparcTargetLowering::LowerReturn_32(), llvm::SparcTargetLowering::LowerReturn_64(), llvm::AArch64TargetLowering::LowerTLSDescCall(), LowerToTLSGeneralDynamicModel32(), LowerToTLSLocalDynamicModel(), PrepareCall(), llvm::X86TargetLowering::ReplaceNodeResults(), llvm::SelectionDAGISel::SelectCodeCommon(), llvm::SelectionDAGBuilder::visitBitTestHeader(), and llvm::SelectionDAGBuilder::visitJumpTableHeader().
|
inline |
Definition at line 495 of file SelectionDAG.h.
References llvm::ISD::CopyToReg, llvm::SDValue::getNode(), getNode(), getRegister(), llvm::SDValue::getValueType(), getVTList(), llvm::MVT::Glue, and llvm::MVT::Other.
|
inline |
Definition at line 503 of file SelectionDAG.h.
References llvm::ISD::CopyToReg, llvm::SDValue::getNode(), getNode(), getVTList(), llvm::MVT::Glue, N, and llvm::MVT::Other.
SDDbgValue * SelectionDAG::getDbgValue | ( | MDNode * | MDPtr, |
SDNode * | N, | ||
unsigned | R, | ||
uint64_t | Off, | ||
DebugLoc | DL, | ||
unsigned | O | ||
) |
getDbgValue - Creates a SDDbgValue node.
Definition at line 5609 of file SelectionDAG.cpp.
Referenced by llvm::SelectionDAGBuilder::resolveDanglingDebugInfo(), and TransferDbgValues().
SDDbgValue * SelectionDAG::getDbgValue | ( | MDNode * | MDPtr, |
const Value * | C, | ||
uint64_t | Off, | ||
DebugLoc | DL, | ||
unsigned | O | ||
) |
Definition at line 5615 of file SelectionDAG.cpp.
SDDbgValue * SelectionDAG::getDbgValue | ( | MDNode * | MDPtr, |
unsigned | FI, | ||
uint64_t | Off, | ||
DebugLoc | DL, | ||
unsigned | O | ||
) |
Definition at line 5621 of file SelectionDAG.cpp.
|
inline |
GetDbgValues - Get the debug values which reference the given SDNode.
Definition at line 1030 of file SelectionDAG.h.
References llvm::SDDbgInfo::getSDDbgValues().
Referenced by ProcessSDDbgValues(), and TransferDbgValues().
Definition at line 1489 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::FoldingSetNodeID::AddPointer(), llvm::ISD::EH_LABEL, llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), getVTList(), and llvm::MVT::Other.
Referenced by llvm::SelectionDAGBuilder::LowerCallTo().
|
inline |
getEntryNode - Return the token chain corresponding to the entry of the function.
Definition at line 332 of file SelectionDAG.h.
Referenced by llvm::AArch64TargetLowering::addTokenForArgument(), llvm::X86TargetLowering::BuildFILD(), clear(), llvm::SelectionDAGBuilder::CopyValueToVirtualRegister(), llvm::SITargetLowering::CreateLiveInRegister(), llvm::MipsTargetLowering::getAddrLocal(), getFLUSHW(), getMemCmpLoad(), getStackArgumentTokenFactor(), llvm::SelectionDAGBuilder::getValue(), llvm::SelectionDAGBuilder::getValueImpl(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerF128Compare(), llvm::SparcTargetLowering::LowerF128Op(), llvm::AArch64TargetLowering::LowerF128ToCall(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::MSP430TargetLowering::LowerFRAMEADDR(), llvm::HexagonTargetLowering::LowerFRAMEADDR(), llvm::AArch64TargetLowering::LowerFRAMEADDR(), LowerFRAMEADDR(), LowerFSINCOS(), llvm::AArch64TargetLowering::LowerGlobalAddressELFSmall(), llvm::SparcTargetLowering::LowerGlobalTLSAddress(), llvm::AArch64TargetLowering::LowerGlobalTLSAddress(), LowerINTRINSIC_W_CHAIN(), llvm::R600TargetLowering::LowerOperation(), llvm::SITargetLowering::LowerOperation(), llvm::MSP430TargetLowering::LowerRETURNADDR(), llvm::HexagonTargetLowering::LowerRETURNADDR(), llvm::AArch64TargetLowering::LowerRETURNADDR(), LowerRETURNADDR(), llvm::MSP430TargetLowering::LowerSETCC(), LowerSIGN_EXTEND_AVX512(), llvm::AArch64TargetLowering::LowerTLSDescCall(), LowerToTLSExecModel(), LowerToTLSGeneralDynamicModel32(), LowerToTLSGeneralDynamicModel64(), LowerToTLSLocalDynamicModel(), LowerVectorBroadcast(), LowerZERO_EXTEND_AVX512(), llvm::SparcTargetLowering::makeAddress(), llvm::TargetLowering::makeLibCall(), performDivRemCombine(), PerformEXTRACT_VECTOR_ELTCombine(), ReplaceREADCYCLECOUNTER(), llvm::SelectionDAGISel::SelectCodeCommon(), and llvm::SelectionDAGBuilder::visitSPDescriptorParent().
Definition at line 1305 of file SelectionDAG.cpp.
Referenced by llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset(), llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemset(), getMemcpy(), getMemmove(), getMemset(), llvm::SparcTargetLowering::LowerF128Compare(), llvm::SparcTargetLowering::LowerF128Op(), llvm::AArch64TargetLowering::LowerF128ToCall(), LowerFSINCOS(), and llvm::TargetLowering::makeLibCall().
SDValue SelectionDAG::getExtLoad | ( | ISD::LoadExtType | ExtType, |
SDLoc | dl, | ||
EVT | VT, | ||
SDValue | Chain, | ||
SDValue | Ptr, | ||
MachinePointerInfo | PtrInfo, | ||
EVT | MemVT, | ||
bool | isVolatile, | ||
bool | isNonTemporal, | ||
unsigned | Alignment, | ||
const MDNode * | TBAAInfo = 0 |
||
) |
Definition at line 4586 of file SelectionDAG.cpp.
References getLoad(), getUNDEF(), llvm::SDValue::getValueType(), llvm::RegState::Undef, and llvm::ISD::UNINDEXED.
Referenced by adjustSubwordCmp(), llvm::X86TargetLowering::BuildFILD(), ExpandUnalignedLoad(), ExpandUnalignedStore(), getMemcpyLoadsAndStores(), llvm::R600TargetLowering::LowerFormalArguments(), llvm::NVPTXTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), SkipLoadExtensionForVMULL(), and llvm::AMDGPUTargetLowering::SplitVectorLoad().
SDValue SelectionDAG::getExtLoad | ( | ISD::LoadExtType | ExtType, |
SDLoc | dl, | ||
EVT | VT, | ||
SDValue | Chain, | ||
SDValue | Ptr, | ||
EVT | MemVT, | ||
MachineMemOperand * | MMO | ||
) |
Definition at line 4598 of file SelectionDAG.cpp.
References getLoad(), getUNDEF(), llvm::SDValue::getValueType(), llvm::RegState::Undef, and llvm::ISD::UNINDEXED.
Definition at line 1169 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::ISD::FrameIndex, getVTList(), and llvm::ISD::TargetFrameIndex.
Referenced by llvm::X86TargetLowering::BuildFILD(), CalculateTailCallArgDest(), CreateStackTemporary(), EmitTailCallStoreFPAndRetAddr(), EmitTailCallStoreRetAddr(), llvm::MSP430TargetLowering::getReturnAddressFrameIndex(), llvm::X86TargetLowering::getReturnAddressFrameIndex(), getTargetFrameIndex(), llvm::SelectionDAGBuilder::getValueImpl(), llvm::AArch64TargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SelectionDAGBuilder::LowerCallTo(), llvm::SparcTargetLowering::LowerF128_LibCallArg(), llvm::SparcTargetLowering::LowerF128Op(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::AArch64TargetLowering::LowerFormalArguments(), llvm::SystemZTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::SparcTargetLowering::LowerFormalArguments_64(), llvm::MSP430TargetLowering::LowerVASTART(), llvm::HexagonTargetLowering::LowerVASTART(), llvm::AArch64TargetLowering::LowerVASTART(), LowerVASTART(), llvm::AArch64TargetLowering::SaveVarArgRegisters(), and llvm::SelectionDAGBuilder::visitSPDescriptorParent().
getGLOBAL_OFFSET_TABLE - Return a GLOBAL_OFFSET_TABLE node. This does not have a useful SDLoc.
Definition at line 591 of file SelectionDAG.h.
References getNode(), and llvm::ISD::GLOBAL_OFFSET_TABLE.
Referenced by llvm::TargetLowering::getPICJumpTableRelocBase().
SDValue SelectionDAG::getGlobalAddress | ( | const GlobalValue * | GV, |
SDLoc | DL, | ||
EVT | VT, | ||
int64_t | offset = 0 , |
||
bool | isTargetGA = false , |
||
unsigned char | TargetFlags = 0 |
||
) |
Definition at line 1125 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::FoldingSetNodeID::AddPointer(), llvm::dyn_cast(), llvm::PointerType::getAddressSpace(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), llvm::TargetLoweringBase::getPointerTypeSizeInBits(), llvm::TargetMachine::getTargetLowering(), llvm::GlobalValue::getType(), getVTList(), llvm::ISD::GlobalAddress, llvm::ISD::GlobalTLSAddress, llvm::GlobalVariable::isThreadLocal(), llvm::SignExtend64(), llvm::ISD::TargetGlobalAddress, and llvm::ISD::TargetGlobalTLSAddress.
Referenced by getTargetGlobalAddress(), and llvm::SelectionDAGBuilder::getValueImpl().
const std::string SelectionDAG::getGraphAttrs | ( | const SDNode * | N | ) | const |
getGraphAttrs - Get graph attributes for a node. (eg. "color=red".) Used from getNodeAttributes.
Definition at line 188 of file SelectionDAGPrinter.cpp.
References llvm::errs(), I, and NodeGraphAttrs.
Referenced by llvm::DOTGraphTraits< SelectionDAG * >::getNodeAttributes().
SDValue SelectionDAG::getIndexedLoad | ( | SDValue | OrigLoad, |
SDLoc | dl, | ||
SDValue | Base, | ||
SDValue | Offset, | ||
ISD::MemIndexedMode | AM | ||
) |
Definition at line 4607 of file SelectionDAG.cpp.
References llvm::MemSDNode::getAlignment(), llvm::MemSDNode::getChain(), llvm::LoadSDNode::getExtensionType(), getLoad(), llvm::MemSDNode::getMemoryVT(), llvm::LoadSDNode::getOffset(), llvm::SDValue::getOpcode(), llvm::MemSDNode::getPointerInfo(), llvm::SDValue::getValueType(), llvm::MemSDNode::isNonTemporal(), llvm::MemSDNode::isVolatile(), llvm::A64DB::LD, and llvm::ISD::UNDEF.
SDValue SelectionDAG::getIndexedStore | ( | SDValue | OrigStoe, |
SDLoc | dl, | ||
SDValue | Base, | ||
SDValue | Offset, | ||
ISD::MemIndexedMode | AM | ||
) |
Definition at line 4742 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::MachinePointerInfo::getAddrSpace(), llvm::MemSDNode::getChain(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), llvm::MemSDNode::getMemOperand(), llvm::MemSDNode::getMemoryVT(), llvm::StoreSDNode::getOffset(), llvm::SDValue::getOpcode(), llvm::MemSDNode::getPointerInfo(), llvm::EVT::getRawBits(), llvm::MemSDNode::getRawSubclassData(), llvm::StoreSDNode::getValue(), llvm::SDValue::getValueType(), getVTList(), llvm::StoreSDNode::isTruncatingStore(), llvm::MVT::Other, llvm::A64DB::ST, llvm::ISD::STORE, and llvm::ISD::UNDEF.
Definition at line 1065 of file SelectionDAG.cpp.
References getConstant(), llvm::TargetLoweringBase::getPointerTy(), and llvm::TargetMachine::getTargetLowering().
Referenced by llvm::X86TargetLowering::BuildFILD(), buildFromShuffleMostly(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset(), ExtractSubVector(), getCopyToParts(), InsertSubVector(), LowerBuildVectorv16i8(), LowerBuildVectorv8i16(), llvm::HexagonTargetLowering::LowerCall(), llvm::NVPTXTargetLowering::LowerCall(), llvm::AArch64TargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), LowerCONCAT_VECTORS(), lowerCTPOP16BitElements(), lowerCTPOP32BitElements(), llvm::HexagonTargetLowering::LowerEH_RETURN(), llvm::NVPTXTargetLowering::LowerFormalArguments(), llvm::SystemZTargetLowering::LowerFormalArguments(), LowerFRAMEADDR(), llvm::SparcTargetLowering::LowerGlobalTLSAddress(), LowerINSERT_VECTOR_ELT_SSE4(), LowerINTRINSIC_W_CHAIN(), llvm::NVPTXTargetLowering::LowerReturn(), LowerRETURNADDR(), LowerScalarVariableShift(), LowerSDIV(), LowerToTLSExecModel(), LowerUDIV(), LowerVAARG(), LowerVACOPY(), LowerVASTART(), LowerVECTOR_SHUFFLE_256(), LowerVECTOR_SHUFFLEv16i8(), LowerVECTOR_SHUFFLEv8i16(), LowerVectorIntExtend(), llvm::PPCTargetLowering::PerformDAGCombine(), PerformLOADCombine(), PerformSTORECombine(), PrepareCall(), PrepareTailCall(), ReplaceATOMIC_BINARY_64(), ReplaceATOMIC_OP_64(), ReplaceLoadVector(), and llvm::PPCTargetLowering::ReplaceNodeResults().
SDValue SelectionDAG::getJumpTable | ( | int | JTI, |
EVT | VT, | ||
bool | isTarget = false , |
||
unsigned char | TargetFlags = 0 |
||
) |
Definition at line 1184 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), getVTList(), llvm::ISD::JumpTable, and llvm::ISD::TargetJumpTable.
Referenced by getTargetJumpTable(), and llvm::SelectionDAGBuilder::visitJumpTable().
SDValue SelectionDAG::getLoad | ( | EVT | VT, |
SDLoc | dl, | ||
SDValue | Chain, | ||
SDValue | Ptr, | ||
MachinePointerInfo | PtrInfo, | ||
bool | isVolatile, | ||
bool | isNonTemporal, | ||
bool | isInvariant, | ||
unsigned | Alignment, | ||
const MDNode * | TBAAInfo = 0 , |
||
const MDNode * | Ranges = 0 |
||
) |
getLoad - Loads are not normal binary operators: their result type is not determined by their operands, and they produce a value AND a token chain.
Definition at line 4565 of file SelectionDAG.cpp.
References getUNDEF(), llvm::SDValue::getValueType(), llvm::ISD::NON_EXTLOAD, llvm::RegState::Undef, and llvm::ISD::UNINDEXED.
Referenced by bitcastf32Toi32(), llvm::X86TargetLowering::BuildFILD(), convertLocVTToValVT(), EltsFromConsecutiveLoads(), llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemcpy(), expandf64Toi32(), ExpandUnalignedLoad(), ExpandUnalignedStore(), llvm::MipsTargetLowering::getAddrGlobal(), llvm::MipsTargetLowering::getAddrGlobalLargeGOT(), llvm::MipsTargetLowering::getAddrLocal(), getExtLoad(), getIndexedLoad(), getLoad(), getMemCmpLoad(), getMemmoveLoadsAndStores(), LowerAsSplatVectorLoad(), llvm::HexagonTargetLowering::LowerBR_JT(), llvm::NVPTXTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SelectionDAGBuilder::LowerCallTo(), LowerF128Load(), llvm::SparcTargetLowering::LowerF128Op(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::NVPTXTargetLowering::LowerFormalArguments(), llvm::AArch64TargetLowering::LowerFormalArguments(), llvm::SystemZTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::SparcTargetLowering::LowerFormalArguments_64(), llvm::MSP430TargetLowering::LowerFRAMEADDR(), llvm::HexagonTargetLowering::LowerFRAMEADDR(), llvm::AArch64TargetLowering::LowerFRAMEADDR(), LowerFRAMEADDR(), llvm::AArch64TargetLowering::LowerGlobalAddressELFSmall(), LowerINTRINSIC_W_CHAIN(), lowerMSALoadIntr(), llvm::MSP430TargetLowering::LowerRETURNADDR(), llvm::HexagonTargetLowering::LowerRETURNADDR(), llvm::AArch64TargetLowering::LowerRETURNADDR(), LowerRETURNADDR(), LowerSIGN_EXTEND_AVX512(), LowerToTLSExecModel(), LowerVAARG(), LowerVectorBroadcast(), LowerZERO_EXTEND_AVX512(), llvm::SparcTargetLowering::makeAddress(), llvm::PPCTargetLowering::PerformDAGCombine(), PerformEXTRACT_VECTOR_ELTCombine(), PerformLOADCombine(), PerformSTORECombine(), llvm::X86TargetLowering::ReplaceNodeResults(), llvm::TargetLowering::SimplifySetCC(), SkipLoadExtensionForVMULL(), and llvm::SelectionDAGBuilder::visitSPDescriptorParent().
SDValue SelectionDAG::getLoad | ( | EVT | VT, |
SDLoc | dl, | ||
SDValue | Chain, | ||
SDValue | Ptr, | ||
MachineMemOperand * | MMO | ||
) |
Definition at line 4578 of file SelectionDAG.cpp.
References getLoad(), getUNDEF(), llvm::SDValue::getValueType(), llvm::ISD::NON_EXTLOAD, llvm::RegState::Undef, and llvm::ISD::UNINDEXED.
SDValue SelectionDAG::getLoad | ( | ISD::MemIndexedMode | AM, |
ISD::LoadExtType | ExtType, | ||
EVT | VT, | ||
SDLoc | dl, | ||
SDValue | Chain, | ||
SDValue | Ptr, | ||
SDValue | Offset, | ||
MachinePointerInfo | PtrInfo, | ||
EVT | MemVT, | ||
bool | isVolatile, | ||
bool | isNonTemporal, | ||
bool | isInvariant, | ||
unsigned | Alignment, | ||
const MDNode * | TBAAInfo = 0 , |
||
const MDNode * | Ranges = 0 |
||
) |
Definition at line 4484 of file SelectionDAG.cpp.
References getLoad(), getMachineFunction(), llvm::MachineFunction::getMachineMemOperand(), llvm::EVT::getStoreSize(), llvm::SDValue::getValueType(), InferPointerInfo(), llvm::MachineMemOperand::MOInvariant, llvm::MachineMemOperand::MOLoad, llvm::MachineMemOperand::MONonTemporal, llvm::MachineMemOperand::MOVolatile, llvm::MVT::Other, and llvm::MachinePointerInfo::V.
SDValue SelectionDAG::getLoad | ( | ISD::MemIndexedMode | AM, |
ISD::LoadExtType | ExtType, | ||
EVT | VT, | ||
SDLoc | dl, | ||
SDValue | Chain, | ||
SDValue | Ptr, | ||
SDValue | Offset, | ||
EVT | MemVT, | ||
MachineMemOperand * | MMO | ||
) |
Definition at line 4517 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::EVT::bitsLT(), encodeMemSDNodeFlags(), llvm::MachinePointerInfo::getAddrSpace(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), llvm::SDValue::getOpcode(), llvm::MachineMemOperand::getPointerInfo(), llvm::EVT::getRawBits(), llvm::EVT::getScalarType(), llvm::SDValue::getValueType(), llvm::EVT::getVectorNumElements(), getVTList(), llvm::EVT::isInteger(), llvm::MachineMemOperand::isInvariant(), llvm::MachineMemOperand::isNonTemporal(), llvm::EVT::isVector(), llvm::MachineMemOperand::isVolatile(), llvm::ISD::LOAD, llvm::ISD::NON_EXTLOAD, llvm::MVT::Other, llvm::ISD::UNDEF, and llvm::ISD::UNINDEXED.
|
inline |
Definition at line 280 of file SelectionDAG.h.
Referenced by llvm::X86TargetLowering::BuildFILD(), CalculateParameterAndLinkageAreaSize(), CalculateTailCallSPDiff(), llvm::AMDGPUTargetLowering::CreateLiveInRegister(), CreateStackTemporary(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemcpy(), ExpandPowI(), llvm::SelectionDAGBuilder::FindMergedConditions(), FindOptimalMemOpLowering(), fixupFuncForFI(), getAtomic(), llvm::MipsTargetLowering::getGlobalReg(), llvm::DOTGraphTraits< SelectionDAG * >::getGraphName(), getLoad(), getMemcpyLoadsAndStores(), getMemIntrinsicNode(), getMemmoveLoadsAndStores(), getMemsetStores(), GetRegistersForValue(), llvm::MSP430TargetLowering::getReturnAddressFrameIndex(), llvm::X86TargetLowering::getReturnAddressFrameIndex(), llvm::SparcTargetLowering::getSRetArgSize(), getStore(), GetTLSADDR(), getTruncStore(), hasReturnsTwiceAttr(), InferPtrAlignment(), isConsecutiveLoad(), isConsecutiveLS(), llvm::HexagonTargetLowering::IsEligibleForTailCallOptimization(), llvm::AArch64TargetLowering::IsEligibleForTailCallOptimization(), llvm::TargetLowering::isInTailCallPosition(), LowerAsSplatVectorLoad(), llvm::HexagonTargetLowering::LowerBR_JT(), llvm::HexagonTargetLowering::LowerCall(), llvm::NVPTXTargetLowering::LowerCall(), llvm::AArch64TargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::HexagonTargetLowering::LowerCallResult(), llvm::AArch64TargetLowering::LowerCallResult(), llvm::SelectionDAGBuilder::LowerCallTo(), llvm::HexagonTargetLowering::LowerEH_RETURN(), llvm::SparcTargetLowering::LowerF128_LibCallArg(), llvm::SparcTargetLowering::LowerF128Op(), llvm::R600TargetLowering::LowerFormalArguments(), llvm::SITargetLowering::LowerFormalArguments(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::NVPTXTargetLowering::LowerFormalArguments(), llvm::AArch64TargetLowering::LowerFormalArguments(), llvm::SystemZTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::SparcTargetLowering::LowerFormalArguments_64(), llvm::MSP430TargetLowering::LowerFRAMEADDR(), llvm::HexagonTargetLowering::LowerFRAMEADDR(), llvm::AArch64TargetLowering::LowerFRAMEADDR(), LowerFRAMEADDR(), llvm::SparcTargetLowering::LowerGlobalTLSAddress(), llvm::AArch64TargetLowering::LowerGlobalTLSAddress(), llvm::HexagonTargetLowering::LowerINLINEASM(), LowerInterruptReturn(), LowerINTRINSIC_W_CHAIN(), llvm::R600TargetLowering::LowerOperation(), llvm::SITargetLowering::LowerOperation(), llvm::NVPTXTargetLowering::LowerReturn(), llvm::HexagonTargetLowering::LowerReturn(), llvm::AArch64TargetLowering::LowerReturn(), llvm::SystemZTargetLowering::LowerReturn(), llvm::SparcTargetLowering::LowerReturn_32(), llvm::SparcTargetLowering::LowerReturn_64(), llvm::MSP430TargetLowering::LowerRETURNADDR(), llvm::HexagonTargetLowering::LowerRETURNADDR(), llvm::AArch64TargetLowering::LowerRETURNADDR(), LowerRETURNADDR(), LowerToTLSLocalDynamicModel(), llvm::MSP430TargetLowering::LowerVASTART(), llvm::HexagonTargetLowering::LowerVASTART(), llvm::AArch64TargetLowering::LowerVASTART(), LowerVASTART(), llvm::SparcTargetLowering::makeAddress(), llvm::PPCTargetLowering::PerformDAGCombine(), PerformSTORECombine(), PrepareTailCall(), llvm::AArch64TargetLowering::SaveVarArgRegisters(), llvm::X86InstrInfo::unfoldMemoryOperand(), and viewGraph().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | VT | ||
) |
getMachineNode - These are used for target selectors to create a new node with specified return type(s), MachineInstr opcode, and operands.
Note that getMachineNode returns the resultant node. If there is already a node of the specified opcode and operands, it returns that node instead of the current one.
Definition at line 5411 of file SelectionDAG.cpp.
References getVTList(), and llvm::None.
Referenced by getMachineNode(), getMScatterNode(), getScatterNode(), getTargetExtractSubreg(), getTargetInsertSubreg(), LowerATOMIC_FENCE(), llvm::AArch64TargetLowering::LowerCall(), LowerF128Load(), LowerF128Store(), LowerF64Op(), LowerFABS(), llvm::AArch64TargetLowering::LowerFormalArguments(), llvm::AArch64TargetLowering::LowerGlobalTLSAddress(), lowerGR128Binary(), llvm::R600TargetLowering::LowerOperation(), llvm::PPCTargetLowering::SelectAddressRegImm(), llvm::SelectionDAGISel::SelectCodeCommon(), and llvm::X86InstrInfo::unfoldMemoryOperand().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | VT, | ||
SDValue | Op1 | ||
) |
Definition at line 5417 of file SelectionDAG.cpp.
References getMachineNode(), and getVTList().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | VT, | ||
SDValue | Op1, | ||
SDValue | Op2 | ||
) |
Definition at line 5424 of file SelectionDAG.cpp.
References getMachineNode(), and getVTList().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | VT, | ||
SDValue | Op1, | ||
SDValue | Op2, | ||
SDValue | Op3 | ||
) |
Definition at line 5432 of file SelectionDAG.cpp.
References getMachineNode(), and getVTList().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | VT, | ||
ArrayRef< SDValue > | Ops | ||
) |
Definition at line 5440 of file SelectionDAG.cpp.
References getMachineNode(), and getVTList().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | VT1, | ||
EVT | VT2 | ||
) |
Definition at line 5447 of file SelectionDAG.cpp.
References getMachineNode(), getVTList(), and llvm::None.
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | VT1, | ||
EVT | VT2, | ||
SDValue | Op1 | ||
) |
Definition at line 5453 of file SelectionDAG.cpp.
References getMachineNode(), and getVTList().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | VT1, | ||
EVT | VT2, | ||
SDValue | Op1, | ||
SDValue | Op2 | ||
) |
Definition at line 5461 of file SelectionDAG.cpp.
References getMachineNode(), and getVTList().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | VT1, | ||
EVT | VT2, | ||
SDValue | Op1, | ||
SDValue | Op2, | ||
SDValue | Op3 | ||
) |
Definition at line 5469 of file SelectionDAG.cpp.
References getMachineNode(), and getVTList().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | VT1, | ||
EVT | VT2, | ||
ArrayRef< SDValue > | Ops | ||
) |
Definition at line 5478 of file SelectionDAG.cpp.
References getMachineNode(), and getVTList().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | VT1, | ||
EVT | VT2, | ||
EVT | VT3, | ||
SDValue | Op1, | ||
SDValue | Op2 | ||
) |
Definition at line 5486 of file SelectionDAG.cpp.
References getMachineNode(), and getVTList().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | VT1, | ||
EVT | VT2, | ||
EVT | VT3, | ||
SDValue | Op1, | ||
SDValue | Op2, | ||
SDValue | Op3 | ||
) |
Definition at line 5495 of file SelectionDAG.cpp.
References getMachineNode(), and getVTList().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | VT1, | ||
EVT | VT2, | ||
EVT | VT3, | ||
ArrayRef< SDValue > | Ops | ||
) |
Definition at line 5504 of file SelectionDAG.cpp.
References getMachineNode(), and getVTList().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | VT1, | ||
EVT | VT2, | ||
EVT | VT3, | ||
EVT | VT4, | ||
ArrayRef< SDValue > | Ops | ||
) |
Definition at line 5512 of file SelectionDAG.cpp.
References getMachineNode(), and getVTList().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
ArrayRef< EVT > | ResultTys, | ||
ArrayRef< SDValue > | Ops | ||
) |
Definition at line 5520 of file SelectionDAG.cpp.
References getMachineNode(), getVTList(), and llvm::ArrayRef< T >::size().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
SDVTList | VTs, | ||
ArrayRef< SDValue > | Ops | ||
) |
Definition at line 5528 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::BumpPtrAllocator::Allocate(), llvm::array_lengthof(), llvm::ArrayRef< T >::data(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), llvm::MVT::Glue, llvm::SDNode::InitOperands(), N, llvm::SDVTList::NumVTs, llvm::ArrayRef< T >::size(), VerifyMachineNode(), and llvm::SDVTList::VTs.
getMDNode - Return an MDNodeSDNode which holds an MDNode.
Definition at line 1547 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::FoldingSetNodeID::AddPointer(), getVTList(), llvm::ISD::MDNODE_SDNODE, and llvm::MVT::Other.
SDValue SelectionDAG::getMemcpy | ( | SDValue | Chain, |
SDLoc | dl, | ||
SDValue | Dst, | ||
SDValue | Src, | ||
SDValue | Size, | ||
unsigned | Align, | ||
bool | isVol, | ||
bool | AlwaysInline, | ||
MachinePointerInfo | DstPtrInfo, | ||
MachinePointerInfo | SrcPtrInfo | ||
) |
Definition at line 3991 of file SelectionDAG.cpp.
References Align(), llvm::dyn_cast(), llvm::TargetSelectionDAGInfo::EmitTargetCodeForMemcpy(), getContext(), llvm::TargetLoweringBase::getDataLayout(), getExternalSymbol(), llvm::DataLayout::getIntPtrType(), llvm::TargetLoweringBase::getLibcallCallingConv(), llvm::TargetLoweringBase::getLibcallName(), getMemcpyLoadsAndStores(), llvm::SDValue::getNode(), llvm::TargetLoweringBase::getPointerTy(), llvm::TargetMachine::getTargetLowering(), llvm::Type::getVoidTy(), llvm::ConstantSDNode::getZExtValue(), llvm::ConstantSDNode::isNullValue(), llvm::TargetLowering::LowerCallTo(), llvm::RTLIB::MEMCPY, llvm::TargetLowering::ArgListEntry::Node, and llvm::TargetLowering::ArgListEntry::Ty.
Referenced by CreateCopyOfByValArgument(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::AArch64TargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::AArch64TargetLowering::LowerVACOPY(), and LowerVACOPY().
SDValue SelectionDAG::getMemIntrinsicNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
const EVT * | VTs, | ||
unsigned | NumVTs, | ||
const SDValue * | Ops, | ||
unsigned | NumOps, | ||
EVT | MemVT, | ||
MachinePointerInfo | PtrInfo, | ||
unsigned | Align = 0 , |
||
bool | Vol = false , |
||
bool | ReadMem = true , |
||
bool | WriteMem = true |
||
) |
getMemIntrinsicNode - Creates a MemIntrinsicNode that may produce a result and takes a list of operands. Opcode may be INTRINSIC_VOID, INTRINSIC_W_CHAIN, or a target-specific opcode with a value not less than FIRST_TARGET_MEMORY_OPCODE.
Definition at line 4377 of file SelectionDAG.cpp.
References makeVTList().
Referenced by llvm::X86TargetLowering::BuildFILD(), CombineBaseUpdate(), CombineVLDDUP(), createLoadLR(), createStoreLR(), EltsFromConsecutiveLoads(), getMemIntrinsicNode(), llvm::NVPTXTargetLowering::LowerCall(), LowerCMP_SWAP(), llvm::SITargetLowering::LowerOperation(), llvm::NVPTXTargetLowering::LowerReturn(), llvm::PPCTargetLowering::PerformDAGCombine(), PerformShuffleCombine256(), ReplaceATOMIC_BINARY_64(), ReplaceINTRINSIC_W_CHAIN(), ReplaceLoadVector(), and llvm::X86TargetLowering::ReplaceNodeResults().
SDValue SelectionDAG::getMemIntrinsicNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
SDVTList | VTList, | ||
const SDValue * | Ops, | ||
unsigned | NumOps, | ||
EVT | MemVT, | ||
MachinePointerInfo | PtrInfo, | ||
unsigned | Align = 0 , |
||
bool | Vol = false , |
||
bool | ReadMem = true , |
||
bool | WriteMem = true |
||
) |
Definition at line 4389 of file SelectionDAG.cpp.
References Align(), getMachineFunction(), llvm::MachineFunction::getMachineMemOperand(), getMemIntrinsicNode(), llvm::EVT::getStoreSize(), llvm::MachineMemOperand::MOLoad, llvm::MachineMemOperand::MOStore, and llvm::MachineMemOperand::MOVolatile.
SDValue SelectionDAG::getMemIntrinsicNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
SDVTList | VTList, | ||
const SDValue * | Ops, | ||
unsigned | NumOps, | ||
EVT | MemVT, | ||
MachineMemOperand * | MMO | ||
) |
Definition at line 4412 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::ISD::FIRST_TARGET_MEMORY_OPCODE, llvm::MachinePointerInfo::getAddrSpace(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), llvm::MachineMemOperand::getPointerInfo(), llvm::MVT::Glue, llvm::ISD::INTRINSIC_VOID, llvm::ISD::INTRINSIC_W_CHAIN, llvm::ISD::LIFETIME_END, llvm::ISD::LIFETIME_START, N, llvm::SDVTList::NumVTs, llvm::ISD::PREFETCH, and llvm::SDVTList::VTs.
SDValue SelectionDAG::getMemmove | ( | SDValue | Chain, |
SDLoc | dl, | ||
SDValue | Dst, | ||
SDValue | Src, | ||
SDValue | Size, | ||
unsigned | Align, | ||
bool | isVol, | ||
MachinePointerInfo | DstPtrInfo, | ||
MachinePointerInfo | SrcPtrInfo | ||
) |
Definition at line 4061 of file SelectionDAG.cpp.
References Align(), llvm::dyn_cast(), llvm::TargetSelectionDAGInfo::EmitTargetCodeForMemmove(), getContext(), llvm::TargetLoweringBase::getDataLayout(), getExternalSymbol(), llvm::DataLayout::getIntPtrType(), llvm::TargetLoweringBase::getLibcallCallingConv(), llvm::TargetLoweringBase::getLibcallName(), getMemmoveLoadsAndStores(), llvm::SDValue::getNode(), llvm::TargetLoweringBase::getPointerTy(), llvm::TargetMachine::getTargetLowering(), llvm::Type::getVoidTy(), llvm::ConstantSDNode::getZExtValue(), llvm::ConstantSDNode::isNullValue(), llvm::TargetLowering::LowerCallTo(), llvm::RTLIB::MEMMOVE, llvm::TargetLowering::ArgListEntry::Node, and llvm::TargetLowering::ArgListEntry::Ty.
SDValue SelectionDAG::getMemset | ( | SDValue | Chain, |
SDLoc | dl, | ||
SDValue | Dst, | ||
SDValue | Src, | ||
SDValue | Size, | ||
unsigned | Align, | ||
bool | isVol, | ||
MachinePointerInfo | DstPtrInfo | ||
) |
Definition at line 4119 of file SelectionDAG.cpp.
References Align(), llvm::EVT::bitsGT(), llvm::dyn_cast(), llvm::TargetSelectionDAGInfo::EmitTargetCodeForMemset(), getContext(), llvm::TargetLoweringBase::getDataLayout(), getExternalSymbol(), llvm::Type::getInt32Ty(), llvm::DataLayout::getIntPtrType(), llvm::TargetLoweringBase::getLibcallCallingConv(), llvm::TargetLoweringBase::getLibcallName(), getMemsetStores(), llvm::SDValue::getNode(), getNode(), llvm::TargetLoweringBase::getPointerTy(), llvm::TargetMachine::getTargetLowering(), llvm::SDValue::getValueType(), llvm::Type::getVoidTy(), llvm::ConstantSDNode::getZExtValue(), llvm::MVT::i32, llvm::ConstantSDNode::isNullValue(), llvm::TargetLowering::ArgListEntry::isSExt, llvm::TargetLowering::LowerCallTo(), llvm::RTLIB::MEMSET, llvm::TargetLowering::ArgListEntry::Node, llvm::ISD::TRUNCATE, llvm::TargetLowering::ArgListEntry::Ty, and llvm::ISD::ZERO_EXTEND.
Referenced by llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset().
getMergeValues - Create a MERGE_VALUES node from the given operands.
Definition at line 4363 of file SelectionDAG.cpp.
References getNode(), llvm::SDValue::getValueType(), getVTList(), llvm::ISD::MERGE_VALUES, llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), and llvm::SmallVectorImpl< T >::reserve().
Referenced by llvm::X86TargetLowering::BuildFILD(), llvm::SelectionDAGBuilder::getValueImpl(), LowerADDC_ADDE_SUBC_SUBE(), lowerDSPIntr(), llvm::HexagonTargetLowering::LowerDYNAMIC_STACKALLOC(), LowerDYNAMIC_STACKALLOC(), LowerF128Load(), llvm::MipsTargetLowering::lowerLOAD(), llvm::SITargetLowering::LowerOperation(), and LowerREADCYCLECOUNTER().
getNode - Gets or creates the specified node.
Definition at line 2485 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), getVTList(), and VerifySDNode().
Referenced by AddCombineTo64bitMLAL(), AddCombineToVPADDL(), addIPMSequence(), AddRequiredExtensionForVMULL(), llvm::AArch64TargetLowering::addTokenForArgument(), llvm::TargetLowering::BuildExactSDIV(), llvm::X86TargetLowering::BuildFILD(), buildFromShuffleMostly(), BuildIntrinsicOp(), llvm::TargetLowering::BuildSDIV(), BuildSplatI(), llvm::TargetLowering::BuildUDIV(), BuildVectorFromScalar(), BuildVSLDOI(), CMPEQCombine(), combineSelectAndUse(), combineShlAddConstant(), Compact8x32ShuffleNode(), CompactSwizzlableVector(), convertLocVTToValVT(), convertValVTToLocVT(), createCMovFP(), createFPCmp(), createLoadLR(), createStoreLR(), EltsFromConsecutiveLoads(), emitCLC(), EmitCMP(), emitCmp(), emitMemMem(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForMemchr(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForMemset(), llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemset(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrcmp(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrcpy(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrnlen(), Expand64BitShift(), ExpandBITCAST(), expandExp(), expandExp2(), expandf64Toi32(), expandLog(), expandLog10(), expandLog2(), expandPow(), ExpandPowI(), ExpandUnalignedLoad(), ExpandUnalignedStore(), ExtractBitFromMaskVector(), extractLOHI(), ExtractSubVector(), FoldConstantArithmetic(), FoldMaskAndShiftToExtract(), FoldMaskAndShiftToScale(), FoldMaskedShiftToScaledMask(), genConstMult(), GeneratePerfectShuffle(), llvm::MipsTargetLowering::getAddrGlobal(), llvm::MipsTargetLowering::getAddrGlobalLargeGOT(), llvm::MipsTargetLowering::getAddrLocal(), llvm::MipsTargetLowering::getAddrNonPIC(), getAnyExtOrTrunc(), getBoundedStrlen(), getBuildVectorSplat(), getCALLSEQ_END(), getCALLSEQ_START(), getConstant(), getConstantFP(), llvm::SelectionDAGBuilder::getControlRoot(), getCopyFromParts(), getCopyFromPartsVector(), getCopyFromReg(), getCopyToParts(), getCopyToPartsVector(), getCopyToReg(), getCTPOP16BitCounts(), GetExponent(), getFLUSHW(), getGLOBAL_OFFSET_TABLE(), getLegalSplat(), getLSBForBFI(), getMemBasePlusOffset(), getMemcpyLoadsAndStores(), getMemmoveLoadsAndStores(), getMemset(), getMemsetStores(), getMemsetStringVal(), getMemsetValue(), getMergeValues(), getMGatherNode(), getMOVDDup(), getMOVLowToHigh(), getMScatterNode(), GetNegatedExpression(), getNode(), getNOT(), getOnesVector(), llvm::X86TargetLowering::getPICJumpTableRelocBase(), GetRegistersForValue(), llvm::SelectionDAGBuilder::getRoot(), getSelect(), llvm::AArch64TargetLowering::getSelectableIntSetCC(), getSelectCC(), getSetCC(), getSExtOrTrunc(), getShiftAmountOperand(), GetSignificand(), getStackArgumentTokenFactor(), getTargetShuffleNode(), getTargetVShiftByConstNode(), getTargetVShiftNode(), GetTLSADDR(), getUNDEF(), getVAArg(), llvm::SelectionDAGBuilder::getValueImpl(), getVShift(), getVZextMovL(), getZeroExtendInReg(), getZeroVector(), getZExtOrTrunc(), HandleMergeInputChains(), initAccumulator(), InsertFenceForAtomic(), InsertSubVector(), llvm::AArch64TargetLowering::isKnownShuffleVector(), isLoadIncOrDecStore(), Lower256IntArith(), Lower256IntVSETCC(), LowerADDC_ADDE_SUBC_SUBE(), LowerAsSplatVectorLoad(), llvm::HexagonTargetLowering::LowerATOMIC_FENCE(), LowerATOMIC_FENCE(), LowerAVXExtend(), llvm::MSP430TargetLowering::LowerBlockAddress(), llvm::HexagonTargetLowering::LowerBlockAddress(), llvm::AArch64TargetLowering::LowerBlockAddress(), llvm::MSP430TargetLowering::LowerBR_CC(), llvm::AArch64TargetLowering::LowerBR_CC(), LowerBR_CC(), llvm::HexagonTargetLowering::LowerBR_JT(), llvm::AArch64TargetLowering::LowerBRCOND(), llvm::AArch64TargetLowering::LowerBUILD_VECTOR(), LowerBuildVectorv16i8(), LowerBuildVectorv8i16(), llvm::HexagonTargetLowering::LowerCall(), llvm::NVPTXTargetLowering::LowerCall(), llvm::AArch64TargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::AArch64TargetLowering::LowerCallResult(), llvm::SelectionDAGBuilder::LowerCallTo(), llvm::TargetLowering::LowerCallTo(), LowerCONCAT_VECTORS(), llvm::HexagonTargetLowering::LowerConstantPool(), LowerConstantPool(), LowerCTLZ(), LowerCTLZ_ZERO_UNDEF(), lowerCTPOP16BitElements(), lowerCTPOP32BitElements(), LowerCTTZ(), lowerDSPIntr(), llvm::HexagonTargetLowering::LowerDYNAMIC_STACKALLOC(), LowerDYNAMIC_STACKALLOC(), llvm::HexagonTargetLowering::LowerEH_RETURN(), llvm::MSP430TargetLowering::LowerExternalSymbol(), LowerEXTRACT_VECTOR_ELT(), LowerEXTRACT_VECTOR_ELT_SSE4(), llvm::SparcTargetLowering::LowerF128Compare(), LowerF128Load(), LowerF128Store(), LowerF64Op(), LowerFABS(), lowerFABS32(), lowerFABS64(), lowerFCOPYSIGN32(), lowerFCOPYSIGN64(), LowerFGETSIGN(), llvm::SITargetLowering::LowerFormalArguments(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::NVPTXTargetLowering::LowerFormalArguments(), llvm::AArch64TargetLowering::LowerFormalArguments(), llvm::SystemZTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::SparcTargetLowering::LowerFormalArguments_64(), LowerFP_EXTEND(), LowerFP_TO_INT(), LowerFP_TO_SINT(), lowerFP_TO_SINT_STORE(), LowerFRAMEADDR(), llvm::NVPTXTargetLowering::LowerGlobalAddress(), llvm::MSP430TargetLowering::LowerGlobalAddress(), llvm::HexagonTargetLowering::LowerGLOBALADDRESS(), llvm::AArch64TargetLowering::LowerGlobalAddressELFLarge(), llvm::AArch64TargetLowering::LowerGlobalAddressELFSmall(), llvm::SparcTargetLowering::LowerGlobalTLSAddress(), llvm::AArch64TargetLowering::LowerGlobalTLSAddress(), lowerGR128Binary(), LowerINSERT_VECTOR_ELT_SSE4(), LowerINT_TO_FP(), LowerInterruptReturn(), LowerINTRINSIC_W_CHAIN(), LowerINTRINSIC_WO_CHAIN(), llvm::AMDGPUTargetLowering::LowerIntrinsicIABS(), llvm::AMDGPUTargetLowering::LowerIntrinsicLRP(), LowerIntVSETCC_AVX512(), llvm::MSP430TargetLowering::LowerJumpTable(), llvm::AArch64TargetLowering::LowerJumpTable(), LowerLabelRef(), llvm::MipsTargetLowering::lowerLOAD(), LowerLOAD_SUB(), LowerMemOpCallTo(), llvm::AMDGPUTargetLowering::LowerMinMax(), lowerMSABinaryBitImmIntr(), lowerMSABitClear(), lowerMSABitClearImm(), lowerMSACopyIntr(), lowerMSALoadIntr(), lowerMSASplatZExt(), lowerMSAStoreIntr(), LowerMUL(), lowerMUL_LOHI32(), llvm::R600TargetLowering::LowerOperation(), llvm::SITargetLowering::LowerOperation(), LowerPREFETCH(), LowerREADCYCLECOUNTER(), llvm::AMDGPUTargetLowering::LowerReturn(), llvm::NVPTXTargetLowering::LowerReturn(), llvm::HexagonTargetLowering::LowerReturn(), llvm::AArch64TargetLowering::LowerReturn(), llvm::SystemZTargetLowering::LowerReturn(), llvm::SparcTargetLowering::LowerReturn_32(), llvm::SparcTargetLowering::LowerReturn_64(), llvm::MSP430TargetLowering::LowerRETURNADDR(), llvm::HexagonTargetLowering::LowerRETURNADDR(), llvm::AArch64TargetLowering::LowerRETURNADDR(), LowerRETURNADDR(), LowerReverse_VECTOR_SHUFFLEv16i8_v8i16(), LowerSCALAR_TO_VECTOR(), LowerScalarImmediateShift(), LowerScalarVariableShift(), LowerSDIV(), LowerSDIV_v4i16(), LowerSDIV_v4i8(), llvm::AArch64TargetLowering::LowerSELECT(), llvm::MSP430TargetLowering::LowerSELECT_CC(), llvm::HexagonTargetLowering::LowerSELECT_CC(), llvm::AArch64TargetLowering::LowerSELECT_CC(), LowerSELECT_CC(), llvm::MSP430TargetLowering::LowerSETCC(), llvm::AArch64TargetLowering::LowerSETCC(), LowerShift(), llvm::MSP430TargetLowering::LowerShifts(), llvm::MSP430TargetLowering::LowerSIGN_EXTEND(), LowerSIGN_EXTEND(), LowerSIGN_EXTEND_AVX512(), LowerSINT_TO_FP(), llvm::AArch64TargetLowering::LowerTLSDescCall(), LowerToTLSExecModel(), LowerToTLSGeneralDynamicModel32(), LowerToTLSLocalDynamicModel(), LowerUDIV(), LowerVAARG(), llvm::AArch64TargetLowering::LowerVASTART(), LowerVASTART(), llvm::AArch64TargetLowering::LowerVECTOR_SHUFFLE(), LowerVECTOR_SHUFFLE(), LowerVECTOR_SHUFFLE_256(), lowerVECTOR_SHUFFLE_ILVEV(), lowerVECTOR_SHUFFLE_ILVL(), lowerVECTOR_SHUFFLE_ILVOD(), lowerVECTOR_SHUFFLE_ILVR(), lowerVECTOR_SHUFFLE_PCKEV(), lowerVECTOR_SHUFFLE_PCKOD(), lowerVECTOR_SHUFFLE_SHF(), lowerVECTOR_SHUFFLE_VSHF(), LowerVECTOR_SHUFFLEtoBlend(), LowerVECTOR_SHUFFLEv16i8(), LowerVECTOR_SHUFFLEv32i8(), LowerVECTOR_SHUFFLEv8i16(), LowerVECTOR_SHUFFLEv8i8(), LowerVectorAllZeroTest(), LowerVectorBroadcast(), LowerVectorFP_TO_INT(), LowerVectorINT_TO_FP(), LowerVectorIntExtend(), LowerVectorSETCC(), LowerVSETCC(), LowerXALUO(), LowerZERO_EXTEND_AVX512(), llvm::SparcTargetLowering::makeAddress(), llvm::SparcTargetLowering::makeHiLoPair(), MaterializeSETB(), MoveBelowOrigChain(), NormalizeVectorShuffle(), OptimizeConditionalInDecrement(), partitionShuffleOfConcats(), PerformADCCombine(), performADDCombine(), PerformAddCombine(), performANDCombine(), PerformANDCombine(), PerformAndCombine(), PerformARMBUILD_VECTORCombine(), PerformBFICombine(), PerformBrCondCombine(), PerformBUILD_VECTORCombine(), llvm::ARMTargetLowering::PerformCMOVCombine(), PerformCMOVCombine(), llvm::R600TargetLowering::PerformDAGCombine(), llvm::SITargetLowering::PerformDAGCombine(), llvm::PPCTargetLowering::PerformDAGCombine(), performDivRemCombine(), performDSPShiftCombine(), PerformExtendCombine(), PerformEXTRACT_VECTOR_ELTCombine(), PerformFADDCombine(), PerformFMACombine(), PerformFMinFMaxCombine(), PerformFSUBCombine(), PerformInsertEltCombine(), performIntegerAbsCombine(), PerformIntrinsicCombine(), PerformISDSETCCCombine(), PerformLOADCombine(), PerformMULCombine(), PerformMulCombine(), performORCombine(), PerformORCombine(), PerformOrCombine(), PerformSELECT_CCCombine(), performSELECTCombine(), PerformSELECTCombine(), performSETCCCombine(), PerformSETCCCombine(), PerformShiftCombine(), PerformSHLCombine(), PerformShuffleCombine256(), PerformSIGN_EXTEND_INREGCombine(), PerformSINT_TO_FPCombine(), PerformSRACombine(), PerformSTORECombine(), PerformSubCombine(), PerformVCVTCombine(), PerformVDIVCombine(), PerformVDUPLANECombine(), PerformVECTOR_SHUFFLECombine(), PerformVMOVDRRCombine(), PerformVMULCombine(), performVSELECTCombine(), PerformVZEXT_MOVLCombine(), performVZEXTCombine(), performXORCombine(), PerformXorCombine(), PerformZExtCombine(), PrepareCall(), PrepareTailCall(), PromoteSplat(), ReorganizeVector(), ReplaceAllUsesWith(), ReplaceATOMIC_BINARY_64(), ReplaceATOMIC_OP_64(), replaceInChain(), ReplaceINTRINSIC_W_CHAIN(), ReplaceLoadVector(), llvm::PPCTargetLowering::ReplaceNodeResults(), llvm::X86TargetLowering::ReplaceNodeResults(), ReplaceREADCYCLECOUNTER(), RewriteAsNarrowerShuffle(), llvm::AArch64TargetLowering::SaveVarArgRegisters(), selectMADD(), selectMSUB(), ShrinkLoadReplaceStoreWithStore(), llvm::TargetLowering::SimplifySetCC(), SkipExtensionForVMULL(), llvm::TargetLowering::softenSetCCOperands(), SplitVector(), llvm::AMDGPUTargetLowering::SplitVectorLoad(), llvm::AMDGPUTargetLowering::SplitVectorStore(), SplitVSETCC(), tryCombineToBFI(), tryCombineToEXTR(), tryCombineToLargerBFI(), UnrollVectorOp(), llvm::SelectionDAGBuilder::visitBitTestCase(), llvm::SelectionDAGBuilder::visitBitTestHeader(), llvm::SelectionDAGBuilder::visitJumpTable(), llvm::SelectionDAGBuilder::visitJumpTableHeader(), llvm::SelectionDAGBuilder::visitSPDescriptorParent(), llvm::SelectionDAGBuilder::visitSwitchCase(), WidenMaskArithmetic(), and XFormVExtractWithShuffleIntoLoad().
Definition at line 2503 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::ISD::ANY_EXTEND, llvm::lltok::APFloat, llvm::ISD::BITCAST, llvm::APFloat::bitcastToAPInt(), llvm::EVT::bitsGT(), llvm::EVT::bitsLE(), llvm::EVT::bitsLT(), llvm::ISD::BSWAP, llvm::APInt::byteSwap(), llvm::CallingConv::C, llvm::APFloat::changeSign(), llvm::APFloat::clearSign(), llvm::ISD::CONCAT_VECTORS, llvm::APFloat::convert(), llvm::APFloat::convertFromAPInt(), llvm::APFloat::convertToInteger(), llvm::APInt::countLeadingZeros(), llvm::APInt::countPopulation(), llvm::APInt::countTrailingZeros(), llvm::ISD::CTLZ, llvm::ISD::CTLZ_ZERO_UNDEF, llvm::ISD::CTPOP, llvm::ISD::CTTZ, llvm::ISD::CTTZ_ZERO_UNDEF, EVTToAPFloatSemantics(), llvm::ISD::EXTRACT_VECTOR_ELT, llvm::MVT::f32, llvm::MVT::f64, llvm::ISD::FABS, llvm::ISD::FCEIL, llvm::ISD::FFLOOR, llvm::ISD::FNEG, llvm::ISD::FP_EXTEND, llvm::ISD::FP_ROUND, llvm::ISD::FP_TO_SINT, llvm::ISD::FP_TO_UINT, llvm::ISD::FSUB, llvm::ISD::FTRUNC, getConstant(), getConstantFP(), llvm::SDValue::getConstantOperandVal(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), llvm::SDValue::getNode(), getNode(), llvm::APInt::getNullValue(), llvm::SDValue::getOpcode(), llvm::SDNode::getOpcode(), llvm::SDValue::getOperand(), llvm::SDNode::getOperand(), llvm::EVT::getScalarType(), llvm::EVT::getSizeInBits(), getTarget(), getUNDEF(), llvm::SDValue::getValueType(), llvm::EVT::getVectorElementType(), llvm::EVT::getVectorNumElements(), getVTList(), llvm::APInt::getZExtValue(), llvm::MVT::Glue, llvm::MVT::i32, llvm::MVT::i64, llvm::APFloat::IEEEdouble, llvm::APFloat::IEEEsingle, llvm::integerPartWidth, llvm::EVT::isFloatingPoint(), llvm::EVT::isInteger(), llvm::EVT::isVector(), llvm_unreachable, llvm::ISD::MERGE_VALUES, N, llvm::APFloat::opInexact, llvm::APFloat::opInvalidOp, llvm::APFloat::opOK, llvm::APFloat::rmNearestTiesToEven, llvm::APFloat::rmTowardNegative, llvm::APFloat::rmTowardPositive, llvm::APFloat::rmTowardZero, llvm::APFloat::roundToIntegral(), llvm::ISD::SCALAR_TO_VECTOR, llvm::APInt::sextOrTrunc(), llvm::ISD::SIGN_EXTEND, llvm::ISD::SINT_TO_FP, llvm::ISD::TokenFactor, llvm::ISD::TRUNCATE, llvm::ISD::UINT_TO_FP, llvm::ISD::UNDEF, VerifySDNode(), llvm::ISD::ZERO_EXTEND, and llvm::APInt::zextOrTrunc().
Definition at line 2878 of file SelectionDAG.cpp.
References llvm::ISD::ADD, llvm::APFloat::add(), llvm::ISD::ADDC, llvm::ISD::ADDE, AddNodeIDNode(), llvm::ISD::AND, llvm::SmallVectorImpl< T >::append(), llvm::APInt::ashr(), llvm::ISD::AssertSext, llvm::ISD::AssertZext, llvm::EVT::bitsLE(), llvm::ISD::BUILD_PAIR, llvm::ISD::BUILD_VECTOR, llvm::CallingConv::C, llvm::ISD::CONCAT_VECTORS, llvm::APFloat::convert(), llvm::APFloat::copySign(), llvm::APFloat::divide(), llvm::dyn_cast(), llvm::ISD::EntryToken, EVTToAPFloatSemantics(), llvm::ISD::EXTRACT_ELEMENT, llvm::ISD::EXTRACT_SUBVECTOR, llvm::ISD::EXTRACT_VECTOR_ELT, llvm::ISD::FADD, llvm::ISD::FCOPYSIGN, llvm::ISD::FDIV, llvm::ISD::FMUL, FoldConstantArithmetic(), llvm::ISD::FP_ROUND, llvm::ISD::FP_ROUND_INREG, llvm::ISD::FREM, llvm::ISD::FSUB, llvm::APInt::getAllOnesValue(), getAnyExtOrTrunc(), llvm::ConstantSDNode::getAPIntValue(), llvm::APInt::getBitWidth(), getConstant(), getConstantFP(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), llvm::SDValue::getNode(), getNode(), llvm::SDValue::getNumOperands(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::EVT::getScalarType(), getSExtOrTrunc(), llvm::SDValue::getSimpleValueType(), llvm::EVT::getSimpleVT(), llvm::EVT::getSizeInBits(), getTarget(), getUNDEF(), llvm::ConstantFPSDNode::getValueAPF(), llvm::SDValue::getValueType(), llvm::EVT::getVectorElementType(), llvm::EVT::getVectorNumElements(), getVTList(), llvm::ConstantSDNode::getZExtValue(), llvm::MVT::Glue, llvm::MVT::i1, llvm::ISD::INSERT_VECTOR_ELT, isCommutativeBinOp(), llvm::ConstantFPSDNode::isExactlyValue(), llvm::EVT::isFloatingPoint(), llvm::EVT::isInteger(), llvm::EVT::isSimple(), llvm::EVT::isVector(), llvm::ConstantFPSDNode::isZero(), llvm::Log2_32_Ceil(), llvm::APFloat::mod(), llvm::ISD::MUL, llvm::ISD::MULHS, llvm::ISD::MULHU, llvm::APFloat::multiply(), N, llvm::SDNode::op_begin(), llvm::SDNode::op_end(), llvm::APFloat::opDivByZero, llvm::APFloat::opInvalidOp, llvm::TargetMachine::Options, llvm::ISD::OR, llvm::MVT::Other, llvm::APFloat::rmNearestTiesToEven, llvm::ISD::ROTL, llvm::ISD::ROTR, llvm::ISD::SDIV, llvm::ISD::SHL, llvm::ISD::SIGN_EXTEND_INREG, llvm::ISD::SRA, llvm::ISD::SREM, llvm::ISD::SRL, llvm::ISD::SUB, llvm::APFloat::subtract(), std::swap(), llvm::ISD::TokenFactor, llvm::APInt::trunc(), llvm::ISD::UDIV, llvm::ISD::UNDEF, llvm::TargetOptions::UnsafeFPMath, llvm::ISD::UREM, llvm::NVPTX::PTXLdStInstCode::V2, VerifySDNode(), and llvm::ISD::XOR.
SDValue SelectionDAG::getNode | ( | unsigned | Opcode, |
SDLoc | DL, | ||
EVT | VT, | ||
SDValue | N1, | ||
SDValue | N2, | ||
SDValue | N3 | ||
) |
Definition at line 3344 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::SmallVectorImpl< T >::append(), llvm::ISD::BITCAST, llvm::ISD::BUILD_VECTOR, llvm::ISD::CONCAT_VECTORS, llvm::dyn_cast(), llvm::ISD::FMA, FoldSetCC(), llvm::APFloat::fusedMultiplyAdd(), getConstantFP(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), llvm::SDValue::getNode(), getNode(), llvm::SDValue::getOpcode(), llvm::SDValue::getSimpleValueType(), llvm::EVT::getSimpleVT(), llvm::ConstantFPSDNode::getValueAPF(), llvm::SDValue::getValueType(), llvm::EVT::getVectorNumElements(), getVTList(), llvm::ConstantSDNode::getZExtValue(), llvm::MVT::Glue, llvm::ISD::INSERT_SUBVECTOR, llvm::EVT::isSimple(), llvm::EVT::isVector(), llvm_unreachable, N, llvm::SDNode::op_begin(), llvm::SDNode::op_end(), llvm::APFloat::opInvalidOp, llvm::APFloat::rmNearestTiesToEven, llvm::ISD::SELECT, llvm::ISD::SETCC, llvm::NVPTX::PTXLdStInstCode::V2, llvm::ISD::VECTOR_SHUFFLE, and VerifySDNode().
SDValue SelectionDAG::getNode | ( | unsigned | Opcode, |
SDLoc | DL, | ||
EVT | VT, | ||
SDValue | N1, | ||
SDValue | N2, | ||
SDValue | N3, | ||
SDValue | N4 | ||
) |
Definition at line 3451 of file SelectionDAG.cpp.
References getNode().
SDValue SelectionDAG::getNode | ( | unsigned | Opcode, |
SDLoc | DL, | ||
EVT | VT, | ||
SDValue | N1, | ||
SDValue | N2, | ||
SDValue | N3, | ||
SDValue | N4, | ||
SDValue | N5 | ||
) |
Definition at line 3458 of file SelectionDAG.cpp.
References getNode().
SDValue SelectionDAG::getNode | ( | unsigned | Opcode, |
SDLoc | DL, | ||
EVT | VT, | ||
const SDUse * | Ops, | ||
unsigned | NumOps | ||
) |
Definition at line 4776 of file SelectionDAG.cpp.
References getNode().
SDValue SelectionDAG::getNode | ( | unsigned | Opcode, |
SDLoc | DL, | ||
EVT | VT, | ||
const SDValue * | Ops, | ||
unsigned | NumOps | ||
) |
Definition at line 4792 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::ISD::BR_CC, llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), getNode(), getValueType(), getVTList(), llvm::MVT::Glue, N, llvm::ISD::SELECT_CC, and VerifySDNode().
SDValue SelectionDAG::getNode | ( | unsigned | Opcode, |
SDLoc | DL, | ||
ArrayRef< EVT > | ResultTys, | ||
const SDValue * | Ops, | ||
unsigned | NumOps | ||
) |
Definition at line 4849 of file SelectionDAG.cpp.
References getNode(), getVTList(), and llvm::ArrayRef< T >::size().
SDValue SelectionDAG::getNode | ( | unsigned | Opcode, |
SDLoc | DL, | ||
const EVT * | VTs, | ||
unsigned | NumVTs, | ||
const SDValue * | Ops, | ||
unsigned | NumOps | ||
) |
Definition at line 4856 of file SelectionDAG.cpp.
References getNode(), and makeVTList().
SDValue SelectionDAG::getNode | ( | unsigned | Opcode, |
SDLoc | DL, | ||
SDVTList | VTs, | ||
const SDValue * | Ops, | ||
unsigned | NumOps | ||
) |
Definition at line 4864 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::ISD::AND, llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), getNode(), llvm::EVT::getScalarType(), llvm::EVT::getSizeInBits(), llvm::MVT::Glue, llvm::MVT::i1, N, llvm::SDVTList::NumVTs, llvm::ISD::SHL_PARTS, llvm::ISD::SIGN_EXTEND_INREG, llvm::ISD::SRA_PARTS, llvm::ISD::SRL_PARTS, VerifySDNode(), and llvm::SDVTList::VTs.
Definition at line 4941 of file SelectionDAG.cpp.
References getNode().
Definition at line 4945 of file SelectionDAG.cpp.
References getNode().
Definition at line 4951 of file SelectionDAG.cpp.
References getNode().
SDValue SelectionDAG::getNode | ( | unsigned | Opcode, |
SDLoc | DL, | ||
SDVTList | VTs, | ||
SDValue | N1, | ||
SDValue | N2, | ||
SDValue | N3 | ||
) |
Definition at line 4957 of file SelectionDAG.cpp.
References getNode().
SDValue SelectionDAG::getNode | ( | unsigned | Opcode, |
SDLoc | DL, | ||
SDVTList | VTs, | ||
SDValue | N1, | ||
SDValue | N2, | ||
SDValue | N3, | ||
SDValue | N4 | ||
) |
Definition at line 4963 of file SelectionDAG.cpp.
References getNode().
SDValue SelectionDAG::getNode | ( | unsigned | Opcode, |
SDLoc | DL, | ||
SDVTList | VTs, | ||
SDValue | N1, | ||
SDValue | N2, | ||
SDValue | N3, | ||
SDValue | N4, | ||
SDValue | N5 | ||
) |
Definition at line 4970 of file SelectionDAG.cpp.
References getNode().
SDNode * SelectionDAG::getNodeIfExists | ( | unsigned | Opcode, |
SDVTList | VTList, | ||
const SDValue * | Ops, | ||
unsigned | NumOps | ||
) |
getNodeIfExists - Get the specified node if it's already available, or else return NULL.
Definition at line 5594 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::MVT::Glue, llvm::SDVTList::NumVTs, and llvm::SDVTList::VTs.
getNOT - Create a bitwise NOT operation as (XOR Val, -1).
getNOT - Create a bitwise NOT operation as (XOR Val, -1).
Definition at line 952 of file SelectionDAG.cpp.
References llvm::APInt::getAllOnesValue(), getConstant(), getNode(), llvm::EVT::getScalarType(), llvm::EVT::getSizeInBits(), and llvm::ISD::XOR.
Referenced by lowerMSABitClear(), LowerVectorSETCC(), LowerVSETCC(), and llvm::TargetLowering::SimplifySetCC().
Definition at line 1461 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), getVTList(), and llvm::ISD::Register.
Referenced by createCMovFP(), llvm::AMDGPUTargetLowering::CreateLiveInRegister(), FoldOperand(), getCopyFromReg(), getCopyToReg(), llvm::MipsDAGToDAGISel::getGlobalBaseReg(), llvm::MipsTargetLowering::getGlobalReg(), getMGatherNode(), getMScatterNode(), llvm::MipsTargetLowering::getOpndList(), getScatterNode(), LowerATOMIC_FENCE(), llvm::HexagonTargetLowering::LowerCall(), llvm::AArch64TargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::HexagonTargetLowering::LowerEH_RETURN(), lowerFABS32(), lowerFABS64(), llvm::SparcTargetLowering::LowerGlobalTLSAddress(), LowerINTRINSIC_W_CHAIN(), LowerMemOpCallTo(), llvm::HexagonTargetLowering::LowerReturn(), llvm::AArch64TargetLowering::LowerReturn(), llvm::SystemZTargetLowering::LowerReturn(), llvm::SparcTargetLowering::LowerReturn_32(), llvm::SparcTargetLowering::LowerReturn_64(), llvm::AArch64TargetLowering::LowerTLSDescCall(), LowerVASTART(), llvm::PPCTargetLowering::PerformDAGCombine(), PrepareCall(), llvm::PPCTargetLowering::SelectAddressRegImm(), llvm::PPCTargetLowering::SelectAddressRegRegOnly(), and llvm::SelectionDAGISel::SelectCodeCommon().
SDValue SelectionDAG::getRegisterMask | ( | const uint32_t * | RegMask | ) |
Definition at line 1475 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::FoldingSetNodeID::AddPointer(), getVTList(), llvm::ISD::RegisterMask, and llvm::MVT::Untyped.
Referenced by llvm::MipsTargetLowering::getOpndList(), llvm::AArch64TargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::SparcTargetLowering::LowerGlobalTLSAddress(), and llvm::AArch64TargetLowering::LowerTLSDescCall().
|
inline |
getRoot - Return the root tag of the SelectionDAG.
Definition at line 328 of file SelectionDAG.h.
Referenced by llvm::DOTGraphTraits< SelectionDAG * >::addCustomGraphFeatures(), llvm::checkForCycles(), dump(), llvm::SelectionDAGBuilder::getControlRoot(), llvm::ScheduleDAGSDNodes::getCustomGraphFeatures(), getMemCmpLoad(), llvm::SelectionDAGBuilder::getRoot(), llvm::AArch64TargetLowering::LowerF128ToCall(), llvm::SITargetLowering::LowerFormalArguments(), llvm::NVPTXTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), RemoveDeadNode(), RemoveDeadNodes(), ReplaceAllUsesOfValueWith(), ReplaceAllUsesWith(), and llvm::DAGTypeLegalizer::run().
|
inline |
Definition at line 666 of file SelectionDAG.h.
References getNode(), llvm::SDValue::getValueType(), llvm::EVT::isVector(), llvm::ISD::SELECT, and llvm::ISD::VSELECT.
|
inline |
getSelectCC - Helper function to make it easier to build SelectCC's if you just have an ISD::CondCode instead of an SDValue.
Definition at line 679 of file SelectionDAG.h.
References getCondCode(), getNode(), llvm::SDValue::getValueType(), and llvm::ISD::SELECT_CC.
Referenced by llvm::R600TargetLowering::PerformDAGCombine().
|
inline |
Definition at line 283 of file SelectionDAG.h.
|
inline |
getSetCC - Helper function to make it easier to build SetCC's if you just have an ISD::CondCode instead of an SDValue.
Definition at line 653 of file SelectionDAG.h.
References getCondCode(), getNode(), llvm::SDValue::getValueType(), llvm::EVT::isVector(), llvm::ISD::SETCC, and llvm::ISD::SETCC_INVALID.
Referenced by llvm::X86TargetLowering::BuildFILD(), FoldSetCC(), llvm::PPCTargetLowering::PerformDAGCombine(), PerformISDSETCCCombine(), performSELECTCombine(), PerformSELECTCombine(), llvm::TargetLowering::SimplifySetCC(), llvm::SelectionDAGBuilder::visitBitTestCase(), llvm::SelectionDAGBuilder::visitBitTestHeader(), llvm::SelectionDAGBuilder::visitJumpTableHeader(), llvm::SelectionDAGBuilder::visitSPDescriptorParent(), and llvm::SelectionDAGBuilder::visitSwitchCase().
getSExtOrTrunc - Convert Op, which must be of integer type, to the integer type VT, by either sign-extending or truncating it.
Definition at line 926 of file SelectionDAG.cpp.
References llvm::EVT::bitsGT(), getNode(), llvm::SDValue::getValueType(), llvm::ISD::SIGN_EXTEND, and llvm::ISD::TRUNCATE.
Referenced by getNode().
getShiftAmountOperand - Return the specified value casted to the target's desired shift amount type.
Definition at line 1585 of file SelectionDAG.cpp.
References llvm::EVT::bitsGT(), getNode(), llvm::TargetLoweringBase::getShiftAmountTy(), llvm::TargetMachine::getTargetLowering(), llvm::SDValue::getValueType(), llvm::EVT::isVector(), llvm::ISD::TRUNCATE, and llvm::ISD::ZERO_EXTEND.
Referenced by UnrollVectorOp().
GetSplitDestVTs - Compute the VTs needed for the low/hi parts of a type which is split (or expanded) into two not necessarily identical pieces.
Definition at line 6413 of file SelectionDAG.cpp.
References getContext(), llvm::TargetLoweringBase::getTypeToTransformTo(), llvm::EVT::getVectorElementType(), llvm::EVT::getVectorNumElements(), llvm::EVT::getVectorVT(), and llvm::EVT::isVector().
Referenced by SplitVector(), and SplitVSETCC().
getSrcValue - Construct a node to track a Value* through the backend.
Definition at line 1528 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::FoldingSetNodeID::AddPointer(), llvm::Value::getType(), getVTList(), llvm::Type::isPointerTy(), llvm::MVT::Other, and llvm::ISD::SRCVALUE.
getStackArgumentTokenFactor - Compute a TokenFactor to force all the incoming stack arguments to be loaded from the stack. This is used in tail call lowering to protect stack arguments from being clobbered.
getStackArgumentTokenFactor - Compute a TokenFactor to force all the incoming stack arguments to be loaded from the stack.
Definition at line 3467 of file SelectionDAG.cpp.
References getEntryNode(), getNode(), llvm::MVT::Other, llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::SmallVectorTemplateCommon< T >::size(), and llvm::ISD::TokenFactor.
SDValue SelectionDAG::getStore | ( | SDValue | Chain, |
SDLoc | dl, | ||
SDValue | Val, | ||
SDValue | Ptr, | ||
MachinePointerInfo | PtrInfo, | ||
bool | isVolatile, | ||
bool | isNonTemporal, | ||
unsigned | Alignment, | ||
const MDNode * | TBAAInfo = 0 |
||
) |
getStore - Helper function to build ISD::STORE nodes.
Definition at line 4618 of file SelectionDAG.cpp.
References getMachineFunction(), llvm::MachineFunction::getMachineMemOperand(), llvm::EVT::getStoreSize(), llvm::SDValue::getValueType(), InferPointerInfo(), llvm::MachineMemOperand::MONonTemporal, llvm::MachineMemOperand::MOStore, llvm::MachineMemOperand::MOVolatile, llvm::MVT::Other, and llvm::MachinePointerInfo::V.
Referenced by llvm::X86TargetLowering::BuildFILD(), EmitTailCallStoreFPAndRetAddr(), EmitTailCallStoreRetAddr(), llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForMemset(), ExpandUnalignedLoad(), ExpandUnalignedStore(), getMemcpyLoadsAndStores(), getMemmoveLoadsAndStores(), getMemsetStores(), getTruncStore(), llvm::HexagonTargetLowering::LowerCall(), llvm::AArch64TargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::HexagonTargetLowering::LowerEH_RETURN(), llvm::SparcTargetLowering::LowerF128_LibCallArg(), LowerF128Store(), llvm::SystemZTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::SparcTargetLowering::LowerFormalArguments_64(), lowerFP_TO_SINT_STORE(), LowerINTRINSIC_W_CHAIN(), LowerMemOpCallTo(), lowerMSAStoreIntr(), LowerVAARG(), llvm::MSP430TargetLowering::LowerVASTART(), llvm::HexagonTargetLowering::LowerVASTART(), llvm::AArch64TargetLowering::LowerVASTART(), LowerVASTART(), memsetStore(), PerformEXTRACT_VECTOR_ELTCombine(), PerformSTORECombine(), llvm::AArch64TargetLowering::SaveVarArgRegisters(), ShrinkLoadReplaceStoreWithStore(), and StoreTailCallArgumentsToStackSlot().
SDValue SelectionDAG::getStore | ( | SDValue | Chain, |
SDLoc | dl, | ||
SDValue | Val, | ||
SDValue | Ptr, | ||
MachineMemOperand * | MMO | ||
) |
Definition at line 4645 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), encodeMemSDNodeFlags(), llvm::MachinePointerInfo::getAddrSpace(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), llvm::MachineMemOperand::getPointerInfo(), getUNDEF(), llvm::SDValue::getValueType(), getVTList(), llvm::MachineMemOperand::isInvariant(), llvm::MachineMemOperand::isNonTemporal(), llvm::MachineMemOperand::isVolatile(), llvm::MVT::Other, llvm::ISD::STORE, llvm::RegState::Undef, and llvm::ISD::UNINDEXED.
|
inline |
Definition at line 281 of file SelectionDAG.h.
References llvm::SystemZISD::TM.
Referenced by CalculateParameterAndLinkageAreaSize(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemset(), FoldOperand(), GetNegatedExpression(), getNode(), llvm::SDNode::getOperationName(), llvm::SelectionDAGBuilder::init(), isKnownNeverNaN(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::SparcTargetLowering::LowerReturn_32(), llvm::SparcTargetLowering::LowerReturn_64(), PerformFMinFMaxCombine(), PerformSELECT_CCCombine(), PerformSELECTCombine(), PerformSTORECombine(), and PrepareCall().
|
inline |
Definition at line 481 of file SelectionDAG.h.
References getBlockAddress().
Referenced by llvm::AArch64TargetLowering::LowerAsmOperandForConstraint(), llvm::MSP430TargetLowering::LowerBlockAddress(), llvm::HexagonTargetLowering::LowerBlockAddress(), llvm::AArch64TargetLowering::LowerBlockAddress(), and llvm::SparcTargetLowering::withTargetFlags().
Definition at line 408 of file SelectionDAG.h.
References getConstant().
Referenced by CombineBaseUpdate(), FoldOperand(), llvm::PPC::get_VSPLTI_elt(), getAL(), getAtomicLoadArithTargetConstant(), getCopyFromParts(), getGatherNode(), getMGatherNode(), getMScatterNode(), getOnesVector(), getScatterNode(), getTargetExtractSubreg(), getTargetInsertSubreg(), getVAArg(), getZeroVector(), isNEONModifiedImm(), llvm::SystemZTargetLowering::LowerAsmOperandForConstraint(), llvm::AArch64TargetLowering::LowerAsmOperandForConstraint(), llvm::ARMTargetLowering::LowerAsmOperandForConstraint(), llvm::PPCTargetLowering::LowerAsmOperandForConstraint(), llvm::X86TargetLowering::LowerAsmOperandForConstraint(), llvm::TargetLowering::LowerAsmOperandForConstraint(), LowerATOMIC_FENCE(), llvm::AArch64TargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), LowerCMP_SWAP(), llvm::SparcTargetLowering::LowerF128Compare(), LowerF128Load(), LowerF128Store(), llvm::AArch64TargetLowering::LowerFormalArguments(), llvm::AArch64TargetLowering::LowerGlobalTLSAddress(), llvm::R600TargetLowering::LowerOperation(), lowerVECTOR_SHUFFLE_VSHF(), LowerZERO_EXTEND_AVX512(), llvm::PPCTargetLowering::SelectAddressRegImm(), llvm::SelectionDAGISel::SelectCodeCommon(), and llvm::SelectionDAGISel::SelectInlineAsmMemoryOperands().
Definition at line 411 of file SelectionDAG.h.
References getConstant().
|
inline |
Definition at line 414 of file SelectionDAG.h.
References getConstant().
Definition at line 422 of file SelectionDAG.h.
References getConstantFP().
Referenced by getZeroVector(), and llvm::AArch64TargetLowering::LowerAsmOperandForConstraint().
Definition at line 425 of file SelectionDAG.h.
References getConstantFP().
|
inline |
Definition at line 428 of file SelectionDAG.h.
References getConstantFP().
|
inline |
Definition at line 451 of file SelectionDAG.h.
References Align(), and getConstantPool().
Referenced by llvm::HexagonTargetLowering::LowerConstantPool(), LowerConstantPool(), llvm::AArch64TargetLowering::LowerGlobalAddressELFSmall(), and llvm::SparcTargetLowering::withTargetFlags().
|
inline |
Definition at line 459 of file SelectionDAG.h.
References Align(), and getConstantPool().
SDValue SelectionDAG::getTargetExternalSymbol | ( | const char * | Sym, |
EVT | VT, | ||
unsigned char | TargetFlags = 0 |
||
) |
Definition at line 1313 of file SelectionDAG.cpp.
Referenced by llvm::AArch64TargetLowering::LowerAsmOperandForConstraint(), llvm::HexagonTargetLowering::LowerCall(), llvm::NVPTXTargetLowering::LowerCall(), llvm::AArch64TargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::MSP430TargetLowering::LowerExternalSymbol(), llvm::SparcTargetLowering::LowerGlobalTLSAddress(), llvm::AArch64TargetLowering::LowerGlobalTLSAddress(), PrepareCall(), and llvm::SparcTargetLowering::withTargetFlags().
getTargetExtractSubreg - A convenience function for creating TargetInstrInfo::EXTRACT_SUBREG nodes.
getTargetExtractSubreg - A convenience function for creating TargetOpcode::EXTRACT_SUBREG nodes.
Definition at line 5573 of file SelectionDAG.cpp.
References llvm::TargetOpcode::EXTRACT_SUBREG, getMachineNode(), getTargetConstant(), and llvm::MVT::i32.
Referenced by getAtomicLoadArithTargetConstant(), LowerF64Op(), LowerFABS(), lowerGR128Binary(), and llvm::R600TargetLowering::LowerOperation().
Definition at line 440 of file SelectionDAG.h.
References getFrameIndex().
Referenced by llvm::PPCTargetLowering::SelectAddressRegImm().
|
inline |
Definition at line 434 of file SelectionDAG.h.
References getGlobalAddress().
Referenced by GetTLSADDR(), llvm::AArch64TargetLowering::LowerAsmOperandForConstraint(), llvm::X86TargetLowering::LowerAsmOperandForConstraint(), llvm::TargetLowering::LowerAsmOperandForConstraint(), llvm::HexagonTargetLowering::LowerCall(), llvm::AArch64TargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::NVPTXTargetLowering::LowerGlobalAddress(), llvm::MSP430TargetLowering::LowerGlobalAddress(), llvm::HexagonTargetLowering::LowerGLOBALADDRESS(), llvm::AArch64TargetLowering::LowerGlobalAddressELFLarge(), llvm::AArch64TargetLowering::LowerGlobalAddressELFSmall(), llvm::AArch64TargetLowering::LowerGlobalTLSAddress(), LowerToTLSExecModel(), LowerToTLSLocalDynamicModel(), PrepareCall(), and llvm::SparcTargetLowering::withTargetFlags().
SDValue SelectionDAG::getTargetIndex | ( | int | Index, |
EVT | VT, | ||
int64_t | Offset = 0 , |
||
unsigned char | TargetFlags = 0 |
||
) |
Definition at line 1259 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), getVTList(), and llvm::ISD::TargetIndex.
SDValue SelectionDAG::getTargetInsertSubreg | ( | int | SRIdx, |
SDLoc | DL, | ||
EVT | VT, | ||
SDValue | Operand, | ||
SDValue | Subreg | ||
) |
getTargetInsertSubreg - A convenience function for creating TargetInstrInfo::INSERT_SUBREG nodes.
getTargetInsertSubreg - A convenience function for creating TargetOpcode::INSERT_SUBREG nodes.
Definition at line 5584 of file SelectionDAG.cpp.
References getMachineNode(), getTargetConstant(), llvm::MVT::i32, and llvm::TargetOpcode::INSERT_SUBREG.
Referenced by LowerF64Op(), and LowerFABS().
|
inline |
Definition at line 445 of file SelectionDAG.h.
References getJumpTable().
Referenced by llvm::HexagonTargetLowering::LowerBR_JT(), llvm::MSP430TargetLowering::LowerJumpTable(), and llvm::AArch64TargetLowering::LowerJumpTable().
|
inline |
Definition at line 282 of file SelectionDAG.h.
Referenced by AddCombineToVPADDL(), buildFromShuffleMostly(), BuildVectorFromScalar(), EltsFromConsecutiveLoads(), ExpandBITCAST(), getCopyFromParts(), getCopyFromPartsVector(), getCopyToParts(), getCopyToPartsVector(), getMemcpyLoadsAndStores(), getMemmoveLoadsAndStores(), getMemsetStores(), GetNegatedExpression(), llvm::SDNode::getOperationName(), isBLACompatibleAddress(), isConsecutiveLS(), isExtendedBUILD_VECTOR(), LowerADDC_ADDE_SUBC_SUBE(), LowerATOMIC_STORE(), LowerFSINCOS(), LowerMemOpCallTo(), LowerSIGN_EXTEND_AVX512(), LowerVASTART(), LowerVECTOR_SHUFFLEv16i8(), LowerVectorBroadcast(), LowerVectorIntExtend(), LowerZERO_EXTEND_AVX512(), llvm::ScheduleDAGSDNodes::newSUnit(), PerformANDCombine(), PerformARMBUILD_VECTORCombine(), PerformBTCombine(), PerformExtendCombine(), PerformEXTRACT_VECTOR_ELTCombine(), PerformFMACombine(), PerformLOADCombine(), PerformORCombine(), PerformSELECTCombine(), PerformShiftCombine(), PerformShuffleCombine(), PerformSTORECombine(), PerformVECTOR_SHUFFLECombine(), PerformXORCombine(), PrepareCall(), llvm::X86TargetLowering::ReplaceNodeResults(), ShrinkLoadReplaceStoreWithStore(), SkipExtensionForVMULL(), WidenMaskArithmetic(), and XFormVExtractWithShuffleIntoLoad().
|
inline |
Definition at line 284 of file SelectionDAG.h.
Referenced by getMemsetStringVal().
SDValue SelectionDAG::getTruncStore | ( | SDValue | Chain, |
SDLoc | dl, | ||
SDValue | Val, | ||
SDValue | Ptr, | ||
MachinePointerInfo | PtrInfo, | ||
EVT | TVT, | ||
bool | isNonTemporal, | ||
bool | isVolatile, | ||
unsigned | Alignment, | ||
const MDNode * | TBAAInfo = 0 |
||
) |
Definition at line 4672 of file SelectionDAG.cpp.
References getMachineFunction(), llvm::MachineFunction::getMachineMemOperand(), llvm::EVT::getStoreSize(), llvm::SDValue::getValueType(), InferPointerInfo(), llvm::MachineMemOperand::MONonTemporal, llvm::MachineMemOperand::MOStore, llvm::MachineMemOperand::MOVolatile, llvm::MVT::Other, and llvm::MachinePointerInfo::V.
Referenced by ExpandUnalignedLoad(), ExpandUnalignedStore(), getMemcpyLoadsAndStores(), and llvm::AMDGPUTargetLowering::SplitVectorStore().
SDValue SelectionDAG::getTruncStore | ( | SDValue | Chain, |
SDLoc | dl, | ||
SDValue | Val, | ||
SDValue | Ptr, | ||
EVT | TVT, | ||
MachineMemOperand * | MMO | ||
) |
Definition at line 4699 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::EVT::bitsLT(), encodeMemSDNodeFlags(), llvm::MachinePointerInfo::getAddrSpace(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), llvm::MachineMemOperand::getPointerInfo(), llvm::EVT::getRawBits(), llvm::EVT::getScalarType(), getStore(), getUNDEF(), llvm::SDValue::getValueType(), llvm::EVT::getVectorNumElements(), getVTList(), llvm::EVT::isInteger(), llvm::MachineMemOperand::isInvariant(), llvm::MachineMemOperand::isNonTemporal(), llvm::EVT::isVector(), llvm::MachineMemOperand::isVolatile(), llvm::MVT::Other, llvm::ISD::STORE, llvm::RegState::Undef, and llvm::ISD::UNINDEXED.
getUNDEF - Return an UNDEF node. UNDEF does not have a useful SDLoc.
Definition at line 585 of file SelectionDAG.h.
References getNode(), and llvm::ISD::UNDEF.
Referenced by buildFromShuffleMostly(), CompactSwizzlableVector(), Concat128BitVectors(), Concat256BitVectors(), ExtractSubVector(), FoldSetCC(), getCopyFromPartsVector(), getCopyToPartsVector(), getExtLoad(), getLegalSplat(), getLoad(), getNode(), getShuffleScalarElt(), getShuffleVectorZeroOrUndef(), getStore(), getTargetVShiftNode(), getTruncStore(), llvm::SelectionDAGBuilder::getValueImpl(), getVectorShuffle(), LowerAsSplatVectorLoad(), LowerAVXExtend(), llvm::AArch64TargetLowering::LowerBUILD_VECTOR(), LowerBuildVectorv16i8(), LowerBuildVectorv8i16(), llvm::NVPTXTargetLowering::LowerCall(), llvm::AArch64TargetLowering::LowerCall(), LowerCONCAT_VECTORS(), llvm::SITargetLowering::LowerFormalArguments(), LowerFP_EXTEND(), llvm::MipsTargetLowering::lowerLOAD(), llvm::NVPTXTargetLowering::LowerReturn(), LowerSCALAR_TO_VECTOR(), LowerSIGN_EXTEND(), LowerVECTOR_SHUFFLE(), LowerVECTOR_SHUFFLE_256(), LowerVECTOR_SHUFFLEv8i16(), partitionShuffleOfConcats(), PerformARMBUILD_VECTORCombine(), llvm::R600TargetLowering::PerformDAGCombine(), PerformLOADCombine(), PerformShuffleCombine256(), PerformSTORECombine(), PerformVECTOR_SHUFFLECombine(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::TargetLowering::SimplifySetCC(), UnrollVectorOp(), and XFormVExtractWithShuffleIntoLoad().
SDValue SelectionDAG::getVAArg | ( | EVT | VT, |
SDLoc | dl, | ||
SDValue | Chain, | ||
SDValue | Ptr, | ||
SDValue | SV, | ||
unsigned | Align | ||
) |
getVAArg - VAArg produces a result and token chain, and takes a pointer and a source value as input.
Definition at line 4768 of file SelectionDAG.cpp.
References getNode(), getTargetConstant(), getVTList(), llvm::MVT::i32, llvm::MVT::Other, and llvm::ISD::VAARG.
Definition at line 1291 of file SelectionDAG.cpp.
References llvm::EVT::getSimpleVT(), llvm::EVT::isExtended(), llvm::EVT::isSimple(), and llvm::MVT::SimpleTy.
Referenced by llvm::X86TargetLowering::BuildFILD(), convertLocVTToValVT(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset(), getCopyFromParts(), getNode(), llvm::SparcTargetLowering::LowerCall_64(), LowerEXTRACT_VECTOR_ELT_SSE4(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::SparcTargetLowering::LowerFormalArguments_64(), lowerMSACopyIntr(), llvm::MSP430TargetLowering::LowerSIGN_EXTEND(), llvm::ARMTargetLowering::PerformCMOVCombine(), llvm::PPCTargetLowering::PerformDAGCombine(), UnrollVectorOp(), and WidenMaskArithmetic().
SDValue SelectionDAG::getVectorShuffle | ( | EVT | VT, |
SDLoc | dl, | ||
SDValue | N1, | ||
SDValue | N2, | ||
const int * | MaskElts | ||
) |
getVectorShuffle - Return an ISD::VECTOR_SHUFFLE node. The number of elements in VT, which must be a vector type, must match the number of mask elements NumElts. A integer mask element equal to -1 is treated as undefined.
Definition at line 1351 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::BumpPtrAllocator::Allocate(), commuteShuffle(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), llvm::SDValue::getOpcode(), getUNDEF(), llvm::SDValue::getValueType(), llvm::EVT::getVectorNumElements(), getVTList(), llvm::Intrinsic::memcpy, llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::ISD::UNDEF, and llvm::ISD::VECTOR_SHUFFLE.
Referenced by buildFromShuffleMostly(), BuildVSLDOI(), CommuteVectorShuffle(), Compact8x32ShuffleNode(), GeneratePerfectShuffle(), getLegalSplat(), getMOVL(), getShuffleVectorZeroOrUndef(), getUnpackh(), getUnpackl(), llvm::AArch64TargetLowering::isKnownShuffleVector(), LowerAsSplatVectorLoad(), LowerMUL(), LowerSIGN_EXTEND(), LowerVECTOR_SHUFFLE_128v4(), LowerVECTOR_SHUFFLE_256(), LowerVECTOR_SHUFFLEv8i16(), LowerVSETCC(), PerformLOADCombine(), PerformSTORECombine(), PerformVECTOR_SHUFFLECombine(), RewriteAsNarrowerShuffle(), and XFormVExtractWithShuffleIntoLoad().
getVTList - Return an SDVTList that represents the list of values specified.
Definition at line 4977 of file SelectionDAG.cpp.
References makeVTList().
Referenced by AddCombineTo64bitMLAL(), llvm::X86TargetLowering::BuildFILD(), llvm::TargetLowering::BuildSDIV(), llvm::TargetLowering::BuildUDIV(), CloneNodeWithValues(), CombineBaseUpdate(), CombineVLDDUP(), createLoadLR(), createStoreLR(), EltsFromConsecutiveLoads(), emitCLC(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForMemchr(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrcmp(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrcpy(), Expand64BitShift(), ExpandBITCAST(), GeneratePerfectShuffle(), getAddrSpaceCast(), getAtomic(), getBasicBlock(), getBlockAddress(), getBoundedStrlen(), getCALLSEQ_END(), getCALLSEQ_START(), getConstant(), getConstantFP(), getConstantPool(), getConvertRndSat(), getCopyFromReg(), getCopyToReg(), getEHLabel(), getFrameIndex(), getGlobalAddress(), getIndexedStore(), getJumpTable(), getLoad(), getMachineNode(), getMDNode(), getMergeValues(), getMGatherNode(), getMScatterNode(), getNode(), getRegister(), getRegisterMask(), getScatterNode(), getSrcValue(), getStore(), getTargetIndex(), GetTLSADDR(), getTruncStore(), getVAArg(), getVectorShuffle(), LowerADDC_ADDE_SUBC_SUBE(), llvm::HexagonTargetLowering::LowerCall(), llvm::NVPTXTargetLowering::LowerCall(), llvm::AArch64TargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::SelectionDAGBuilder::LowerCallTo(), llvm::TargetLowering::LowerCallTo(), LowerCMP_SWAP(), LowerCTLZ(), LowerCTLZ_ZERO_UNDEF(), LowerCTTZ(), llvm::SparcTargetLowering::LowerGlobalTLSAddress(), LowerINTRINSIC_W_CHAIN(), LowerINTRINSIC_WO_CHAIN(), LowerREADCYCLECOUNTER(), llvm::NVPTXTargetLowering::LowerReturn(), llvm::MSP430TargetLowering::LowerSELECT_CC(), llvm::MSP430TargetLowering::LowerSETCC(), llvm::AArch64TargetLowering::LowerTLSDescCall(), LowerVECTOR_SHUFFLE(), LowerXALUO(), llvm::PPCTargetLowering::PerformDAGCombine(), performIntegerAbsCombine(), PerformShuffleCombine256(), PrepareCall(), ReplaceATOMIC_BINARY_64(), ReplaceATOMIC_OP_64(), ReplaceINTRINSIC_W_CHAIN(), ReplaceLoadVector(), llvm::PPCTargetLowering::ReplaceNodeResults(), llvm::X86TargetLowering::ReplaceNodeResults(), ReplaceREADCYCLECOUNTER(), llvm::SelectionDAGISel::SelectCodeCommon(), and SelectNodeTo().
Definition at line 4981 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), llvm::BumpPtrAllocator::Allocate(), llvm::EVT::getRawBits(), llvm::SDVTListNode::getSDVTList(), and llvm::FoldingSetNodeID::Intern().
Definition at line 4999 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), llvm::BumpPtrAllocator::Allocate(), llvm::EVT::getRawBits(), llvm::SDVTListNode::getSDVTList(), and llvm::FoldingSetNodeID::Intern().
Definition at line 5019 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), llvm::BumpPtrAllocator::Allocate(), llvm::EVT::getRawBits(), llvm::SDVTListNode::getSDVTList(), and llvm::FoldingSetNodeID::Intern().
Definition at line 5041 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), llvm::BumpPtrAllocator::Allocate(), llvm::SDVTListNode::getSDVTList(), and llvm::FoldingSetNodeID::Intern().
getZeroExtendInReg - Return the expression required to zero extend the Op value assuming it was the smaller SrcTy value.
Definition at line 938 of file SelectionDAG.cpp.
References llvm::ISD::AND, getConstant(), llvm::APInt::getLowBitsSet(), getNode(), llvm::EVT::getScalarType(), llvm::EVT::getSizeInBits(), llvm::SDValue::getValueType(), and llvm::EVT::isVector().
getZExtOrTrunc - Convert Op, which must be of integer type, to the integer type VT, by either zero-extending or truncating it.
Definition at line 932 of file SelectionDAG.cpp.
References llvm::EVT::bitsGT(), getNode(), llvm::SDValue::getValueType(), llvm::ISD::TRUNCATE, and llvm::ISD::ZERO_EXTEND.
Referenced by llvm::SystemZSelectionDAGInfo::EmitTargetCodeForMemchr(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrnlen(), LowerINTRINSIC_W_CHAIN(), llvm::SelectionDAGBuilder::visitBitTestHeader(), and llvm::SelectionDAGBuilder::visitJumpTableHeader().
|
inline |
hasDebugValues - Return true if there are any SDDbgValue nodes associated with this SelectionDAG.
Definition at line 1039 of file SelectionDAG.h.
References llvm::SDDbgInfo::empty().
Referenced by llvm::ScheduleDAGSDNodes::EmitSchedule().
InferPtrAlignment - Infer alignment of a load / store address. Return 0 if it cannot be inferred.
Definition at line 6372 of file SelectionDAG.cpp.
References Align(), llvm::ComputeMaskedBits(), llvm::SDValue::getConstantOperandVal(), llvm::TargetLoweringBase::getDataLayout(), llvm::MachineFunction::getFrameInfo(), getMachineFunction(), llvm::SDValue::getNode(), llvm::MachineFrameInfo::getObjectAlignment(), llvm::SDValue::getOperand(), llvm::TargetLoweringBase::getPointerTypeSizeInBits(), llvm::TargetMachine::getTargetLowering(), llvm::GlobalValue::getType(), isBaseWithConstantOffset(), llvm::TargetLowering::isGAPlusOffset(), and llvm::MinAlign().
Referenced by ComputeMaskedBits(), EltsFromConsecutiveLoads(), getMemcpyLoadsAndStores(), getMemmoveLoadsAndStores(), and LowerAsSplatVectorLoad().
void SelectionDAG::init | ( | MachineFunction & | mf, |
const TargetTransformInfo * | TTI, | ||
const TargetLowering * | TLI | ||
) |
init - Prepare this SelectionDAG to process code in the given MachineFunction.
Definition at line 880 of file SelectionDAG.cpp.
References llvm::Function::getContext(), and llvm::MachineFunction::getFunction().
Referenced by llvm::SelectionDAGISel::runOnMachineFunction().
isBaseWithConstantOffset - Return true if the specified operand is an ISD::ADD with a ConstantSDNode on the right-hand side, or if it is an ISD::OR with a ConstantSDNode that is guaranteed to have the same semantics as an ADD. This handles the equivalence: X|Cst == X+Cst iff X&Cst = 0.
Definition at line 2425 of file SelectionDAG.cpp.
References llvm::ISD::ADD, llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), MaskedValueIsZero(), and llvm::ISD::OR.
Referenced by InferPtrAlignment(), isConsecutiveLoad(), isConsecutiveLS(), and LowerAsSplatVectorLoad().
isCommutativeBinOp - Returns true if the opcode is a commutative binary operation.
Definition at line 988 of file SelectionDAG.h.
References llvm::ISD::ADD, llvm::ISD::ADDC, llvm::ISD::ADDE, llvm::ISD::AND, llvm::ISD::FADD, llvm::ISD::FMUL, llvm::ISD::MUL, llvm::ISD::MULHS, llvm::ISD::MULHU, llvm::ISD::OR, llvm::ISD::SADDO, llvm::ISD::SMUL_LOHI, llvm::ISD::UADDO, llvm::ISD::UMUL_LOHI, and llvm::ISD::XOR.
Referenced by getNode(), and llvm::TargetLowering::SimplifySetCC().
bool SelectionDAG::isConsecutiveLoad | ( | LoadSDNode * | LD, |
LoadSDNode * | Base, | ||
unsigned | Bytes, | ||
int | Dist | ||
) | const |
isConsecutiveLoad - Return true if LD is loading 'Bytes' bytes from a location that is 'Dist' units away from the location that the 'Base' load is loading from.
Definition at line 6330 of file SelectionDAG.cpp.
References llvm::AArch64ISD::BFI, llvm::ISD::FrameIndex, llvm::X86II::FS, llvm::MemSDNode::getChain(), llvm::MachineFunction::getFrameInfo(), getMachineFunction(), llvm::SDValue::getNode(), llvm::MachineFrameInfo::getObjectOffset(), llvm::MachineFrameInfo::getObjectSize(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDNode::getOperand(), llvm::EVT::getSizeInBits(), llvm::TargetMachine::getTargetLowering(), llvm::SDNode::getValueType(), isBaseWithConstantOffset(), and llvm::TargetLowering::isGAPlusOffset().
Referenced by EltsFromConsecutiveLoads().
isEqualTo - Test whether two SDValues are known to compare equal. This is true if they are the same value, or if one is negative zero and the other positive zero.
Definition at line 2470 of file SelectionDAG.cpp.
Referenced by matchIntegerMINMAX(), PerformSELECT_CCCombine(), and PerformSELECTCombine().
isKnownNeverNan - Test whether the given SDValue is known to never be NaN.
Definition at line 2439 of file SelectionDAG.cpp.
References llvm::CallingConv::C, and getTarget().
Referenced by PerformSELECT_CCCombine(), and PerformSELECTCombine().
isKnownNeverZero - Test whether the given SDValue is known to never be positive or negative Zero.
Definition at line 2453 of file SelectionDAG.cpp.
References llvm::CallingConv::C, llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), and llvm::ISD::OR.
Referenced by PerformCMOVCombine(), PerformSELECT_CCCombine(), and PerformSELECTCombine().
void SelectionDAG::Legalize | ( | ) |
Legalize - This transforms the SelectionDAG into a SelectionDAG that is compatible with the target instruction selector, as indicated by the TargetLowering object.
Note that this is an involved process that may invalidate pointers into the graph.
run - This is the main entry point to this class.
Definition at line 4058 of file LegalizeDAG.cpp.
bool SelectionDAG::LegalizeTypes | ( | ) |
LegalizeTypes - This transforms the SelectionDAG into a SelectionDAG that only uses types natively supported by the target. Returns "true" if it made any changes.
Note that this is an involved process that may invalidate pointers into the graph.
Definition at line 1106 of file LegalizeTypes.cpp.
References llvm::DAGTypeLegalizer::run().
bool SelectionDAG::LegalizeVectors | ( | ) |
LegalizeVectors - This transforms the SelectionDAG into a SelectionDAG that only uses vector math operations supported by the target. This is necessary as a separate step from Legalize because unrolling a vector operation can introduce illegal types, which requires running LegalizeTypes again.
This returns true if it made any changes; in that case, LegalizeTypes is called again before Legalize.
Note that this is an involved process that may invalidate pointers into the graph.
Definition at line 776 of file LegalizeVectorOps.cpp.
MaskedValueIsZero - Return true if 'Op & Mask' is known to be zero. We use this predicate to simplify operations downstream. Op and Mask are known to be the same type.
MaskedValueIsZero - Return true if 'V & Mask' is known to be zero. We use this predicate to simplify operations downstream. Mask is known to be zero for bits that V cannot have.
Definition at line 1747 of file SelectionDAG.cpp.
References ComputeMaskedBits().
Referenced by llvm::SelectionDAGISel::CheckAndMask(), isBaseWithConstantOffset(), isTruncWithZeroHighBitsInput(), llvm::PPCTargetLowering::PerformDAGCombine(), PerformORCombine(), PerformShiftCombine(), ShrinkLoadReplaceStoreWithStore(), SignBitIsZero(), and llvm::TargetLowering::SimplifySetCC().
SDNode * SelectionDAG::MorphNodeTo | ( | SDNode * | N, |
unsigned | Opc, | ||
SDVTList | VTs, | ||
const SDValue * | Ops, | ||
unsigned | NumOps | ||
) |
MorphNodeTo - This mutates the specified node to have the specified return type, opcode, and operands.
MorphNodeTo - This mutates the specified node to have the specified return type, opcode, and operands.
Note that MorphNodeTo returns the resultant node. If there is already a node of the specified opcode and operands, it returns that node instead of the current one. Note that the SDLoc need not be the same.
Using MorphNodeTo is faster than creating a new node and swapping it in with ReplaceAllUsesWith both because it often avoids allocating a new node, and because it doesn't require CSE recalculation for any of the node's users.
Definition at line 5325 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::BumpPtrAllocator::Allocate(), llvm::array_lengthof(), llvm::SmallPtrSet< PtrType, SmallSize >::begin(), llvm::SmallPtrSetImpl::empty(), llvm::SmallPtrSet< PtrType, SmallSize >::end(), llvm::SDUse::getNode(), llvm::MVT::Glue, I, llvm::SDNode::InitOperands(), llvm::SmallPtrSet< PtrType, SmallSize >::insert(), N, llvm::SDVTList::NumVTs, llvm::SDNode::op_begin(), llvm::SDNode::op_end(), llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), RemoveDeadNodes(), llvm::SDNode::use_empty(), and llvm::SDVTList::VTs.
Referenced by CloneNodeWithValues(), performANDCombine(), performSRACombine(), and SelectNodeTo().
void SelectionDAG::RemoveDeadNode | ( | SDNode * | N | ) |
RemoveDeadNode - Remove the specified node from the system. If any of its operands then becomes dead, remove them as well. Inform UpdateListener for each node deleted.
Definition at line 598 of file SelectionDAG.cpp.
References llvm::NVPTXISD::Dummy, getRoot(), and RemoveDeadNodes().
void SelectionDAG::RemoveDeadNodes | ( | ) |
RemoveDeadNodes - This method deletes all unreachable nodes in the SelectionDAG.
Definition at line 549 of file SelectionDAG.cpp.
References allnodes_begin(), allnodes_end(), llvm::NVPTXISD::Dummy, getRoot(), llvm::HandleSDNode::getValue(), I, llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), and setRoot().
Referenced by MorphNodeTo(), RemoveDeadNode(), and llvm::DAGTypeLegalizer::run().
void SelectionDAG::RemoveDeadNodes | ( | SmallVectorImpl< SDNode * > & | DeadNodes | ) |
RemoveDeadNodes - This method deletes the unreachable nodes in the given list, and any nodes that become unreachable as a result.
Definition at line 569 of file SelectionDAG.cpp.
References llvm::SmallVectorBase::empty(), llvm::SDUse::getNode(), I, N, llvm::SelectionDAG::DAGUpdateListener::Next, llvm::SDNode::op_begin(), llvm::SDNode::op_end(), llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), and llvm::SDNode::use_empty().
void SelectionDAG::ReplaceAllUsesOfValuesWith | ( | const SDValue * | From, |
const SDValue * | To, | ||
unsigned | Num | ||
) |
ReplaceAllUsesOfValuesWith - Like ReplaceAllUsesOfValueWith, but for multiple values at once. This correctly handles the case where there is an overlap between the From values and the To values.
ReplaceAllUsesOfValuesWith - Replace any uses of From with To, leaving uses of other values produced by From.getNode() alone. The same value may appear in both the From and To list. The Deleted vector is handled the same way as for ReplaceAllUsesWith.
Definition at line 5865 of file SelectionDAG.cpp.
References llvm::SmallVectorTemplateCommon< T >::begin(), llvm::SmallVectorTemplateCommon< T >::end(), llvm::SDValue::getNode(), llvm::SDValue::getResNo(), llvm::SDUse::getResNo(), llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), ReplaceAllUsesOfValueWith(), llvm::SmallVectorTemplateCommon< T >::size(), llvm::SDNode::use_begin(), and llvm::SDNode::use_end().
Referenced by llvm::SelectionDAGISel::ReplaceUses().
ReplaceAllUsesOfValueWith - Replace any uses of From with To, leaving uses of other values produced by From.Val alone.
ReplaceAllUsesOfValueWith - Replace any uses of From with To, leaving uses of other values produced by From.getNode() alone. The Deleted vector is handled the same way as for ReplaceAllUsesWith.
Definition at line 5788 of file SelectionDAG.cpp.
References llvm::SDValue::getNode(), llvm::SDNode::getNumValues(), llvm::SDValue::getResNo(), llvm::SDUse::getResNo(), getRoot(), llvm::SDNode::use_iterator::getUse(), ReplaceAllUsesWith(), setRoot(), llvm::SDNode::use_begin(), and llvm::SDNode::use_end().
Referenced by AddCombineTo64bitMLAL(), EltsFromConsecutiveLoads(), llvm::PPCTargetLowering::PerformDAGCombine(), performDivRemCombine(), PerformEXTRACT_VECTOR_ELTCombine(), PerformShuffleCombine256(), PerformSINT_TO_FPCombine(), ReplaceAllUsesOfValuesWith(), llvm::R600TargetLowering::ReplaceNodeResults(), llvm::SelectionDAGISel::ReplaceUses(), llvm::SelectionDAGISel::SelectCodeCommon(), selectMADD(), and selectMSUB().
ReplaceAllUsesWith - Modify anything using 'From' to use 'To' instead. This can cause recursive merging of nodes in the DAG. Use the first version if 'From' is known to have a single result, use the second if you have two nodes with identical results (or if 'To' has a superset of the results of 'From'), use the third otherwise.
These methods all take an optional UpdateListener, which (if not null) is informed about nodes that are deleted and modified due to recursive changes in the dag.
These functions only replace all existing uses. It's possible that as these replacements are being performed, CSE may cause the From node to be given new uses. These new uses of From are left in place, and not automatically transferred to To.
ReplaceAllUsesWith - Modify anything using 'From' to use 'To' instead. This can cause recursive merging of nodes in the DAG.
This version assumes From has a single result value.
Definition at line 5656 of file SelectionDAG.cpp.
References llvm::SDValue::getNode(), llvm::SDNode::getNumValues(), llvm::SDValue::getResNo(), getRoot(), setRoot(), llvm::SDNode::use_begin(), and llvm::SDNode::use_end().
Referenced by FoldMaskAndShiftToExtract(), FoldMaskAndShiftToScale(), FoldMaskedShiftToScaledMask(), ReplaceAllUsesOfValueWith(), ReplaceAllUsesWith(), and llvm::SelectionDAGISel::ReplaceUses().
ReplaceAllUsesWith - Modify anything using 'From' to use 'To' instead. This can cause recursive merging of nodes in the DAG.
This version assumes that for each value of From, there is a corresponding value in To in the same position with the same type.
Definition at line 5703 of file SelectionDAG.cpp.
References getNode(), llvm::SDNode::getNumValues(), getRoot(), llvm::SDNode::use_iterator::getUse(), llvm::SDNode::getValueType(), llvm::SDNode::hasAnyUseOfValue(), setRoot(), llvm::SDNode::use_begin(), and llvm::SDNode::use_end().
ReplaceAllUsesWith - Modify anything using 'From' to use 'To' instead. This can cause recursive merging of nodes in the DAG.
This version can replace From with any result values. To must match the number and types of values returned by From.
Definition at line 5750 of file SelectionDAG.cpp.
References getNode(), llvm::SDNode::getNumValues(), llvm::SDUse::getResNo(), getRoot(), llvm::SDNode::use_iterator::getUse(), ReplaceAllUsesWith(), setRoot(), llvm::SDNode::use_begin(), and llvm::SDNode::use_end().
|
inline |
RepositionNode - Move node N in the AllNodes list to be immediately before the given iterator Position. This may be used to update the topological ordering when the list of nodes is modified.
Definition at line 982 of file SelectionDAG.h.
Referenced by insertDAGNode(), and InsertDAGNode().
SelectNodeTo - These are used for target selectors to mutate the specified node to have the specified return type, Target opcode, and operands. Note that target opcodes are stored as ~TargetOpcode in the node opcode field. The resultant node is returned.
SelectNodeTo - These are wrappers around MorphNodeTo that accept a machine opcode.
Definition at line 5189 of file SelectionDAG.cpp.
References getVTList().
Referenced by SelectNodeTo().
Definition at line 5195 of file SelectionDAG.cpp.
References getVTList(), and SelectNodeTo().
SDNode * SelectionDAG::SelectNodeTo | ( | SDNode * | N, |
unsigned | TargetOpc, | ||
EVT | VT, | ||
SDValue | Op1, | ||
SDValue | Op2 | ||
) |
Definition at line 5202 of file SelectionDAG.cpp.
References getVTList(), and SelectNodeTo().
SDNode * SelectionDAG::SelectNodeTo | ( | SDNode * | N, |
unsigned | TargetOpc, | ||
EVT | VT, | ||
SDValue | Op1, | ||
SDValue | Op2, | ||
SDValue | Op3 | ||
) |
Definition at line 5210 of file SelectionDAG.cpp.
References getVTList(), and SelectNodeTo().
SDNode * SelectionDAG::SelectNodeTo | ( | SDNode * | N, |
unsigned | TargetOpc, | ||
EVT | VT, | ||
const SDValue * | Ops, | ||
unsigned | NumOps | ||
) |
Definition at line 5218 of file SelectionDAG.cpp.
References getVTList(), and SelectNodeTo().
Definition at line 5232 of file SelectionDAG.cpp.
References getVTList(), and SelectNodeTo().
SDNode * SelectionDAG::SelectNodeTo | ( | SDNode * | N, |
unsigned | TargetOpc, | ||
EVT | VT1, | ||
EVT | VT2, | ||
const SDValue * | Ops, | ||
unsigned | NumOps | ||
) |
Definition at line 5225 of file SelectionDAG.cpp.
References getVTList(), and SelectNodeTo().
SDNode * SelectionDAG::SelectNodeTo | ( | SDNode * | N, |
unsigned | TargetOpc, | ||
EVT | VT1, | ||
EVT | VT2, | ||
EVT | VT3, | ||
const SDValue * | Ops, | ||
unsigned | NumOps | ||
) |
Definition at line 5238 of file SelectionDAG.cpp.
References getVTList(), and SelectNodeTo().
SDNode * SelectionDAG::SelectNodeTo | ( | SDNode * | N, |
unsigned | MachineOpc, | ||
EVT | VT1, | ||
EVT | VT2, | ||
EVT | VT3, | ||
EVT | VT4, | ||
const SDValue * | Ops, | ||
unsigned | NumOps | ||
) |
Definition at line 5245 of file SelectionDAG.cpp.
References getVTList(), and SelectNodeTo().
SDNode * SelectionDAG::SelectNodeTo | ( | SDNode * | N, |
unsigned | TargetOpc, | ||
EVT | VT1, | ||
EVT | VT2, | ||
SDValue | Op1 | ||
) |
Definition at line 5252 of file SelectionDAG.cpp.
References getVTList(), and SelectNodeTo().
SDNode * SelectionDAG::SelectNodeTo | ( | SDNode * | N, |
unsigned | TargetOpc, | ||
EVT | VT1, | ||
EVT | VT2, | ||
SDValue | Op1, | ||
SDValue | Op2 | ||
) |
Definition at line 5260 of file SelectionDAG.cpp.
References getVTList(), and SelectNodeTo().
SDNode * SelectionDAG::SelectNodeTo | ( | SDNode * | N, |
unsigned | TargetOpc, | ||
EVT | VT1, | ||
EVT | VT2, | ||
SDValue | Op1, | ||
SDValue | Op2, | ||
SDValue | Op3 | ||
) |
Definition at line 5268 of file SelectionDAG.cpp.
References getVTList(), and SelectNodeTo().
SDNode * SelectionDAG::SelectNodeTo | ( | SDNode * | N, |
unsigned | TargetOpc, | ||
EVT | VT1, | ||
EVT | VT2, | ||
EVT | VT3, | ||
SDValue | Op1, | ||
SDValue | Op2, | ||
SDValue | Op3 | ||
) |
Definition at line 5277 of file SelectionDAG.cpp.
References getVTList(), and SelectNodeTo().
SDNode * SelectionDAG::SelectNodeTo | ( | SDNode * | N, |
unsigned | TargetOpc, | ||
SDVTList | VTs, | ||
const SDValue * | Ops, | ||
unsigned | NumOps | ||
) |
Definition at line 5286 of file SelectionDAG.cpp.
References MorphNodeTo(), N, and llvm::SDNode::setNodeId().
void SelectionDAG::setGraphAttrs | ( | const SDNode * | N, |
const char * | Attrs | ||
) |
setGraphAttrs - Set graph attributes for a node. (eg. "color=red".)
Definition at line 176 of file SelectionDAGPrinter.cpp.
References llvm::errs(), N, and NodeGraphAttrs.
void SelectionDAG::setGraphColor | ( | const SDNode * | N, |
const char * | Color | ||
) |
setGraphColor - Convenience for setting node color attribute.
Definition at line 206 of file SelectionDAGPrinter.cpp.
References llvm::errs(), N, and NodeGraphAttrs.
setRoot - Set the current root tag of the SelectionDAG.
Definition at line 338 of file SelectionDAG.h.
References llvm::checkForCycles(), llvm::SDValue::getNode(), llvm::SDValue::getValueType(), N, and llvm::MVT::Other.
Referenced by llvm::SelectionDAGBuilder::getControlRoot(), llvm::SelectionDAGBuilder::getRoot(), llvm::SelectionDAGBuilder::LowerCallTo(), llvm::TargetLowering::LowerCallTo(), llvm::NVPTXTargetLowering::LowerFormalArguments(), RemoveDeadNodes(), ReplaceAllUsesOfValueWith(), ReplaceAllUsesWith(), llvm::DAGTypeLegalizer::run(), llvm::SelectionDAGBuilder::visitBitTestCase(), llvm::SelectionDAGBuilder::visitBitTestHeader(), llvm::SelectionDAGBuilder::visitJumpTable(), llvm::SelectionDAGBuilder::visitJumpTableHeader(), llvm::SelectionDAGBuilder::visitSPDescriptorFailure(), llvm::SelectionDAGBuilder::visitSPDescriptorParent(), and llvm::SelectionDAGBuilder::visitSwitchCase().
void SelectionDAG::setSubgraphColor | ( | SDNode * | N, |
const char * | Color | ||
) |
setGraphColor - Convenience for setting subgraph color attribute.
setSubgraphColor - Convenience for setting subgraph color attribute.
Definition at line 250 of file SelectionDAGPrinter.cpp.
References llvm::errs(), and llvm::LibFunc::strcmp.
SignBitIsZero - Return true if the sign bit of Op is known to be zero. We use this predicate to simplify operations downstream.
Definition at line 1735 of file SelectionDAG.cpp.
References llvm::EVT::getScalarType(), llvm::APInt::getSignBit(), llvm::EVT::getSizeInBits(), llvm::SDValue::getValueType(), llvm::EVT::isVector(), and MaskedValueIsZero().
Referenced by llvm::X86TargetLowering::BuildFILD(), and emitCmp().
std::pair< SDValue, SDValue > SelectionDAG::SplitVector | ( | const SDValue & | N, |
const SDLoc & | DL, | ||
const EVT & | LoVT, | ||
const EVT & | HiVT | ||
) |
SplitVector - Split the vector with EXTRACT_SUBVECTOR using the provides VTs and return the low/high part.
SplitVector - Split the vector with EXTRACT_SUBVECTOR and return the low/high part.
Definition at line 6430 of file SelectionDAG.cpp.
References llvm::ISD::EXTRACT_SUBVECTOR, getConstant(), getNode(), llvm::SDValue::getValueType(), llvm::TargetLoweringBase::getVectorIdxTy(), llvm::EVT::getVectorNumElements(), llvm::HexagonISD::Hi, and llvm::HexagonISD::Lo.
Referenced by SplitVector(), and SplitVectorOperand().
|
inline |
SplitVector - Split the vector with EXTRACT_SUBVECTOR and return the low/high part.
Definition at line 1144 of file SelectionDAG.h.
References GetSplitDestVTs(), llvm::SDValue::getValueType(), SplitVector(), and llvm::tie().
|
inline |
SplitVectorOperand - Split the node's operand with EXTRACT_SUBVECTOR and return the low/high part.
Definition at line 1152 of file SelectionDAG.h.
References llvm::SDNode::getOperand(), and SplitVector().
Referenced by SplitVSETCC().
TransferDbgValues - Transfer SDDbgValues.
Definition at line 6016 of file SelectionDAG.cpp.
References AddDbgValue(), llvm::ArrayRef< T >::begin(), llvm::SmallVectorTemplateCommon< T >::begin(), llvm::ArrayRef< T >::end(), llvm::SmallVectorTemplateCommon< T >::end(), getDbgValue(), GetDbgValues(), llvm::SDDbgValue::getDebugLoc(), llvm::SDNode::getHasDebugValue(), llvm::SDDbgValue::getKind(), llvm::SDDbgValue::getMDPtr(), llvm::SDValue::getNode(), llvm::SDDbgValue::getOffset(), llvm::SDDbgValue::getOrder(), llvm::SDValue::getResNo(), I, llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), and llvm::SDDbgValue::SDNODE.
UnrollVectorOp - Utility function used by legalize and lowering to "unroll" a vector operation by splitting out the scalars and operating on each element individually. If the ResNE is 0, fully unroll the vector op. If ResNE is less than the width of the vector op, unroll up to ResNE. If the ResNE is greater than the width of the vector op, unroll the vector op and fill the end of the resulting vector with UNDEFS.
Definition at line 6253 of file SelectionDAG.cpp.
References llvm::ISD::BUILD_VECTOR, llvm::ISD::EXTRACT_VECTOR_ELT, llvm::ISD::FP_ROUND_INREG, getConstant(), getContext(), getNode(), llvm::SDNode::getNumOperands(), llvm::SDNode::getNumValues(), llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), getShiftAmountOperand(), llvm::TargetMachine::getTargetLowering(), getUNDEF(), llvm::SDValue::getValueType(), getValueType(), llvm::SDNode::getValueType(), llvm::EVT::getVectorElementType(), llvm::TargetLoweringBase::getVectorIdxTy(), llvm::EVT::getVectorVT(), llvm::EVT::isVector(), llvm::A64CC::NE, llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::ISD::ROTL, llvm::ISD::ROTR, llvm::ISD::SELECT, llvm::ISD::SHL, llvm::ISD::SIGN_EXTEND_INREG, llvm::SmallVectorTemplateCommon< T >::size(), llvm::ISD::SRA, llvm::ISD::SRL, and llvm::ISD::VSELECT.
Referenced by LowerVectorFP_TO_INT(), and LowerVectorINT_TO_FP().
UpdateNodeOperands - Mutate the specified node in-place to have the specified operands. If the resultant node already exists in the DAG, this does not modify the specified node, instead it returns the node that already exists. If the resultant node does not exist in the DAG, the input node is returned. As a degenerate case, if you specify the same input operands as the node already has, the input node is returned.
Definition at line 5066 of file SelectionDAG.cpp.
References llvm::SDNode::getNumOperands(), llvm::SDNode::getOperand(), and N.
Referenced by EltsFromConsecutiveLoads(), MoveBelowOrigChain(), llvm::PPCTargetLowering::PerformDAGCombine(), PerformShuffleCombine256(), and UpdateNodeOperands().
Definition at line 5090 of file SelectionDAG.cpp.
References llvm::SDNode::getNumOperands(), llvm::SDNode::getOperand(), and N.
Definition at line 5119 of file SelectionDAG.cpp.
References UpdateNodeOperands().
SDNode * SelectionDAG::UpdateNodeOperands | ( | SDNode * | N, |
SDValue | Op1, | ||
SDValue | Op2, | ||
SDValue | Op3, | ||
SDValue | Op4 | ||
) |
Definition at line 5125 of file SelectionDAG.cpp.
References UpdateNodeOperands().
SDNode * SelectionDAG::UpdateNodeOperands | ( | SDNode * | N, |
SDValue | Op1, | ||
SDValue | Op2, | ||
SDValue | Op3, | ||
SDValue | Op4, | ||
SDValue | Op5 | ||
) |
Definition at line 5132 of file SelectionDAG.cpp.
References UpdateNodeOperands().
Definition at line 5139 of file SelectionDAG.cpp.
References llvm::SDNode::getNumOperands(), llvm::SDNode::getOperand(), and N.
void SelectionDAG::viewGraph | ( | const std::string & | Title | ) |
viewGraph - Pop up a GraphViz/gv window with the DAG rendered using 'dot'.
viewGraph - Pop up a ghostview window with the reachable parts of the DAG rendered using 'dot'.
Definition at line 145 of file SelectionDAGPrinter.cpp.
References llvm::errs(), getMachineFunction(), llvm::Intrinsic::getName(), and llvm::ViewGraph().
void SelectionDAG::viewGraph | ( | ) |
Definition at line 158 of file SelectionDAGPrinter.cpp.
|
friend |
DAGUpdateListener is a friend so it can manipulate the listener stack.
Definition at line 249 of file SelectionDAG.h.
bool llvm::SelectionDAG::NewNodesMustHaveLegalTypes |
NewNodesMustHaveLegalTypes - When true, additional steps are taken to ensure that getConstant() and similar functions return DAG nodes that have legal types. This is important after type legalization since any illegally typed nodes generated after this point will not experience type legalization.
Definition at line 245 of file SelectionDAG.h.
Referenced by getConstant().
std::map<const SDNode *, std::string> llvm::SelectionDAG::NodeGraphAttrs |
Definition at line 293 of file SelectionDAG.h.
Referenced by clearGraphAttrs(), getGraphAttrs(), setGraphAttrs(), and setGraphColor().