3#include <llvm/Analysis/TargetLibraryInfo.h>
4#include <llvm/IR/Function.h>
5#include <llvm/IR/Instructions.h>
18 llvm::TargetLibraryInfo&
TLI_;
19 const llvm::DataLayout&
DL_;
26 std::map<const llvm::BasicBlock*, std::set<const sdfg::control_flow::State*>>&
state_mapping_;
27 std::map<const sdfg::control_flow::State*, std::set<const llvm::BasicBlock*>>&
pred_mapping_;
42 llvm::TargetLibraryInfo& TLI,
43 const llvm::DataLayout& DL,
44 const llvm::Function& function,
47 std::map<
const llvm::BasicBlock*, std::set<const sdfg::control_flow::State*>>& state_mapping,
49 std::unordered_map<const llvm::Value*, std::string>& constants_mapping,
50 std::unordered_map<const llvm::Type*, std::string>& anonymous_types_mapping
61 static bool is_supported(llvm::TargetLibraryInfo& TLI,
const llvm::CallBase* instruction);
FunctionLifting(llvm::TargetLibraryInfo &TLI, const llvm::DataLayout &DL, const llvm::Function &function, sdfg::FunctionType target_type, sdfg::builder::SDFGBuilder &builder, std::map< const llvm::BasicBlock *, std::set< const sdfg::control_flow::State * > > &state_mapping, std::map< const sdfg::control_flow::State *, std::set< const llvm::BasicBlock * > > &pred_mapping, std::unordered_map< const llvm::Value *, std::string > &constants_mapping, std::unordered_map< const llvm::Type *, std::string > &anonymous_types_mapping)
Definition function_lifting.h:41
std::map< const sdfg::control_flow::State *, std::set< const llvm::BasicBlock * > > & pred_mapping_
Definition function_lifting.h:27
sdfg::builder::SDFGBuilder & builder_
Definition function_lifting.h:24
static bool is_supported(llvm::TargetLibraryInfo &TLI, const llvm::CallBase *instruction)
sdfg::control_flow::State & visit_call(const llvm::BasicBlock *block, const llvm::CallInst *instruction, sdfg::control_flow::State ¤t_state)
virtual sdfg::control_flow::State & visit(const llvm::BasicBlock *block, const llvm::CallBase *instruction, sdfg::control_flow::State ¤t_state)
llvm::TargetLibraryInfo & TLI_
Definition function_lifting.h:18
std::map< const llvm::BasicBlock *, std::set< const sdfg::control_flow::State * > > & state_mapping_
Definition function_lifting.h:26
std::unordered_map< const llvm::Type *, std::string > & anonymous_types_mapping_
Definition function_lifting.h:30
const llvm::DataLayout & DL_
Definition function_lifting.h:19
sdfg::control_flow::State & visit_invoke(const llvm::BasicBlock *block, const llvm::InvokeInst *instruction, sdfg::control_flow::State ¤t_state)
std::unordered_map< const llvm::Value *, std::string > & constants_mapping_
Definition function_lifting.h:29
sdfg::FunctionType target_type_
Definition function_lifting.h:23
const llvm::Function & function_
Definition function_lifting.h:21
virtual ~FunctionLifting()=default
Definition sdfg_builder.h:13
A state in a Stateful DataFlow Graph (SDFG).
Definition state.h:38
Definition exceptions.h:9
StringEnum FunctionType
Definition function.h:37