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