LLVM 20.0.0git
Public Member Functions | Static Public Member Functions | Friends | List of all members
llvm::sandboxir::MemDGNode Class Referencefinal

A DependencyGraph Node for instructions that may read/write memory, or have some ordering constraints, like with stacksave/stackrestore and alloca/inalloca. More...

#include "llvm/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.h"

Inheritance diagram for llvm::sandboxir::MemDGNode:
Inheritance graph
[legend]

Public Member Functions

 MemDGNode (Instruction *I)
 
iterator preds_begin (DependencyGraph &DAG) override
 
iterator preds_end (DependencyGraph &DAG) override
 
MemDGNodegetPrevNode () const
 \Returns the previous Mem DGNode in instruction order.
 
MemDGNodegetNextNode () const
 \Returns the next Mem DGNode in instruction order.
 
void addMemPred (MemDGNode *PredN)
 Adds the mem dependency edge PredN->this.
 
bool hasMemPred (DGNode *N) const
 \Returns true if there is a memory dependency N->this.
 
iterator_range< DenseSet< MemDGNode * >::const_iteratormemPreds () const
 \Returns all memory dependency predecessors. Used by tests.
 
virtual void print (raw_ostream &OS, bool PrintDeps=true) const override
 
- Public Member Functions inherited from llvm::sandboxir::DGNode
 DGNode (Instruction *I)
 
 DGNode (const DGNode &Other)=delete
 
virtual ~DGNode ()
 
unsigned getNumUnscheduledSuccs () const
 \Returns the number of unscheduled successors.
 
void decrUnscheduledSuccs ()
 
bool ready () const
 \Returns true if all dependent successors have been scheduled.
 
bool scheduled () const
 \Returns true if this node has been scheduled.
 
void setScheduled (bool NewVal)
 
SchedBundlegetSchedBundle () const
 \Returns the scheduling bundle that this node belongs to, or nullptr.
 
bool comesBefore (const DGNode *Other)
 \Returns true if this is before Other in program order.
 
virtual iterator preds_begin (DependencyGraph &DAG)
 
virtual iterator preds_end (DependencyGraph &DAG)
 
iterator preds_begin (DependencyGraph &DAG) const
 
iterator preds_end (DependencyGraph &DAG) const
 
iterator_range< iteratorpreds (DependencyGraph &DAG) const
 \Returns a range of DAG predecessors nodes.
 
InstructiongetInstruction () const
 
virtual void print (raw_ostream &OS, bool PrintDeps=true) const
 
LLVM_DUMP_METHOD void dump () const
 

Static Public Member Functions

static bool classof (const DGNode *Other)
 
- Static Public Member Functions inherited from llvm::sandboxir::DGNode
static bool isStackSaveOrRestoreIntrinsic (Instruction *I)
 
static bool isMemIntrinsic (IntrinsicInst *I)
 \Returns true if intrinsic I touches memory.
 
static bool isMemDepCandidate (Instruction *I)
 We consider I as a Memory Dependency Candidate instruction if it reads/write memory or if it has side-effects.
 
static bool isFenceLike (Instruction *I)
 \Returns true if I is fence like. It excludes non-mem intrinsics.
 
static bool isMemDepNodeCandidate (Instruction *I)
 \Returns true if I is a memory dependency candidate instruction.
 

Friends

class PredIterator
 
class DependencyGraph
 

Additional Inherited Members

- Public Types inherited from llvm::sandboxir::DGNode
using iterator = PredIterator
 
- Protected Member Functions inherited from llvm::sandboxir::DGNode
void setSchedBundle (SchedBundle &SB)
 
void clearSchedBundle ()
 
 DGNode (Instruction *I, DGNodeID ID)
 
- Protected Attributes inherited from llvm::sandboxir::DGNode
InstructionI
 
DGNodeID SubclassID
 For isa/dyn_cast etc.
 
unsigned UnscheduledSuccs = 0
 The number of unscheduled successors.
 
bool Scheduled = false
 This is true if this node has been scheduled.
 
SchedBundleSB = nullptr
 The scheduler bundle that this node belongs to.
 

Detailed Description

A DependencyGraph Node for instructions that may read/write memory, or have some ordering constraints, like with stacksave/stackrestore and alloca/inalloca.

Definition at line 213 of file DependencyGraph.h.

Constructor & Destructor Documentation

◆ MemDGNode()

llvm::sandboxir::MemDGNode::MemDGNode ( Instruction I)
inline

Member Function Documentation

◆ addMemPred()

void llvm::sandboxir::MemDGNode::addMemPred ( MemDGNode PredN)
inline

Adds the mem dependency edge PredN->this.

This also increments the UnscheduledSuccs counter of the predecessor if this node has not been scheduled.

Definition at line 254 of file DependencyGraph.h.

References assert(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert(), llvm::sandboxir::DGNode::Scheduled, and llvm::sandboxir::DGNode::UnscheduledSuccs.

◆ classof()

static bool llvm::sandboxir::MemDGNode::classof ( const DGNode Other)
inlinestatic

Definition at line 236 of file DependencyGraph.h.

References llvm::sandboxir::MemDGNode, and llvm::Other.

◆ getNextNode()

MemDGNode * llvm::sandboxir::MemDGNode::getNextNode ( ) const
inline

\Returns the next Mem DGNode in instruction order.

Definition at line 250 of file DependencyGraph.h.

◆ getPrevNode()

MemDGNode * llvm::sandboxir::MemDGNode::getPrevNode ( ) const
inline

\Returns the previous Mem DGNode in instruction order.

Definition at line 248 of file DependencyGraph.h.

◆ hasMemPred()

bool llvm::sandboxir::MemDGNode::hasMemPred ( DGNode N) const
inline

\Returns true if there is a memory dependency N->this.

Definition at line 262 of file DependencyGraph.h.

References llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::count(), and N.

◆ memPreds()

iterator_range< DenseSet< MemDGNode * >::const_iterator > llvm::sandboxir::MemDGNode::memPreds ( ) const
inline

\Returns all memory dependency predecessors. Used by tests.

Definition at line 268 of file DependencyGraph.h.

References llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::begin(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::end(), and llvm::make_range().

◆ preds_begin()

iterator llvm::sandboxir::MemDGNode::preds_begin ( DependencyGraph DAG)
inlineoverridevirtual

◆ preds_end()

iterator llvm::sandboxir::MemDGNode::preds_end ( DependencyGraph DAG)
inlineoverridevirtual

◆ print()

void llvm::sandboxir::MemDGNode::print ( raw_ostream OS,
bool  PrintDeps = true 
) const
overridevirtual

Reimplemented from llvm::sandboxir::DGNode.

Definition at line 73 of file DependencyGraph.cpp.

References OS, and llvm::sandboxir::DGNode::print().

Friends And Related Function Documentation

◆ DependencyGraph

friend class DependencyGraph
friend

Definition at line 222 of file DependencyGraph.h.

◆ PredIterator

friend class PredIterator
friend

Definition at line 218 of file DependencyGraph.h.

Referenced by preds_begin(), and preds_end().


The documentation for this class was generated from the following files: