summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2016-02-10 01:02:33 +0000
committerLang Hames <lhames@gmail.com>2016-02-10 01:02:33 +0000
commit4f8194e81d72bab350480fce872e0af115a4dcbf (patch)
treedbddd750ce68b36e45b589ec568662ad5f46c0e0 /llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp
parent5fd17ab1b093f6b59aabb27f6c2c2278e65c2707 (diff)
downloadbcm5719-llvm-4f8194e81d72bab350480fce872e0af115a4dcbf.tar.gz
bcm5719-llvm-4f8194e81d72bab350480fce872e0af115a4dcbf.zip
[Orc] Add lazy-JITting support for i386.
This patch adds a new class, OrcI386, which contains the hooks needed to support lazy-JITing on i386 (currently only for Pentium 2 or above, as the JIT re-entry code uses the FXSAVE/FXRSTOR instructions). Support for i386 is enabled in the LLI lazy JIT and the Orc C API, and regression and unit tests are enabled for this architecture. llvm-svn: 260338
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp')
-rw-r--r--llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp b/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp
index 956daae372d..412e605fc0b 100644
--- a/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp
@@ -22,6 +22,11 @@ OrcCBindingsStack::createCompileCallbackMgr(Triple T) {
switch (T.getArch()) {
default: return nullptr;
+ case Triple::x86: {
+ typedef orc::LocalJITCompileCallbackManager<orc::OrcI386> CCMgrT;
+ return llvm::make_unique<CCMgrT>(0);
+ };
+
case Triple::x86_64: {
typedef orc::LocalJITCompileCallbackManager<orc::OrcX86_64> CCMgrT;
return llvm::make_unique<CCMgrT>(0);
@@ -34,6 +39,12 @@ OrcCBindingsStack::createIndirectStubsMgrBuilder(Triple T) {
switch (T.getArch()) {
default: return nullptr;
+ case Triple::x86:
+ return [](){
+ return llvm::make_unique<
+ orc::LocalIndirectStubsManager<orc::OrcI386>>();
+ };
+
case Triple::x86_64:
return [](){
return llvm::make_unique<
OpenPOWER on IntegriCloud