VapourSynth-llvmexpr
Loading...
Searching...
No Matches
Jit.hpp
Go to the documentation of this file.
1
19
20#ifndef LLVMEXPR_RUNTIME_LLVM_JIT_HPP
21#define LLVMEXPR_RUNTIME_LLVM_JIT_HPP
22
23#include <cstdint>
24#include <memory>
25#include <mutex>
26#include <string>
27#include <unordered_map>
28
29#include "llvm/ExecutionEngine/Orc/LLJIT.h"
30#include "llvm/IR/DataLayout.h"
31#include "llvm/IR/LLVMContext.h"
32#include "llvm/IR/Module.h"
33#include "llvm/TargetParser/Triple.h"
34
35using ProcessProc = void (*)(void* context, uint8_t** rwptrs,
36 const int* strides, float* props);
37
40};
41
42class OrcJit {
43 private:
44 std::unique_ptr<llvm::orc::LLJIT> lljit;
45
46 public:
47 explicit OrcJit(bool no_nans_fp_math);
48
49 [[nodiscard]] const llvm::DataLayout& getDataLayout() const;
50
51 [[nodiscard]] const llvm::Triple& getTargetTriple() const;
52
53 void addModule(std::unique_ptr<llvm::Module> m,
54 std::unique_ptr<llvm::LLVMContext> ctx);
55
56 void* getFunctionAddress(const std::string& name);
57};
58
59// NOLINTBEGIN(cppcoreguidelines-avoid-non-const-global-variables)
60// Global JIT instances
63
64// JIT cache
65extern std::unordered_map<std::string, CompiledFunction> jit_cache;
66extern std::mutex cache_mutex;
67// NOLINTEND(cppcoreguidelines-avoid-non-const-global-variables)
68
69#endif // LLVMEXPR_RUNTIME_LLVM_JIT_HPP
OrcJit global_jit_nan_safe(false)
OrcJit global_jit_fast(true)
std::unordered_map< std::string, CompiledFunction > jit_cache
Definition Jit.cpp:215
std::mutex cache_mutex
Definition Jit.cpp:216
void(*)(void *context, uint8_t **rwptrs, const int *strides, float *props) ProcessProc
Definition Jit.hpp:35
Definition Jit.hpp:42
void * getFunctionAddress(const std::string &name)
Definition Jit.cpp:198
const llvm::Triple & getTargetTriple() const
Definition Jit.cpp:153
OrcJit(bool no_nans_fp_math)
Definition Jit.cpp:66
const llvm::DataLayout & getDataLayout() const
Definition Jit.cpp:149
void addModule(std::unique_ptr< llvm::Module > m, std::unique_ptr< llvm::LLVMContext > ctx)
Definition Jit.cpp:157
ProcessProc func_ptr
Definition Jit.hpp:39