Jlm
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 
9 #include <deque>
11 #include <jlm/rvsdg/lambda.hpp>
12 
13 namespace jlm::hls
14 {
15 bool
16 is_function_argument(const rvsdg::LambdaNode::ContextVar & cv);
17 
18 std::vector<rvsdg::LambdaNode::ContextVar>
19 find_function_arguments(const rvsdg::LambdaNode * lambda, std::string name_contains);
20 
21 void
23  rvsdg::Output * output,
24  std::vector<rvsdg::SimpleNode *> & calls,
25  std::unordered_set<rvsdg::Output *> & visited);
26 
27 const llvm::IntegerConstantOperation *
28 trace_constant(const rvsdg::Output * dst);
29 
30 rvsdg::Output *
31 route_to_region_rhls(rvsdg::Region * target, rvsdg::Output * out);
32 
33 rvsdg::Output *
34 route_response_rhls(rvsdg::Region * target, rvsdg::Output * response);
35 
36 rvsdg::Output *
37 route_request_rhls(rvsdg::Region * target, rvsdg::Output * request);
38 
39 std::deque<rvsdg::Region *>
40 get_parent_regions(rvsdg::Region * region);
41 
42 const rvsdg::Output *
43 trace_call_rhls(const rvsdg::Input * input);
44 
45 const rvsdg::Output *
46 trace_call_rhls(const rvsdg::Output * output);
47 
48 std::string
50 
51 bool
52 is_dec_req(rvsdg::SimpleNode * node);
53 
54 bool
55 is_dec_res(rvsdg::SimpleNode * node);
56 
57 rvsdg::Input *
58 get_mem_state_user(rvsdg::Output * state_edge);
59 
68 rvsdg::Output *
69 FindSourceNode(rvsdg::Output * out);
70 }
71 
72 #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)