LLVM API Documentation
#include <SelectionDAG.h>
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 314 of file SelectionDAG.h.
typedef ilist<SDNode>::iterator llvm::SelectionDAG::allnodes_iterator |
Definition at line 317 of file SelectionDAG.h.
SelectionDAG::SelectionDAG | ( | const TargetMachine & | TM, |
llvm::CodeGenOpt::Level | OL | ||
) | [explicit] |
Definition at line 909 of file SelectionDAG.cpp.
References llvm::ilist< NodeTy >::push_back().
Definition at line 925 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 6174 of file SelectionDAG.cpp.
References llvm::SDDbgInfo::add(), and llvm::SDNode::setHasDebugValue().
Referenced by llvm::SelectionDAGBuilder::resolveDanglingDebugInfo(), and TransferDbgValues().
allnodes_const_iterator llvm::SelectionDAG::allnodes_begin | ( | ) | const [inline] |
Definition at line 315 of file SelectionDAG.h.
References llvm::iplist< NodeTy, Traits >::begin().
Referenced by AssignTopologicalOrder(), dump(), Legalize(), llvm::GraphTraits< SelectionDAG * >::nodes_begin(), RemoveDeadNodes(), and llvm::DAGTypeLegalizer::run().
allnodes_iterator llvm::SelectionDAG::allnodes_begin | ( | ) | [inline] |
Definition at line 318 of file SelectionDAG.h.
References llvm::iplist< NodeTy, Traits >::begin().
allnodes_const_iterator llvm::SelectionDAG::allnodes_end | ( | ) | const [inline] |
Definition at line 316 of file SelectionDAG.h.
References llvm::iplist< NodeTy, Traits >::end().
Referenced by AssignTopologicalOrder(), dump(), Legalize(), llvm::GraphTraits< SelectionDAG * >::nodes_end(), RemoveDeadNodes(), and llvm::DAGTypeLegalizer::run().
allnodes_iterator llvm::SelectionDAG::allnodes_end | ( | ) | [inline] |
Definition at line 319 of file SelectionDAG.h.
References llvm::iplist< NodeTy, Traits >::end().
ilist<SDNode>::size_type llvm::SelectionDAG::allnodes_size | ( | ) | const [inline] |
Definition at line 320 of file SelectionDAG.h.
References llvm::iplist< NodeTy, Traits >::size().
Referenced by 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 6085 of file SelectionDAG.cpp.
References allnodes_begin(), allnodes_end(), allnodes_size(), llvm::iplist< NodeTy, Traits >::back(), llvm::checkForCycles(), llvm::dbgs(), llvm::SDNode::dumprFull(), llvm::iplist< NodeTy, Traits >::end(), llvm::ISD::EntryToken, llvm::iplist< NodeTy, Traits >::front(), llvm::SDNode::getNodeId(), llvm::SDNode::getNumOperands(), llvm::SDNode::getOpcode(), I, llvm::ilist< NodeTy >::insert(), llvm_unreachable, P, llvm::iplist< NodeTy, Traits >::remove(), llvm::SDNode::setNodeId(), llvm::SDNode::use_begin(), llvm::SDNode::use_empty(), and llvm::SDNode::use_end().
Referenced by Legalize().
Definition at line 1104 of file SelectionDAG.h.
References llvm::SDDbgInfo::ByvalParmDbgBegin().
Referenced by llvm::ScheduleDAGSDNodes::EmitSchedule().
Definition at line 1107 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 957 of file SelectionDAG.cpp.
References llvm::SDDbgInfo::clear(), llvm::FoldingSetImpl::clear(), llvm::StringMap< ValueTy, AllocatorTy >::clear(), getEntryNode(), llvm::ilist< NodeTy >::push_back(), and llvm::BumpPtrAllocatorImpl< AllocatorT, SlabSize, SizeThreshold >::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 165 of file SelectionDAGPrinter.cpp.
References llvm::errs(), and NodeGraphAttrs.
void SelectionDAG::Combine | ( | CombineLevel | Level, |
AliasAnalysis & | AA, | ||
CodeGenOpt::Level | OptLevel | ||
) |
This is the entry point for the file.
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.
This is the main entry point to this class.
Definition at line 11981 of file DAGCombiner.cpp.
void SelectionDAG::computeKnownBits | ( | SDValue | Op, |
APInt & | KnownZero, | ||
APInt & | KnownOne, | ||
unsigned | Depth = 0 |
||
) | const |
Determine which bits of Op are known to be either zero or one and return them in the KnownZero/KnownOne bitsets. Targets can implement the computeKnownBitsForTargetNode method in the TargetLowering class to allow target nodes to be understood.
Determine which bits of Op are known to be either zero or one and return them in the KnownZero/KnownOne bitsets.
Definition at line 1930 of file SelectionDAG.cpp.
References llvm::APInt::abs(), llvm::ISD::ADD, 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::computeKnownBitsForTargetNode(), llvm::computeKnownBitsFromRangeMetadata(), 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::getSubtargetImpl(), llvm::TargetSubtargetInfo::getTargetLowering(), llvm::SDValue::getValueType(), InferPtrAlignment(), llvm::ISD::INTRINSIC_VOID, llvm::ISD::INTRINSIC_W_CHAIN, llvm::ISD::INTRINSIC_WO_CHAIN, llvm::APInt::isPowerOf2(), llvm::EVT::isVector(), llvm::ISD::isZEXTLoad(), llvm::AArch64DB::LD, llvm::ISD::LOAD, llvm::Log2_32(), llvm::APInt::lshr(), llvm::ISD::MUL, llvm::ISD::OR, Ranges, 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::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(), computeKnownBitsForMinMax(), llvm::SparcTargetLowering::computeKnownBitsForTargetNode(), llvm::AArch64TargetLowering::computeKnownBitsForTargetNode(), llvm::ARMTargetLowering::computeKnownBitsForTargetNode(), ComputeNumSignBits(), FoldMaskAndShiftToScale(), InferPtrAlignment(), isBitfieldInsertOpFromOr(), isBitfieldPositioningOp(), isTruncateOf(), isU24(), isWordAligned(), MaskedValueIsZero(), llvm::ARMTargetLowering::PerformCMOVCombine(), llvm::PPCTargetLowering::SelectAddressRegImm(), llvm::PPCTargetLowering::SelectAddressRegReg(), llvm::TargetLowering::SimplifyDemandedBits(), and ValueHasExactlyOneBitSet().
unsigned SelectionDAG::ComputeNumSignBits | ( | SDValue | Op, |
unsigned | Depth = 0 |
||
) | const |
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 2367 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, computeKnownBits(), 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::getSubtargetImpl(), llvm::TargetSubtargetInfo::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::AArch64DB::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.
Referenced by llvm::AMDGPUTargetLowering::ComputeNumSignBitsForTargetNode(), llvm::TargetLowering::expandMUL(), isI24(), llvm::AMDGPUTargetLowering::LowerSDIVREM(), and llvm::AMDGPUTargetLowering::PerformDAGCombine().
SDValue SelectionDAG::CreateStackTemporary | ( | EVT | VT, |
unsigned | minAlign = 1 |
||
) |
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 1768 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::getSubtargetImpl(), llvm::TargetSubtargetInfo::getTargetLowering(), and llvm::EVT::getTypeForEVT().
Referenced by ExpandUnalignedLoad(), ExpandUnalignedStore(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), and PerformEXTRACT_VECTOR_ELTCombine().
SDValue SelectionDAG::CreateStackTemporary | ( | EVT | VT1, |
EVT | VT2 | ||
) |
CreateStackTemporary - Create a stack temporary suitable for holding either of the specified value types.
Definition at line 1782 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::getSubtargetImpl(), llvm::TargetSubtargetInfo::getTargetLowering(), and llvm::EVT::getTypeForEVT().
SDDbgInfo::DbgIterator llvm::SelectionDAG::DbgBegin | ( | ) | [inline] |
Definition at line 1102 of file SelectionDAG.h.
References llvm::SDDbgInfo::DbgBegin().
Referenced by llvm::ScheduleDAGSDNodes::EmitSchedule().
SDDbgInfo::DbgIterator llvm::SelectionDAG::DbgEnd | ( | ) | [inline] |
Definition at line 1103 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 671 of file SelectionDAG.cpp.
Referenced by Legalize().
void SelectionDAG::dump | ( | ) | const |
Definition at line 548 of file SelectionDAGDumper.cpp.
References allnodes_begin(), allnodes_end(), llvm::dbgs(), DumpNodes(), llvm::SDValue::getNode(), getRoot(), llvm::SDNode::hasOneUse(), I, N, and llvm::iplist< NodeTy, Traits >::size().
static const fltSemantics& llvm::SelectionDAG::EVTToAPFloatSemantics | ( | EVT | VT | ) | [inline, static] |
Returns an APFloat semantics tag appropriate for the given type. If VT is a vector type, the element semantics are returned.
Definition at line 1074 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().
void SelectionDAG::ExtractVectorElements | ( | SDValue | Op, |
SmallVectorImpl< SDValue > & | Args, | ||
unsigned | Start = 0 , |
||
unsigned | Count = 0 |
||
) |
ExtractVectorElements - Append the extracted elements from Start to Count out of the vector Op in Args. If Count is 0, all of the elements will be extracted.
Definition at line 6608 of file SelectionDAG.cpp.
References llvm::ISD::EXTRACT_VECTOR_ELT, getConstant(), getNode(), llvm::SDValue::getValueType(), llvm::EVT::getVectorElementType(), llvm::TargetLoweringBase::getVectorIdxTy(), llvm::EVT::getVectorNumElements(), and llvm::SmallVectorTemplateBase< T, isPodLike >::push_back().
SDValue SelectionDAG::FoldConstantArithmetic | ( | unsigned | Opcode, |
EVT | VT, | ||
SDNode * | Cst1, | ||
SDNode * | Cst2 | ||
) |
FoldConstantArithmetic -.
Definition at line 2968 of file SelectionDAG.cpp.
References llvm::ISD::ADD, llvm::ISD::AND, llvm::APInt::ashr(), llvm::SmallVectorTemplateCommon< T >::back(), llvm::ISD::BUILD_VECTOR, llvm::ISD::BUILTIN_OP_END, llvm::dyn_cast(), getConstant(), getNode(), llvm::SDNode::getNumOperands(), llvm::SDNode::getOperand(), llvm::EVT::getScalarType(), llvm::SDNode::getValueType(), llvm::EVT::getVectorNumElements(), I, llvm::ConstantSDNode::isOpaque(), llvm::EVT::isVector(), llvm::APInt::lshr(), llvm::ISD::MUL, llvm::ISD::OR, llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::SmallVectorImpl< T >::resize(), 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().
SDValue SelectionDAG::FoldSetCC | ( | EVT | VT, |
SDValue | N1, | ||
SDValue | N2, | ||
ISD::CondCode | Cond, | ||
SDLoc | dl | ||
) |
FoldSetCC - Constant fold a setcc to true or false.
Definition at line 1797 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::getSubtargetImpl(), llvm::TargetSubtargetInfo::getTargetLowering(), getUNDEF(), llvm::SDValue::getValueType(), llvm::SDNode::getValueType(), llvm::TargetLoweringBase::isCondCodeLegal(), llvm::EVT::isInteger(), 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 1734 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::ISD::ADDRSPACECAST, llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), getVTList(), and llvm::FoldingSetImpl::InsertNode().
SDValue SelectionDAG::getAnyExtendVectorInReg | ( | SDValue | Op, |
SDLoc | DL, | ||
EVT | VT | ||
) |
getAnyExtendVectorInReg - Return an operation which will any-extend the low lanes of the operand into the specified vector type. For example, this can convert a v16i8 into a v4i32 by any-extending the low four lanes of the operand from i8 to i32.
Definition at line 1015 of file SelectionDAG.cpp.
References llvm::ISD::ANY_EXTEND_VECTOR_INREG, getNode(), llvm::EVT::getSizeInBits(), llvm::SDValue::getValueType(), llvm::EVT::getVectorNumElements(), and llvm::EVT::isVector().
SDValue SelectionDAG::getAnyExtOrTrunc | ( | SDValue | Op, |
SDLoc | DL, | ||
EVT | VT | ||
) |
getAnyExtOrTrunc - Convert Op, which must be of integer type, to the integer type VT, by either any-extending or truncating it.
Definition at line 976 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 | 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 4471 of file SelectionDAG.cpp.
References llvm::ISD::ATOMIC_LOAD, llvm::ISD::ATOMIC_STORE, getEVTAlignment(), getMachineFunction(), llvm::MachineFunction::getMachineMemOperand(), llvm::EVT::getStoreSize(), llvm::MachineMemOperand::MOLoad, llvm::MachineMemOperand::MOStore, and llvm::MachineMemOperand::MOVolatile.
Referenced by getAtomic(), getAtomicCmpSwap(), LowerATOMIC_STORE(), and LowerLOAD_SUB().
SDValue SelectionDAG::getAtomic | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | MemVT, | ||
SDValue | Chain, | ||
SDValue | Ptr, | ||
SDValue | Val, | ||
MachineMemOperand * | MMO, | ||
AtomicOrdering | Ordering, | ||
SynchronizationScope | SynchScope | ||
) |
Definition at line 4502 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, | ||
MachineMemOperand * | MMO, | ||
AtomicOrdering | Ordering, | ||
SynchronizationScope | SynchScope | ||
) |
getAtomic - Gets a node for an atomic op, produces result and chain and takes 1 operand.
Definition at line 4530 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, | ||
ArrayRef< SDValue > | Ops, | ||
MachineMemOperand * | MMO, | ||
AtomicOrdering | SuccessOrdering, | ||
AtomicOrdering | FailureOrdering, | ||
SynchronizationScope | SynchScope | ||
) |
getAtomic - Gets a node for an atomic op, produces result and chain and takes N operands.
Definition at line 4384 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::BumpPtrAllocatorImpl< AllocatorT, SlabSize, SizeThreshold >::Allocate(), llvm::ArrayRef< T >::data(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::MachinePointerInfo::getAddrSpace(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), llvm::MachineMemOperand::getPointerInfo(), llvm::EVT::getRawBits(), llvm::FoldingSetImpl::InsertNode(), and llvm::ArrayRef< T >::size().
SDValue SelectionDAG::getAtomic | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | MemVT, | ||
SDVTList | VTList, | ||
ArrayRef< SDValue > | Ops, | ||
MachineMemOperand * | MMO, | ||
AtomicOrdering | Ordering, | ||
SynchronizationScope | SynchScope | ||
) |
Definition at line 4419 of file SelectionDAG.cpp.
References getAtomic().
SDValue SelectionDAG::getAtomicCmpSwap | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | MemVT, | ||
SDVTList | VTs, | ||
SDValue | Chain, | ||
SDValue | Ptr, | ||
SDValue | Cmp, | ||
SDValue | Swp, | ||
MachinePointerInfo | PtrInfo, | ||
unsigned | Alignment, | ||
AtomicOrdering | SuccessOrdering, | ||
AtomicOrdering | FailureOrdering, | ||
SynchronizationScope | SynchScope | ||
) |
getAtomicCmpSwap - Gets a node for an atomic cmpxchg op. There are two valid Opcodes. ISD::ATOMIC_CMO_SWAP produces the value loaded and a chain result. ISD::ATOMIC_CMP_SWAP_WITH_SUCCESS produces the value loaded, a success flag (initially i1), and a chain.
Definition at line 4428 of file SelectionDAG.cpp.
References llvm::ISD::ATOMIC_CMP_SWAP, llvm::ISD::ATOMIC_CMP_SWAP_WITH_SUCCESS, getEVTAlignment(), getMachineFunction(), llvm::MachineFunction::getMachineMemOperand(), llvm::EVT::getStoreSize(), llvm::SDValue::getValueType(), llvm::MachineMemOperand::MOLoad, llvm::MachineMemOperand::MOStore, and llvm::MachineMemOperand::MOVolatile.
Referenced by ReplaceATOMIC_LOAD().
SDValue SelectionDAG::getAtomicCmpSwap | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | MemVT, | ||
SDVTList | VTs, | ||
SDValue | Chain, | ||
SDValue | Ptr, | ||
SDValue | Cmp, | ||
SDValue | Swp, | ||
MachineMemOperand * | MMO, | ||
AtomicOrdering | SuccessOrdering, | ||
AtomicOrdering | FailureOrdering, | ||
SynchronizationScope | SynchScope | ||
) |
Definition at line 4455 of file SelectionDAG.cpp.
References llvm::ISD::ATOMIC_CMP_SWAP, llvm::ISD::ATOMIC_CMP_SWAP_WITH_SUCCESS, getAtomic(), and llvm::SDValue::getValueType().
Definition at line 1390 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::FoldingSetNodeID::AddPointer(), llvm::ISD::BasicBlock, llvm::FoldingSet< T >::FindNodeOrInsertPos(), getVTList(), llvm::FoldingSetImpl::InsertNode(), llvm::None, 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 1677 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::FoldingSetNodeID::AddPointer(), llvm::ISD::BlockAddress, llvm::FoldingSet< T >::FindNodeOrInsertPos(), getVTList(), llvm::FoldingSetImpl::InsertNode(), llvm::None, and llvm::ISD::TargetBlockAddress.
Referenced by getTargetBlockAddress(), and llvm::SelectionDAGBuilder::getValueImpl().
getBoolExtOrTrunc - Convert Op, which must be of integer type, to the integer type VT, by using an extension appropriate for the target's BooleanContent for type OpVT or truncating it.
Definition at line 994 of file SelectionDAG.cpp.
References llvm::EVT::bitsLE(), llvm::TargetLoweringBase::getBooleanContents(), llvm::TargetLoweringBase::getExtendForContent(), getNode(), llvm::SDValue::getValueType(), and llvm::ISD::TRUNCATE.
Referenced by llvm::TargetLowering::SimplifySetCC().
SDValue llvm::SelectionDAG::getCALLSEQ_END | ( | SDValue | Chain, |
SDValue | Op1, | ||
SDValue | Op2, | ||
SDValue | InGlue, | ||
SDLoc | DL | ||
) | [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 636 of file SelectionDAG.h.
References llvm::ISD::CALLSEQ_END, llvm::SDValue::getNode(), getNode(), getVTList(), llvm::MVT::Glue, llvm::MVT::Other, and llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back().
Referenced by llvm::HexagonTargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::NVPTXTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::SparcTargetLowering::LowerGlobalTLSAddress(), and PrepareTailCall().
SDValue llvm::SelectionDAG::getCALLSEQ_START | ( | SDValue | Chain, |
SDValue | Op, | ||
SDLoc | DL | ||
) | [inline] |
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 627 of file SelectionDAG.h.
References llvm::ISD::CALLSEQ_START, getNode(), getVTList(), llvm::MVT::Glue, and llvm::MVT::Other.
Referenced by llvm::HexagonTargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::NVPTXTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), and llvm::SparcTargetLowering::LowerGlobalTLSAddress().
Returns an ISD::VECTOR_SHUFFLE node semantically equivalent to the shuffle node in input but with swapped operands.
Example: shuffle A, B, <0,5,2,7> -> shuffle B, A, <4,1,6,3>
Definition at line 1586 of file SelectionDAG.cpp.
References llvm::ShuffleVectorSDNode::getMaskElt(), llvm::SDNode::getOperand(), llvm::SDNode::getSimpleValueType(), llvm::MVT::getVectorNumElements(), getVectorShuffle(), and llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back().
Referenced by lowerVectorShuffle().
Definition at line 1437 of file SelectionDAG.cpp.
Referenced by getSelectCC(), getSetCC(), and llvm::TargetLowering::softenSetCCOperands().
SDValue SelectionDAG::getConstant | ( | uint64_t | Val, |
EVT | VT, | ||
bool | isTarget = false , |
||
bool | isOpaque = false |
||
) |
Definition at line 1070 of file SelectionDAG.cpp.
References llvm::EVT::getScalarType(), and llvm::EVT::getSizeInBits().
Referenced by AddCombineToVPADDL(), addIPMSequence(), adjustForSubtraction(), adjustForTestUnderMask(), adjustICmpTruncate(), adjustSubwordCmp(), adjustZeroCmp(), bitcastf32Toi32(), llvm::TargetLowering::BuildExactSDIV(), BuildIntrinsicOp(), buildRSRC(), llvm::TargetLowering::BuildSDIV(), BuildSplatI(), llvm::TargetLowering::BuildUDIV(), BuildVectorFromScalar(), ChangeVSETULTtoVSETULE(), CMPEQCombine(), combineX86ShuffleChain(), constantFoldBFE(), CreateCopyOfByValArgument(), createFPCmp(), createLoadLR(), createStoreLR(), emitCLC(), EmitCMP(), emitCmp(), emitMemMem(), emitSETCC(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForMemchr(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForMemset(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrcmp(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrcpy(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrlen(), Expand64BitShift(), ExpandBITCAST(), expandExp(), expandExp2(), expandf64Toi32(), llvm::TargetLowering::expandFP_TO_SINT(), llvm::TargetLowering::expandMUL(), expandPow(), ExpandUnalignedLoad(), ExpandUnalignedStore(), ExtractVectorElements(), FoldConstantArithmetic(), FoldMaskAndShiftToExtract(), FoldMaskAndShiftToScale(), FoldMaskedShiftToScaledMask(), FoldSetCC(), genConstMult(), GeneratePerfectShuffle(), GenerateTBL(), getAArch64Cmp(), getAArch64XALUOOp(), getAbsolute(), getARMIndexedAddressParts(), getBoundedStrlen(), getBuildVectorSplat(), getConstant(), getCopyFromParts(), getCopyFromPartsVector(), getCopyToPartsVector(), GetExponent(), getINSERTPS(), getIntPtrConstant(), getLogicalNOT(), getMemBasePlusOffset(), getMemsetStringVal(), getMemsetValue(), getNode(), getNOT(), getPSHUFB(), getReadPerformanceCounter(), getReadTimeStampCounter(), GetSignificand(), getT2IndexedAddressParts(), getTargetConstant(), getTargetShuffleNode(), getTargetVShiftByConstNode(), getTargetVShiftNode(), getV4X86ShuffleImm8ForMask(), llvm::SelectionDAGBuilder::getValueImpl(), getVShift(), getZeroExtendInReg(), initAccumulator(), InsertFenceForAtomic(), isBLACompatibleAddress(), isConditionalZeroOrAllOnes(), IsSingleInstrConstant(), LowerADDC_ADDE_SUBC_SUBE(), LowerAsSplatVectorLoad(), LowerATOMIC_FENCE(), LowerBR_CC(), llvm::HexagonTargetLowering::LowerBR_JT(), LowerBuildVectorv16i8(), llvm::HexagonTargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::NVPTXTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), LowerCallResult(), llvm::TargetLowering::LowerCallTo(), LowerCMP_SWAP(), LowerCTLZ(), LowerCTLZ_ZERO_UNDEF(), LowerCTTZ(), llvm::AMDGPUTargetLowering::LowerDIVREM24(), llvm::HexagonTargetLowering::LowerDYNAMIC_STACKALLOC(), LowerDYNAMIC_STACKALLOC(), LowerExtendedLoad(), LowerF128Load(), LowerF128Store(), LowerFCOPYSIGN(), lowerFCOPYSIGN32(), lowerFCOPYSIGN64(), LowerFGETSIGN(), llvm::R600TargetLowering::LowerFormalArguments(), llvm::NVPTXTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::SparcTargetLowering::LowerFormalArguments_64(), llvm::AMDGPUTargetLowering::LowerGlobalAddress(), lowerIntegerElementInsertionVectorShuffle(), LowerInterruptReturn(), LowerINTRINSIC_W_CHAIN(), LowerINTRINSIC_WO_CHAIN(), llvm::AMDGPUTargetLowering::LowerIntrinsicIABS(), LowerIntVSETCC_AVX512(), LowerLabelRef(), llvm::AMDGPUTargetLowering::LowerLOAD(), llvm::MipsTargetLowering::lowerLOAD(), LowerLOAD_SUB(), LowerMemOpCallTo(), lowerMSABinaryBitImmIntr(), lowerMSABitClear(), lowerMSABitClearImm(), lowerMSASplatImm(), lowerMSASplatZExt(), LowerMUL_LOHI(), lowerMUL_LOHI32(), llvm::R600TargetLowering::LowerOperation(), LowerPREFETCH(), llvm::NVPTXTargetLowering::LowerReturn(), llvm::SparcTargetLowering::LowerReturn_32(), llvm::SparcTargetLowering::LowerReturn_64(), llvm::MSP430TargetLowering::LowerRETURNADDR(), llvm::HexagonTargetLowering::LowerRETURNADDR(), LowerReverse_VECTOR_SHUFFLEv16i8_v8i16(), LowerScalarImmediateShift(), LowerSDIV_v4i16(), LowerSDIV_v4i8(), llvm::AMDGPUTargetLowering::LowerSDIVREM(), LowerSELECT_CC(), llvm::MSP430TargetLowering::LowerSETCC(), LowerShift(), LowerShiftParts(), llvm::AMDGPUTargetLowering::LowerSTORE(), LowerUDIV(), LowerUMULO_SMULO(), lowerV16I8VectorShuffle(), lowerV2F64VectorShuffle(), lowerV4F32VectorShuffle(), lowerV4F64VectorShuffle(), LowerVECTOR_SHUFFLE(), lowerVECTOR_SHUFFLE_SHF(), LowerVECTOR_SHUFFLEtoBlend(), LowerVECTOR_SHUFFLEv16i8(), LowerVECTOR_SHUFFLEv8i8(), lowerVectorShuffleAsBlend(), lowerVectorShuffleAsByteRotate(), LowerVSELECTtoBlend(), LowerVSETCC(), LowerXALUO(), LowerXOR(), llvm::SparcTargetLowering::makeAddress(), MaterializeSETB(), memsetStore(), NarrowVectorLoadToElement(), NormalizeBuildVector(), OptimizeConditionalInDecrement(), PerformADCCombine(), performANDCombine(), PerformAndCombine(), PerformARMBUILD_VECTORCombine(), performBitcastCombine(), PerformBrCondCombine(), PerformCMOVCombine(), performConcatVectorsCombine(), llvm::R600TargetLowering::PerformDAGCombine(), llvm::SITargetLowering::PerformDAGCombine(), llvm::AMDGPUTargetLowering::PerformDAGCombine(), llvm::SystemZTargetLowering::PerformDAGCombine(), llvm::PPCTargetLowering::PerformDAGCombine(), performDSPShiftCombine(), PerformEXTRACT_VECTOR_ELTCombine(), performIntegerAbsCombine(), PerformINTRINSIC_WO_CHAINCombine(), PerformIntrinsicCombine(), PerformISDSETCCCombine(), PerformLOADCombine(), performMulCombine(), PerformMULCombine(), PerformMulCombine(), performORCombine(), PerformORCombine(), PerformSELECTCombine(), performSetccAddFolding(), PerformSETCCCombine(), PerformShiftCombine(), PerformSHLCombine(), performSTORECombine(), PerformSTORECombine(), PerformSubCombine(), PerformVCVTCombine(), PerformVDIVCombine(), PerformZExtCombine(), PrepareCall(), llvm::AArch64TargetLowering::ReconstructShuffle(), ReplaceATOMIC_LOAD(), llvm::R600TargetLowering::ReplaceNodeResults(), ReplaceREADCYCLECOUNTER(), replaceSplatVectorStore(), llvm::AMDGPUTargetLowering::ScalarizeVectorLoad(), llvm::AMDGPUTargetLowering::ScalarizeVectorStore(), llvm::SelectionDAGISel::SelectCodeCommon(), ShrinkLoadReplaceStoreWithStore(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::TargetLowering::SimplifySetCC(), SkipExtensionForVMULL(), llvm::TargetLowering::softenSetCCOperands(), SplitVector(), llvm::AMDGPUTargetLowering::SplitVectorLoad(), llvm::AMDGPUTargetLowering::SplitVectorStore(), TranslateX86CC(), tryCombineShiftImm(), tryCombineToEXTR(), tryExtendDUPToExtractHigh(), tryFoldToZero(), tryFormConcatFromShuffle(), tryLowerToSLI(), TryMULWIDECombine(), tryToFoldExtendOfConstant(), UnrollVectorOp(), llvm::SelectionDAGBuilder::visitBitTestCase(), llvm::SelectionDAGBuilder::visitBitTestHeader(), llvm::SelectionDAGBuilder::visitJumpTableHeader(), llvm::SelectionDAGBuilder::visitSPDescriptorParent(), llvm::SelectionDAGBuilder::visitSwitchCase(), WidenMaskArithmetic(), and WidenVector().
SDValue SelectionDAG::getConstant | ( | const APInt & | Val, |
EVT | VT, | ||
bool | isTarget = false , |
||
bool | isOpaque = false |
||
) |
Definition at line 1078 of file SelectionDAG.cpp.
References llvm::ConstantInt::get(), and getConstant().
SDValue SelectionDAG::getConstant | ( | const ConstantInt & | Val, |
EVT | VT, | ||
bool | isTarget = false , |
||
bool | isOpaque = false |
||
) |
Definition at line 1083 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddBoolean(), AddNodeIDNode(), llvm::FoldingSetNodeID::AddPointer(), llvm::SmallVectorImpl< T >::assign(), llvm::ISD::BITCAST, llvm::ISD::BUILD_VECTOR, llvm::ISD::Constant, llvm::SmallVectorTemplateCommon< T, typename >::end(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::ConstantInt::get(), llvm::ConstantInt::getBitWidth(), getConstant(), getContext(), getNode(), llvm::EVT::getScalarType(), llvm::EVT::getSizeInBits(), llvm::TargetMachine::getSubtargetImpl(), llvm::TargetSubtargetInfo::getTargetLowering(), llvm::TargetLoweringBase::getTypeAction(), llvm::TargetLoweringBase::getTypeToTransformTo(), llvm::ConstantInt::getValue(), llvm::EVT::getVectorNumElements(), llvm::EVT::getVectorVT(), getVTList(), llvm::SmallVectorImpl< T >::insert(), llvm::FoldingSetImpl::InsertNode(), llvm::TargetLoweringBase::isBigEndian(), llvm::EVT::isInteger(), llvm::EVT::isVector(), llvm::APInt::lshr(), NewNodesMustHaveLegalTypes, llvm::None, llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), llvm::ISD::TargetConstant, llvm::APInt::trunc(), llvm::TargetLoweringBase::TypeExpandInteger, llvm::TargetLoweringBase::TypePromoteInteger, and llvm::APInt::zext().
SDDbgValue * SelectionDAG::getConstantDbgValue | ( | MDNode * | MDPtr, |
const Value * | C, | ||
uint64_t | Off, | ||
DebugLoc | DL, | ||
unsigned | O | ||
) |
Definition at line 5776 of file SelectionDAG.cpp.
SDValue SelectionDAG::getConstantFP | ( | double | Val, |
EVT | VT, | ||
bool | isTarget = false |
||
) |
Definition at line 1224 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 ExpandPowI(), getConstantFP(), getF32Constant(), getMemsetStringVal(), getMemsetValue(), GetNegatedExpression(), getNode(), getTargetConstantFP(), llvm::SelectionDAGBuilder::getValueImpl(), llvm::AMDGPUTargetLowering::LowerIntrinsicLRP(), llvm::PPCTargetLowering::PerformDAGCombine(), and llvm::SelectionDAGISel::SelectCodeCommon().
Definition at line 1186 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 1190 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::FoldingSetNodeID::AddPointer(), llvm::SmallVectorImpl< T >::assign(), llvm::ISD::BUILD_VECTOR, llvm::ISD::ConstantFP, llvm::FoldingSet< T >::FindNodeOrInsertPos(), getNode(), llvm::EVT::getScalarType(), llvm::EVT::getVectorNumElements(), getVTList(), llvm::FoldingSetImpl::InsertNode(), llvm::EVT::isFloatingPoint(), llvm::EVT::isVector(), llvm::None, 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 1313 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::FoldingSetNodeID::AddPointer(), llvm::ISD::ConstantPool, llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::TargetLoweringBase::getDataLayout(), llvm::DataLayout::getPrefTypeAlignment(), llvm::TargetMachine::getSubtargetImpl(), llvm::TargetSubtargetInfo::getTargetLowering(), llvm::Value::getType(), getVTList(), llvm::FoldingSetImpl::InsertNode(), llvm::None, and llvm::ISD::TargetConstantPool.
Referenced by getTargetConstantPool(), LowerFABSorFNEG(), LowerFCOPYSIGN(), 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 1343 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::MachineConstantPoolValue::addSelectionDAGCSEId(), llvm::ISD::ConstantPool, llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::TargetLoweringBase::getDataLayout(), llvm::DataLayout::getPrefTypeAlignment(), llvm::TargetMachine::getSubtargetImpl(), llvm::TargetSubtargetInfo::getTargetLowering(), llvm::MachineConstantPoolValue::getType(), getVTList(), llvm::FoldingSetImpl::InsertNode(), llvm::None, and llvm::ISD::TargetConstantPool.
LLVMContext* llvm::SelectionDAG::getContext | ( | ) | const [inline] |
Definition at line 283 of file SelectionDAG.h.
Referenced by BuildVectorFromScalar(), canFoldInAddressingMode(), CreateStackTemporary(), llvm::SelectionDAGBuilder::EmitBranchForMergedCondition(), llvm::XCoreSelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::AArch64SelectionDAGInfo::EmitTargetCodeForMemset(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset(), llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemset(), llvm::TargetLowering::expandFP_TO_SINT(), ExpandUnalignedLoad(), ExpandUnalignedStore(), ExtractSubVector(), getConstant(), getConstantFP(), getCopyFromParts(), getCopyFromPartsVector(), getCopyToParts(), getCopyToPartsVector(), getEVTAlignment(), getMemcpy(), getMemcpyLoadsAndStores(), getMemmove(), getMemmoveLoadsAndStores(), getMemset(), getMemsetStores(), getMemsetStringVal(), GetRegistersForValue(), GetSplitDestVTs(), llvm::SelectionDAGBuilder::getValue(), llvm::SelectionDAGBuilder::getValueImpl(), getVectorMaskingNode(), llvm::SelectionDAGBuilder::init(), LowerAsSplatVectorLoad(), LowerBITCAST(), llvm::HexagonTargetLowering::LowerCall(), llvm::AMDGPUTargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::SelectionDAGBuilder::LowerCallOperands(), llvm::HexagonTargetLowering::LowerCallResult(), llvm::AMDGPUTargetLowering::LowerDIVREM24(), LowerExtendedLoad(), llvm::SparcTargetLowering::LowerF128_LibCallArg(), llvm::SparcTargetLowering::LowerF128Compare(), llvm::SparcTargetLowering::LowerF128Op(), LowerFABSorFNEG(), LowerFCOPYSIGN(), llvm::R600TargetLowering::LowerFormalArguments(), llvm::SITargetLowering::LowerFormalArguments(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::SystemZTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::SparcTargetLowering::LowerFormalArguments_64(), LowerFSINCOS(), llvm::HexagonTargetLowering::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::AMDGPUTargetLowering::PerformDAGCombine(), llvm::PPCTargetLowering::PerformDAGCombine(), performExtendCombine(), PerformInsertEltCombine(), PerformLOADCombine(), performSelectCombine(), PerformSELECTCombine(), performSTORECombine(), PerformSTORECombine(), llvm::AArch64TargetLowering::ReconstructShuffle(), ReplaceLoadVector(), llvm::R600TargetLowering::ReplaceNodeResults(), llvm::PPCTargetLowering::ReplaceNodeResults(), llvm::TargetLowering::SimplifySetCC(), llvm::TargetLowering::softenSetCCOperands(), llvm::AMDGPUTargetLowering::SplitVectorLoad(), tryFormConcatFromShuffle(), UnrollVectorOp(), llvm::TargetLowering::verifyReturnAddressArgumentIsConstant(), 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 1607 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::FoldingSet< T >::FindNodeOrInsertPos(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), getVTList(), and llvm::FoldingSetImpl::InsertNode().
SDValue llvm::SelectionDAG::getCopyFromReg | ( | SDValue | Chain, |
SDLoc | dl, | ||
unsigned | Reg, | ||
EVT | VT | ||
) | [inline] |
Definition at line 535 of file SelectionDAG.h.
References llvm::ISD::CopyFromReg, getNode(), getRegister(), getVTList(), and llvm::MVT::Other.
Referenced by llvm::SITargetLowering::CreateLiveInRegister(), getFRAMEADDR(), getReadPerformanceCounter(), getReadTimeStampCounter(), GetTLSADDR(), llvm::HexagonTargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::HexagonTargetLowering::LowerCallResult(), LowerCallResult(), LowerCMP_SWAP(), llvm::HexagonTargetLowering::LowerDYNAMIC_STACKALLOC(), LowerDYNAMIC_STACKALLOC(), llvm::R600TargetLowering::LowerFormalArguments(), llvm::SITargetLowering::LowerFormalArguments(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::SystemZTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::SparcTargetLowering::LowerFormalArguments_64(), llvm::MSP430TargetLowering::LowerFRAMEADDR(), llvm::HexagonTargetLowering::LowerFRAMEADDR(), llvm::SparcTargetLowering::LowerGlobalTLSAddress(), LowerINTRINSIC_W_CHAIN(), llvm::R600TargetLowering::LowerOperation(), llvm::SparcTargetLowering::LowerReturn_32(), llvm::HexagonTargetLowering::LowerRETURNADDR(), LowerRETURNADDR(), llvm::MSP430TargetLowering::LowerSETCC(), performDivRemCombine(), llvm::SelectionDAGBuilder::visitBitTestCase(), llvm::SelectionDAGBuilder::visitJumpTable(), and llvm::SelectionDAGBuilder::visitSPDescriptorParent().
SDValue llvm::SelectionDAG::getCopyFromReg | ( | SDValue | Chain, |
SDLoc | dl, | ||
unsigned | Reg, | ||
EVT | VT, | ||
SDValue | Glue | ||
) | [inline] |
Definition at line 544 of file SelectionDAG.h.
References llvm::ISD::CopyFromReg, llvm::SDValue::getNode(), getNode(), getRegister(), getVTList(), llvm::MVT::Glue, and llvm::MVT::Other.
SDValue llvm::SelectionDAG::getCopyToReg | ( | SDValue | Chain, |
SDLoc | dl, | ||
unsigned | Reg, | ||
SDValue | N | ||
) | [inline] |
Definition at line 510 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(), getReadPerformanceCounter(), llvm::HexagonTargetLowering::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::SystemZTargetLowering::LowerReturn(), llvm::SparcTargetLowering::LowerReturn_32(), llvm::SparcTargetLowering::LowerReturn_64(), LowerToTLSGeneralDynamicModel32(), LowerToTLSLocalDynamicModel(), PrepareCall(), llvm::SelectionDAGISel::SelectCodeCommon(), llvm::SelectionDAGBuilder::visitBitTestHeader(), and llvm::SelectionDAGBuilder::visitJumpTableHeader().
SDValue llvm::SelectionDAG::getCopyToReg | ( | SDValue | Chain, |
SDLoc | dl, | ||
unsigned | Reg, | ||
SDValue | N, | ||
SDValue | Glue | ||
) | [inline] |
Definition at line 518 of file SelectionDAG.h.
References llvm::ISD::CopyToReg, llvm::SDValue::getNode(), getNode(), getRegister(), llvm::SDValue::getValueType(), getVTList(), llvm::MVT::Glue, and llvm::MVT::Other.
SDValue llvm::SelectionDAG::getCopyToReg | ( | SDValue | Chain, |
SDLoc | dl, | ||
SDValue | Reg, | ||
SDValue | N, | ||
SDValue | Glue | ||
) | [inline] |
Definition at line 527 of file SelectionDAG.h.
References llvm::ISD::CopyToReg, llvm::SDValue::getNode(), getNode(), getVTList(), llvm::MVT::Glue, and llvm::MVT::Other.
SDDbgValue * SelectionDAG::getDbgValue | ( | MDNode * | MDPtr, |
SDNode * | N, | ||
unsigned | R, | ||
bool | IsIndirect, | ||
uint64_t | Off, | ||
DebugLoc | DL, | ||
unsigned | O | ||
) |
getDbgValue - Creates a SDDbgValue node.
getDbgValue - Creates a SDDbgValue node.
Definition at line 5768 of file SelectionDAG.cpp.
Referenced by llvm::SelectionDAGBuilder::resolveDanglingDebugInfo(), and TransferDbgValues().
ArrayRef<SDDbgValue*> llvm::SelectionDAG::GetDbgValues | ( | const SDNode * | SD | ) | [inline] |
GetDbgValues - Get the debug values which reference the given SDNode.
Definition at line 1091 of file SelectionDAG.h.
References llvm::SDDbgInfo::getSDDbgValues().
Referenced by ProcessSDDbgValues(), and TransferDbgValues().
SDValue SelectionDAG::getEHLabel | ( | SDLoc | dl, |
SDValue | Root, | ||
MCSymbol * | Label | ||
) |
Definition at line 1660 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::FoldingSetNodeID::AddPointer(), llvm::ISD::EH_LABEL, llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), getVTList(), llvm::FoldingSetImpl::InsertNode(), and llvm::MVT::Other.
Referenced by llvm::SelectionDAGBuilder::LowerCallTo().
SDValue llvm::SelectionDAG::getEntryNode | ( | ) | const [inline] |
getEntryNode - Return the token chain corresponding to the entry of the function.
Definition at line 330 of file SelectionDAG.h.
Referenced by clear(), llvm::SelectionDAGBuilder::CopyValueToVirtualRegister(), llvm::SITargetLowering::CreateLiveInRegister(), llvm::MipsTargetLowering::getAddrLocal(), getFLUSHW(), getFRAMEADDR(), getMemCmpLoad(), getStackArgumentTokenFactor(), llvm::SelectionDAGBuilder::getValue(), llvm::SelectionDAGBuilder::getValueImpl(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerF128Compare(), llvm::SparcTargetLowering::LowerF128Op(), LowerFABSorFNEG(), LowerFCOPYSIGN(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::MSP430TargetLowering::LowerFRAMEADDR(), llvm::HexagonTargetLowering::LowerFRAMEADDR(), LowerFSINCOS(), llvm::AMDGPUTargetLowering::LowerGlobalAddress(), llvm::SparcTargetLowering::LowerGlobalTLSAddress(), LowerINTRINSIC_W_CHAIN(), llvm::R600TargetLowering::LowerOperation(), llvm::MSP430TargetLowering::LowerRETURNADDR(), llvm::HexagonTargetLowering::LowerRETURNADDR(), LowerRETURNADDR(), llvm::MSP430TargetLowering::LowerSETCC(), LowerSIGN_EXTEND_AVX512(), 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().
unsigned SelectionDAG::getEVTAlignment | ( | EVT | VT | ) | const |
getEVTAlignment - Compute the default alignment value for the given type.
Definition at line 897 of file SelectionDAG.cpp.
References llvm::PointerType::get(), llvm::DataLayout::getABITypeAlignment(), getContext(), llvm::TargetLoweringBase::getDataLayout(), llvm::Type::getInt8Ty(), llvm::TargetMachine::getSubtargetImpl(), llvm::TargetSubtargetInfo::getTargetLowering(), llvm::EVT::getTypeForEVT(), and llvm::MVT::iPTR.
Referenced by getAtomic(), getAtomicCmpSwap(), getLoad(), getMemIntrinsicNode(), getStore(), and getTruncStore().
SDValue SelectionDAG::getExternalSymbol | ( | const char * | Sym, |
EVT | VT | ||
) |
Definition at line 1418 of file SelectionDAG.cpp.
Referenced by llvm::XCoreSelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::AArch64SelectionDAGInfo::EmitTargetCodeForMemset(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset(), llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemset(), getMemcpy(), getMemmove(), getMemset(), llvm::SparcTargetLowering::LowerF128Compare(), llvm::SparcTargetLowering::LowerF128Op(), LowerFSINCOS(), and llvm::TargetLowering::makeLibCall().
SDValue llvm::SelectionDAG::getExternalSymbol | ( | const char * | Sym, |
SDLoc | dl, | ||
EVT | VT | ||
) |
SDValue SelectionDAG::getExtLoad | ( | ISD::LoadExtType | ExtType, |
SDLoc | dl, | ||
EVT | VT, | ||
SDValue | Chain, | ||
SDValue | Ptr, | ||
MachinePointerInfo | PtrInfo, | ||
EVT | MemVT, | ||
bool | isVolatile, | ||
bool | isNonTemporal, | ||
bool | isInvariant, | ||
unsigned | Alignment, | ||
const AAMDNodes & | AAInfo = AAMDNodes() |
||
) |
Definition at line 4755 of file SelectionDAG.cpp.
References getLoad(), getUNDEF(), llvm::SDValue::getValueType(), llvm::RegState::Undef, and llvm::ISD::UNINDEXED.
Referenced by adjustSubwordCmp(), ExpandUnalignedLoad(), ExpandUnalignedStore(), getMemcpyLoadsAndStores(), LowerExtendedLoad(), llvm::NVPTXTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::AMDGPUTargetLowering::LowerLOAD(), llvm::AMDGPUTargetLowering::ScalarizeVectorLoad(), 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 4768 of file SelectionDAG.cpp.
References getLoad(), getUNDEF(), llvm::SDValue::getValueType(), llvm::RegState::Undef, and llvm::ISD::UNINDEXED.
Definition at line 1278 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::ISD::FrameIndex, getVTList(), llvm::FoldingSetImpl::InsertNode(), llvm::None, and llvm::ISD::TargetFrameIndex.
Referenced by CalculateTailCallArgDest(), CreateStackTemporary(), EmitTailCallStoreFPAndRetAddr(), EmitTailCallStoreRetAddr(), llvm::MSP430TargetLowering::getReturnAddressFrameIndex(), getTargetFrameIndex(), llvm::SelectionDAGBuilder::getValueImpl(), llvm::SparcTargetLowering::LowerCall_32(), llvm::TargetLowering::LowerCallTo(), llvm::SparcTargetLowering::LowerF128_LibCallArg(), llvm::SparcTargetLowering::LowerF128Op(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::SystemZTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::SparcTargetLowering::LowerFormalArguments_64(), llvm::AMDGPUTargetLowering::LowerGlobalAddress(), llvm::MSP430TargetLowering::LowerVASTART(), llvm::HexagonTargetLowering::LowerVASTART(), LowerVASTART(), and llvm::SelectionDAGBuilder::visitSPDescriptorParent().
SDDbgValue * SelectionDAG::getFrameIndexDbgValue | ( | MDNode * | MDPtr, |
unsigned | FI, | ||
uint64_t | Off, | ||
DebugLoc | DL, | ||
unsigned | O | ||
) |
SDValue llvm::SelectionDAG::getGLOBAL_OFFSET_TABLE | ( | EVT | VT | ) | [inline] |
getGLOBAL_OFFSET_TABLE - Return a GLOBAL_OFFSET_TABLE node. This does not have a useful SDLoc.
Definition at line 655 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 1241 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::FoldingSetNodeID::AddPointer(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::PointerType::getAddressSpace(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), llvm::TargetLoweringBase::getPointerTypeSizeInBits(), llvm::TargetMachine::getSubtargetImpl(), llvm::TargetSubtargetInfo::getTargetLowering(), llvm::GlobalValue::getType(), getVTList(), llvm::ISD::GlobalAddress, llvm::ISD::GlobalTLSAddress, llvm::FoldingSetImpl::InsertNode(), llvm::GlobalValue::isThreadLocal(), llvm::None, 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 189 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 4777 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::AArch64DB::LD, and llvm::ISD::UNDEF.
SDValue SelectionDAG::getIndexedStore | ( | SDValue | OrigStoe, |
SDLoc | dl, | ||
SDValue | Base, | ||
SDValue | Offset, | ||
ISD::MemIndexedMode | AM | ||
) |
Definition at line 4912 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), 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::FoldingSetImpl::InsertNode(), llvm::StoreSDNode::isTruncatingStore(), llvm::MVT::Other, llvm::AArch64DB::ST, llvm::ISD::STORE, and llvm::ISD::UNDEF.
SDValue SelectionDAG::getIntPtrConstant | ( | uint64_t | Val, |
bool | isTarget = false |
||
) |
Definition at line 1179 of file SelectionDAG.cpp.
References getConstant(), llvm::TargetLoweringBase::getPointerTy(), llvm::TargetMachine::getSubtargetImpl(), and llvm::TargetSubtargetInfo::getTargetLowering().
Referenced by buildFromShuffleMostly(), CMPEQCombine(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset(), ExtractSubVector(), getCopyToParts(), getFRAMEADDR(), getINSERTPS(), InsertSubVector(), LowerBITCAST(), LowerBuildVectorv16i8(), LowerBuildVectorv4x32(), LowerBuildVectorv8i16(), llvm::HexagonTargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::NVPTXTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), LowerCONCAT_VECTORS(), lowerCTPOP16BitElements(), lowerCTPOP32BitElements(), llvm::HexagonTargetLowering::LowerEH_RETURN(), LowerExtendedLoad(), LowerFCOPYSIGN(), llvm::SystemZTargetLowering::LowerFormalArguments(), llvm::NVPTXTargetLowering::LowerFormalArguments(), LowerFSINCOS(), llvm::SparcTargetLowering::LowerGlobalTLSAddress(), LowerINTRINSIC_W_CHAIN(), llvm::NVPTXTargetLowering::LowerReturn(), LowerRETURNADDR(), LowerScalarVariableShift(), LowerSDIV(), LowerToTLSExecModel(), LowerUDIV(), LowerUMULO_SMULO(), LowerVAARG(), LowerVACOPY(), LowerVASTART(), LowerVECTOR_SHUFFLE_256(), LowerVECTOR_SHUFFLEv16i8(), LowerVECTOR_SHUFFLEv8i16(), LowerVectorINT_TO_FP(), LowerVectorIntExtend(), llvm::PPCTargetLowering::PerformDAGCombine(), performExtendCombine(), performSTORECombine(), PerformSTORECombine(), PrepareCall(), PrepareTailCall(), llvm::AArch64TargetLowering::ReconstructShuffle(), ReplaceLoadVector(), llvm::PPCTargetLowering::ReplaceNodeResults(), and splitAndLower256BitVectorShuffle().
SDValue SelectionDAG::getJumpTable | ( | int | JTI, |
EVT | VT, | ||
bool | isTarget = false , |
||
unsigned char | TargetFlags = 0 |
||
) |
Definition at line 1293 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), getVTList(), llvm::FoldingSetImpl::InsertNode(), llvm::ISD::JumpTable, llvm::None, 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 AAMDNodes & | AAInfo = AAMDNodes() , |
||
const MDNode * | Ranges = nullptr |
||
) |
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 4734 of file SelectionDAG.cpp.
References getUNDEF(), llvm::SDValue::getValueType(), llvm::ISD::NON_EXTLOAD, llvm::RegState::Undef, and llvm::ISD::UNINDEXED.
Referenced by bitcastf32Toi32(), convertLocVTToValVT(), EltsFromConsecutiveLoads(), llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemcpy(), expandf64Toi32(), ExpandUnalignedLoad(), ExpandUnalignedStore(), llvm::MipsTargetLowering::getAddrGlobal(), llvm::MipsTargetLowering::getAddrGlobalLargeGOT(), llvm::MipsTargetLowering::getAddrLocal(), getExtLoad(), getFRAMEADDR(), getIndexedLoad(), getLoad(), getMemCmpLoad(), getMemmoveLoadsAndStores(), LowerAsSplatVectorLoad(), llvm::HexagonTargetLowering::LowerBR_JT(), llvm::NVPTXTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::TargetLowering::LowerCallTo(), LowerExtendedLoad(), LowerF128Load(), llvm::SparcTargetLowering::LowerF128Op(), LowerFABSorFNEG(), LowerFCOPYSIGN(), llvm::R600TargetLowering::LowerFormalArguments(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::SystemZTargetLowering::LowerFormalArguments(), llvm::NVPTXTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::SparcTargetLowering::LowerFormalArguments_64(), llvm::MSP430TargetLowering::LowerFRAMEADDR(), llvm::HexagonTargetLowering::LowerFRAMEADDR(), LowerINTRINSIC_W_CHAIN(), lowerMSALoadIntr(), llvm::MSP430TargetLowering::LowerRETURNADDR(), llvm::HexagonTargetLowering::LowerRETURNADDR(), LowerRETURNADDR(), LowerSIGN_EXTEND_AVX512(), LowerToTLSExecModel(), LowerVAARG(), LowerVectorBroadcast(), LowerZERO_EXTEND_AVX512(), llvm::SparcTargetLowering::makeAddress(), NarrowVectorLoadToElement(), PerformEXTRACT_VECTOR_ELTCombine(), performIntToFpCombine(), PerformLOADCombine(), PerformSTORECombine(), llvm::TargetLowering::SimplifySetCC(), SkipLoadExtensionForVMULL(), and llvm::SelectionDAGBuilder::visitSPDescriptorParent().
SDValue SelectionDAG::getLoad | ( | EVT | VT, |
SDLoc | dl, | ||
SDValue | Chain, | ||
SDValue | Ptr, | ||
MachineMemOperand * | MMO | ||
) |
Definition at line 4747 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 AAMDNodes & | AAInfo = AAMDNodes() , |
||
const MDNode * | Ranges = nullptr |
||
) |
Definition at line 4653 of file SelectionDAG.cpp.
References getEVTAlignment(), getLoad(), getMachineFunction(), llvm::MachineFunction::getMachineMemOperand(), llvm::EVT::getStoreSize(), llvm::SDValue::getValueType(), InferPointerInfo(), llvm::PointerUnion< PT1, PT2 >::isNull(), llvm::MachineMemOperand::MOInvariant, llvm::MachineMemOperand::MOLoad, llvm::MachineMemOperand::MONonTemporal, llvm::MachineMemOperand::MOVolatile, llvm::MVT::Other, Ranges, 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 4686 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::EVT::bitsLT(), encodeMemSDNodeFlags(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), 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::FoldingSetImpl::InsertNode(), 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.
SDValue SelectionDAG::getLogicalNOT | ( | SDLoc | DL, |
SDValue | Val, | ||
EVT | VT | ||
) |
Create a logical NOT operation as (XOR Val, BooleanOne).
Definition at line 1054 of file SelectionDAG.cpp.
References llvm::APInt::getAllOnesValue(), llvm::TargetLoweringBase::getBooleanContents(), getConstant(), getNode(), llvm::EVT::getScalarType(), llvm::EVT::getSizeInBits(), llvm::TargetLoweringBase::UndefinedBooleanContent, llvm::ISD::XOR, llvm::TargetLoweringBase::ZeroOrNegativeOneBooleanContent, and llvm::TargetLoweringBase::ZeroOrOneBooleanContent.
MachineFunction& llvm::SelectionDAG::getMachineFunction | ( | ) | const [inline] |
Definition at line 278 of file SelectionDAG.h.
Referenced by CalculateTailCallSPDiff(), llvm::AMDGPUTargetLowering::CreateLiveInRegister(), CreateStackTemporary(), ExpandPowI(), llvm::SelectionDAGBuilder::FindMergedConditions(), FindOptimalMemOpLowering(), fixupFuncForFI(), getAtomic(), getAtomicCmpSwap(), getFRAMEADDR(), llvm::MipsTargetLowering::getGlobalReg(), llvm::DOTGraphTraits< SelectionDAG * >::getGraphName(), getLoad(), getMemcpyLoadsAndStores(), getMemIntrinsicNode(), getMemmoveLoadsAndStores(), getMemsetStores(), GetRegistersForValue(), llvm::MSP430TargetLowering::getReturnAddressFrameIndex(), llvm::SparcTargetLowering::getSRetArgSize(), getStore(), GetTLSADDR(), getTruncStore(), hasReturnsTwiceAttr(), InferPtrAlignment(), isConsecutiveLoad(), isConsecutiveLSLoc(), llvm::HexagonTargetLowering::IsEligibleForTailCallOptimization(), llvm::TargetLowering::isInTailCallPosition(), LowerAsSplatVectorLoad(), llvm::HexagonTargetLowering::LowerBR_JT(), llvm::HexagonTargetLowering::LowerCall(), llvm::AMDGPUTargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::NVPTXTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::HexagonTargetLowering::LowerCallResult(), llvm::SelectionDAGBuilder::LowerCallTo(), llvm::TargetLowering::LowerCallTo(), llvm::HexagonTargetLowering::LowerEH_RETURN(), llvm::SparcTargetLowering::LowerF128_LibCallArg(), llvm::SparcTargetLowering::LowerF128Op(), llvm::R600TargetLowering::LowerFormalArguments(), llvm::SITargetLowering::LowerFormalArguments(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::SystemZTargetLowering::LowerFormalArguments(), llvm::NVPTXTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::SparcTargetLowering::LowerFormalArguments_64(), llvm::MSP430TargetLowering::LowerFRAMEADDR(), llvm::HexagonTargetLowering::LowerFRAMEADDR(), llvm::AMDGPUTargetLowering::LowerGlobalAddress(), llvm::SparcTargetLowering::LowerGlobalTLSAddress(), llvm::HexagonTargetLowering::LowerINLINEASM(), LowerInterruptReturn(), LowerINTRINSIC_W_CHAIN(), llvm::R600TargetLowering::LowerOperation(), llvm::SITargetLowering::LowerOperation(), llvm::HexagonTargetLowering::LowerReturn(), llvm::SystemZTargetLowering::LowerReturn(), llvm::NVPTXTargetLowering::LowerReturn(), llvm::SparcTargetLowering::LowerReturn_32(), llvm::SparcTargetLowering::LowerReturn_64(), llvm::MSP430TargetLowering::LowerRETURNADDR(), llvm::HexagonTargetLowering::LowerRETURNADDR(), LowerRETURNADDR(), LowerToTLSLocalDynamicModel(), llvm::MSP430TargetLowering::LowerVASTART(), llvm::HexagonTargetLowering::LowerVASTART(), LowerVASTART(), llvm::SparcTargetLowering::makeAddress(), NarrowVectorLoadToElement(), PerformADDCombineWithOperands(), llvm::PPCTargetLowering::PerformDAGCombine(), PerformOrCombine(), performSTORECombine(), PerformSTORECombine(), PrepareTailCall(), 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 5569 of file SelectionDAG.cpp.
References getVTList(), and llvm::None.
Referenced by buildRSRC(), getLeftShift(), getMachineNode(), getPrefetchNode(), getScatterNode(), getTargetExtractSubreg(), getTargetInsertSubreg(), LowerATOMIC_FENCE(), LowerBITCAST(), LowerF128Load(), LowerF128Store(), LowerF64Op(), LowerFNEGorFABS(), lowerGR128Binary(), llvm::R600TargetLowering::LowerOperation(), narrowIfNeeded(), performBitcastCombine(), ReplaceBITCASTResults(), llvm::PPCTargetLowering::SelectAddressRegImm(), llvm::SelectionDAGISel::SelectCodeCommon(), Widen(), and wrapAddr64Rsrc().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | VT, | ||
SDValue | Op1 | ||
) |
Definition at line 5575 of file SelectionDAG.cpp.
References getMachineNode(), and getVTList().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | VT, | ||
SDValue | Op1, | ||
SDValue | Op2 | ||
) |
Definition at line 5582 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 5590 of file SelectionDAG.cpp.
References getMachineNode(), and getVTList().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | VT, | ||
ArrayRef< SDValue > | Ops | ||
) |
Definition at line 5598 of file SelectionDAG.cpp.
References getMachineNode(), and getVTList().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
EVT | VT1, | ||
EVT | VT2 | ||
) |
Definition at line 5605 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 5611 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 5619 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 5627 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 5636 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 5644 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 5653 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 5662 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 5670 of file SelectionDAG.cpp.
References getMachineNode(), and getVTList().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
ArrayRef< EVT > | ResultTys, | ||
ArrayRef< SDValue > | Ops | ||
) |
Definition at line 5678 of file SelectionDAG.cpp.
References getMachineNode(), and getVTList().
MachineSDNode * SelectionDAG::getMachineNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
SDVTList | VTs, | ||
ArrayRef< SDValue > | Ops | ||
) |
Definition at line 5686 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::BumpPtrAllocatorImpl< AllocatorT, SlabSize, SizeThreshold >::Allocate(), llvm::array_lengthof(), llvm::ArrayRef< T >::data(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), llvm::MVT::Glue, llvm::SDNode::InitOperands(), llvm::FoldingSetImpl::InsertNode(), llvm::SDVTList::NumVTs, llvm::ArrayRef< T >::size(), and llvm::SDVTList::VTs.
SDValue SelectionDAG::getMDNode | ( | const MDNode * | MD | ) |
getMDNode - Return an MDNodeSDNode which holds an MDNode.
Definition at line 1718 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::FoldingSetNodeID::AddPointer(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), getVTList(), llvm::FoldingSetImpl::InsertNode(), llvm::ISD::MDNODE_SDNODE, llvm::None, 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 4206 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::getSubtargetImpl(), llvm::TargetSubtargetInfo::getTargetLowering(), llvm::Type::getVoidTy(), llvm::ConstantSDNode::getZExtValue(), llvm::ConstantSDNode::isNullValue(), llvm::TargetLowering::LowerCallTo(), llvm::RTLIB::MEMCPY, llvm::TargetLowering::ArgListEntry::Node, llvm::TargetLowering::CallLoweringInfo::setCallee(), llvm::TargetLowering::CallLoweringInfo::setChain(), llvm::TargetLowering::CallLoweringInfo::setDebugLoc(), and llvm::TargetLowering::ArgListEntry::Ty.
Referenced by CreateCopyOfByValArgument(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::SparcTargetLowering::LowerCall_32(), and LowerVACOPY().
SDValue SelectionDAG::getMemIntrinsicNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
SDVTList | VTList, | ||
ArrayRef< SDValue > | Ops, | ||
EVT | MemVT, | ||
MachinePointerInfo | PtrInfo, | ||
unsigned | Align = 0 , |
||
bool | Vol = false , |
||
bool | ReadMem = true , |
||
bool | WriteMem = true , |
||
unsigned | Size = 0 |
||
) |
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 4556 of file SelectionDAG.cpp.
References getEVTAlignment(), getMachineFunction(), llvm::MachineFunction::getMachineMemOperand(), llvm::EVT::getStoreSize(), llvm::MachineMemOperand::MOLoad, llvm::MachineMemOperand::MOStore, and llvm::MachineMemOperand::MOVolatile.
Referenced by CombineBaseUpdate(), CombineVLDDUP(), createLoadLR(), createStoreLR(), EltsFromConsecutiveLoads(), llvm::NVPTXTargetLowering::LowerCall(), LowerCMP_SWAP(), llvm::NVPTXTargetLowering::LowerReturn(), llvm::PPCTargetLowering::PerformDAGCombine(), performNEONPostLDSTCombine(), performPostLD1Combine(), PerformShuffleCombine256(), ReplaceINTRINSIC_W_CHAIN(), and ReplaceLoadVector().
SDValue SelectionDAG::getMemIntrinsicNode | ( | unsigned | Opcode, |
SDLoc | dl, | ||
SDVTList | VTList, | ||
ArrayRef< SDValue > | Ops, | ||
EVT | MemVT, | ||
MachineMemOperand * | MMO | ||
) |
Definition at line 4581 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::ISD::FIRST_TARGET_MEMORY_OPCODE, llvm::MachinePointerInfo::getAddrSpace(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), llvm::MachineMemOperand::getPointerInfo(), llvm::MVT::Glue, llvm::FoldingSetImpl::InsertNode(), llvm::ISD::INTRINSIC_VOID, llvm::ISD::INTRINSIC_W_CHAIN, llvm::ISD::LIFETIME_END, llvm::ISD::LIFETIME_START, 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 4273 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::getSubtargetImpl(), llvm::TargetSubtargetInfo::getTargetLowering(), llvm::Type::getVoidTy(), llvm::ConstantSDNode::getZExtValue(), llvm::ConstantSDNode::isNullValue(), llvm::TargetLowering::LowerCallTo(), llvm::RTLIB::MEMMOVE, llvm::TargetLowering::ArgListEntry::Node, llvm::TargetLowering::CallLoweringInfo::setCallee(), llvm::TargetLowering::CallLoweringInfo::setChain(), llvm::TargetLowering::CallLoweringInfo::setDebugLoc(), 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 4328 of file SelectionDAG.cpp.
References Align(), llvm::dyn_cast(), llvm::TargetSelectionDAGInfo::EmitTargetCodeForMemset(), getContext(), llvm::TargetLoweringBase::getDataLayout(), getExternalSymbol(), llvm::DataLayout::getIntPtrType(), llvm::TargetLoweringBase::getLibcallCallingConv(), llvm::TargetLoweringBase::getLibcallName(), getMemsetStores(), llvm::SDValue::getNode(), llvm::TargetLoweringBase::getPointerTy(), llvm::TargetMachine::getSubtargetImpl(), llvm::TargetSubtargetInfo::getTargetLowering(), llvm::EVT::getTypeForEVT(), llvm::SDValue::getValueType(), llvm::Type::getVoidTy(), llvm::ConstantSDNode::getZExtValue(), llvm::ConstantSDNode::isNullValue(), llvm::TargetLowering::LowerCallTo(), llvm::RTLIB::MEMSET, llvm::TargetLowering::ArgListEntry::Node, llvm::TargetLowering::CallLoweringInfo::setCallee(), llvm::TargetLowering::CallLoweringInfo::setChain(), llvm::TargetLowering::CallLoweringInfo::setDebugLoc(), and llvm::TargetLowering::ArgListEntry::Ty.
Referenced by llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset().
SDValue SelectionDAG::getMergeValues | ( | ArrayRef< SDValue > | Ops, |
SDLoc | dl | ||
) |
getMergeValues - Create a MERGE_VALUES node from the given operands.
Definition at line 4544 of file SelectionDAG.cpp.
References getNode(), getVTList(), llvm::ISD::MERGE_VALUES, llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::SmallVectorImpl< T >::reserve(), and llvm::ArrayRef< T >::size().
Referenced by llvm::SelectionDAGBuilder::getValueImpl(), LowerADDC_ADDE_SUBC_SUBE(), llvm::AMDGPUTargetLowering::LowerDIVREM24(), lowerDSPIntr(), llvm::HexagonTargetLowering::LowerDYNAMIC_STACKALLOC(), LowerDYNAMIC_STACKALLOC(), LowerF128Load(), LowerINTRINSIC_W_CHAIN(), llvm::AMDGPUTargetLowering::LowerLOAD(), llvm::MipsTargetLowering::lowerLOAD(), LowerMUL_LOHI(), llvm::AMDGPUTargetLowering::LowerSDIVREM(), LowerShiftParts(), LowerUMULO_SMULO(), llvm::AMDGPUTargetLowering::ScalarizeVectorLoad(), and llvm::AMDGPUTargetLowering::SplitVectorLoad().
SDValue SelectionDAG::getNode | ( | unsigned | Opcode, |
SDLoc | DL, | ||
EVT | VT | ||
) |
getNode - Gets or creates the specified node.
Definition at line 2655 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), getVTList(), llvm::FoldingSetImpl::InsertNode(), and llvm::None.
Referenced by AddCombineTo64bitMLAL(), AddCombineToVPADDL(), addIPMSequence(), AddRequiredExtensionForVMULL(), llvm::TargetLowering::BuildExactSDIV(), buildFromShuffleMostly(), BuildIntrinsicOp(), llvm::TargetLowering::BuildSDIV(), BuildSplatI(), llvm::TargetLowering::BuildUDIV(), BuildVectorFromScalar(), BuildVSLDOI(), ChangeVSETULTtoVSETULE(), CMPEQCombine(), llvm::AMDGPUTargetLowering::CombineMinMax(), combineRedundantDWordShuffle(), combineRedundantHalfShuffle(), combineSelectAndUse(), combineShuffleToAddSub(), combineX86ShuffleChain(), Compact8x32ShuffleNode(), CompactSwizzlableVector(), convertLocVTToValVT(), ConvertSelectToConcatVector(), convertValVTToLocVT(), createCMovFP(), createFPCmp(), createLoadLR(), createStoreLR(), EltsFromConsecutiveLoads(), emitCLC(), EmitCMP(), emitCmp(), emitComparison(), emitMemMem(), emitSETCC(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForMemchr(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForMemset(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset(), llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemset(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrcmp(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrcpy(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrnlen(), EmitVectorComparison(), Expand64BitShift(), ExpandBITCAST(), ExpandBVWithShuffles(), expandExp(), expandExp2(), expandf64Toi32(), llvm::TargetLowering::expandFP_TO_SINT(), ExpandHorizontalBinOp(), expandLog(), expandLog10(), expandLog2(), llvm::TargetLowering::expandMUL(), expandPow(), ExpandPowI(), ExpandUnalignedLoad(), ExpandUnalignedStore(), extractLOHI(), ExtractSubVector(), ExtractVectorElements(), FoldConstantArithmetic(), FoldMaskAndShiftToExtract(), FoldMaskAndShiftToScale(), FoldMaskedShiftToScaledMask(), genConstMult(), GeneratePerfectShuffle(), GenerateTBL(), getAArch64Cmp(), getAArch64XALUOOp(), getAbsolute(), llvm::MipsTargetLowering::getAddrGlobal(), llvm::MipsTargetLowering::getAddrGlobalLargeGOT(), llvm::MipsTargetLowering::getAddrLocal(), llvm::MipsTargetLowering::getAddrNonPIC(), getAnyExtendVectorInReg(), getAnyExtOrTrunc(), getBoolExtOrTrunc(), getBoundedStrlen(), getBuildVectorSplat(), getCALLSEQ_END(), getCALLSEQ_START(), getConstant(), getConstantFP(), llvm::SelectionDAGBuilder::getControlRoot(), getCopyFromParts(), getCopyFromPartsVector(), getCopyFromReg(), getCopyToParts(), getCopyToPartsVector(), getCopyToReg(), getCTPOP16BitCounts(), GetExponent(), getFLUSHW(), getFRAMEADDR(), getGatherNode(), getGLOBAL_OFFSET_TABLE(), getINSERTPS(), getLegalSplat(), getLogicalNOT(), getMemBasePlusOffset(), getMemcpyLoadsAndStores(), getMemmoveLoadsAndStores(), getMemsetStores(), getMemsetStringVal(), getMemsetValue(), getMergeValues(), getMOVDDup(), getMOVLowToHigh(), GetNegatedExpression(), getNode(), getNOT(), getOnesVector(), getPrefetchNode(), getPSHUFB(), getReadPerformanceCounter(), getReadTimeStampCounter(), GetRegistersForValue(), llvm::SelectionDAGBuilder::getRoot(), getScatterNode(), getSelect(), getSelectCC(), getSetCC(), getSExtOrTrunc(), getShiftAmountOperand(), getSignExtendVectorInReg(), GetSignificand(), getStackArgumentTokenFactor(), getTargetShuffleNode(), getTargetVShiftByConstNode(), getTargetVShiftNode(), GetTLSADDR(), getUNDEF(), getVAArg(), llvm::SelectionDAGBuilder::getValueImpl(), getVectorMaskingNode(), getVShift(), getVZextMovL(), getZeroExtendInReg(), getZeroExtendVectorInReg(), getZeroVector(), getZExtOrTrunc(), HandleMergeInputChains(), initAccumulator(), InsertFenceForAtomic(), InsertSubVector(), isLoadIncOrDecStore(), Lower256IntArith(), Lower256IntVSETCC(), LowerADDC_ADDE_SUBC_SUBE(), LowerAsSplatVectorLoad(), llvm::HexagonTargetLowering::LowerATOMIC_FENCE(), LowerATOMIC_FENCE(), LowerAVXExtend(), LowerBITCAST(), llvm::MSP430TargetLowering::LowerBlockAddress(), llvm::HexagonTargetLowering::LowerBlockAddress(), llvm::MSP430TargetLowering::LowerBR_CC(), LowerBR_CC(), llvm::HexagonTargetLowering::LowerBR_JT(), LowerBuildVectorv16i8(), LowerBuildVectorv4x32(), LowerBuildVectorv8i16(), llvm::HexagonTargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::NVPTXTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), LowerCallResult(), llvm::TargetLowering::LowerCallTo(), LowerCMP_SWAP(), LowerCONCAT_VECTORS(), llvm::HexagonTargetLowering::LowerConstantPool(), LowerConstantPool(), LowerCTLZ(), LowerCTLZ_ZERO_UNDEF(), lowerCTPOP16BitElements(), lowerCTPOP32BitElements(), LowerCTTZ(), llvm::AMDGPUTargetLowering::LowerDIVREM24(), lowerDSPIntr(), llvm::HexagonTargetLowering::LowerDYNAMIC_STACKALLOC(), LowerDYNAMIC_STACKALLOC(), llvm::HexagonTargetLowering::LowerEH_RETURN(), LowerExtendedLoad(), llvm::MSP430TargetLowering::LowerExternalSymbol(), LowerEXTRACT_VECTOR_ELT(), LowerEXTRACT_VECTOR_ELT_SSE4(), llvm::SparcTargetLowering::LowerF128Compare(), LowerF128Load(), LowerF128Store(), LowerF64Op(), LowerFABSorFNEG(), LowerFCOPYSIGN(), lowerFCOPYSIGN32(), lowerFCOPYSIGN64(), LowerFGETSIGN(), LowerFNEGorFABS(), llvm::SITargetLowering::LowerFormalArguments(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::SystemZTargetLowering::LowerFormalArguments(), llvm::NVPTXTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::SparcTargetLowering::LowerFormalArguments_64(), LowerFP_EXTEND(), LowerFP_TO_SINT(), lowerFP_TO_SINT_STORE(), LowerFSINCOS(), llvm::MSP430TargetLowering::LowerGlobalAddress(), llvm::HexagonTargetLowering::LowerGLOBALADDRESS(), llvm::NVPTXTargetLowering::LowerGlobalAddress(), llvm::SparcTargetLowering::LowerGlobalTLSAddress(), lowerGR128Binary(), lowerIntegerElementInsertionVectorShuffle(), LowerInterruptReturn(), LowerINTRINSIC_W_CHAIN(), LowerINTRINSIC_WO_CHAIN(), llvm::AMDGPUTargetLowering::LowerIntrinsicIABS(), llvm::AMDGPUTargetLowering::LowerIntrinsicLRP(), LowerIntVSETCC_AVX512(), llvm::MSP430TargetLowering::LowerJumpTable(), LowerLabelRef(), llvm::AMDGPUTargetLowering::LowerLOAD(), llvm::MipsTargetLowering::lowerLOAD(), LowerLOAD_SUB(), LowerMemOpCallTo(), lowerMSABinaryBitImmIntr(), lowerMSABitClear(), lowerMSABitClearImm(), lowerMSACopyIntr(), lowerMSALoadIntr(), lowerMSASplatZExt(), lowerMSAStoreIntr(), LowerMUL(), LowerMUL_LOHI(), lowerMUL_LOHI32(), llvm::R600TargetLowering::LowerOperation(), LowerPREFETCH(), llvm::AMDGPUTargetLowering::LowerReturn(), llvm::HexagonTargetLowering::LowerReturn(), llvm::SystemZTargetLowering::LowerReturn(), llvm::NVPTXTargetLowering::LowerReturn(), llvm::SparcTargetLowering::LowerReturn_32(), llvm::SparcTargetLowering::LowerReturn_64(), llvm::MSP430TargetLowering::LowerRETURNADDR(), llvm::HexagonTargetLowering::LowerRETURNADDR(), LowerRETURNADDR(), LowerReverse_VECTOR_SHUFFLEv16i8_v8i16(), LowerSCALAR_TO_VECTOR(), LowerScalarImmediateShift(), LowerScalarVariableShift(), LowerSDIV(), LowerSDIV_v4i16(), LowerSDIV_v4i8(), llvm::AMDGPUTargetLowering::LowerSDIVREM(), llvm::MSP430TargetLowering::LowerSELECT_CC(), LowerSELECT_CC(), llvm::MSP430TargetLowering::LowerSETCC(), LowerShift(), LowerShiftParts(), llvm::MSP430TargetLowering::LowerShifts(), llvm::MSP430TargetLowering::LowerSIGN_EXTEND(), LowerSIGN_EXTEND(), LowerSIGN_EXTEND_AVX512(), LowerSINT_TO_FP(), llvm::AMDGPUTargetLowering::LowerSTORE(), LowerToTLSExecModel(), LowerToTLSGeneralDynamicModel32(), LowerToTLSLocalDynamicModel(), LowerUDIV(), LowerUMULO_SMULO(), lowerV16I8VectorShuffle(), lowerV2F64VectorShuffle(), lowerV2I64VectorShuffle(), lowerV4F32VectorShuffle(), lowerV4F64VectorShuffle(), lowerV4I32VectorShuffle(), lowerV4I64VectorShuffle(), lowerV8I16BasicBlendVectorShuffle(), lowerV8I16SingleInputVectorShuffle(), lowerV8I16VectorShuffle(), LowerVAARG(), LowerVASTART(), 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_SHUFFLEv8i16(), LowerVECTOR_SHUFFLEv8i8(), LowerVectorAllZeroTest(), LowerVectorBroadcast(), LowerVectorFP_TO_INT(), LowerVectorINT_TO_FP(), LowerVectorIntExtend(), lowerVectorShuffle(), lowerVectorShuffleAsBlend(), lowerVectorShuffleAsByteRotate(), LowerVSELECTtoBlend(), LowerVSETCC(), LowerXALUO(), LowerXOR(), LowerZERO_EXTEND_AVX512(), llvm::SparcTargetLowering::makeAddress(), llvm::SparcTargetLowering::makeHiLoPair(), matchAddSub(), MaterializeSETB(), MoveBelowOrigChain(), NarrowVectorLoadToElement(), NormalizeBuildVector(), NormalizeVectorShuffle(), OptimizeConditionalInDecrement(), partitionShuffleOfConcats(), PerformADCCombine(), performADDCombine(), PerformAddCombine(), PerformADDCombineWithOperands(), performAddSubLongCombine(), performANDCombine(), PerformANDCombine(), PerformAndCombine(), PerformARMBUILD_VECTORCombine(), PerformBFICombine(), performBitcastCombine(), performBRCONDCombine(), PerformBrCondCombine(), PerformBUILD_VECTORCombine(), llvm::ARMTargetLowering::PerformCMOVCombine(), PerformCMOVCombine(), performConcatVectorsCombine(), performCONDCombine(), llvm::R600TargetLowering::PerformDAGCombine(), llvm::SITargetLowering::PerformDAGCombine(), llvm::AMDGPUTargetLowering::PerformDAGCombine(), llvm::SystemZTargetLowering::PerformDAGCombine(), llvm::PPCTargetLowering::PerformDAGCombine(), performDivRemCombine(), performDSPShiftCombine(), performExtendCombine(), PerformExtendCombine(), PerformEXTRACT_VECTOR_ELTCombine(), PerformFADDCombine(), PerformFMACombine(), PerformFMinFMaxCombine(), PerformFSUBCombine(), PerformInsertEltCombine(), PerformINSERTPSCombine(), performIntegerAbsCombine(), PerformINTRINSIC_WO_CHAINCombine(), performIntrinsicCombine(), PerformIntrinsicCombine(), performIntToFpCombine(), PerformISDSETCCCombine(), PerformLOADCombine(), performMulCombine(), PerformMULCombine(), PerformMulCombine(), performORCombine(), PerformORCombine(), PerformOrCombine(), PerformSELECT_CCCombine(), performSELECTCombine(), performSelectCombine(), PerformSELECTCombine(), performSetccAddFolding(), performSETCCCombine(), PerformSETCCCombine(), PerformShiftCombine(), PerformSHLCombine(), PerformShuffleCombine(), PerformShuffleCombine256(), PerformSIGN_EXTEND_INREGCombine(), PerformSINT_TO_FPCombine(), performSRACombine(), performSTORECombine(), PerformSTORECombine(), PerformSubCombine(), PerformTargetShuffleCombine(), PerformVCVTCombine(), PerformVDIVCombine(), PerformVDUPLANECombine(), PerformVECTOR_SHUFFLECombine(), performVectorCompareAndMaskUnaryOpCombine(), PerformVMOVDRRCombine(), PerformVMULCombine(), performVSELECTCombine(), performVSelectCombine(), PerformVZEXT_MOVLCombine(), performVZEXTCombine(), performXORCombine(), PerformZExtCombine(), PrepareCall(), PrepareTailCall(), llvm::SystemZTargetLowering::prepareVolatileOrAtomicLoad(), PromoteSplat(), llvm::AArch64TargetLowering::ReconstructShuffle(), ReorganizeVector(), ReplaceAllUsesWith(), ReplaceBITCASTResults(), replaceInChain(), ReplaceINTRINSIC_W_CHAIN(), ReplaceLoadVector(), llvm::R600TargetLowering::ReplaceNodeResults(), llvm::PPCTargetLowering::ReplaceNodeResults(), ReplaceREADCYCLECOUNTER(), replaceSplatVectorStore(), RewriteAsNarrowerShuffle(), llvm::AMDGPUTargetLowering::ScalarizeVectorLoad(), llvm::AMDGPUTargetLowering::ScalarizeVectorStore(), selectMADD(), selectMSUB(), ShrinkLoadReplaceStoreWithStore(), llvm::TargetLowering::SimplifySetCC(), SkipExtensionForVMULL(), llvm::TargetLowering::softenSetCCOperands(), splitAndLower256BitVectorShuffle(), SplitVector(), llvm::AMDGPUTargetLowering::SplitVectorLoad(), llvm::AMDGPUTargetLowering::SplitVectorStore(), SplitVSETCC(), tryCombineCRC32(), tryCombineFixedPointConvert(), tryCombineLongOpWithDup(), tryCombineShiftImm(), tryCombineToBSL(), tryCombineToEXTR(), tryExtendDUPToExtractHigh(), tryFormConcatFromShuffle(), tryLowerToSLI(), TryMULWIDECombine(), tryToFoldExtendOfConstant(), UnrollVectorOp(), llvm::SelectionDAGBuilder::visitBitTestCase(), llvm::SelectionDAGBuilder::visitBitTestHeader(), llvm::SelectionDAGBuilder::visitJumpTable(), llvm::SelectionDAGBuilder::visitJumpTableHeader(), llvm::SelectionDAGBuilder::visitSPDescriptorParent(), llvm::SelectionDAGBuilder::visitSwitchCase(), WidenMaskArithmetic(), WidenVector(), and XFormVExtractWithShuffleIntoLoad().
Definition at line 2670 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::ISD::BUILD_VECTOR, 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::FoldingSet< T >::FindNodeOrInsertPos(), 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::FoldingSetImpl::InsertNode(), llvm::integerPartWidth, llvm::EVT::isFloatingPoint(), llvm::EVT::isInteger(), llvm::EVT::isVector(), llvm_unreachable, llvm::ISD::MERGE_VALUES, llvm::APFloat::opInexact, llvm::APFloat::opInvalidOp, llvm::APFloat::opOK, llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), 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, llvm::ISD::ZERO_EXTEND, and llvm::APInt::zextOrTrunc().
SDValue SelectionDAG::getNode | ( | unsigned | Opcode, |
SDLoc | DL, | ||
EVT | VT, | ||
SDValue | N1, | ||
SDValue | N2, | ||
bool | nuw = false , |
||
bool | nsw = false , |
||
bool | exact = false |
||
) |
Definition at line 3094 of file SelectionDAG.cpp.
References llvm::ISD::ADD, llvm::APFloat::add(), AddBinaryNodeIDCustom(), 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::FoldingSet< T >::FindNodeOrInsertPos(), 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::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::TargetLoweringBase::hasFloatingPointExceptions(), llvm::MVT::i1, llvm::ISD::INSERT_VECTOR_ELT, llvm::FoldingSetImpl::InsertNode(), llvm::isBinOpWithFlags(), 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(), 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, and llvm::ISD::XOR.
SDValue SelectionDAG::getNode | ( | unsigned | Opcode, |
SDLoc | DL, | ||
EVT | VT, | ||
SDValue | N1, | ||
SDValue | N2, | ||
SDValue | N3 | ||
) |
Definition at line 3565 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::FoldingSet< T >::FindNodeOrInsertPos(), 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::FoldingSetImpl::InsertNode(), llvm::EVT::isSimple(), llvm::EVT::isVector(), llvm_unreachable, llvm::SDNode::op_begin(), llvm::SDNode::op_end(), llvm::APFloat::opInvalidOp, llvm::APFloat::rmNearestTiesToEven, llvm::ISD::SELECT, llvm::ISD::SETCC, llvm::NVPTX::PTXLdStInstCode::V2, and llvm::ISD::VECTOR_SHUFFLE.
SDValue SelectionDAG::getNode | ( | unsigned | Opcode, |
SDLoc | DL, | ||
EVT | VT, | ||
SDValue | N1, | ||
SDValue | N2, | ||
SDValue | N3, | ||
SDValue | N4 | ||
) |
Definition at line 3669 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 3676 of file SelectionDAG.cpp.
References getNode().
Definition at line 4946 of file SelectionDAG.cpp.
References llvm::ArrayRef< T >::begin(), llvm::ArrayRef< T >::end(), getNode(), and llvm::ArrayRef< T >::size().
Definition at line 4962 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::ISD::BR_CC, llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), getNode(), getValueType(), getVTList(), llvm::MVT::Glue, llvm::FoldingSetImpl::InsertNode(), llvm::ISD::SELECT_CC, and llvm::ArrayRef< T >::size().
SDValue SelectionDAG::getNode | ( | unsigned | Opcode, |
SDLoc | DL, | ||
ArrayRef< EVT > | ResultTys, | ||
ArrayRef< SDValue > | Ops | ||
) |
Definition at line 5017 of file SelectionDAG.cpp.
References getNode(), and getVTList().
Definition at line 5022 of file SelectionDAG.cpp.
References AddNodeIDNode(), AND, llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), getNode(), llvm::SDValue::getOperand(), llvm::EVT::getScalarType(), llvm::EVT::getSizeInBits(), llvm::MVT::Glue, llvm::MVT::i1, llvm::FoldingSetImpl::InsertNode(), llvm::SDVTList::NumVTs, llvm::ISD::SHL_PARTS, llvm::ISD::SIGN_EXTEND_INREG, llvm::ArrayRef< T >::size(), llvm::ISD::SRA_PARTS, llvm::ISD::SRL_PARTS, and llvm::SDVTList::VTs.
SDValue SelectionDAG::getNode | ( | unsigned | Opcode, |
SDLoc | DL, | ||
SDVTList | VTs | ||
) |
Definition at line 5097 of file SelectionDAG.cpp.
References getNode(), and llvm::None.
Definition at line 5101 of file SelectionDAG.cpp.
References getNode().
Definition at line 5107 of file SelectionDAG.cpp.
References getNode().
SDValue SelectionDAG::getNode | ( | unsigned | Opcode, |
SDLoc | DL, | ||
SDVTList | VTs, | ||
SDValue | N1, | ||
SDValue | N2, | ||
SDValue | N3 | ||
) |
Definition at line 5113 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 5119 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 5126 of file SelectionDAG.cpp.
References getNode().
SDNode * SelectionDAG::getNodeIfExists | ( | unsigned | Opcode, |
SDVTList | VTList, | ||
ArrayRef< SDValue > | Ops, | ||
bool | nuw = false , |
||
bool | nsw = false , |
||
bool | exact = false |
||
) |
getNodeIfExists - Get the specified node if it's already available, or else return NULL.
Definition at line 5749 of file SelectionDAG.cpp.
References AddBinaryNodeIDCustom(), AddNodeIDNode(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::MVT::Glue, llvm::isBinOpWithFlags(), llvm::SDVTList::NumVTs, and llvm::SDVTList::VTs.
SDValue SelectionDAG::getNOT | ( | SDLoc | DL, |
SDValue | Val, | ||
EVT | VT | ||
) |
getNOT - Create a bitwise NOT operation as (XOR Val, -1).
Definition at line 1047 of file SelectionDAG.cpp.
References llvm::APInt::getAllOnesValue(), getConstant(), getNode(), llvm::EVT::getScalarType(), llvm::EVT::getSizeInBits(), and llvm::ISD::XOR.
Referenced by lowerMSABitClear(), LowerVSETCC(), PerformISDSETCCCombine(), and llvm::TargetLowering::SimplifySetCC().
SDValue SelectionDAG::getRegister | ( | unsigned | Reg, |
EVT | VT | ||
) |
Definition at line 1632 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), getVTList(), llvm::FoldingSetImpl::InsertNode(), llvm::None, and llvm::ISD::Register.
Referenced by createCMovFP(), llvm::AMDGPUTargetLowering::CreateLiveInRegister(), FoldOperand(), getCopyFromReg(), getCopyToReg(), getGatherNode(), llvm::MipsDAGToDAGISel::getGlobalBaseReg(), llvm::MipsTargetLowering::getGlobalReg(), llvm::MipsTargetLowering::getOpndList(), getPrefetchNode(), getScatterNode(), LowerATOMIC_FENCE(), llvm::HexagonTargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::HexagonTargetLowering::LowerEH_RETURN(), llvm::SparcTargetLowering::LowerGlobalTLSAddress(), LowerINTRINSIC_W_CHAIN(), LowerMemOpCallTo(), llvm::HexagonTargetLowering::LowerReturn(), llvm::SystemZTargetLowering::LowerReturn(), llvm::SparcTargetLowering::LowerReturn_32(), llvm::SparcTargetLowering::LowerReturn_64(), LowerVASTART(), llvm::PPCTargetLowering::PerformDAGCombine(), performNEONPostLDSTCombine(), performPostLD1Combine(), PrepareCall(), llvm::PPCTargetLowering::SelectAddressRegImm(), llvm::PPCTargetLowering::SelectAddressRegRegOnly(), and llvm::SelectionDAGISel::SelectCodeCommon().
SDValue SelectionDAG::getRegisterMask | ( | const uint32_t * | RegMask | ) |
Definition at line 1646 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::FoldingSetNodeID::AddPointer(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), getVTList(), llvm::FoldingSetImpl::InsertNode(), llvm::None, llvm::ISD::RegisterMask, and llvm::MVT::Untyped.
Referenced by llvm::MipsTargetLowering::getOpndList(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), and llvm::SparcTargetLowering::LowerGlobalTLSAddress().
const SDValue& llvm::SelectionDAG::getRoot | ( | ) | const [inline] |
getRoot - Return the root tag of the SelectionDAG.
Definition at line 326 of file SelectionDAG.h.
Referenced by llvm::DOTGraphTraits< SelectionDAG * >::addCustomGraphFeatures(), llvm::checkForCycles(), dump(), llvm::SelectionDAGBuilder::getControlRoot(), llvm::ScheduleDAGSDNodes::getCustomGraphFeatures(), getMemCmpLoad(), llvm::SelectionDAGBuilder::getRoot(), Legalize(), llvm::SITargetLowering::LowerFormalArguments(), llvm::NVPTXTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), RemoveDeadNode(), RemoveDeadNodes(), ReplaceAllUsesOfValueWith(), ReplaceAllUsesWith(), and llvm::DAGTypeLegalizer::run().
SDValue llvm::SelectionDAG::getSelect | ( | SDLoc | DL, |
EVT | VT, | ||
SDValue | Cond, | ||
SDValue | LHS, | ||
SDValue | RHS | ||
) | [inline] |
Definition at line 727 of file SelectionDAG.h.
References getNode(), llvm::SDValue::getValueType(), llvm::EVT::isVector(), llvm::ISD::SELECT, and llvm::ISD::VSELECT.
Referenced by performSelectCombine().
SDValue llvm::SelectionDAG::getSelectCC | ( | SDLoc | DL, |
SDValue | LHS, | ||
SDValue | RHS, | ||
SDValue | True, | ||
SDValue | False, | ||
ISD::CondCode | Cond | ||
) | [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 740 of file SelectionDAG.h.
References getCondCode(), getNode(), llvm::SDValue::getValueType(), and llvm::ISD::SELECT_CC.
Referenced by llvm::TargetLowering::expandFP_TO_SINT(), llvm::AMDGPUTargetLowering::LowerSDIVREM(), llvm::R600TargetLowering::PerformDAGCombine(), and llvm::R600TargetLowering::ReplaceNodeResults().
const TargetSelectionDAGInfo& llvm::SelectionDAG::getSelectionDAGInfo | ( | ) | const [inline] |
Definition at line 282 of file SelectionDAG.h.
SDValue llvm::SelectionDAG::getSetCC | ( | SDLoc | DL, |
EVT | VT, | ||
SDValue | LHS, | ||
SDValue | RHS, | ||
ISD::CondCode | Cond | ||
) | [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 714 of file SelectionDAG.h.
References getCondCode(), getNode(), llvm::SDValue::getValueType(), llvm::EVT::isVector(), llvm::ISD::SETCC, and llvm::ISD::SETCC_INVALID.
Referenced by FoldSetCC(), llvm::AMDGPUTargetLowering::LowerDIVREM24(), LowerUMULO_SMULO(), llvm::PPCTargetLowering::PerformDAGCombine(), PerformISDSETCCCombine(), performSELECTCombine(), PerformSELECTCombine(), performVSelectCombine(), llvm::TargetLowering::SimplifySetCC(), llvm::SelectionDAGBuilder::visitBitTestCase(), llvm::SelectionDAGBuilder::visitBitTestHeader(), llvm::SelectionDAGBuilder::visitJumpTableHeader(), llvm::SelectionDAGBuilder::visitSPDescriptorParent(), and llvm::SelectionDAGBuilder::visitSwitchCase().
SDValue SelectionDAG::getSExtOrTrunc | ( | SDValue | Op, |
SDLoc | DL, | ||
EVT | VT | ||
) |
getSExtOrTrunc - Convert Op, which must be of integer type, to the integer type VT, by either sign-extending or truncating it.
Definition at line 982 of file SelectionDAG.cpp.
References llvm::EVT::bitsGT(), getNode(), llvm::SDValue::getValueType(), llvm::ISD::SIGN_EXTEND, and llvm::ISD::TRUNCATE.
Referenced by llvm::TargetLowering::expandFP_TO_SINT(), getNode(), llvm::AMDGPUTargetLowering::LowerDIVREM24(), and LowerExtendedLoad().
SDValue SelectionDAG::getShiftAmountOperand | ( | EVT | LHSTy, |
SDValue | Op | ||
) |
getShiftAmountOperand - Return the specified value casted to the target's desired shift amount type.
Definition at line 1756 of file SelectionDAG.cpp.
References llvm::EVT::bitsGT(), getNode(), llvm::TargetLoweringBase::getShiftAmountTy(), llvm::TargetMachine::getSubtargetImpl(), llvm::TargetSubtargetInfo::getTargetLowering(), llvm::SDValue::getValueType(), llvm::EVT::isVector(), llvm::ISD::TRUNCATE, and llvm::ISD::ZERO_EXTEND.
Referenced by UnrollVectorOp().
SDValue SelectionDAG::getSignExtendVectorInReg | ( | SDValue | Op, |
SDLoc | DL, | ||
EVT | VT | ||
) |
getSignExtendVectorInReg - Return an operation which will sign extend the low lanes of the operand into the specified vector type. For example, this can convert a v16i8 into a v4i32 by sign extending the low four lanes of the operand from i8 to i32.
Definition at line 1025 of file SelectionDAG.cpp.
References getNode(), llvm::EVT::getSizeInBits(), llvm::SDValue::getValueType(), llvm::EVT::getVectorNumElements(), llvm::EVT::isVector(), and llvm::ISD::SIGN_EXTEND_VECTOR_INREG.
std::pair< EVT, EVT > SelectionDAG::GetSplitDestVTs | ( | const EVT & | VT | ) | const |
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 6578 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(), llvm::AMDGPUTargetLowering::SplitVectorLoad(), llvm::AMDGPUTargetLowering::SplitVectorStore(), and SplitVSETCC().
getSrcValue - Construct a node to track a Value* through the backend.
Definition at line 1699 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::FoldingSetNodeID::AddPointer(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::Value::getType(), getVTList(), llvm::FoldingSetImpl::InsertNode(), llvm::Type::isPointerTy(), llvm::None, 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 3685 of file SelectionDAG.cpp.
References getEntryNode(), getNode(), llvm::MVT::Other, llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), and llvm::ISD::TokenFactor.
SDValue SelectionDAG::getStore | ( | SDValue | Chain, |
SDLoc | dl, | ||
SDValue | Val, | ||
SDValue | Ptr, | ||
MachinePointerInfo | PtrInfo, | ||
bool | isVolatile, | ||
bool | isNonTemporal, | ||
unsigned | Alignment, | ||
const AAMDNodes & | AAInfo = AAMDNodes() |
||
) |
getStore - Helper function to build ISD::STORE nodes.
Definition at line 4788 of file SelectionDAG.cpp.
References getEVTAlignment(), getMachineFunction(), llvm::MachineFunction::getMachineMemOperand(), llvm::EVT::getStoreSize(), llvm::SDValue::getValueType(), InferPointerInfo(), llvm::PointerUnion< PT1, PT2 >::isNull(), llvm::MachineMemOperand::MONonTemporal, llvm::MachineMemOperand::MOStore, llvm::MachineMemOperand::MOVolatile, llvm::MVT::Other, and llvm::MachinePointerInfo::V.
Referenced by EmitTailCallStoreFPAndRetAddr(), EmitTailCallStoreRetAddr(), llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForMemset(), ExpandUnalignedLoad(), ExpandUnalignedStore(), getMemcpyLoadsAndStores(), getMemmoveLoadsAndStores(), getMemsetStores(), getReadTimeStampCounter(), getTruncStore(), llvm::HexagonTargetLowering::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(), LowerVASTART(), memsetStore(), PerformEXTRACT_VECTOR_ELTCombine(), performSTORECombine(), PerformSTORECombine(), replaceSplatVectorStore(), ShrinkLoadReplaceStoreWithStore(), llvm::AMDGPUTargetLowering::SplitVectorLoad(), and StoreTailCallArgumentsToStackSlot().
SDValue SelectionDAG::getStore | ( | SDValue | Chain, |
SDLoc | dl, | ||
SDValue | Val, | ||
SDValue | Ptr, | ||
MachineMemOperand * | MMO | ||
) |
Definition at line 4815 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), encodeMemSDNodeFlags(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::MachinePointerInfo::getAddrSpace(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), llvm::MachineMemOperand::getPointerInfo(), getUNDEF(), llvm::SDValue::getValueType(), getVTList(), llvm::FoldingSetImpl::InsertNode(), llvm::MachineMemOperand::isInvariant(), llvm::MachineMemOperand::isNonTemporal(), llvm::MachineMemOperand::isVolatile(), llvm::MVT::Other, llvm::ISD::STORE, llvm::RegState::Undef, and llvm::ISD::UNINDEXED.
const TargetSubtargetInfo& llvm::SelectionDAG::getSubtarget | ( | ) | const [inline] |
Definition at line 280 of file SelectionDAG.h.
References llvm::MachineFunction::getSubtarget().
Referenced by llvm::XCoreSelectionDAGInfo::EmitTargetCodeForMemcpy(), FoldOperand(), llvm::SDNode::getOperationName(), llvm::PPC::getVSPLTImmediate(), llvm::SelectionDAGBuilder::init(), llvm::PPC::isVMRGHShuffleMask(), llvm::PPC::isVMRGLShuffleMask(), llvm::PPC::isVPKUHUMShuffleMask(), llvm::PPC::isVPKUWUMShuffleMask(), llvm::HexagonTargetLowering::LowerCall(), llvm::HexagonTargetLowering::LowerDYNAMIC_STACKALLOC(), llvm::SystemZTargetLowering::LowerFormalArguments(), llvm::NVPTXTargetLowering::LowerFormalArguments(), llvm::HexagonTargetLowering::LowerFRAMEADDR(), llvm::HexagonTargetLowering::LowerINLINEASM(), LowerINTRINSIC_W_CHAIN(), and llvm::HexagonTargetLowering::LowerRETURNADDR().
const TargetMachine& llvm::SelectionDAG::getTarget | ( | ) | const [inline] |
Definition at line 279 of file SelectionDAG.h.
References llvm::SystemZISD::TM.
Referenced by llvm::X86SelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::AArch64SelectionDAGInfo::EmitTargetCodeForMemset(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset(), llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemset(), GetNegatedExpression(), getNode(), llvm::SDNode::getOperationName(), isKnownNeverNaN(), llvm::PPC::isVSLDOIShuffleMask(), llvm::SelectionDAGBuilder::LowerCallTo(), PerformFMinFMaxCombine(), PerformSELECT_CCCombine(), PerformSELECTCombine(), PerformSTORECombine(), and PrepareCall().
SDValue llvm::SelectionDAG::getTargetBlockAddress | ( | const BlockAddress * | BA, |
EVT | VT, | ||
int64_t | Offset = 0 , |
||
unsigned char | TargetFlags = 0 |
||
) | [inline] |
Definition at line 504 of file SelectionDAG.h.
References getBlockAddress().
Referenced by llvm::MSP430TargetLowering::LowerBlockAddress(), llvm::HexagonTargetLowering::LowerBlockAddress(), and llvm::SparcTargetLowering::withTargetFlags().
SDValue llvm::SelectionDAG::getTargetConstant | ( | uint64_t | Val, |
EVT | VT, | ||
bool | isOpaque = false |
||
) | [inline] |
Definition at line 430 of file SelectionDAG.h.
References getConstant().
Referenced by addStackMapLiveVars(), buildRSRC(), FoldOperand(), llvm::PPC::get_VSPLTI_elt(), getAL(), getAtomicLoadArithTargetConstant(), getCopyFromParts(), getGatherNode(), getLeftShift(), getOnesVector(), getPrefetchNode(), getScatterNode(), getTargetExtractSubreg(), getTargetInsertSubreg(), getVAArg(), getZeroVector(), isNEONModifiedImm(), llvm::SparcTargetLowering::LowerAsmOperandForConstraint(), llvm::SystemZTargetLowering::LowerAsmOperandForConstraint(), llvm::ARMTargetLowering::LowerAsmOperandForConstraint(), llvm::PPCTargetLowering::LowerAsmOperandForConstraint(), llvm::TargetLowering::LowerAsmOperandForConstraint(), LowerATOMIC_FENCE(), LowerBITCAST(), llvm::SparcTargetLowering::LowerCall_32(), LowerCMP_SWAP(), llvm::SparcTargetLowering::LowerF128Compare(), LowerF128Load(), LowerF128Store(), llvm::AMDGPUTargetLowering::LowerLOAD(), llvm::R600TargetLowering::LowerOperation(), llvm::AMDGPUTargetLowering::LowerSTORE(), lowerVECTOR_SHUFFLE_VSHF(), LowerZERO_EXTEND_AVX512(), narrowIfNeeded(), performBitcastCombine(), llvm::PPCTargetLowering::PerformDAGCombine(), ReplaceBITCASTResults(), llvm::PPCTargetLowering::SelectAddressRegImm(), llvm::SelectionDAGISel::SelectCodeCommon(), llvm::SelectionDAGISel::SelectInlineAsmMemoryOperands(), and Widen().
SDValue llvm::SelectionDAG::getTargetConstant | ( | const APInt & | Val, |
EVT | VT, | ||
bool | isOpaque = false |
||
) | [inline] |
Definition at line 433 of file SelectionDAG.h.
References getConstant().
SDValue llvm::SelectionDAG::getTargetConstant | ( | const ConstantInt & | Val, |
EVT | VT, | ||
bool | isOpaque = false |
||
) | [inline] |
Definition at line 436 of file SelectionDAG.h.
References getConstant().
SDValue llvm::SelectionDAG::getTargetConstantFP | ( | double | Val, |
EVT | VT | ||
) | [inline] |
Definition at line 445 of file SelectionDAG.h.
References getConstantFP().
Referenced by getZeroVector().
SDValue llvm::SelectionDAG::getTargetConstantFP | ( | const APFloat & | Val, |
EVT | VT | ||
) | [inline] |
Definition at line 448 of file SelectionDAG.h.
References getConstantFP().
SDValue llvm::SelectionDAG::getTargetConstantFP | ( | const ConstantFP & | Val, |
EVT | VT | ||
) | [inline] |
Definition at line 451 of file SelectionDAG.h.
References getConstantFP().
SDValue llvm::SelectionDAG::getTargetConstantPool | ( | const Constant * | C, |
EVT | VT, | ||
unsigned | Align = 0 , |
||
int | Offset = 0 , |
||
unsigned char | TargetFlags = 0 |
||
) | [inline] |
Definition at line 474 of file SelectionDAG.h.
References Align(), and getConstantPool().
Referenced by llvm::HexagonTargetLowering::LowerConstantPool(), LowerConstantPool(), and llvm::SparcTargetLowering::withTargetFlags().
SDValue llvm::SelectionDAG::getTargetConstantPool | ( | MachineConstantPoolValue * | C, |
EVT | VT, | ||
unsigned | Align = 0 , |
||
int | Offset = 0 , |
||
unsigned char | TargetFlags = 0 |
||
) | [inline] |
Definition at line 482 of file SelectionDAG.h.
References Align(), and getConstantPool().
SDValue SelectionDAG::getTargetExternalSymbol | ( | const char * | Sym, |
EVT | VT, | ||
unsigned char | TargetFlags = 0 |
||
) |
Definition at line 1426 of file SelectionDAG.cpp.
Referenced by llvm::HexagonTargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::NVPTXTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::MSP430TargetLowering::LowerExternalSymbol(), llvm::SparcTargetLowering::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 5728 of file SelectionDAG.cpp.
References llvm::TargetOpcode::EXTRACT_SUBREG, getMachineNode(), getTargetConstant(), and llvm::MVT::i32.
Referenced by buildRSRC(), getAtomicLoadArithTargetConstant(), LowerF64Op(), LowerFNEGorFABS(), lowerGR128Binary(), llvm::R600TargetLowering::LowerOperation(), and NarrowVector().
SDValue llvm::SelectionDAG::getTargetFrameIndex | ( | int | FI, |
EVT | VT | ||
) | [inline] |
Definition at line 463 of file SelectionDAG.h.
References getFrameIndex().
Referenced by addStackMapLiveVars(), and llvm::PPCTargetLowering::SelectAddressRegImm().
SDValue llvm::SelectionDAG::getTargetGlobalAddress | ( | const GlobalValue * | GV, |
SDLoc | DL, | ||
EVT | VT, | ||
int64_t | offset = 0 , |
||
unsigned char | TargetFlags = 0 |
||
) | [inline] |
Definition at line 457 of file SelectionDAG.h.
References getGlobalAddress().
Referenced by GetTLSADDR(), llvm::TargetLowering::LowerAsmOperandForConstraint(), llvm::HexagonTargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::MSP430TargetLowering::LowerGlobalAddress(), llvm::HexagonTargetLowering::LowerGLOBALADDRESS(), llvm::NVPTXTargetLowering::LowerGlobalAddress(), 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 1372 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), getVTList(), llvm::FoldingSetImpl::InsertNode(), llvm::None, 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 5739 of file SelectionDAG.cpp.
References getMachineNode(), getTargetConstant(), llvm::MVT::i32, and llvm::TargetOpcode::INSERT_SUBREG.
Referenced by LowerF64Op(), and LowerFNEGorFABS().
SDValue llvm::SelectionDAG::getTargetJumpTable | ( | int | JTI, |
EVT | VT, | ||
unsigned char | TargetFlags = 0 |
||
) | [inline] |
Definition at line 468 of file SelectionDAG.h.
References getJumpTable().
Referenced by llvm::HexagonTargetLowering::LowerBR_JT(), and llvm::MSP430TargetLowering::LowerJumpTable().
const TargetLowering& llvm::SelectionDAG::getTargetLoweringInfo | ( | ) | const [inline] |
Definition at line 281 of file SelectionDAG.h.
Referenced by AddCombineToVPADDL(), addStackMapLiveVars(), buildFromShuffleMostly(), BuildVectorFromScalar(), EltsFromConsecutiveLoads(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset(), ExpandBITCAST(), getCopyFromParts(), getCopyFromPartsVector(), getCopyToParts(), getCopyToPartsVector(), getMemcpyLoadsAndStores(), getMemmoveLoadsAndStores(), getMemsetStores(), GetNegatedExpression(), llvm::SDNode::getOperationName(), isBLACompatibleAddress(), isConsecutiveLSLoc(), isExtendedBUILD_VECTOR(), isNEONModifiedImm(), LowerADDC_ADDE_SUBC_SUBE(), LowerATOMIC_STORE(), LowerExtendedLoad(), LowerFABSorFNEG(), LowerFCOPYSIGN(), LowerFSINCOS(), lowerIntegerElementInsertionVectorShuffle(), LowerMemOpCallTo(), LowerMUL_LOHI(), LowerSIGN_EXTEND_AVX512(), LowerVASTART(), LowerVECTOR_SHUFFLEv16i8(), LowerVectorBroadcast(), LowerVectorIntExtend(), LowerXALUO(), LowerZERO_EXTEND_AVX512(), llvm::ScheduleDAGSDNodes::newSUnit(), PerformADDCombineWithOperands(), PerformANDCombine(), PerformARMBUILD_VECTORCombine(), PerformBTCombine(), llvm::SITargetLowering::PerformDAGCombine(), llvm::AMDGPUTargetLowering::PerformDAGCombine(), performExtendCombine(), PerformExtendCombine(), PerformEXTRACT_VECTOR_ELTCombine(), PerformFMACombine(), PerformLOADCombine(), performORCombine(), PerformORCombine(), PerformSELECTCombine(), PerformShiftCombine(), PerformShuffleCombine(), PerformSTORECombine(), PerformVECTOR_SHUFFLECombine(), PerformVMOVRRDCombine(), PerformXORCombine(), PrepareCall(), ShrinkLoadReplaceStoreWithStore(), simplifyI24(), SkipExtensionForVMULL(), WidenMaskArithmetic(), and XFormVExtractWithShuffleIntoLoad().
SDValue SelectionDAG::getTruncStore | ( | SDValue | Chain, |
SDLoc | dl, | ||
SDValue | Val, | ||
SDValue | Ptr, | ||
MachinePointerInfo | PtrInfo, | ||
EVT | TVT, | ||
bool | isNonTemporal, | ||
bool | isVolatile, | ||
unsigned | Alignment, | ||
const AAMDNodes & | AAInfo = AAMDNodes() |
||
) |
Definition at line 4842 of file SelectionDAG.cpp.
References getEVTAlignment(), getMachineFunction(), llvm::MachineFunction::getMachineMemOperand(), llvm::EVT::getStoreSize(), llvm::SDValue::getValueType(), InferPointerInfo(), llvm::PointerUnion< PT1, PT2 >::isNull(), llvm::MachineMemOperand::MONonTemporal, llvm::MachineMemOperand::MOStore, llvm::MachineMemOperand::MOVolatile, llvm::MVT::Other, and llvm::MachinePointerInfo::V.
Referenced by ExpandUnalignedLoad(), ExpandUnalignedStore(), getMemcpyLoadsAndStores(), llvm::AMDGPUTargetLowering::ScalarizeVectorStore(), llvm::AMDGPUTargetLowering::SplitVectorLoad(), and llvm::AMDGPUTargetLowering::SplitVectorStore().
SDValue SelectionDAG::getTruncStore | ( | SDValue | Chain, |
SDLoc | dl, | ||
SDValue | Val, | ||
SDValue | Ptr, | ||
EVT | TVT, | ||
MachineMemOperand * | MMO | ||
) |
Definition at line 4869 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::EVT::bitsLT(), encodeMemSDNodeFlags(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), 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::FoldingSetImpl::InsertNode(), 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.
SDValue llvm::SelectionDAG::getUNDEF | ( | EVT | VT | ) | [inline] |
getUNDEF - Return an UNDEF node. UNDEF does not have a useful SDLoc.
Definition at line 649 of file SelectionDAG.h.
References getNode(), and llvm::ISD::UNDEF.
Referenced by buildFromShuffleMostly(), CompactSwizzlableVector(), Concat128BitVectors(), Concat256BitVectors(), ExpandBVWithShuffles(), ExpandHorizontalBinOp(), ExtractSubVector(), FoldSetCC(), getCopyFromPartsVector(), getCopyToPartsVector(), getExtLoad(), getLegalSplat(), getLoad(), getNode(), getShuffleScalarElt(), getShuffleVectorZeroOrUndef(), getStore(), getTargetVShiftNode(), getTruncStore(), llvm::SelectionDAGBuilder::getValueImpl(), getVectorShuffle(), isHorizontalBinOp(), LowerAsSplatVectorLoad(), LowerAVXExtend(), LowerBITCAST(), LowerBuildVectorv16i8(), LowerBuildVectorv8i16(), llvm::NVPTXTargetLowering::LowerCall(), LowerCONCAT_VECTORS(), LowerExtendedLoad(), llvm::R600TargetLowering::LowerFormalArguments(), llvm::SITargetLowering::LowerFormalArguments(), LowerFP_EXTEND(), lowerIntegerElementInsertionVectorShuffle(), llvm::MipsTargetLowering::lowerLOAD(), llvm::NVPTXTargetLowering::LowerReturn(), LowerSCALAR_TO_VECTOR(), LowerShift(), LowerSIGN_EXTEND(), lowerV16I8VectorShuffle(), lowerV4F32VectorShuffle(), lowerV4F64VectorShuffle(), lowerV8I16BasicBlendVectorShuffle(), lowerV8I16SingleInputVectorShuffle(), LowerVECTOR_SHUFFLE(), LowerVECTOR_SHUFFLE_256(), LowerVECTOR_SHUFFLEv8i16(), lowerVectorShuffle(), matchAddSub(), partitionShuffleOfConcats(), PerformARMBUILD_VECTORCombine(), llvm::R600TargetLowering::PerformDAGCombine(), PerformLOADCombine(), PerformShuffleCombine256(), PerformSTORECombine(), PerformVECTOR_SHUFFLECombine(), llvm::AArch64TargetLowering::ReconstructShuffle(), ReplaceBITCASTResults(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::TargetLowering::SimplifySetCC(), tryToFoldExtendOfConstant(), UnrollVectorOp(), WidenVector(), 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 4938 of file SelectionDAG.cpp.
References getNode(), getTargetConstant(), getVTList(), llvm::MVT::i32, llvm::MVT::Other, and llvm::ISD::VAARG.
Definition at line 1404 of file SelectionDAG.cpp.
References llvm::EVT::getSimpleVT(), llvm::EVT::isExtended(), llvm::EVT::isSimple(), and llvm::MVT::SimpleTy.
Referenced by convertLocVTToValVT(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset(), getAArch64Cmp(), getCopyFromParts(), getNode(), llvm::SparcTargetLowering::LowerCall_64(), LowerEXTRACT_VECTOR_ELT_SSE4(), llvm::SITargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::SparcTargetLowering::LowerFormalArguments_64(), llvm::AMDGPUTargetLowering::LowerLOAD(), lowerMSACopyIntr(), llvm::MSP430TargetLowering::LowerSIGN_EXTEND(), llvm::ARMTargetLowering::PerformCMOVCombine(), llvm::AMDGPUTargetLowering::PerformDAGCombine(), 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 1464 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), AddNodeIDNode(), llvm::BumpPtrAllocatorImpl< AllocatorT, SlabSize, SizeThreshold >::Allocate(), llvm::ISD::BITCAST, llvm::CallingConv::C, commuteShuffle(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::SDLoc::getDebugLoc(), llvm::SDLoc::getIROrder(), llvm::SDValue::getOpcode(), llvm::SDNode::getOperand(), getUNDEF(), llvm::SDValue::getValueType(), llvm::EVT::getVectorNumElements(), getVTList(), llvm::FoldingSetImpl::InsertNode(), llvm::LibFunc::memcpy, llvm::BitVector::none(), llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::ISD::UNDEF, and llvm::ISD::VECTOR_SHUFFLE.
Referenced by buildFromShuffleMostly(), BuildVSLDOI(), Compact8x32ShuffleNode(), ExpandBVWithShuffles(), GeneratePerfectShuffle(), getCommutedVectorShuffle(), getLegalSplat(), getMOVL(), getShuffleVectorZeroOrUndef(), getUnpackh(), getUnpackl(), getVectorShuffle(), LowerAsSplatVectorLoad(), LowerExtendedLoad(), lowerIntegerElementInsertionVectorShuffle(), LowerMUL(), LowerMUL_LOHI(), LowerSIGN_EXTEND(), lowerV16I8VectorShuffle(), lowerV2I64VectorShuffle(), lowerV4F64VectorShuffle(), lowerV4I32VectorShuffle(), lowerV8I16BasicBlendVectorShuffle(), lowerV8I16SingleInputVectorShuffle(), lowerV8I16VectorShuffle(), LowerVECTOR_SHUFFLE_128v4(), LowerVECTOR_SHUFFLE_256(), LowerVECTOR_SHUFFLEv8i16(), lowerVectorShuffle(), LowerVSETCC(), performSelectCombine(), PerformShuffleCombine(), PerformSTORECombine(), PerformVECTOR_SHUFFLECombine(), llvm::AArch64TargetLowering::ReconstructShuffle(), RewriteAsNarrowerShuffle(), splitAndLower256BitVectorShuffle(), TransformVSELECTtoBlendVECTOR_SHUFFLE(), and XFormVExtractWithShuffleIntoLoad().
SDValue llvm::SelectionDAG::getVectorShuffle | ( | EVT | VT, |
SDLoc | dl, | ||
SDValue | N1, | ||
SDValue | N2, | ||
ArrayRef< int > | MaskElts | ||
) | [inline] |
Definition at line 566 of file SelectionDAG.h.
References llvm::ArrayRef< T >::data(), llvm::EVT::getVectorNumElements(), getVectorShuffle(), and llvm::ArrayRef< T >::size().
getVTList - Return an SDVTList that represents the list of values specified.
Definition at line 5133 of file SelectionDAG.cpp.
References makeVTList().
Referenced by AddCombineTo64bitMLAL(), llvm::TargetLowering::BuildSDIV(), llvm::TargetLowering::BuildUDIV(), CloneNodeWithValues(), CombineBaseUpdate(), CombineVLDDUP(), createLoadLR(), createStoreLR(), EltsFromConsecutiveLoads(), emitCLC(), emitComparison(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForMemchr(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrcmp(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrcpy(), Expand64BitShift(), ExpandBITCAST(), llvm::TargetLowering::expandMUL(), GeneratePerfectShuffle(), getAArch64XALUOOp(), getAddrSpaceCast(), getAtomic(), getBasicBlock(), getBlockAddress(), getBoundedStrlen(), getCALLSEQ_END(), getCALLSEQ_START(), getConstant(), getConstantFP(), getConstantPool(), getConvertRndSat(), getCopyFromReg(), getCopyToReg(), getEHLabel(), getFrameIndex(), getGatherNode(), getGlobalAddress(), getIndexedStore(), getJumpTable(), getLoad(), getMachineNode(), getMDNode(), getMergeValues(), getNode(), getReadPerformanceCounter(), getReadTimeStampCounter(), getRegister(), getRegisterMask(), getScatterNode(), getSrcValue(), getStore(), getTargetIndex(), GetTLSADDR(), getTruncStore(), getVAArg(), getVectorShuffle(), LowerADDC_ADDE_SUBC_SUBE(), llvm::HexagonTargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::NVPTXTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), LowerCallResult(), llvm::TargetLowering::LowerCallTo(), LowerCMP_SWAP(), LowerCTLZ(), LowerCTLZ_ZERO_UNDEF(), LowerCTTZ(), LowerFSINCOS(), llvm::SparcTargetLowering::LowerGlobalTLSAddress(), LowerINTRINSIC_W_CHAIN(), LowerINTRINSIC_WO_CHAIN(), llvm::NVPTXTargetLowering::LowerReturn(), llvm::AMDGPUTargetLowering::LowerSDIVREM(), llvm::MSP430TargetLowering::LowerSELECT_CC(), llvm::MSP430TargetLowering::LowerSETCC(), LowerVECTOR_SHUFFLE(), LowerXALUO(), performCONDCombine(), llvm::PPCTargetLowering::PerformDAGCombine(), performIntegerAbsCombine(), performNEONPostLDSTCombine(), performPostLD1Combine(), PerformShuffleCombine256(), PrepareCall(), ReplaceATOMIC_LOAD(), ReplaceINTRINSIC_W_CHAIN(), ReplaceLoadVector(), llvm::R600TargetLowering::ReplaceNodeResults(), llvm::PPCTargetLowering::ReplaceNodeResults(), ReplaceREADCYCLECOUNTER(), llvm::SelectionDAGISel::SelectCodeCommon(), and SelectNodeTo().
SDVTList SelectionDAG::getVTList | ( | EVT | VT1, |
EVT | VT2 | ||
) |
Definition at line 5137 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), llvm::BumpPtrAllocatorImpl< AllocatorT, SlabSize, SizeThreshold >::Allocate(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::EVT::getRawBits(), llvm::SDVTListNode::getSDVTList(), llvm::FoldingSetImpl::InsertNode(), and llvm::FoldingSetNodeID::Intern().
SDVTList SelectionDAG::getVTList | ( | EVT | VT1, |
EVT | VT2, | ||
EVT | VT3 | ||
) |
Definition at line 5155 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), llvm::BumpPtrAllocatorImpl< AllocatorT, SlabSize, SizeThreshold >::Allocate(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::EVT::getRawBits(), llvm::SDVTListNode::getSDVTList(), llvm::FoldingSetImpl::InsertNode(), and llvm::FoldingSetNodeID::Intern().
Definition at line 5175 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), llvm::BumpPtrAllocatorImpl< AllocatorT, SlabSize, SizeThreshold >::Allocate(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::EVT::getRawBits(), llvm::SDVTListNode::getSDVTList(), llvm::FoldingSetImpl::InsertNode(), and llvm::FoldingSetNodeID::Intern().
SDVTList SelectionDAG::getVTList | ( | ArrayRef< EVT > | VTs | ) |
Definition at line 5197 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), llvm::BumpPtrAllocatorImpl< AllocatorT, SlabSize, SizeThreshold >::Allocate(), llvm::ArrayRef< T >::begin(), llvm::ArrayRef< T >::end(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::SDVTListNode::getSDVTList(), llvm::FoldingSetImpl::InsertNode(), llvm::FoldingSetNodeID::Intern(), and llvm::ArrayRef< T >::size().
SDValue SelectionDAG::getZeroExtendInReg | ( | SDValue | Op, |
SDLoc | DL, | ||
EVT | SrcTy | ||
) |
getZeroExtendInReg - Return the expression required to zero extend the Op value assuming it was the smaller SrcTy value.
Definition at line 1003 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().
Referenced by llvm::AMDGPUTargetLowering::LowerLOAD(), llvm::AMDGPUTargetLowering::LowerSTORE(), and llvm::AMDGPUTargetLowering::PerformDAGCombine().
SDValue SelectionDAG::getZeroExtendVectorInReg | ( | SDValue | Op, |
SDLoc | DL, | ||
EVT | VT | ||
) |
getZeroExtendVectorInReg - Return an operation which will zero extend the low lanes of the operand into the specified vector type. For example, this can convert a v16i8 into a v4i32 by zero extending the low four lanes of the operand from i8 to i32.
Definition at line 1035 of file SelectionDAG.cpp.
References getNode(), llvm::EVT::getSizeInBits(), llvm::SDValue::getValueType(), llvm::EVT::getVectorNumElements(), llvm::EVT::isVector(), and llvm::ISD::ZERO_EXTEND_VECTOR_INREG.
SDValue SelectionDAG::getZExtOrTrunc | ( | SDValue | Op, |
SDLoc | DL, | ||
EVT | VT | ||
) |
getZExtOrTrunc - Convert Op, which must be of integer type, to the integer type VT, by either zero-extending or truncating it.
Definition at line 988 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(), llvm::TargetLowering::expandFP_TO_SINT(), llvm::AMDGPUTargetLowering::LowerDIVREM24(), llvm::AMDGPUTargetLowering::LowerGlobalAddress(), LowerINTRINSIC_W_CHAIN(), llvm::AMDGPUTargetLowering::SplitVectorLoad(), llvm::SelectionDAGBuilder::visitBitTestHeader(), and llvm::SelectionDAGBuilder::visitJumpTableHeader().
bool llvm::SelectionDAG::hasDebugValues | ( | ) | const [inline] |
hasDebugValues - Return true if there are any SDDbgValue nodes associated with this SelectionDAG.
Definition at line 1100 of file SelectionDAG.h.
References llvm::SDDbgInfo::empty().
Referenced by llvm::ScheduleDAGSDNodes::EmitSchedule().
unsigned SelectionDAG::InferPtrAlignment | ( | SDValue | Ptr | ) | const |
InferPtrAlignment - Infer alignment of a load / store address. Return 0 if it cannot be inferred.
Definition at line 6537 of file SelectionDAG.cpp.
References Align(), computeKnownBits(), llvm::SDValue::getConstantOperandVal(), llvm::TargetLoweringBase::getDataLayout(), llvm::MachineFunction::getFrameInfo(), getMachineFunction(), llvm::SDValue::getNode(), llvm::MachineFrameInfo::getObjectAlignment(), llvm::SDValue::getOperand(), llvm::TargetLoweringBase::getPointerTypeSizeInBits(), llvm::TargetMachine::getSubtargetImpl(), llvm::TargetSubtargetInfo::getTargetLowering(), llvm::GlobalValue::getType(), isBaseWithConstantOffset(), llvm::TargetLowering::isGAPlusOffset(), and llvm::MinAlign().
Referenced by computeKnownBits(), EltsFromConsecutiveLoads(), getMemcpyLoadsAndStores(), getMemmoveLoadsAndStores(), and LowerAsSplatVectorLoad().
void SelectionDAG::init | ( | MachineFunction & | mf, |
const TargetLowering * | TLI | ||
) |
init - Prepare this SelectionDAG to process code in the given MachineFunction.
Definition at line 919 of file SelectionDAG.cpp.
References llvm::Function::getContext(), and llvm::MachineFunction::getFunction().
Referenced by llvm::SelectionDAGISel::runOnMachineFunction().
bool SelectionDAG::isBaseWithConstantOffset | ( | SDValue | Op | ) | const |
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 2595 of file SelectionDAG.cpp.
References llvm::ISD::ADD, llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), MaskedValueIsZero(), llvm::ISD::OR, and OR.
Referenced by InferPtrAlignment(), isConsecutiveLoad(), isConsecutiveLSLoc(), and LowerAsSplatVectorLoad().
static bool llvm::SelectionDAG::isCommutativeBinOp | ( | unsigned | Opcode | ) | [inline, static] |
isCommutativeBinOp - Returns true if the opcode is a commutative binary operation.
Definition at line 1049 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 6495 of file SelectionDAG.cpp.
References llvm::ARMISD::BFI, llvm::ISD::FrameIndex, 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::getSubtargetImpl(), llvm::TargetSubtargetInfo::getTargetLowering(), llvm::SDNode::getValueType(), isBaseWithConstantOffset(), and llvm::TargetLowering::isGAPlusOffset().
Referenced by EltsFromConsecutiveLoads().
bool SelectionDAG::isEqualTo | ( | SDValue | A, |
SDValue | B | ||
) | const |
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 2640 of file SelectionDAG.cpp.
Referenced by matchIntegerMINMAX(), PerformSELECT_CCCombine(), and PerformSELECTCombine().
bool SelectionDAG::isKnownNeverNaN | ( | SDValue | Op | ) | const |
isKnownNeverNan - Test whether the given SDValue is known to never be NaN.
Definition at line 2609 of file SelectionDAG.cpp.
References llvm::CallingConv::C, and getTarget().
Referenced by PerformSELECT_CCCombine(), and PerformSELECTCombine().
bool SelectionDAG::isKnownNeverZero | ( | SDValue | Op | ) | const |
isKnownNeverZero - Test whether the given SDValue is known to never be positive or negative Zero.
Definition at line 2623 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.
Definition at line 4313 of file LegalizeDAG.cpp.
References allnodes_begin(), allnodes_end(), AssignTopologicalOrder(), DeleteNode(), llvm::SDValue::getNode(), getRoot(), llvm::SmallPtrSetImpl< PtrType >::insert(), N, RemoveDeadNodes(), and llvm::SDNode::use_empty().
bool SelectionDAG::LegalizeOp | ( | SDNode * | N, |
SmallSetVector< SDNode *, 16 > & | UpdatedNodes | ||
) |
Transforms a SelectionDAG node and any operands to it into a node that is compatible with the target instruction selector, as indicated by the TargetLowering object.
N
is a valid, legal node after calling this.This essentially runs a single recursive walk of the Legalize
process over the given node (and its operands). This can be used to incrementally legalize the DAG. All of the nodes which are directly replaced, potentially including N, are added to the output parameter UpdatedNodes
so that the delta to the DAG can be understood by the caller.
When this returns false, N has been legalized in a way that make the pointer passed in no longer valid. It may have even been deleted from the DAG, and so it shouldn't be used further. When this returns true, the N passed in is a legal node, and can be immediately processed as such. This may still have done some work on the DAG, and will still populate UpdatedNodes with any new nodes replacing those originally in the DAG.
Definition at line 4354 of file LegalizeDAG.cpp.
References llvm::SmallPtrSetImpl< PtrType >::count(), and llvm::SmallPtrSetImpl< PtrType >::insert().
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 1112 of file LegalizeTypes.cpp.
References llvm::DAGTypeLegalizer::run().
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 992 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 1921 of file SelectionDAG.cpp.
References computeKnownBits().
Referenced by llvm::SelectionDAGISel::CheckAndMask(), llvm::XCoreSelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::TargetLowering::expandMUL(), isBaseWithConstantOffset(), isTruncWithZeroHighBitsInput(), llvm::PPCTargetLowering::PerformDAGCombine(), PerformORCombine(), PerformShiftCombine(), ShrinkLoadReplaceStoreWithStore(), SignBitIsZero(), and llvm::TargetLowering::SimplifySetCC().
SDNode * SelectionDAG::MorphNodeTo | ( | SDNode * | N, |
unsigned | Opc, | ||
SDVTList | VTs, | ||
ArrayRef< SDValue > | Ops | ||
) |
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.
However, note that MorphNodeTo recursively deletes dead nodes from the DAG. As a consequence it isn't appropriate to use from within the DAG combiner or the legalizer which maintain worklists that would need to be updated when deleting things.
Definition at line 5484 of file SelectionDAG.cpp.
References AddNodeIDNode(), llvm::BumpPtrAllocatorImpl< AllocatorT, SlabSize, SizeThreshold >::Allocate(), llvm::array_lengthof(), llvm::ArrayRef< T >::data(), llvm::SmallPtrSetImplBase::empty(), llvm::FoldingSet< T >::FindNodeOrInsertPos(), llvm::SDUse::getNode(), llvm::MVT::Glue, I, llvm::SDNode::InitOperands(), llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::FoldingSetImpl::InsertNode(), llvm::SDVTList::NumVTs, llvm::SDNode::op_begin(), llvm::SDNode::op_end(), llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), RemoveDeadNodes(), llvm::ArrayRef< T >::size(), llvm::SDNode::use_empty(), and llvm::SDVTList::VTs.
Referenced by CloneNodeWithValues(), 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 660 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 611 of file SelectionDAG.cpp.
References allnodes_begin(), allnodes_end(), llvm::NVPTXISD::Dummy, getRoot(), llvm::HandleSDNode::getValue(), I, llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), and setRoot().
Referenced by Legalize(), 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 631 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 >::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 6028 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().
void SelectionDAG::ReplaceAllUsesOfValueWith | ( | SDValue | From, |
SDValue | To | ||
) |
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 5951 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(), LowerCMP_SWAP(), LowerExtendedLoad(), llvm::PPCTargetLowering::PerformDAGCombine(), performDivRemCombine(), PerformEXTRACT_VECTOR_ELTCombine(), performIntToFpCombine(), PerformShuffleCombine256(), PerformSINT_TO_FPCombine(), ReplaceAllUsesOfValuesWith(), llvm::AMDGPUTargetLowering::ReplaceNodeResults(), llvm::SelectionDAGISel::ReplaceUses(), llvm::SelectionDAGISel::SelectCodeCommon(), selectMADD(), and selectMSUB().
void SelectionDAG::ReplaceAllUsesWith | ( | SDValue | FromN, |
SDValue | To | ||
) |
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 5819 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(), performCONDCombine(), ReplaceAllUsesOfValueWith(), ReplaceAllUsesWith(), and llvm::SelectionDAGISel::ReplaceUses().
void SelectionDAG::ReplaceAllUsesWith | ( | SDNode * | From, |
SDNode * | To | ||
) |
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 5866 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().
void SelectionDAG::ReplaceAllUsesWith | ( | SDNode * | From, |
const SDValue * | To | ||
) |
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 5913 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().
void llvm::SelectionDAG::RepositionNode | ( | allnodes_iterator | Position, |
SDNode * | N | ||
) | [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 1043 of file SelectionDAG.h.
References llvm::ilist< NodeTy >::insert(), and llvm::iplist< NodeTy, Traits >::remove().
Referenced by insertDAGNode(), and InsertDAGNode().
SDNode * SelectionDAG::SelectNodeTo | ( | SDNode * | N, |
unsigned | MachineOpc, | ||
EVT | VT | ||
) |
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 5347 of file SelectionDAG.cpp.
References getVTList(), and llvm::None.
Referenced by SelectNodeTo().
Definition at line 5353 of file SelectionDAG.cpp.
References getVTList(), and SelectNodeTo().
SDNode * SelectionDAG::SelectNodeTo | ( | SDNode * | N, |
unsigned | TargetOpc, | ||
EVT | VT, | ||
SDValue | Op1, | ||
SDValue | Op2 | ||
) |
Definition at line 5360 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 5368 of file SelectionDAG.cpp.
References getVTList(), and SelectNodeTo().
SDNode * SelectionDAG::SelectNodeTo | ( | SDNode * | N, |
unsigned | TargetOpc, | ||
EVT | VT, | ||
ArrayRef< SDValue > | Ops | ||
) |
Definition at line 5376 of file SelectionDAG.cpp.
References getVTList(), and SelectNodeTo().
Definition at line 5388 of file SelectionDAG.cpp.
References getVTList(), llvm::None, and SelectNodeTo().
SDNode * SelectionDAG::SelectNodeTo | ( | SDNode * | N, |
unsigned | TargetOpc, | ||
EVT | VT1, | ||
EVT | VT2, | ||
ArrayRef< SDValue > | Ops | ||
) |
Definition at line 5382 of file SelectionDAG.cpp.
References getVTList(), and SelectNodeTo().
SDNode * SelectionDAG::SelectNodeTo | ( | SDNode * | N, |
unsigned | TargetOpc, | ||
EVT | VT1, | ||
EVT | VT2, | ||
EVT | VT3, | ||
ArrayRef< SDValue > | Ops | ||
) |
Definition at line 5394 of file SelectionDAG.cpp.
References getVTList(), and SelectNodeTo().
SDNode * SelectionDAG::SelectNodeTo | ( | SDNode * | N, |
unsigned | MachineOpc, | ||
EVT | VT1, | ||
EVT | VT2, | ||
EVT | VT3, | ||
EVT | VT4, | ||
ArrayRef< SDValue > | Ops | ||
) |
Definition at line 5401 of file SelectionDAG.cpp.
References getVTList(), and SelectNodeTo().
SDNode * SelectionDAG::SelectNodeTo | ( | SDNode * | N, |
unsigned | TargetOpc, | ||
EVT | VT1, | ||
EVT | VT2, | ||
SDValue | Op1 | ||
) |
Definition at line 5408 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 5416 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 5424 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 5433 of file SelectionDAG.cpp.
References getVTList(), and SelectNodeTo().
SDNode * SelectionDAG::SelectNodeTo | ( | SDNode * | N, |
unsigned | TargetOpc, | ||
SDVTList | VTs, | ||
ArrayRef< SDValue > | Ops | ||
) |
Definition at line 5442 of file SelectionDAG.cpp.
References MorphNodeTo(), 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 177 of file SelectionDAGPrinter.cpp.
References llvm::errs(), and NodeGraphAttrs.
void SelectionDAG::setGraphColor | ( | const SDNode * | N, |
const char * | Color | ||
) |
setGraphColor - Convenience for setting node color attribute.
Definition at line 207 of file SelectionDAGPrinter.cpp.
References llvm::errs(), and NodeGraphAttrs.
const SDValue& llvm::SelectionDAG::setRoot | ( | SDValue | N | ) | [inline] |
setRoot - Set the current root tag of the SelectionDAG.
Definition at line 336 of file SelectionDAG.h.
References llvm::checkForCycles(), llvm::SDValue::getNode(), llvm::SDValue::getValueType(), 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 251 of file SelectionDAGPrinter.cpp.
References llvm::errs(), and llvm::LibFunc::strcmp.
bool SelectionDAG::SignBitIsZero | ( | SDValue | Op, |
unsigned | Depth = 0 |
||
) | const |
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 1909 of file SelectionDAG.cpp.
References llvm::EVT::getScalarType(), llvm::APInt::getSignBit(), llvm::EVT::getSizeInBits(), llvm::SDValue::getValueType(), llvm::EVT::isVector(), and MaskedValueIsZero().
Referenced by getCmp().
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 6595 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(), llvm::AMDGPUTargetLowering::SplitVectorLoad(), SplitVectorOperand(), and llvm::AMDGPUTargetLowering::SplitVectorStore().
std::pair<SDValue, SDValue> llvm::SelectionDAG::SplitVector | ( | const SDValue & | N, |
const SDLoc & | DL | ||
) | [inline] |
SplitVector - Split the vector with EXTRACT_SUBVECTOR and return the low/high part.
Definition at line 1204 of file SelectionDAG.h.
References GetSplitDestVTs(), llvm::SDValue::getValueType(), and SplitVector().
std::pair<SDValue, SDValue> llvm::SelectionDAG::SplitVectorOperand | ( | const SDNode * | N, |
unsigned | OpNo | ||
) | [inline] |
SplitVectorOperand - Split the node's operand with EXTRACT_SUBVECTOR and return the low/high part.
Definition at line 1212 of file SelectionDAG.h.
References llvm::SDNode::getOperand(), and SplitVector().
Referenced by SplitVSETCC().
void SelectionDAG::TransferDbgValues | ( | SDValue | From, |
SDValue | To | ||
) |
TransferDbgValues - Transfer SDDbgValues.
Definition at line 6181 of file SelectionDAG.cpp.
References AddDbgValue(), llvm::SmallVectorTemplateCommon< T >::begin(), llvm::ArrayRef< T >::begin(), llvm::SmallVectorTemplateCommon< T >::end(), llvm::ArrayRef< 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::SDDbgValue::isIndirect(), llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), and llvm::SDDbgValue::SDNODE.
SDValue SelectionDAG::UnrollVectorOp | ( | SDNode * | N, |
unsigned | ResNE = 0 |
||
) |
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 6421 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::getSubtargetImpl(), llvm::TargetSubtargetInfo::getTargetLowering(), getUNDEF(), llvm::SDValue::getValueType(), getValueType(), llvm::SDNode::getValueType(), llvm::EVT::getVectorElementType(), llvm::TargetLoweringBase::getVectorIdxTy(), llvm::EVT::getVectorVT(), llvm::EVT::isVector(), llvm::AArch64CC::NE, llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), llvm::ISD::ROTL, llvm::ISD::ROTR, llvm::ISD::SELECT, llvm::ISD::SHL, llvm::ISD::SIGN_EXTEND_INREG, llvm::ISD::SRA, llvm::ISD::SRL, and llvm::ISD::VSELECT.
Referenced by LowerVectorFP_TO_INT(), and LowerVectorINT_TO_FP().
SDNode * SelectionDAG::UpdateNodeOperands | ( | SDNode * | N, |
SDValue | Op | ||
) |
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 5223 of file SelectionDAG.cpp.
References llvm::SDNode::getNumOperands(), llvm::SDNode::getOperand(), and llvm::FoldingSetImpl::InsertNode().
Referenced by EltsFromConsecutiveLoads(), llvm::AMDGPUTargetLowering::LowerGlobalAddress(), MoveBelowOrigChain(), llvm::SITargetLowering::PerformDAGCombine(), PerformShuffleCombine256(), and UpdateNodeOperands().
SDNode * SelectionDAG::UpdateNodeOperands | ( | SDNode * | N, |
SDValue | Op1, | ||
SDValue | Op2 | ||
) |
Definition at line 5247 of file SelectionDAG.cpp.
References llvm::SDNode::getNumOperands(), llvm::SDNode::getOperand(), and llvm::FoldingSetImpl::InsertNode().
Definition at line 5276 of file SelectionDAG.cpp.
References UpdateNodeOperands().
SDNode * SelectionDAG::UpdateNodeOperands | ( | SDNode * | N, |
SDValue | Op1, | ||
SDValue | Op2, | ||
SDValue | Op3, | ||
SDValue | Op4 | ||
) |
Definition at line 5282 of file SelectionDAG.cpp.
References UpdateNodeOperands().
SDNode * SelectionDAG::UpdateNodeOperands | ( | SDNode * | N, |
SDValue | Op1, | ||
SDValue | Op2, | ||
SDValue | Op3, | ||
SDValue | Op4, | ||
SDValue | Op5 | ||
) |
Definition at line 5289 of file SelectionDAG.cpp.
References UpdateNodeOperands().
SDNode * SelectionDAG::UpdateNodeOperands | ( | SDNode * | N, |
ArrayRef< SDValue > | Ops | ||
) |
Definition at line 5296 of file SelectionDAG.cpp.
References llvm::SDNode::getNumOperands(), llvm::SDNode::getOperand(), llvm::FoldingSetImpl::InsertNode(), and llvm::ArrayRef< T >::size().
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 146 of file SelectionDAGPrinter.cpp.
References llvm::errs(), getMachineFunction(), llvm::Intrinsic::getName(), and llvm::ViewGraph().
void SelectionDAG::viewGraph | ( | ) |
Definition at line 159 of file SelectionDAGPrinter.cpp.
friend struct DAGUpdateListener [friend] |
DAGUpdateListener is a friend so it can manipulate the listener stack.
Definition at line 248 of file SelectionDAG.h.
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 244 of file SelectionDAG.h.
Referenced by getConstant().
std::map<const SDNode *, std::string> llvm::SelectionDAG::NodeGraphAttrs |
Definition at line 291 of file SelectionDAG.h.
Referenced by clearGraphAttrs(), getGraphAttrs(), setGraphAttrs(), and setGraphColor().