22std::vector<rvsdg::LambdaNode::ContextVar>
25 std::vector<rvsdg::LambdaNode::ContextVar> result;
31 auto arg = util::assertedCast<const llvm::LlvmGraphImport>(
traced);
44 std::vector<rvsdg::SimpleNode *> &
calls,
45 std::unordered_set<rvsdg::Output *> & visited)
47 if (visited.count(output))
52 visited.insert(output);
72 for (
auto & arg :
sti->arguments)
171 auto ln = util::assertedCast<LoopNode>(
target->node());
184 auto ln = util::assertedCast<LoopNode>(
request->region()->node());
185 auto output =
ln->addRequestOutput(
request);
190std::deque<rvsdg::Region *>
193 std::deque<rvsdg::Region *>
regions;
211 if (argument->region() == &graph->GetRootRegion())
224 for (
auto &
r :
so->results)
237 if (*
ip->Type() == *output->
Type())
266 auto arg = util::assertedCast<const llvm::LlvmGraphImport>(
traced);
275 auto arg = jlm::util::assertedCast<const jlm::llvm::LlvmGraphImport>(
traced);
285 if (name.rfind(
"decouple_req") != name.npos)
297 if (name.rfind(
"decouple_res") != name.npos)
BackEdgeResult * result()
BackEdgeArgument * add_backedge(std::shared_ptr< const jlm::rvsdg::Type > type)
std::vector< ContextVar > GetContextVars() const noexcept
Gets all bound context variables.
rvsdg::Region * region() const noexcept
rvsdg::Region * region() const noexcept
const std::shared_ptr< const rvsdg::Type > & Type() const noexcept
Represents the argument of a region.
Represents the result of a region.
Represent acyclic RVSDG subgraphs.
Graph * graph() const noexcept
rvsdg::StructuralNode * node() const noexcept
const SimpleOperation & GetOperation() const noexcept override
NodeInput * input(size_t index) const noexcept
#define JLM_UNREACHABLE(msg)
rvsdg::Output * route_response_rhls(rvsdg::Region *target, rvsdg::Output *response)
void trace_function_calls(rvsdg::Output *output, std::vector< rvsdg::SimpleNode * > &calls, std::unordered_set< rvsdg::Output * > &visited)
std::deque< rvsdg::Region * > get_parent_regions(rvsdg::Region *region)
rvsdg::Output * FindSourceNode(rvsdg::Output *out)
bool is_function_argument(const rvsdg::LambdaNode::ContextVar &cv)
rvsdg::Output * route_request_rhls(rvsdg::Region *target, rvsdg::Output *request)
bool is_dec_res(rvsdg::SimpleNode *node)
std::string get_function_name(jlm::rvsdg::Input *input)
rvsdg::Output * route_to_region_rhls(rvsdg::Region *target, rvsdg::Output *out)
const llvm::IntegerConstantOperation * trace_constant(const rvsdg::Output *dst)
const rvsdg::Output * trace_call_rhls(const rvsdg::Output *output)
rvsdg::Input * get_mem_state_user(rvsdg::Output *state_edge)
std::vector< rvsdg::LambdaNode::ContextVar > find_function_arguments(const rvsdg::LambdaNode *lambda, std::string name_contains)
bool is_dec_req(rvsdg::SimpleNode *node)
NodeType * TryGetOwnerNode(const rvsdg::Input &input) noexcept
Checks if this is an input to a node of specified type.