1 | #pragma once |
---|---|
2 | #include "taichi/util/lang_util.h" |
3 | #include "taichi/aot/graph_data.h" |
4 | #include "taichi/aot/module_loader.h" |
5 | |
6 | namespace taichi::lang { |
7 | namespace llvm_aot { |
8 | |
9 | class KernelImpl : public aot::Kernel { |
10 | public: |
11 | explicit KernelImpl(FunctionType fn, |
12 | LlvmOfflineCache::KernelCacheData &&kernel_data) |
13 | : kernel_data_(std::move(kernel_data)), fn_(fn) { |
14 | } |
15 | |
16 | void launch(RuntimeContext *ctx) override { |
17 | fn_(*ctx); |
18 | } |
19 | |
20 | LlvmOfflineCache::KernelCacheData kernel_data_; |
21 | |
22 | private: |
23 | FunctionType fn_; |
24 | }; |
25 | |
26 | class FieldImpl : public aot::Field { |
27 | public: |
28 | explicit FieldImpl(const LlvmOfflineCache::FieldCacheData &field) |
29 | : field_(field) { |
30 | } |
31 | |
32 | explicit FieldImpl(LlvmOfflineCache::FieldCacheData &&field) |
33 | : field_(std::move(field)) { |
34 | } |
35 | |
36 | LlvmOfflineCache::FieldCacheData get_snode_tree_cache() const { |
37 | return field_; |
38 | } |
39 | |
40 | private: |
41 | LlvmOfflineCache::FieldCacheData field_; |
42 | }; |
43 | |
44 | } // namespace llvm_aot |
45 | } // namespace taichi::lang |
46 |