|
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().