docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
function_lifting.h
Go to the documentation of this file.
1#pragma once
2
3#include <llvm/Analysis/TargetLibraryInfo.h>
4#include <llvm/IR/Function.h>
5#include <llvm/IR/Instructions.h>
6
8
10#include "docc/lifting/utils.h"
11#include "docc/utils.h"
12
13namespace docc {
14namespace lifting {
15
17protected:
18 llvm::TargetLibraryInfo& TLI_;
19 const llvm::DataLayout& DL_;
20
21 const llvm::Function& function_;
22
25
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_;
28
29 std::unordered_map<const llvm::Value*, std::string>& constants_mapping_;
30 std::unordered_map<const llvm::Type*, std::string>& anonymous_types_mapping_;
31
33 const llvm::BasicBlock* block, const llvm::CallInst* instruction, sdfg::control_flow::State& current_state
34 );
35
37 const llvm::BasicBlock* block, const llvm::InvokeInst* instruction, sdfg::control_flow::State& current_state
38 );
39
40public:
42 llvm::TargetLibraryInfo& TLI,
43 const llvm::DataLayout& DL,
44 const llvm::Function& function,
45 sdfg::FunctionType target_type,
47 std::map<const llvm::BasicBlock*, std::set<const sdfg::control_flow::State*>>& state_mapping,
48 std::map<const sdfg::control_flow::State*, std::set<const llvm::BasicBlock*>>& pred_mapping,
49 std::unordered_map<const llvm::Value*, std::string>& constants_mapping,
50 std::unordered_map<const llvm::Type*, std::string>& anonymous_types_mapping
51 )
52 : TLI_(TLI), DL_(DL), function_(function), target_type_(target_type), builder_(builder),
53 state_mapping_(state_mapping), pred_mapping_(pred_mapping), constants_mapping_(constants_mapping),
54 anonymous_types_mapping_(anonymous_types_mapping) {};
55
56 virtual ~FunctionLifting() = default;
57
59 visit(const llvm::BasicBlock* block, const llvm::CallBase* instruction, sdfg::control_flow::State& current_state);
60
61 static bool is_supported(llvm::TargetLibraryInfo& TLI, const llvm::CallBase* instruction);
62};
63
64} // namespace lifting
65} // namespace docc
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 &current_state)
virtual sdfg::control_flow::State & visit(const llvm::BasicBlock *block, const llvm::CallBase *instruction, sdfg::control_flow::State &current_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 &current_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
Definition targets.h:8
StringEnum FunctionType
Definition function.h:37