|
Jlm
|
#include <theta.hpp>


Classes | |
| struct | LoopVar |
| Description of a loop-carried variable. More... | |
Public Member Functions | |
| ~ThetaNode () noexcept override | |
| const ThetaOperation & | GetOperation () const noexcept override |
| rvsdg::Region * | subregion () const noexcept |
| RegionResult * | predicate () const noexcept |
| void | set_predicate (jlm::rvsdg::Output *p) |
| LoopVar | AddLoopVar (rvsdg::Output *origin) |
| Creates a new loop-carried variable. More... | |
| void | RemoveLoopVars (std::vector< LoopVar > loopVars) |
| Removes loop variables. More... | |
| ThetaNode * | copy (rvsdg::Region *region, rvsdg::SubstitutionMap &smap) const override |
| Copy a node with substitutions. More... | |
| LoopVar | MapInputLoopVar (const rvsdg::Input &input) const |
| Maps variable at entry to full varibale description. More... | |
| LoopVar | MapPreLoopVar (const rvsdg::Output &argument) const |
| Maps variable at start of loop iteration to full varibale description. More... | |
| LoopVar | MapPostLoopVar (const rvsdg::Input &result) const |
| Maps variable at end of loop iteration to full varibale description. More... | |
| LoopVar | MapOutputLoopVar (const rvsdg::Output &output) const |
| Maps variable at exit to full varibale description. More... | |
| std::vector< LoopVar > | GetLoopVars () const |
| Returns all loop variables. More... | |
Public Member Functions inherited from jlm::rvsdg::StructuralNode | |
| ~StructuralNode () noexcept override | |
| std::string | DebugString () const override |
| size_t | nsubregions () const noexcept |
| rvsdg::Region * | subregion (size_t index) const noexcept |
| SubregionIteratorRange | Subregions () |
| SubregionConstIteratorRange | Subregions () const |
| StructuralInput * | input (size_t index) const noexcept |
| StructuralOutput * | output (size_t index) const noexcept |
Public Member Functions inherited from jlm::rvsdg::Node | |
| virtual | ~Node () |
| Node (Region *region) | |
| Id | GetNodeId () const noexcept |
| size_t | ninputs () const noexcept |
| NodeInput * | input (size_t index) const noexcept |
| InputIteratorRange | Inputs () noexcept |
| InputConstIteratorRange | Inputs () const noexcept |
| size_t | noutputs () const noexcept |
| NodeOutput * | output (size_t index) const noexcept |
| OutputIteratorRange | Outputs () noexcept |
| OutputConstIteratorRange | Outputs () const noexcept |
| bool | IsDead () const noexcept |
| Determines whether the node is dead. More... | |
| std::size_t | numSuccessors () const noexcept |
| size_t | RemoveInputs (const util::HashSet< size_t > &indices) |
| size_t | RemoveOutputs (const util::HashSet< size_t > &indices) |
| Graph * | graph () const noexcept |
| rvsdg::Region * | region () const noexcept |
| virtual Node * | copy (rvsdg::Region *region, const std::vector< jlm::rvsdg::Output * > &operands) const |
Static Public Member Functions | |
| static ThetaNode * | create (rvsdg::Region *parent) |
Private Member Functions | |
| ThetaNode (rvsdg::Region &parent) | |
|
overridedefaultnoexcept |
|
explicitprivate |
| ThetaNode::LoopVar jlm::rvsdg::ThetaNode::AddLoopVar | ( | rvsdg::Output * | origin | ) |
Creates a new loop-carried variable.
| origin | Input value at start of loop. |
Creates a new variable that is routed through the loop. The variable is set up such that the post-iteration value is the same as the pre-iteration value (i.e. the value remains unchanged through the loop). Caller can redirect edges inside the loop to turn this into a variable changed by the loop
|
overridevirtual |
Copy a node with substitutions.
| region | Target region to create node in |
| smap | Operand substitutions |
Create a new node that is semantically equivalent to an existing node. The newly created node will use the same operands as the existing node unless there is a substitution registered for a particular operand.
The given substitution map is updated so that all outputs of the original node will be substituted by corresponding outputs of the newly created node in subsequent copy operations.
Implements jlm::rvsdg::Node.
|
inlinestatic |
| std::vector< ThetaNode::LoopVar > jlm::rvsdg::ThetaNode::GetLoopVars | ( | ) | const |
|
overridevirtualnoexcept |
Implements jlm::rvsdg::Node.
| ThetaNode::LoopVar jlm::rvsdg::ThetaNode::MapInputLoopVar | ( | const rvsdg::Input & | input | ) | const |
Maps variable at entry to full varibale description.
| input | Input to the theta node. |
input must be an input to this node.Returns the full description of the loop variable corresponding to this entry into the theta node.
| ThetaNode::LoopVar jlm::rvsdg::ThetaNode::MapOutputLoopVar | ( | const rvsdg::Output & | output | ) | const |
Maps variable at exit to full varibale description.
| output | Output of this theta node |
output must be an output of this nodeReturns the full description of the loop variable corresponding to this loop exit value.
| ThetaNode::LoopVar jlm::rvsdg::ThetaNode::MapPostLoopVar | ( | const rvsdg::Input & | result | ) | const |
Maps variable at end of loop iteration to full varibale description.
| result | Result of theta region. |
result must be a result to the subregion of this node.Returns the full description of the loop variable corresponding to this variable at the end of each loop iteration.
| ThetaNode::LoopVar jlm::rvsdg::ThetaNode::MapPreLoopVar | ( | const rvsdg::Output & | argument | ) | const |
Maps variable at start of loop iteration to full varibale description.
| argument | Argument of theta region. |
argument must be an argument to the subregion of this node.Returns the full description of the loop variable corresponding to this variable at the start of each loop iteration.
|
inlinenoexcept |
| void jlm::rvsdg::ThetaNode::RemoveLoopVars | ( | std::vector< LoopVar > | loopVars | ) |
Removes loop variables.
| loopVars | The loop variables to be removed. |
loopvars the following must hold:Removes loop variables from this theta construct. The loop variables must be loop-invariant and otherwise unused. See dead node elimination that is explicitly structured to restructure loops before processing to ensure this invariant.
|
inline |
|
inlinenoexcept |