Merge branch 'master' into mir

mir
Dibyendu Majumdar 4 years ago
commit bdaa211faf

@ -196,8 +196,7 @@ if (LLVM_JIT)
src/ravi_llvmcodegen.cpp src/ravi_llvmforprep.cpp src/ravi_llvmcomp.cpp
src/ravi_llvmreturn.cpp src/ravi_llvmload.cpp src/ravi_llvmforloop.cpp
src/ravi_llvmarith1.cpp src/ravi_llvmcall.cpp src/ravi_llvmtable.cpp
src/ravi_llvmarith2.cpp src/ravi_llvmtforcall.cpp src/ravi_llvmrest.cpp
src/ravi_llvmluaapi.cpp)
src/ravi_llvmarith2.cpp src/ravi_llvmtforcall.cpp src/ravi_llvmrest.cpp)
elseif (OMR_JIT)
set(OMR_JIT_SRCS src/ravi_omrjit.c src/ravi_omrjitapi.c)
elseif (MIR_JIT)
@ -338,11 +337,13 @@ if (LLVM_JIT)
X86CodeGen
X86AsmParser
X86Disassembler
X86AsmPrinter
X86Desc
X86Info
X86Utils
)
if (${LLVM_PACKAGE_VERSION} VERSION_LESS "9.0.0")
list(APPEND LLVM_LIBS_PROCESSOR X86AsmPrinter)
endif ()
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
set(LLVM_LIBS_PROCESSOR
ARMCodeGen

@ -57,10 +57,10 @@ LUAMOD_API int (raviopen_llvmjit)(lua_State *L);
#define LUA_ASTLIBNAME "ast"
LUAMOD_API int (raviopen_ast_library)(lua_State *L);
#ifdef USE_LLVM
#define LUA_LLVMLIBNAME "llvm"
LUAMOD_API int (raviopen_llvmluaapi)(lua_State *L);
#endif
//#ifdef USE_LLVM
//#define LUA_LLVMLIBNAME "llvm"
//LUAMOD_API int (raviopen_llvmluaapi)(lua_State *L);
//#endif
/** RAVI change end */
/* open all previous libraries */
LUALIB_API void (luaL_openlibs) (lua_State *L);

@ -43,6 +43,10 @@
#define USE_ORCv2_JIT 0
#endif
#if LLVM_VERSION_MAJOR >= 9
#define USE_ORCv2_JIT 1
#endif
// In lua.c we include this just to get version numbers
// We cannot have C++ headers in that case
#ifdef __cplusplus

@ -843,10 +843,17 @@ struct RaviFunctionDef {
llvm::Function *ravi_debug_traceF;
// standard C functions
#if LLVM_VERSION_MAJOR >= 9
llvm::FunctionCallee printfFunc;
llvm::FunctionCallee fmodFunc;
llvm::FunctionCallee floorFunc;
llvm::FunctionCallee powFunc;
#else
llvm::Constant *printfFunc;
llvm::Constant *fmodFunc;
llvm::Constant *floorFunc;
llvm::Constant *powFunc;
#endif
// Jump targets in the function
std::vector<RaviBranchDef> jmp_targets;

@ -52,9 +52,9 @@ static const luaL_Reg loadedlibs[] = {
{LUA_UTF8LIBNAME, luaopen_utf8},
{LUA_DBLIBNAME, luaopen_debug},
{LUA_RAVILIBNAME, raviopen_llvmjit},
#ifdef USE_LLVM
{LUA_LLVMLIBNAME, raviopen_llvmluaapi},
#endif
//#ifdef USE_LLVM
// {LUA_LLVMLIBNAME, raviopen_llvmluaapi},
//#endif
{ "dmrc", raviopen_dmrcluaapi },
#if defined(LUA_COMPAT_BITLIB)
{LUA_BITLIBNAME, luaopen_bit32},

@ -676,7 +676,11 @@ void RaviCodeGenerator::emit_MOD(RaviFunctionDef *def, int A, int B, int C,
lhs = emit_load_local_n(def, nb);
rhs = emit_load_local_n(def, nc);
#if LLVM_VERSION_MAJOR >= 9
llvm::Value *fmod_result = CreateCall2(def->builder, def->fmodFunc.getCallee(), lhs, rhs);
#else
llvm::Value *fmod_result = CreateCall2(def->builder, def->fmodFunc, lhs, rhs);
#endif
// if ((m)*(b) < 0) (m) += (b);
llvm::Value *mb = def->builder->CreateFMul(fmod_result, rhs);
@ -1002,7 +1006,11 @@ void RaviCodeGenerator::emit_POW(RaviFunctionDef *def, int A, int B, int C,
llvm::Instruction *lhs = emit_load_local_n(def, nb);
llvm::Instruction *rhs = emit_load_local_n(def, nc);
#if LLVM_VERSION_MAJOR >= 9
llvm::Value *pow_result = CreateCall2(def->builder, def->powFunc.getCallee(), lhs, rhs);
#else
llvm::Value *pow_result = CreateCall2(def->builder, def->powFunc, lhs, rhs);
#endif
emit_store_reg_n_withtype(def, pow_result, ra);

@ -980,34 +980,59 @@ void RaviCodeGenerator::emit_raise_lua_error(RaviFunctionDef *def,
}
void RaviCodeGenerator::debug_printf(RaviFunctionDef *def, const char *str) {
#if LLVM_VERSION_MAJOR >= 9
CreateCall1(def->builder, def->printfFunc.getCallee(),
def->builder->CreateGlobalStringPtr(str));
#else
CreateCall1(def->builder, def->printfFunc,
def->builder->CreateGlobalStringPtr(str));
#endif
}
void RaviCodeGenerator::debug_printf1(RaviFunctionDef *def, const char *str,
llvm::Value *arg1) {
CreateCall2(def->builder, def->printfFunc,
#if LLVM_VERSION_MAJOR >= 9
CreateCall2(def->builder, def->printfFunc.getCallee(),
def->builder->CreateGlobalStringPtr(str), arg1);
#else
CreateCall2(def->builder, def->printfFunc,
def->builder->CreateGlobalStringPtr(str), arg1);
#endif
}
void RaviCodeGenerator::debug_printf2(RaviFunctionDef *def, const char *str,
llvm::Value *arg1, llvm::Value *arg2) {
CreateCall3(def->builder, def->printfFunc,
#if LLVM_VERSION_MAJOR >= 9
CreateCall3(def->builder, def->printfFunc.getCallee(),
def->builder->CreateGlobalStringPtr(str), arg1, arg2);
#else
CreateCall3(def->builder, def->printfFunc,
def->builder->CreateGlobalStringPtr(str), arg1, arg2);
#endif
}
void RaviCodeGenerator::debug_printf3(RaviFunctionDef *def, const char *str,
llvm::Value *arg1, llvm::Value *arg2,
llvm::Value *arg3) {
CreateCall4(def->builder, def->printfFunc,
#if LLVM_VERSION_MAJOR >= 9
CreateCall4(def->builder, def->printfFunc.getCallee(),
def->builder->CreateGlobalStringPtr(str), arg1, arg2, arg3);
#else
CreateCall4(def->builder, def->printfFunc,
def->builder->CreateGlobalStringPtr(str), arg1, arg2, arg3);
#endif
}
void RaviCodeGenerator::debug_printf4(RaviFunctionDef *def, const char *str,
llvm::Value *arg1, llvm::Value *arg2,
llvm::Value *arg3, llvm::Value *arg4) {
CreateCall5(def->builder, def->printfFunc,
#if LLVM_VERSION_MAJOR >= 9
CreateCall5(def->builder, def->printfFunc.getCallee(),
def->builder->CreateGlobalStringPtr(str), arg1, arg2, arg3, arg4);
#else
CreateCall5(def->builder, def->printfFunc,
def->builder->CreateGlobalStringPtr(str), arg1, arg2, arg3, arg4);
#endif
}
void RaviCodeGenerator::emit_extern_declarations(RaviFunctionDef *def) {

@ -222,8 +222,11 @@ RaviJITState::RaviJITState()
DL = llvm::make_unique<llvm::DataLayout>(std::move(dataLayout));
Mangle = llvm::make_unique<llvm::orc::MangleAndInterner>(*ES, *this->DL);
Ctx = llvm::make_unique<llvm::orc::ThreadSafeContext>(llvm::make_unique<llvm::LLVMContext>());
ES->getMainJITDylib().setGenerator(cantFail(llvm::orc::DynamicLibrarySearchGenerator::GetForCurrentProcess(*DL)));
#if LLVM_VERSION_MAJOR >= 9
ES->getMainJITDylib().setGenerator(llvm::cantFail(llvm::orc::DynamicLibrarySearchGenerator::GetForCurrentProcess(DL->getGlobalPrefix())));
#else
ES->getMainJITDylib().setGenerator(llvm::cantFail(llvm::orc::DynamicLibrarySearchGenerator::GetForCurrentProcess(*DL)));
#endif
types_ = llvm::make_unique<LuaLLVMTypes>(*Ctx->getContext());
#else

Loading…
Cancel
Save