LLVM API Documentation
#include "llvm/CodeGen/SelectionDAG.h"
#include "SDNodeDbgValue.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineConstantPool.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineModuleInfo.h"
#include "llvm/IR/CallingConv.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DebugInfo.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/GlobalAlias.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/Mutex.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Target/TargetIntrinsicInfo.h"
#include "llvm/Target/TargetLowering.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetOptions.h"
#include "llvm/Target/TargetRegisterInfo.h"
#include "llvm/Target/TargetSelectionDAGInfo.h"
#include "llvm/Target/TargetSubtargetInfo.h"
#include <algorithm>
#include <cmath>
Go to the source code of this file.
static void AddBinaryNodeIDCustom | ( | FoldingSetNodeID & | ID, |
bool | nuw, | ||
bool | nsw, | ||
bool | exact | ||
) | [static] |
Definition at line 387 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddBoolean().
Referenced by AddBinaryNodeIDCustom(), AddNodeIDCustom(), llvm::SelectionDAG::getNode(), and llvm::SelectionDAG::getNodeIfExists().
static void AddBinaryNodeIDCustom | ( | FoldingSetNodeID & | ID, |
unsigned | Opcode, | ||
bool | nuw, | ||
bool | nsw, | ||
bool | exact | ||
) | [static] |
AddBinaryNodeIDCustom - Add BinarySDNodes special infos.
Definition at line 395 of file SelectionDAG.cpp.
References AddBinaryNodeIDCustom(), and llvm::isBinOpWithFlags().
static void AddNodeIDCustom | ( | FoldingSetNodeID & | ID, |
const SDNode * | N | ||
) | [static] |
AddNodeIDCustom - If this is an SDNode with special info, add this info to the NodeID data.
Definition at line 410 of file SelectionDAG.cpp.
References llvm::ISD::ADD, AddBinaryNodeIDCustom(), llvm::FoldingSetNodeID::AddBoolean(), llvm::FoldingSetNodeID::AddInteger(), llvm::FoldingSetNodeID::AddPointer(), llvm::MachineConstantPoolValue::addSelectionDAGCSEId(), llvm::ISD::ATOMIC_CMP_SWAP, llvm::ISD::ATOMIC_CMP_SWAP_WITH_SUCCESS, llvm::ISD::ATOMIC_LOAD, 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, llvm::ISD::BasicBlock, llvm::ISD::BlockAddress, llvm::CallingConv::C, llvm::ISD::Constant, llvm::ISD::ConstantFP, llvm::ISD::ConstantPool, llvm::ISD::ExternalSymbol, llvm::ISD::FrameIndex, llvm::GlobalAddressSDNode::getAddressSpace(), llvm::MachinePointerInfo::getAddrSpace(), llvm::ConstantPoolSDNode::getAlignment(), llvm::SelectionDAG::getBasicBlock(), llvm::BlockAddressSDNode::getBlockAddress(), llvm::ConstantSDNode::getConstantIntValue(), llvm::ConstantPoolSDNode::getConstVal(), llvm::GlobalAddressSDNode::getGlobal(), llvm::TargetIndexSDNode::getIndex(), llvm::ConstantPoolSDNode::getMachineCPVal(), llvm::ShuffleVectorSDNode::getMaskElt(), llvm::MemSDNode::getMemoryVT(), llvm::GlobalAddressSDNode::getOffset(), llvm::ConstantPoolSDNode::getOffset(), llvm::TargetIndexSDNode::getOffset(), llvm::BlockAddressSDNode::getOffset(), llvm::SDNode::getOpcode(), llvm::MemSDNode::getPointerInfo(), llvm::EVT::getRawBits(), llvm::MemSDNode::getRawSubclassData(), getReg(), llvm::GlobalAddressSDNode::getTargetFlags(), llvm::ConstantPoolSDNode::getTargetFlags(), llvm::TargetIndexSDNode::getTargetFlags(), llvm::BlockAddressSDNode::getTargetFlags(), llvm::SDNode::getValueType(), llvm::EVT::getVectorNumElements(), llvm::ISD::GlobalAddress, llvm::ISD::GlobalTLSAddress, llvm::BinaryWithFlagsSDNode::hasNoSignedWrap(), llvm::BinaryWithFlagsSDNode::hasNoUnsignedWrap(), llvm::BinaryWithFlagsSDNode::isExact(), llvm::ConstantPoolSDNode::isMachineConstantPoolEntry(), llvm::ConstantSDNode::isOpaque(), llvm::SDNode::isTargetMemoryOpcode(), llvm::ISD::JumpTable, llvm::AArch64DB::LD, llvm_unreachable, llvm::ISD::LOAD, llvm::ISD::MUL, llvm::ISD::PREFETCH, llvm::ISD::Register, llvm::ISD::RegisterMask, llvm::ISD::SDIV, llvm::ISD::SHL, llvm::ISD::SRA, llvm::ISD::SRCVALUE, llvm::ISD::SRL, llvm::AArch64DB::ST, llvm::ISD::STORE, llvm::ISD::SUB, llvm::ISD::TargetBlockAddress, llvm::ISD::TargetConstant, llvm::ISD::TargetConstantFP, llvm::ISD::TargetConstantPool, llvm::ISD::TargetExternalSymbol, llvm::ISD::TargetFrameIndex, llvm::ISD::TargetGlobalAddress, llvm::ISD::TargetGlobalTLSAddress, llvm::ISD::TargetIndex, llvm::ISD::TargetJumpTable, llvm::ISD::UDIV, and llvm::ISD::VECTOR_SHUFFLE.
Referenced by AddNodeIDNode().
static void AddNodeIDNode | ( | FoldingSetNodeID & | ID, |
unsigned short | OpC, | ||
SDVTList | VTList, | ||
ArrayRef< SDValue > | OpList | ||
) | [static] |
Definition at line 401 of file SelectionDAG.cpp.
References AddNodeIDOpcode(), AddNodeIDOperands(), and AddNodeIDValueTypes().
Referenced by llvm::SelectionDAG::getAddrSpaceCast(), llvm::SelectionDAG::getAtomic(), llvm::SelectionDAG::getBasicBlock(), llvm::SelectionDAG::getBlockAddress(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getConstantFP(), llvm::SelectionDAG::getConstantPool(), llvm::SelectionDAG::getConvertRndSat(), llvm::SelectionDAG::getEHLabel(), llvm::SelectionDAG::getFrameIndex(), llvm::SelectionDAG::getGlobalAddress(), llvm::SelectionDAG::getIndexedStore(), llvm::SelectionDAG::getJumpTable(), llvm::SelectionDAG::getLoad(), llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getMDNode(), llvm::SelectionDAG::getMemIntrinsicNode(), llvm::SelectionDAG::getNode(), llvm::SelectionDAG::getNodeIfExists(), llvm::SelectionDAG::getRegister(), llvm::SelectionDAG::getRegisterMask(), llvm::SelectionDAG::getSrcValue(), llvm::SelectionDAG::getStore(), llvm::SelectionDAG::getTargetIndex(), llvm::SelectionDAG::getTruncStore(), llvm::SelectionDAG::getVectorShuffle(), llvm::SelectionDAG::MorphNodeTo(), and llvm::SDNode::Profile().
static void AddNodeIDNode | ( | FoldingSetNodeID & | ID, |
const SDNode * | N | ||
) | [static] |
AddNodeIDNode - Generic routine for adding a nodes info to the NodeID data.
Definition at line 556 of file SelectionDAG.cpp.
References AddNodeIDCustom(), AddNodeIDOpcode(), AddNodeIDOperands(), AddNodeIDValueTypes(), llvm::SDNode::getOpcode(), llvm::SDNode::getVTList(), and llvm::SDNode::ops().
static void AddNodeIDOpcode | ( | FoldingSetNodeID & | ID, |
unsigned | OpC | ||
) | [static] |
AddNodeIDOpcode - Add the node opcode to the NodeID data.
Definition at line 357 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger().
Referenced by AddNodeIDNode().
static void AddNodeIDOperands | ( | FoldingSetNodeID & | ID, |
ArrayRef< SDValue > | Ops | ||
) | [static] |
AddNodeIDOperands - Various routines for adding operands to the NodeID data.
Definition at line 369 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), and llvm::FoldingSetNodeID::AddPointer().
Referenced by AddNodeIDNode().
static void AddNodeIDOperands | ( | FoldingSetNodeID & | ID, |
ArrayRef< SDUse > | Ops | ||
) | [static] |
AddNodeIDOperands - Various routines for adding operands to the NodeID data.
Definition at line 379 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddInteger(), and llvm::FoldingSetNodeID::AddPointer().
static void AddNodeIDValueTypes | ( | FoldingSetNodeID & | ID, |
SDVTList | VTList | ||
) | [static] |
AddNodeIDValueTypes - Value type lists are intern'd so we can represent them solely with their pointer.
Definition at line 363 of file SelectionDAG.cpp.
References llvm::FoldingSetNodeID::AddPointer(), and llvm::SDVTList::VTs.
Referenced by AddNodeIDNode().
static void checkForCyclesHelper | ( | const SDNode * | N, |
SmallPtrSetImpl< const SDNode * > & | Visited, | ||
SmallPtrSetImpl< const SDNode * > & | Checked, | ||
const llvm::SelectionDAG * | DAG | ||
) | [static] |
Definition at line 6767 of file SelectionDAG.cpp.
References llvm::SmallPtrSetImpl< PtrType >::count(), llvm::dbgs(), llvm::SDNode::dumprFull(), llvm::SmallPtrSetImpl< PtrType >::erase(), llvm::errs(), llvm::SDValue::getNode(), llvm::SDNode::getNumOperands(), llvm::SDNode::getOperand(), and llvm::SmallPtrSetImpl< PtrType >::insert().
Referenced by llvm::checkForCycles().
static void commuteShuffle | ( | SDValue & | N1, |
SDValue & | N2, | ||
SmallVectorImpl< int > & | M | ||
) | [static] |
Definition at line 1453 of file SelectionDAG.cpp.
References llvm::SmallVectorTemplateCommon< T, typename >::size(), and std::swap().
Referenced by llvm::SelectionDAG::getVectorShuffle().
doNotCSE - Return true if CSE should not be performed for this node.
Definition at line 590 of file SelectionDAG.cpp.
References llvm::ISD::EH_LABEL, llvm::SDNode::getNumValues(), llvm::SDNode::getOpcode(), llvm::SDNode::getValueType(), llvm::MVT::Glue, and llvm::ISD::HANDLENODE.
static unsigned encodeMemSDNodeFlags | ( | int | ConvType, |
ISD::MemIndexedMode | AM, | ||
bool | isVolatile, | ||
bool | isNonTemporal, | ||
bool | isInvariant | ||
) | [inline, static] |
encodeMemSDNodeFlags - Generic routine for computing a value for use in the CSE map that carries volatility, temporalness, indexing mode, and extension/truncation information.
Definition at line 572 of file SelectionDAG.cpp.
Referenced by llvm::SelectionDAG::getLoad(), llvm::SelectionDAG::getStore(), llvm::SelectionDAG::getTruncStore(), and llvm::MemSDNode::MemSDNode().
static bool FindOptimalMemOpLowering | ( | std::vector< EVT > & | MemOps, |
unsigned | Limit, | ||
uint64_t | Size, | ||
unsigned | DstAlign, | ||
unsigned | SrcAlign, | ||
bool | IsMemset, | ||
bool | ZeroMemset, | ||
bool | MemcpyStrSrc, | ||
bool | AllowOverlap, | ||
SelectionDAG & | DAG, | ||
const TargetLowering & | TLI | ||
) | [static] |
FindOptimalMemOpLowering - Determines the optimial series memory ops to replace the memset / memcpy. Return true if the number of memory ops is below the threshold. It returns the types of the sequence of memory ops to perform memset / memcpy by reference.
Definition at line 3806 of file SelectionDAG.cpp.
References llvm::TargetLoweringBase::allowsMisalignedMemoryAccesses(), llvm::EVT::bitsGT(), llvm::MVT::f64, llvm::CallingConv::Fast, llvm::TargetLoweringBase::getDataLayout(), llvm::SelectionDAG::getMachineFunction(), llvm::TargetLoweringBase::getOptimalMemOpType(), llvm::DataLayout::getPointerPrefAlignment(), llvm::TargetLoweringBase::getPointerTy(), llvm::EVT::getSimpleVT(), llvm::EVT::getSizeInBits(), llvm::MVT::i16, llvm::MVT::i32, llvm::MVT::i64, llvm::MVT::i8, llvm::EVT::isFloatingPoint(), llvm::MVT::isInteger(), llvm::TargetLoweringBase::isOperationLegalOrCustom(), llvm::TargetLoweringBase::isSafeMemOpType(), llvm::TargetLoweringBase::isTypeLegal(), llvm::EVT::isVector(), llvm::MVT::Other, llvm::MVT::SimpleTy, and llvm::ISD::STORE.
Referenced by getMemcpyLoadsAndStores(), getMemmoveLoadsAndStores(), and getMemsetStores().
static SDValue getMemBasePlusOffset | ( | SDValue | Base, |
unsigned | Offset, | ||
SDLoc | dl, | ||
SelectionDAG & | DAG | ||
) | [static] |
getMemBasePlusOffset - Returns base and offset node for the
Definition at line 3776 of file SelectionDAG.cpp.
References llvm::ISD::ADD, llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getNode(), and llvm::SDValue::getValueType().
Referenced by getMemcpyLoadsAndStores(), getMemmoveLoadsAndStores(), and getMemsetStores().
static SDValue getMemcpyLoadsAndStores | ( | SelectionDAG & | DAG, |
SDLoc | dl, | ||
SDValue | Chain, | ||
SDValue | Dst, | ||
SDValue | Src, | ||
uint64_t | Size, | ||
unsigned | Align, | ||
bool | isVol, | ||
bool | AlwaysInline, | ||
MachinePointerInfo | DstPtrInfo, | ||
MachinePointerInfo | SrcPtrInfo | ||
) | [static] |
Definition at line 3909 of file SelectionDAG.cpp.
References Align(), llvm::EVT::bitsGE(), llvm::dyn_cast(), llvm::StringRef::empty(), llvm::DataLayout::exceedsNaturalStackAlignment(), llvm::ISD::EXTLOAD, FindOptimalMemOpLowering(), llvm::AttributeSet::FunctionIndex, llvm::DataLayout::getABITypeAlignment(), llvm::Function::getAttributes(), llvm::SelectionDAG::getContext(), llvm::TargetLoweringBase::getDataLayout(), llvm::SelectionDAG::getExtLoad(), llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getFunction(), llvm::FrameIndexSDNode::getIndex(), llvm::SelectionDAG::getMachineFunction(), llvm::TargetLoweringBase::getMaxStoresPerMemcpy(), getMemBasePlusOffset(), getMemsetStringVal(), llvm::SDValue::getNode(), llvm::SelectionDAG::getNode(), llvm::MachineFrameInfo::getObjectAlignment(), llvm::SDValue::getOpcode(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::EVT::getSizeInBits(), llvm::SelectionDAG::getStore(), llvm::MachineFunction::getSubtarget(), llvm::SelectionDAG::getTargetLoweringInfo(), llvm::SelectionDAG::getTruncStore(), llvm::TargetLoweringBase::getTypeToTransformTo(), llvm::MachinePointerInfo::getWithOffset(), llvm::SelectionDAG::InferPtrAlignment(), llvm::MachineFrameInfo::isFixedObjectIndex(), llvm::EVT::isInteger(), isMemSrcFromString(), llvm::EVT::isVector(), llvm::MinAlign(), llvm::TargetRegisterInfo::needsStackRealignment(), llvm::Attribute::OptimizeForSize, llvm::MVT::Other, llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), llvm::MachineFrameInfo::setObjectAlignment(), llvm::SmallVectorTemplateCommon< T, typename >::size(), llvm::SPII::Store, llvm::StringRef::substr(), llvm::ISD::TokenFactor, and llvm::ISD::UNDEF.
Referenced by llvm::SelectionDAG::getMemcpy().
static SDValue getMemmoveLoadsAndStores | ( | SelectionDAG & | DAG, |
SDLoc | dl, | ||
SDValue | Chain, | ||
SDValue | Dst, | ||
SDValue | Src, | ||
uint64_t | Size, | ||
unsigned | Align, | ||
bool | isVol, | ||
bool | AlwaysInline, | ||
MachinePointerInfo | DstPtrInfo, | ||
MachinePointerInfo | SrcPtrInfo | ||
) | [static] |
Definition at line 4026 of file SelectionDAG.cpp.
References Align(), llvm::SmallVectorImpl< T >::clear(), llvm::dyn_cast(), FindOptimalMemOpLowering(), llvm::AttributeSet::FunctionIndex, llvm::DataLayout::getABITypeAlignment(), llvm::Function::getAttributes(), llvm::SelectionDAG::getContext(), llvm::TargetLoweringBase::getDataLayout(), llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getFunction(), llvm::FrameIndexSDNode::getIndex(), llvm::SelectionDAG::getLoad(), llvm::SelectionDAG::getMachineFunction(), llvm::TargetLoweringBase::getMaxStoresPerMemmove(), getMemBasePlusOffset(), llvm::SelectionDAG::getNode(), llvm::MachineFrameInfo::getObjectAlignment(), llvm::SDValue::getOpcode(), llvm::EVT::getSizeInBits(), llvm::SelectionDAG::getStore(), llvm::SelectionDAG::getTargetLoweringInfo(), llvm::SDValue::getValue(), llvm::MachinePointerInfo::getWithOffset(), llvm::SelectionDAG::InferPtrAlignment(), llvm::MachineFrameInfo::isFixedObjectIndex(), llvm::Attribute::OptimizeForSize, llvm::MVT::Other, llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), llvm::MachineFrameInfo::setObjectAlignment(), llvm::SmallVectorTemplateCommon< T, typename >::size(), llvm::SPII::Store, llvm::ISD::TokenFactor, and llvm::ISD::UNDEF.
Referenced by llvm::SelectionDAG::getMemmove().
static SDValue getMemsetStores | ( | SelectionDAG & | DAG, |
SDLoc | dl, | ||
SDValue | Chain, | ||
SDValue | Dst, | ||
SDValue | Src, | ||
uint64_t | Size, | ||
unsigned | Align, | ||
bool | isVol, | ||
MachinePointerInfo | DstPtrInfo | ||
) | [static] |
Lower the call to 'memset' intrinsic function into a series of store operations.
DAG | Selection DAG where lowered code is placed. |
dl | Link to corresponding IR location. |
Chain | Control flow dependency. |
Dst | Pointer to destination memory location. |
Src | Value of byte to write into the memory. |
Size | Number of bytes to write. |
Align | Alignment of the destination in bytes. |
isVol | True if destination is volatile. |
DstPtrInfo | IR information on the memory pointer. |
The function tries to replace 'llvm.memset' intrinsic with several store operations and value calculation code. This is usually profitable for small memory size.
Definition at line 4123 of file SelectionDAG.cpp.
References Align(), llvm::EVT::bitsLT(), llvm::dyn_cast(), FindOptimalMemOpLowering(), llvm::AttributeSet::FunctionIndex, llvm::DataLayout::getABITypeAlignment(), llvm::Function::getAttributes(), llvm::SelectionDAG::getContext(), llvm::TargetLoweringBase::getDataLayout(), llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getFunction(), llvm::FrameIndexSDNode::getIndex(), llvm::SelectionDAG::getMachineFunction(), llvm::TargetLoweringBase::getMaxStoresPerMemset(), getMemBasePlusOffset(), getMemsetValue(), llvm::SelectionDAG::getNode(), llvm::MachineFrameInfo::getObjectAlignment(), llvm::SDValue::getOpcode(), llvm::EVT::getSizeInBits(), llvm::SelectionDAG::getStore(), llvm::SelectionDAG::getTargetLoweringInfo(), llvm::SDValue::getValueType(), llvm::MachinePointerInfo::getWithOffset(), llvm::MachineFrameInfo::isFixedObjectIndex(), llvm::TargetLoweringBase::isTruncateFree(), llvm::EVT::isVector(), llvm::Attribute::OptimizeForSize, llvm::MVT::Other, llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), llvm::MachineFrameInfo::setObjectAlignment(), llvm::SmallVectorTemplateCommon< T, typename >::size(), llvm::SPII::Store, llvm::ISD::TokenFactor, llvm::ISD::TRUNCATE, and llvm::ISD::UNDEF.
Referenced by llvm::SelectionDAG::getMemset().
static SDValue getMemsetStringVal | ( | EVT | VT, |
SDLoc | dl, | ||
SelectionDAG & | DAG, | ||
const TargetLowering & | TLI, | ||
StringRef | Str | ||
) | [static] |
getMemsetStringVal - Similar to getMemsetValue. Except this is only used when a memcpy is turned into a memset when the source is a constant string ptr.
Definition at line 3734 of file SelectionDAG.cpp.
References llvm::ISD::BITCAST, llvm::StringRef::empty(), llvm::MVT::f128, llvm::MVT::f32, llvm::MVT::f64, llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getConstantFP(), llvm::SelectionDAG::getContext(), llvm::SelectionDAG::getNode(), llvm::EVT::getSizeInBits(), llvm::EVT::getTypeForEVT(), llvm::EVT::getVectorElementType(), llvm::EVT::getVectorNumElements(), llvm::EVT::getVectorVT(), llvm::MVT::i32, llvm::MVT::i64, llvm::EVT::isInteger(), llvm::TargetLoweringBase::isLittleEndian(), llvm::EVT::isVector(), llvm_unreachable, llvm::TargetLoweringBase::shouldConvertConstantLoadToIntImm(), and llvm::StringRef::size().
Referenced by getMemcpyLoadsAndStores().
static SDValue getMemsetValue | ( | SDValue | Value, |
EVT | VT, | ||
SelectionDAG & | DAG, | ||
SDLoc | dl | ||
) | [static] |
getMemsetValue - Vectorized representation of the memset value operand.
Definition at line 3707 of file SelectionDAG.cpp.
References llvm::lltok::APFloat, llvm::CallingConv::C, llvm::SelectionDAG::EVTToAPFloatSemantics(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getConstantFP(), llvm::SelectionDAG::getNode(), llvm::SDValue::getOpcode(), llvm::EVT::getScalarType(), llvm::EVT::getSizeInBits(), llvm::APInt::getSplat(), llvm::EVT::isInteger(), Magic, llvm::ISD::MUL, llvm::ISD::UNDEF, and llvm::ISD::ZERO_EXTEND.
Referenced by getMemsetStores().
static MachinePointerInfo InferPointerInfo | ( | SDValue | Ptr, |
int64_t | Offset = 0 |
||
) | [static] |
InferPointerInfo - If the specified ptr/offset is a frame index, infer a MachinePointerInfo record from it. This is particularly useful because the code generator has many cases where it doesn't bother passing in a MachinePointerInfo to getLoad or getStore when it has "FI+Cst".
Definition at line 4622 of file SelectionDAG.cpp.
References llvm::ISD::ADD, llvm::MachinePointerInfo::getFixedStack(), llvm::SDValue::getOpcode(), and llvm::SDValue::getOperand().
Referenced by llvm::SelectionDAG::getLoad(), llvm::SelectionDAG::getStore(), llvm::SelectionDAG::getTruncStore(), and InferPointerInfo().
static MachinePointerInfo InferPointerInfo | ( | SDValue | Ptr, |
SDValue | OffsetOp | ||
) | [static] |
InferPointerInfo - If the specified ptr/offset is a frame index, infer a MachinePointerInfo record from it. This is particularly useful because the code generator has many cases where it doesn't bother passing in a MachinePointerInfo to getLoad or getStore when it has "FI+Cst".
Definition at line 4642 of file SelectionDAG.cpp.
References llvm::SDValue::getOpcode(), InferPointerInfo(), and llvm::ISD::UNDEF.
static bool isMemSrcFromString | ( | SDValue | Src, |
StringRef & | Str | ||
) | [static] |
isMemSrcFromString - Returns true if memcpy source is a string constant.
Definition at line 3785 of file SelectionDAG.cpp.
References llvm::ISD::ADD, llvm::ISD::Constant, G, llvm::getConstantStringInfo(), llvm::GlobalAddressSDNode::getGlobal(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), and llvm::ISD::GlobalAddress.
Referenced by getMemcpyLoadsAndStores().
static int isSignedOp | ( | ISD::CondCode | Opcode | ) | [static] |
isSignedOp - For an integer comparison, return 1 if the comparison is a signed operation and 2 if the result is an unsigned comparison. Return zero if the operation does not depend on the sign of the input (setne and seteq).
Definition at line 283 of file SelectionDAG.cpp.
References llvm_unreachable, llvm::ISD::SETEQ, llvm::ISD::SETGE, llvm::ISD::SETGT, llvm::ISD::SETLE, llvm::ISD::SETLT, llvm::ISD::SETNE, llvm::ISD::SETUGE, llvm::ISD::SETUGT, llvm::ISD::SETULE, and llvm::ISD::SETULT.
Referenced by llvm::ISD::getSetCCAndOperation(), and llvm::ISD::getSetCCOrOperation().
static SDVTList makeVTList | ( | const EVT * | VTs, |
unsigned | NumVTs | ||
) | [static] |
makeVTList - Return an instance of the SDVTList struct initialized with the specified members.
Definition at line 57 of file SelectionDAG.cpp.
Referenced by llvm::SelectionDAG::getVTList().
static void VerifySDNode | ( | SDNode * | N | ) | [static] |
VerifySDNode - Sanity check the given SDNode. Aborts if it is invalid.
Definition at line 708 of file SelectionDAG.cpp.
References llvm::ISD::BUILD_PAIR, llvm::ISD::BUILD_VECTOR, llvm::SDNode::getNumOperands(), llvm::SDNode::getNumValues(), llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), llvm::EVT::getSizeInBits(), llvm::SDValue::getValueSizeInBits(), llvm::SDValue::getValueType(), llvm::SDNode::getValueType(), llvm::EVT::getVectorElementType(), llvm::EVT::getVectorNumElements(), I, llvm::EVT::isFloatingPoint(), llvm::EVT::isInteger(), llvm::EVT::isVector(), llvm::SDNode::op_begin(), and llvm::SDNode::op_end().
ManagedStatic<std::set<EVT, EVT::compareRawBits> > EVTs [static] |
Definition at line 6267 of file SelectionDAG.cpp.
ManagedStatic<EVTArray> SimpleVTArray [static] |
Definition at line 6268 of file SelectionDAG.cpp.
ManagedStatic<sys::SmartMutex<true> > VTMutex [static] |
Definition at line 6269 of file SelectionDAG.cpp.