#include <mim/nest.h>
Classes | |
| struct | Children |
| struct | SiblDeps |
Public Types | |
| using | SCC = GIDSet<const Node*> |
| Strongly Connected Component. | |
Public Member Functions | |
Getters | |
| std::string | name () const |
| const Nest & | nest () const |
| const Node * | inest () const |
| Immediate nester/parent of this Node. | |
| const Node * | idom () const |
| Immediate Dominator for children in connected components; used for late code placement in [Nest::lca]. | |
| bool | is_root () const |
| Def * | mut () const |
| The mutable capsulated in this Node or nullptr, if it's a virtual root comprising several Nodes. | |
| uint32_t | level () const |
| uint32_t | loop_depth () const |
| uint32_t | gid () const |
| Stable id for deterministic hashing/ordering: the underlying mut's gid, or 0 for the (unique) virtual root. | |
Children | |
| const Children & | children () const |
Sibling Dependencies | |
These are the dependencies across children(): A child n depends() on m, if a subtree of n uses m. | |
| template<bool Forward = true> | |
| const SiblDeps & | sibl_deps () const |
SCCs | |
SCCs for all children dependencies.
| |
| bool | is_recursive () const |
| bool | is_mutually_recursive () const |
| bool | is_directly_recursive () const |
| const SCC & | scc () const |
| The SCC among its siblings this Node belongs to; the Nest::root() has none. | |
Friends | |
| class | Nest |
| using mim::Nest::Node::SCC = GIDSet<const Node*> |
|
inline |
Definition at line 82 of file nest.h.
Referenced by mim::Scheduler::schedule().
|
inline |
|
inline |
Immediate Dominator for children in connected components; used for late code placement in [Nest::lca].
|
inline |
Immediate nester/parent of this Node.
Definition at line 33 of file nest.h.
Referenced by mim::Nest::lca().
|
inline |
Definition at line 133 of file nest.h.
References is_recursive(), is_root(), and scc().
|
inline |
Definition at line 132 of file nest.h.
References is_recursive(), is_root(), and scc().
|
inline |
Definition at line 131 of file nest.h.
Referenced by is_directly_recursive(), and is_mutually_recursive().
|
inline |
Definition at line 37 of file nest.h.
Referenced by is_directly_recursive(), is_mutually_recursive(), mut(), and scc().
|
inline |
The mutable capsulated in this Node or nullptr, if it's a virtual root comprising several Nodes.
Definition at line 39 of file nest.h.
References is_root().
Referenced by mim::Nest::Node::Children::contains(), name(), mim::Nest::Node::Children::operator[](), and mim::Scheduler::schedule().
|
inline |
Definition at line 31 of file nest.h.
References mut(), and mim::Def::unique_name().
|
inline |
|
inline |
The SCC among its siblings this Node belongs to; the Nest::root() has none.
Definition at line 135 of file nest.h.
References is_root().
Referenced by is_directly_recursive(), and is_mutually_recursive().
|
inline |
|
friend |