diff options
author | Petar Jovanovic <petar.jovanovic@mips.com> | 2018-09-11 13:10:04 +0000 |
---|---|---|
committer | Petar Jovanovic <petar.jovanovic@mips.com> | 2018-09-11 13:10:04 +0000 |
commit | 5abf4bb55220f4c2457203e4ba2cfd75a231ef16 (patch) | |
tree | 909d9f8c1750405807d75cd9e03e6e4e346377d1 /llvm/lib/ExecutionEngine/Orc/IndirectionUtils.cpp | |
parent | b88eebebbe5585cbd516e8eb65840ac0b4980670 (diff) | |
download | bcm5719-llvm-5abf4bb55220f4c2457203e4ba2cfd75a231ef16.tar.gz bcm5719-llvm-5abf4bb55220f4c2457203e4ba2cfd75a231ef16.zip |
[MIPS] ORC JIT support
This patch adds support for ORC JIT for mips/mips64 architecture.
In common code $static is changed to __ORCstatic because on MIPS
architecture "$" is a reserved character.
Patch by Luka Ercegovcevic
Differential Revision: https://reviews.llvm.org/D49665
llvm-svn: 341934
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/IndirectionUtils.cpp')
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/IndirectionUtils.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/IndirectionUtils.cpp b/llvm/lib/ExecutionEngine/Orc/IndirectionUtils.cpp index afaa259bdaa..80a227f0a1e 100644 --- a/llvm/lib/ExecutionEngine/Orc/IndirectionUtils.cpp +++ b/llvm/lib/ExecutionEngine/Orc/IndirectionUtils.cpp @@ -123,6 +123,21 @@ createLocalCompileCallbackManager(const Triple &T, ExecutionSession &ES, return llvm::make_unique<CCMgrT>(ES, ErrorHandlerAddress); } + case Triple::mips: { + typedef orc::LocalJITCompileCallbackManager<orc::OrcMips32Be> CCMgrT; + return llvm::make_unique<CCMgrT>(ES, ErrorHandlerAddress); + } + case Triple::mipsel: { + typedef orc::LocalJITCompileCallbackManager<orc::OrcMips32Le> CCMgrT; + return llvm::make_unique<CCMgrT>(ES, ErrorHandlerAddress); + } + + case Triple::mips64: + case Triple::mips64el: { + typedef orc::LocalJITCompileCallbackManager<orc::OrcMips64> CCMgrT; + return llvm::make_unique<CCMgrT>(ES, ErrorHandlerAddress); + } + case Triple::x86_64: { if ( T.getOS() == Triple::OSType::Win32 ) { typedef orc::LocalJITCompileCallbackManager<orc::OrcX86_64_Win32> CCMgrT; @@ -157,6 +172,25 @@ createLocalIndirectStubsManagerBuilder(const Triple &T) { orc::LocalIndirectStubsManager<orc::OrcI386>>(); }; + case Triple::mips: + return [](){ + return llvm::make_unique< + orc::LocalIndirectStubsManager<orc::OrcMips32Be>>(); + }; + + case Triple::mipsel: + return [](){ + return llvm::make_unique< + orc::LocalIndirectStubsManager<orc::OrcMips32Le>>(); + }; + + case Triple::mips64: + case Triple::mips64el: + return [](){ + return llvm::make_unique< + orc::LocalIndirectStubsManager<orc::OrcMips64>>(); + }; + case Triple::x86_64: if (T.getOS() == Triple::OSType::Win32) { return [](){ |