1#ifndef PROTEUS_FRONTEND_DISPATCHER_HOST_H
2#define PROTEUS_FRONTEND_DISPATCHER_HOST_H
18 std::unique_ptr<MemoryBuffer>
compile(std::unique_ptr<LLVMContext> Ctx,
19 std::unique_ptr<Module> Mod,
20 const HashT &ModuleHash,
21 bool DisableIROpt =
false)
override {
24 auto CtxOwner = std::move(Ctx);
25 auto ModOwner = std::move(Mod);
26 std::unique_ptr<MemoryBuffer> ObjectModule =
37 std::unique_ptr<CompiledLibrary>
53 HashT FuncHash =
hash(FnName, ModuleHash);
55 if (
void *FuncPtr = CodeCache.
lookup(FuncHash))
67 CodeCache.
insert(FuncHash, FuncAddr, FnName);
73 const std::string &Path)
override {
74 auto Buf = MemoryBuffer::getFileAsStream(Path);
Definition DispatcherHost.h:11
DispatcherHost()
Definition DispatcherHost.h:82
std::unique_ptr< CompiledLibrary > lookupCompiledLibrary(const HashT &ModuleHash) override
Definition DispatcherHost.h:38
static DispatcherHost & instance()
Definition DispatcherHost.h:13
StringRef getDeviceArch() const override
Definition DispatcherHost.h:47
DispatchResult launch(void *, LaunchDims, LaunchDims, void *[], uint64_t, void *) override
Definition DispatcherHost.h:42
void * getFunctionAddress(const std::string &FnName, const HashT &ModuleHash, CompiledLibrary &Library) override
Definition DispatcherHost.h:51
~DispatcherHost()
Definition DispatcherHost.h:86
std::unique_ptr< MemoryBuffer > compile(std::unique_ptr< LLVMContext > Ctx, std::unique_ptr< Module > Mod, const HashT &ModuleHash, bool DisableIROpt=false) override
Definition DispatcherHost.h:18
void registerDynamicLibrary(const HashT &HashValue, const std::string &Path) override
Definition DispatcherHost.h:72
Definition Dispatcher.h:74
Definition JitEngineHost.h:34
std::unique_ptr< MemoryBuffer > compileOnly(Module &M, bool DisableIROpt=false)
Definition JitEngineHost.cpp:279
void loadCompiledLibrary(CompiledLibrary &Library)
Definition JitEngineHost.cpp:322
void * getFunctionAddress(StringRef FnName, CompiledLibrary &Library)
Definition JitEngineHost.cpp:357
Definition MemoryCache.h:30
void printStats()
Definition MemoryCache.h:61
void insert(HashT &HashValue, Function_t FunctionPtr, StringRef FnName)
Definition MemoryCache.h:48
void printKernelTrace()
Definition MemoryCache.h:74
Function_t lookup(HashT &HashValue)
Definition MemoryCache.h:34
Definition ObjectCache.h:39
virtual void printStats()=0
virtual void store(const HashT &HashValue, const CacheEntry &Entry)=0
virtual std::unique_ptr< CompiledLibrary > lookup(const HashT &HashValue)=0
Definition MemoryCache.h:26
TargetModelType
Definition TargetModel.h:8
HashT hash(FirstT &&First, RestTs &&...Rest)
Definition Hashing.h:142
void reportFatalError(const llvm::Twine &Reason, const char *FILE, unsigned Line)
Definition Error.cpp:14
Definition Dispatcher.h:21
static CacheEntry staticObject(MemoryBufferRef Buf)
Definition ObjectCache.h:31
static CacheEntry sharedObject(MemoryBufferRef Buf)
Definition ObjectCache.h:33
Definition CompiledLibrary.h:18
bool IsLoaded
Definition CompiledLibrary.h:24
Definition Dispatcher.h:52