20#ifndef LLVMEXPR_RUNTIME_LLVM_JIT_HPP
21#define LLVMEXPR_RUNTIME_LLVM_JIT_HPP
27#include <unordered_map>
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"
36 const int* strides,
float* props);
44 std::unique_ptr<llvm::orc::LLJIT> lljit;
47 explicit OrcJit(
bool no_nans_fp_math);
53 void addModule(std::unique_ptr<llvm::Module> m,
54 std::unique_ptr<llvm::LLVMContext> ctx);
65extern std::unordered_map<std::string, CompiledFunction>
jit_cache;
OrcJit global_jit_nan_safe(false)
OrcJit global_jit_fast(true)
std::unordered_map< std::string, CompiledFunction > jit_cache
void(*)(void *context, uint8_t **rwptrs, const int *strides, float *props) ProcessProc
void * getFunctionAddress(const std::string &name)
const llvm::Triple & getTargetTriple() const
OrcJit(bool no_nans_fp_math)
const llvm::DataLayout & getDataLayout() const
void addModule(std::unique_ptr< llvm::Module > m, std::unique_ptr< llvm::LLVMContext > ctx)