21 std::vector<jlm::rvsdg::Input *>
branches;
static LoopNode * create(rvsdg::Region *parent, bool init=true)
void Run(rvsdg::RvsdgModule &rvsdgModule, util::StatisticsCollector &statisticsCollector) override
Perform RVSDG transformation.
~ThetaNodeConversion() noexcept override
rvsdg::Region * region() const noexcept
size_t ninputs() const noexcept
void divert_users(jlm::rvsdg::Output *new_origin)
Represent acyclic RVSDG subgraphs.
void copy(Region *target, SubstitutionMap &smap) const
Copy a region with substitutions.
StructuralInput * input(size_t index) const noexcept
rvsdg::Region * subregion() const noexcept
LoopVar MapInputLoopVar(const rvsdg::Input &input) const
Maps variable at entry to full varibale description.
RegionResult * predicate() const noexcept
static void ConvertThetaNodesInRegion(rvsdg::Region ®ion)
static void ConvertThetaNode(rvsdg::ThetaNode &theta)
static void ConvertThetaNodesInStructuralNode(rvsdg::StructuralNode &structuralNode)
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.
detail::TopDownTraverserGeneric< false > TopDownTraverser
Traverser for visiting every node in a region in a top down order.
rvsdg::Output * output
Variable at loop exit (output of theta).
rvsdg::Input * post
Variable after iteration (output result from subregion).