LLVM 22.0.0git
|
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"
Public Member Functions | |
MemDGNode (Instruction *I) | |
iterator | preds_begin (DependencyGraph &DAG) override |
iterator | preds_end (DependencyGraph &DAG) override |
MemDGNode * | getPrevNode () const |
\Returns the previous Mem DGNode in instruction order. | |
MemDGNode * | getNextNode () const |
\Returns the next Mem DGNode in instruction order. | |
void | addMemPred (MemDGNode *PredN) |
Adds the mem dependency edge PredN->this. | |
void | removeMemPred (MemDGNode *PredN) |
Removes the memory dependency PredN->this. | |
bool | hasMemPred (DGNode *N) const |
\Returns true if there is a memory dependency N->this. | |
iterator_range< DenseSet< MemDGNode * >::const_iterator > | memPreds () const |
\Returns all memory dependency predecessors. Used by tests. | |
iterator_range< DenseSet< MemDGNode * >::const_iterator > | memSuccs () const |
\Returns all memory dependency successors. | |
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 () |
void | incrUnscheduledSuccs () |
void | resetScheduleState () |
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) |
SchedBundle * | getSchedBundle () 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. | |
iterator | preds_begin (DependencyGraph &DAG) const |
iterator | preds_end (DependencyGraph &DAG) const |
iterator_range< iterator > | preds (DependencyGraph &DAG) const |
\Returns a range of DAG predecessors nodes. | |
Instruction * | getInstruction () 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 | |
Instruction * | I |
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. | |
SchedBundle * | SB = nullptr |
The scheduler bundle that this node belongs to. |
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 221 of file DependencyGraph.h.
|
inline |
Definition at line 254 of file DependencyGraph.h.
References assert(), llvm::sandboxir::DGNode::DGNode(), llvm::sandboxir::DGNode::I, llvm::sandboxir::DGNode::isMemDepNodeCandidate(), and MemDGNode().
Referenced by addMemPred(), getNextNode(), getPrevNode(), MemDGNode(), PredIterator, and removeMemPred().
|
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 275 of file DependencyGraph.h.
References assert(), MemDGNode(), llvm::sandboxir::DGNode::Scheduled, and llvm::sandboxir::DGNode::UnscheduledSuccs.
Definition at line 257 of file DependencyGraph.h.
References llvm::sandboxir::DGNode::DGNode(), llvm::sandboxir::MemDGNode, and llvm::Other.
|
inline |
\Returns the next Mem DGNode in instruction order.
Definition at line 271 of file DependencyGraph.h.
References MemDGNode().
|
inline |
\Returns the previous Mem DGNode in instruction order.
Definition at line 269 of file DependencyGraph.h.
References MemDGNode().
\Returns true if there is a memory dependency N->this.
Definition at line 294 of file DependencyGraph.h.
References llvm::sandboxir::DGNode::DGNode(), llvm::dyn_cast(), and N.
|
inline |
\Returns all memory dependency predecessors. Used by tests.
Definition at line 300 of file DependencyGraph.h.
References llvm::make_range().
|
inline |
\Returns all memory dependency successors.
Definition at line 304 of file DependencyGraph.h.
References llvm::make_range().
|
inlineoverridevirtual |
Reimplemented from llvm::sandboxir::DGNode.
Definition at line 260 of file DependencyGraph.h.
References DependencyGraph, llvm::sandboxir::DGNode::I, and PredIterator.
|
inlineoverridevirtual |
Reimplemented from llvm::sandboxir::DGNode.
Definition at line 265 of file DependencyGraph.h.
References DependencyGraph, llvm::sandboxir::DGNode::I, and PredIterator.
|
overridevirtual |
Reimplemented from llvm::sandboxir::DGNode.
Definition at line 91 of file DependencyGraph.cpp.
References llvm::raw_ostream::indent(), and llvm::sandboxir::DGNode::print().
|
inline |
Removes the memory dependency PredN->this.
This also updates the UnscheduledSuccs counter of PredN if this node has not been scheduled.
Definition at line 286 of file DependencyGraph.h.
References llvm::sandboxir::DGNode::decrUnscheduledSuccs(), MemDGNode(), and llvm::sandboxir::DGNode::Scheduled.
|
friend |
Definition at line 243 of file DependencyGraph.h.
References DependencyGraph.
Referenced by DependencyGraph, preds_begin(), and preds_end().
|
friend |
Definition at line 228 of file DependencyGraph.h.
References assert(), MemDGNode(), N, and PredIterator.
Referenced by PredIterator, preds_begin(), and preds_end().