LLVM  8.0.1
Classes | Namespaces | Typedefs | Functions
SelectionDAGNodes.h File Reference
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/FoldingSet.h"
#include "llvm/ADT/GraphTraits.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/ilist_node.h"
#include "llvm/ADT/iterator.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/CodeGen/ISDOpcodes.h"
#include "llvm/CodeGen/MachineMemOperand.h"
#include "llvm/CodeGen/ValueTypes.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DebugLoc.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Metadata.h"
#include "llvm/IR/Operator.h"
#include "llvm/Support/AlignOf.h"
#include "llvm/Support/AtomicOrdering.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MachineValueType.h"
#include <algorithm>
#include <cassert>
#include <climits>
#include <cstddef>
#include <cstdint>
#include <cstring>
#include <iterator>
#include <string>
#include <tuple>
Include dependency graph for SelectionDAGNodes.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  llvm::DenseMapInfo< T >
 
struct  llvm::SDVTList
 This represents a list of ValueType's that has been intern'd by a SelectionDAG. More...
 
class  llvm::SDValue
 Unlike LLVM values, Selection DAG nodes may return multiple values as the result of a computation. More...
 
struct  llvm::DenseMapInfo< SDValue >
 
struct  llvm::isPodLike< SDValue >
 
struct  llvm::simplify_type< SDValue >
 Allow casting operators to work directly on SDValues as if they were SDNode*'s. More...
 
struct  llvm::simplify_type< const SDValue >
 
class  llvm::SDUse
 Represents a use of a SDNode. More...
 
struct  llvm::simplify_type< SDUse >
 simplify_type specializations - Allow casting operators to work directly on SDValues as if they were SDNode*'s. More...
 
struct  llvm::SDNodeFlags
 These are IR-level optimization flags that may be propagated to SDNodes. More...
 
class  llvm::SDNode
 Represents one node in the SelectionDAG. More...
 
class  llvm::SDNode::SDNodeBitfields
 
class  llvm::SDNode::ConstantSDNodeBitfields
 
class  llvm::SDNode::MemSDNodeBitfields
 
class  llvm::SDNode::LSBaseSDNodeBitfields
 
class  llvm::SDNode::LoadSDNodeBitfields
 
class  llvm::SDNode::StoreSDNodeBitfields
 
class  llvm::SDNode::use_iterator
 This class provides iterator support for SDUse operands that use a specific SDNode. More...
 
struct  llvm::SDNode::value_op_iterator
 Iterator for directly iterating over the operand SDValue's. More...
 
class  llvm::SDLoc
 Wrapper class for IR location info (IR ordering and DebugLoc) to be passed into SDNode creation functions. More...
 
class  llvm::HandleSDNode
 This class is used to form a handle around another node that is persistent and is updated across invocations of replaceAllUsesWith on its operand. More...
 
class  llvm::AddrSpaceCastSDNode
 
class  llvm::MemSDNode
 This is an abstract virtual class for memory operations. More...
 
class  llvm::AtomicSDNode
 This is an SDNode representing atomic operations. More...
 
class  llvm::MemIntrinsicSDNode
 This SDNode is used for target intrinsics that touch memory and need an associated MachineMemOperand. More...
 
class  llvm::ShuffleVectorSDNode
 This SDNode is used to implement the code generator support for the llvm IR shufflevector instruction. More...
 
class  llvm::ConstantSDNode
 
class  llvm::ConstantFPSDNode
 
class  llvm::GlobalAddressSDNode
 
class  llvm::FrameIndexSDNode
 
class  llvm::JumpTableSDNode
 
class  llvm::ConstantPoolSDNode
 
class  llvm::TargetIndexSDNode
 Completely target-dependent object reference. More...
 
class  llvm::BasicBlockSDNode
 
class  llvm::BuildVectorSDNode
 A "pseudo-class" with methods for operating on BUILD_VECTORs. More...
 
class  llvm::SrcValueSDNode
 An SDNode that holds an arbitrary LLVM IR Value. More...
 
class  llvm::MDNodeSDNode
 
class  llvm::RegisterSDNode
 
class  llvm::RegisterMaskSDNode
 
class  llvm::BlockAddressSDNode
 
class  llvm::LabelSDNode
 
class  llvm::ExternalSymbolSDNode
 
class  llvm::MCSymbolSDNode
 
class  llvm::CondCodeSDNode
 
class  llvm::VTSDNode
 This class is used to represent EVT's, which are used to parameterize some operations. More...
 
class  llvm::LSBaseSDNode
 Base class for LoadSDNode and StoreSDNode. More...
 
class  llvm::LoadSDNode
 This class is used to represent ISD::LOAD nodes. More...
 
class  llvm::StoreSDNode
 This class is used to represent ISD::STORE nodes. More...
 
class  llvm::MaskedLoadStoreSDNode
 This base class is used to represent MLOAD and MSTORE nodes. More...
 
class  llvm::MaskedLoadSDNode
 This class is used to represent an MLOAD node. More...
 
class  llvm::MaskedStoreSDNode
 This class is used to represent an MSTORE node. More...
 
class  llvm::MaskedGatherScatterSDNode
 This is a base class used to represent MGATHER and MSCATTER nodes. More...
 
class  llvm::MaskedGatherSDNode
 This class is used to represent an MGATHER node. More...
 
class  llvm::MaskedScatterSDNode
 This class is used to represent an MSCATTER node. More...
 
class  llvm::MachineSDNode
 An SDNode that represents everything that will be needed to construct a MachineInstr. More...
 
class  llvm::SDNodeIterator
 
struct  llvm::GraphTraits< SDNode * >
 

Namespaces

 llvm
 This class represents lattice values for constants.
 
 llvm::ISD
 ISD namespace - This namespace contains an enum which represents all of the SelectionDAG node types and value types.
 

Typedefs

using llvm::LargestSDNode = AlignedCharArrayUnion< AtomicSDNode, TargetIndexSDNode, BlockAddressSDNode, GlobalAddressSDNode >
 A representation of the largest SDNode, for use in sizeof(). More...
 
using llvm::MostAlignedSDNode = GlobalAddressSDNode
 The SDNode class with the greatest alignment requirement. More...
 

Functions

void llvm::checkForCycles (const SDNode *N, const SelectionDAG *DAG=nullptr, bool force=false)
 
bool llvm::ISD::isConstantSplatVector (const SDNode *N, APInt &SplatValue)
 Node predicates. More...
 
bool llvm::ISD::isBuildVectorAllOnes (const SDNode *N)
 Return true if the specified node is a BUILD_VECTOR where all of the elements are ~0 or undef. More...
 
bool llvm::ISD::isBuildVectorAllZeros (const SDNode *N)
 Return true if the specified node is a BUILD_VECTOR where all of the elements are 0 or undef. More...
 
bool llvm::ISD::isBuildVectorOfConstantSDNodes (const SDNode *N)
 Return true if the specified node is a BUILD_VECTOR node of all ConstantSDNode or undef. More...
 
bool llvm::ISD::isBuildVectorOfConstantFPSDNodes (const SDNode *N)
 Return true if the specified node is a BUILD_VECTOR node of all ConstantFPSDNode or undef. More...
 
bool llvm::ISD::allOperandsUndef (const SDNode *N)
 Return true if the node has at least one operand and all operands of the specified node are ISD::UNDEF. More...
 
bool llvm::isNullConstant (SDValue V)
 Returns true if V is a constant integer zero. More...
 
bool llvm::isNullFPConstant (SDValue V)
 Returns true if V is an FP constant with a value of positive zero. More...
 
bool llvm::isAllOnesConstant (SDValue V)
 Returns true if V is an integer constant with all bits set. More...
 
bool llvm::isOneConstant (SDValue V)
 Returns true if V is a constant integer one. More...
 
SDValue llvm::peekThroughBitcasts (SDValue V)
 Return the non-bitcasted source operand of V if it exists. More...
 
SDValue llvm::peekThroughOneUseBitcasts (SDValue V)
 Return the non-bitcasted and one-use source operand of V if it exists. More...
 
bool llvm::isBitwiseNot (SDValue V)
 Returns true if V is a bitwise not operation. More...
 
ConstantSDNodellvm::isConstOrConstSplat (SDValue N, bool AllowUndefs=false)
 Returns the SDNode if it is a constant splat BuildVector or constant int. More...
 
ConstantFPSDNodellvm::isConstOrConstSplatFP (SDValue N, bool AllowUndefs=false)
 Returns the SDNode if it is a constant splat BuildVector or constant float. More...
 
bool llvm::isNullOrNullSplat (SDValue V)
 Return true if the value is a constant 0 integer or a splatted vector of a constant 0 integer (with no undefs). More...
 
bool llvm::isOneOrOneSplat (SDValue V)
 Return true if the value is a constant 1 integer or a splatted vector of a constant 1 integer (with no undefs). More...
 
bool llvm::isAllOnesOrAllOnesSplat (SDValue V)
 Return true if the value is a constant -1 integer or a splatted vector of a constant -1 integer (with no undefs). More...
 
bool llvm::ISD::isNormalLoad (const SDNode *N)
 Returns true if the specified node is a non-extending and unindexed load. More...
 
bool llvm::ISD::isNON_EXTLoad (const SDNode *N)
 Returns true if the specified node is a non-extending load. More...
 
bool llvm::ISD::isEXTLoad (const SDNode *N)
 Returns true if the specified node is a EXTLOAD. More...
 
bool llvm::ISD::isSEXTLoad (const SDNode *N)
 Returns true if the specified node is a SEXTLOAD. More...
 
bool llvm::ISD::isZEXTLoad (const SDNode *N)
 Returns true if the specified node is a ZEXTLOAD. More...
 
bool llvm::ISD::isUNINDEXEDLoad (const SDNode *N)
 Returns true if the specified node is an unindexed load. More...
 
bool llvm::ISD::isNormalStore (const SDNode *N)
 Returns true if the specified node is a non-truncating and unindexed store. More...
 
bool llvm::ISD::isNON_TRUNCStore (const SDNode *N)
 Returns true if the specified node is a non-truncating store. More...
 
bool llvm::ISD::isTRUNCStore (const SDNode *N)
 Returns true if the specified node is a truncating store. More...
 
bool llvm::ISD::isUNINDEXEDStore (const SDNode *N)
 Returns true if the specified node is an unindexed store. More...
 
bool llvm::ISD::isBinaryOp (const SDNode *N)
 Return true if the node is a math/logic binary operator. More...
 
bool llvm::ISD::matchUnaryPredicate (SDValue Op, std::function< bool(ConstantSDNode *)> Match, bool AllowUndefs=false)
 Attempt to match a unary predicate against a scalar/splat constant or every element of a constant BUILD_VECTOR. More...
 
bool llvm::ISD::matchBinaryPredicate (SDValue LHS, SDValue RHS, std::function< bool(ConstantSDNode *, ConstantSDNode *)> Match, bool AllowUndefs=false)
 Attempt to match a binary predicate against a pair of scalar/splat constants or every element of a pair of constant BUILD_VECTORs. More...