1#ifndef PROTEUS_RUNTIME_FRONTEND_CPPJITCOMPILER_H
2#define PROTEUS_RUNTIME_FRONTEND_CPPJITCOMPILER_H
37 std::unique_ptr<llvm::LLVMContext>
Ctx;
38 std::unique_ptr<llvm::Module>
Mod;
47 std::unique_ptr<llvm::Module>
Mod);
65 const std::string &Code,
66 const std::vector<std::string> &ExtraArgs);
67std::unique_ptr<CppJitCompiler>
71#if PROTEUS_ENABLE_CUDA
72std::unique_ptr<CppJitCompiler> createCppJitCompilerNvcc();
Definition CppJitCompiler.h:54
static constexpr const char * FrontendOptLevelFlag
Definition CppJitCompiler.h:56
virtual ~CppJitCompiler()=default
static bool isBackendSupported(TargetModelType TM, CppJitCompilerBackend Backend)
Definition CppJitCompiler.cpp:11
virtual CppJitArtifact compile(const CppJitCompileRequest &Request)=0
Definition CompiledLibrary.h:7
Definition MemoryCache.h:27
TargetModelType
Definition TargetModel.h:8
std::unique_ptr< CppJitCompiler > createCppJitCompiler(const CppJitCompileRequest &Request)
Definition CppJitCompiler.cpp:66
CppJitCompilerBackend
Definition CppJitCompilerBackend.h:6
HashT computeCppJitModuleHash(TargetModelType TM, CppJitCompilerBackend Backend, const std::string &Code, const std::vector< std::string > &ExtraArgs)
Definition CppJitCompiler.cpp:54
std::unique_ptr< CppJitCompiler > createCppJitCompilerClang()
Definition CppJitCompilerClang.cpp:233
Definition CppJitCompiler.h:31
CppJitArtifact(CppJitArtifact &&)
static CppJitArtifact sharedLibrary(std::string Path)
Definition CppJitCompiler.cpp:30
Kind
Definition CppJitCompiler.h:32
std::unique_ptr< llvm::MemoryBuffer > ObjectBuffer
Definition CppJitCompiler.h:36
~CppJitArtifact()
Definition CppJitCompiler.cpp:25
std::string Path
Definition CppJitCompiler.h:35
std::unique_ptr< llvm::LLVMContext > Ctx
Definition CppJitCompiler.h:37
std::unique_ptr< llvm::Module > Mod
Definition CppJitCompiler.h:38
static CppJitArtifact llvmIR(std::unique_ptr< llvm::LLVMContext > Ctx, std::unique_ptr< llvm::Module > Mod)
Definition CppJitCompiler.cpp:45
static CppJitArtifact deviceBinary(std::unique_ptr< llvm::MemoryBuffer > Obj)
Definition CppJitCompiler.cpp:38
CppJitArtifact & operator=(CppJitArtifact &&)
Kind ArtifactKind
Definition CppJitCompiler.h:34
Definition CppJitCompiler.h:21
const std::vector< std::string > & ExtraArgs
Definition CppJitCompiler.h:25
const std::string & Code
Definition CppJitCompiler.h:24
std::string DeviceArch
Definition CppJitCompiler.h:27
const HashT & ModuleHash
Definition CppJitCompiler.h:26
CppJitCompilerBackend Backend
Definition CppJitCompiler.h:23
TargetModelType TargetModel
Definition CppJitCompiler.h:22