Jlm
Loading...
Searching...
No Matches
hls-function-util.hpp
Go to the documentation of this file.
1//
2// Created by david on 7/2/21.
3//
4
5#ifndef JLM_HLS_BACKEND_RVSDG2RHLS_HLS_FUNCTION_UTIL_HPP
6#define JLM_HLS_BACKEND_RVSDG2RHLS_HLS_FUNCTION_UTIL_HPP
7
10#include <jlm/rvsdg/lambda.hpp>
11
12#include <deque>
13
14namespace jlm::hls
15{
16bool
17is_function_argument(const rvsdg::LambdaNode::ContextVar & cv);
18
19std::vector<rvsdg::LambdaNode::ContextVar>
20find_function_arguments(const rvsdg::LambdaNode * lambda, std::string name_contains);
21
22void
24 rvsdg::Output * output,
25 std::vector<rvsdg::SimpleNode *> & calls,
26 std::unordered_set<rvsdg::Output *> & visited);
27
28const llvm::IntegerConstantOperation *
29trace_constant(const rvsdg::Output * dst);
30
31rvsdg::Output *
32route_to_region_rhls(rvsdg::Region * target, rvsdg::Output * out);
33
34rvsdg::Output *
35route_response_rhls(rvsdg::Region * target, rvsdg::Output * response);
36
37rvsdg::Output *
38route_request_rhls(rvsdg::Region * target, rvsdg::Output * request);
39
40std::deque<rvsdg::Region *>
41get_parent_regions(rvsdg::Region * region);
42
43const rvsdg::Output *
44trace_call_rhls(const rvsdg::Input * input);
45
46const rvsdg::Output *
47trace_call_rhls(const rvsdg::Output * output);
48
49std::string
51
52bool
53is_dec_req(rvsdg::SimpleNode * node);
54
55bool
56is_dec_res(rvsdg::SimpleNode * node);
57
58rvsdg::Input *
59get_mem_state_user(rvsdg::Output * state_edge);
60
69rvsdg::Output *
70FindSourceNode(rvsdg::Output * out);
71}
72
73#endif // JLM_HLS_BACKEND_RVSDG2RHLS_HLS_FUNCTION_UTIL_HPP
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.
Definition node.hpp:872