7#ifndef JLM_RVSDG_THETA_HPP
8#define JLM_RVSDG_THETA_HPP
98 auto result = subregion()->result(0);
108 predicate()->divert_to(p);
109 if (node && node->IsDead())
150 RemoveLoopVars(std::vector<LoopVar>
loopVars);
224 [[
nodiscard]] std::variant<LoopVar, PredicateVar>
262 reduceStaticallyKnownPredicate(
Node & node);
Represents the result of a region.
Represent acyclic RVSDG subgraphs.
rvsdg::Region * subregion(size_t index) const noexcept
rvsdg::Region * subregion() const noexcept
void set_predicate(jlm::rvsdg::Output *p)
RegionResult * predicate() const noexcept
~ThetaNode() noexcept override
std::unique_ptr< Operation > copy() const override
~ThetaOperation() noexcept override
std::string debug_string() const override
static bool ThetaLoopVarIsInvariant(const ThetaNode::LoopVar &loopVar) noexcept
static void remove(Node *node)
NodeType * TryGetOwnerNode(const rvsdg::Input &input) noexcept
Checks if this is an input to a node of specified type.
Description of a loop-carried variable.
rvsdg::Output * pre
Variable before iteration (input argument to subregion).
rvsdg::Output * output
Variable at loop exit (output of theta).
rvsdg::Input * input
Variable at loop entry (input to theta).
rvsdg::Input * post
Variable after iteration (output result from subregion).
Description of the loop predicate variable.
rvsdg::Input * predicate
Use of the predicate variable at end of loop.