1#ifndef PROTEUS_RUNTIME_FRONTEND_CPPJITCOMPILER_H
2#define PROTEUS_RUNTIME_FRONTEND_CPPJITCOMPILER_H
42 std::unique_ptr<llvm::LLVMContext>
Ctx;
43 std::unique_ptr<llvm::Module>
Mod;
52 std::unique_ptr<llvm::Module>
Mod);
70 const std::string &Code,
71 const std::vector<std::string> &ExtraArgs);
73#if PROTEUS_ENABLE_CUDA
76std::unique_ptr<CppJitCompiler>
80#if PROTEUS_ENABLE_CUDA
81std::unique_ptr<CppJitCompiler> createCppJitCompilerNvcc();
Definition CppJitCompiler.h:59
static constexpr const char * FrontendOptLevelFlag
Definition CppJitCompiler.h:61
virtual ~CppJitCompiler()=default
static bool isBackendSupported(TargetModelType TM, CppJitCompilerBackend Backend)
Definition CppJitCompiler.cpp:80
virtual CppJitArtifact compile(const CppJitCompileRequest &Request)=0
Definition CompiledLibrary.h:7
Definition MemoryCache.h:27
TargetModelType
Definition TargetModel.h:8
const ResolvedToolPath & resolveClangxx()
Definition CppJitCompiler.cpp:151
std::unique_ptr< CppJitCompiler > createCppJitCompiler(const CppJitCompileRequest &Request)
Definition CppJitCompiler.cpp:135
CppJitCompilerBackend
Definition CppJitCompilerBackend.h:6
HashT computeCppJitModuleHash(TargetModelType TM, CppJitCompilerBackend Backend, const std::string &Code, const std::vector< std::string > &ExtraArgs)
Definition CppJitCompiler.cpp:123
std::unique_ptr< CppJitCompiler > createCppJitCompilerClang()
Definition CppJitCompilerClang.cpp:265
Definition CppJitCompiler.h:36
CppJitArtifact(CppJitArtifact &&)
static CppJitArtifact sharedLibrary(std::string Path)
Definition CppJitCompiler.cpp:99
Kind
Definition CppJitCompiler.h:37
std::unique_ptr< llvm::MemoryBuffer > ObjectBuffer
Definition CppJitCompiler.h:41
~CppJitArtifact()
Definition CppJitCompiler.cpp:94
std::string Path
Definition CppJitCompiler.h:40
std::unique_ptr< llvm::LLVMContext > Ctx
Definition CppJitCompiler.h:42
std::unique_ptr< llvm::Module > Mod
Definition CppJitCompiler.h:43
static CppJitArtifact llvmIR(std::unique_ptr< llvm::LLVMContext > Ctx, std::unique_ptr< llvm::Module > Mod)
Definition CppJitCompiler.cpp:114
static CppJitArtifact deviceBinary(std::unique_ptr< llvm::MemoryBuffer > Obj)
Definition CppJitCompiler.cpp:107
CppJitArtifact & operator=(CppJitArtifact &&)
Kind ArtifactKind
Definition CppJitCompiler.h:39
Definition CppJitCompiler.h:26
const std::vector< std::string > & ExtraArgs
Definition CppJitCompiler.h:30
const std::string & Code
Definition CppJitCompiler.h:29
std::string DeviceArch
Definition CppJitCompiler.h:32
const HashT & ModuleHash
Definition CppJitCompiler.h:31
CppJitCompilerBackend Backend
Definition CppJitCompiler.h:28
TargetModelType TargetModel
Definition CppJitCompiler.h:27