docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
blas_lifting.h
Go to the documentation of this file.
3
5
6namespace docc {
7namespace lifting {
8
10private:
11 static sdfg::data_flow::LibraryNodeCode library_node_code(const llvm::StringRef function_name) {
12 if (function_name == "cblas_sdot") {
14 } else if (function_name == "cblas_ddot") {
16 } else if (function_name == "cblas_sgemm") {
18 } else if (function_name == "cblas_dgemm") {
20 }
21
23 }
24
26 const llvm::BasicBlock* block, const llvm::CallBase* instruction, sdfg::control_flow::State& current_state
27 );
28
29 sdfg::control_flow::State& visit_gemm(
30 const llvm::BasicBlock* block, const llvm::CallBase* instruction, sdfg::control_flow::State& current_state
31 );
32
33public:
35 llvm::TargetLibraryInfo& TLI,
36 const llvm::DataLayout& DL,
37 const llvm::Function& function,
38 sdfg::FunctionType target_type,
40 std::map<const llvm::BasicBlock*, std::set<const sdfg::control_flow::State*>>& state_mapping,
41 std::map<const sdfg::control_flow::State*, std::set<const llvm::BasicBlock*>>& pred_mapping,
42 std::unordered_map<const llvm::Value*, std::string>& constants_mapping,
43 std::unordered_map<const llvm::Type*, std::string> anonymous_types_mapping
44 )
46 TLI,
47 DL,
48 function,
49 target_type,
50 builder,
51 state_mapping,
52 pred_mapping,
53 constants_mapping,
54 anonymous_types_mapping
55 ) {
56 }
57
59 const llvm::BasicBlock* block, const llvm::CallBase* instruction, sdfg::control_flow::State& current_state
60 ) override;
61
62 static bool is_supported(llvm::Function& func) {
63 if (!func.getName().starts_with("cblas_")) {
64 return false;
65 }
66
67 return library_node_code(func.getName()) != sdfg::data_flow::LibraryNodeCode{""};
68 };
69};
70
71} // namespace lifting
72} // namespace docc
BLASLifting(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 blas_lifting.h:34
sdfg::control_flow::State & visit(const llvm::BasicBlock *block, const llvm::CallBase *instruction, sdfg::control_flow::State &current_state) override
static bool is_supported(llvm::Function &func)
Definition blas_lifting.h:62
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
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
Definition function_builder.h:10
StringEnum LibraryNodeCode
Definition library_node.h:65
data_flow::LibraryNodeCode LibraryNodeType_DOT("DOT")
data_flow::LibraryNodeCode LibraryNodeType_GEMM("GEMM")
StringEnum FunctionType
Definition function.h:37