Jlm
Namespaces | Functions
decouple-mem-state.cpp File Reference
#include <jlm/hls/backend/rvsdg2rhls/decouple-mem-state.hpp>
#include <jlm/hls/backend/rvsdg2rhls/hls-function-util.hpp>
#include <jlm/hls/backend/rvsdg2rhls/mem-conv.hpp>
#include <jlm/hls/backend/rvsdg2rhls/mem-sep.hpp>
#include <jlm/hls/backend/rvsdg2rhls/rhls-dne.hpp>
#include <jlm/hls/ir/hls.hpp>
#include <jlm/hls/util/view.hpp>
#include <jlm/llvm/ir/LambdaMemoryState.hpp>
#include <jlm/llvm/ir/operators/call.hpp>
#include <jlm/llvm/ir/operators/lambda.hpp>
#include <jlm/llvm/ir/operators/Load.hpp>
#include <jlm/llvm/ir/operators/MemoryStateOperations.hpp>
#include <jlm/llvm/ir/operators/Store.hpp>
#include <jlm/rvsdg/node.hpp>
#include <jlm/rvsdg/substitution.hpp>
#include <jlm/rvsdg/theta.hpp>
#include <jlm/rvsdg/traverser.hpp>
#include <jlm/rvsdg/view.hpp>
#include <algorithm>
#include <deque>
Include dependency graph for decouple-mem-state.cpp:

Go to the source code of this file.

Namespaces

 jlm
 
 jlm::hls
 

Functions

static rvsdg::Output * jlm::hls::follow_state_edge (rvsdg::Input *state_edge, std::vector< rvsdg::SimpleNode * > &mem_ops, bool modify)
 
static rvsdg::Output * jlm::hls::trace_edge (rvsdg::Input *state_edge, rvsdg::Output *new_edge, rvsdg::SimpleNode *target_call, rvsdg::Output *end)
 
static void jlm::hls::handle_structural (std::vector< std::tuple< rvsdg::SimpleNode *, rvsdg::Input * >> &outstanding_dec_reqs, std::vector< rvsdg::SimpleNode * > &mem_ops, rvsdg::Input *state_edge_before, rvsdg::Output *state_edge_after)
 
static void jlm::hls::optimize_single_mem_op_loop (std::vector< rvsdg::SimpleNode * > &mem_ops, rvsdg::Input *state_edge_before, rvsdg::Output *state_edge_after)
 
void jlm::hls::convert_loop_state_to_lcb (rvsdg::Input *loop_state_input)
 
static void jlm::hls::decouple_mem_state (rvsdg::RvsdgModule &rvsdgModule)