Proteus
Programmable JIT compilation and optimization for C/C++ using LLVM
Loading...
Searching...
No Matches
JitEngineHost.hpp
Go to the documentation of this file.
1//===-- JitEngineHost.hpp -- JIT Engine for CPU header --===//
2//
3// Part of Proteus Project, under the Apache License v2.0 with LLVM Exceptions.
4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
5//
6//===----------------------------------------------------------------------===//
7//
8// Implements the JitEngine interface for dynamic compilation and optimization
9// of CPU code.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef PROTEUS_JITENGINEHOST_HPP
14#define PROTEUS_JITENGINEHOST_HPP
15
16#include <string>
17
18#include <llvm/ExecutionEngine/Orc/LLJIT.h>
19
21#include "proteus/JitCache.hpp"
22#include "proteus/JitEngine.hpp"
23
24namespace proteus {
25
26using namespace llvm;
27
28class JitEngineHost : public JitEngine {
29public:
30 std::unique_ptr<orc::LLJIT> LLJITPtr;
31 ExitOnError ExitOnErr;
32
33 static JitEngineHost &instance();
34
35 static void dumpSymbolInfo(const object::ObjectFile &loadedObj,
36 const RuntimeDyld::LoadedObjectInfo &objInfo);
37 static void notifyLoaded(orc::MaterializationResponsibility &R,
38 const object::ObjectFile &Obj,
39 const RuntimeDyld::LoadedObjectInfo &LOI);
41
42 Expected<orc::ThreadSafeModule>
43 specializeIR(std::unique_ptr<Module> M, std::unique_ptr<LLVMContext> Ctx,
44 StringRef FnName, StringRef Suffix,
45 const SmallVector<RuntimeConstant> &RCVec);
46
47 void *compileAndLink(StringRef FnName, char *IR, int IRSize, void **Args,
48 int32_t *RCIndices, int32_t *RCTypes,
50
51private:
53 void addStaticLibrarySymbols();
54 JitCache<void *> CodeCache;
55};
56
57} // namespace proteus
58
59#endif
void char int32_t int32_t * RCTypes
Definition CompilerInterfaceDevice.cpp:51
void char int32_t * RCIndices
Definition CompilerInterfaceDevice.cpp:51
char * IR
Definition CompilerInterfaceHost.cpp:20
char int void ** Args
Definition CompilerInterfaceHost.cpp:20
char int void int32_t int32_t int NumRuntimeConstants
Definition CompilerInterfaceHost.cpp:21
char int IRSize
Definition CompilerInterfaceHost.cpp:20
Definition JitCache.hpp:32
Definition JitEngineHost.hpp:28
Expected< orc::ThreadSafeModule > specializeIR(std::unique_ptr< Module > M, std::unique_ptr< LLVMContext > Ctx, StringRef FnName, StringRef Suffix, const SmallVector< RuntimeConstant > &RCVec)
Definition JitEngineHost.cpp:182
std::unique_ptr< orc::LLJIT > LLJITPtr
Definition JitEngineHost.hpp:30
void * compileAndLink(StringRef FnName, char *IR, int IRSize, void **Args, int32_t *RCIndices, int32_t *RCTypes, int NumRuntimeConstants)
Definition JitEngineHost.cpp:293
~JitEngineHost()
Definition JitEngineHost.cpp:179
static void dumpSymbolInfo(const object::ObjectFile &loadedObj, const RuntimeDyld::LoadedObjectInfo &objInfo)
Definition JitEngineHost.cpp:132
static JitEngineHost & instance()
Definition JitEngineHost.cpp:100
static void notifyLoaded(orc::MaterializationResponsibility &R, const object::ObjectFile &Obj, const RuntimeDyld::LoadedObjectInfo &LOI)
Definition JitEngineHost.cpp:173
ExitOnError ExitOnErr
Definition JitEngineHost.hpp:31
Definition JitEngine.hpp:44
Definition JitEngine.cpp:20