What is the advantage of this approach versus using the ispc compiler to 
generate a .bc that you then JIT using the LLVM API?

-Brian

On Thursday, February 15, 2018 at 7:33:15 AM UTC-8, Ivan Alduan wrote:
>
> Hello,
>
> I am trying to create a JIT version of the ISPC compiler (without 
> modifying offline behavior).
> The branch is public and I would love to work together to integrate 
> changes into the master once the interface is more stable,
> https://github.com/ivalduan/ispc/tree/llvm_orc_jit
>
> ispc::ispcInit();
>
> ispc::TargetOptions topt;
> ispc::Target * target = new ispc::Target(topt, true);
>
> ispc::Module * module = new ispc::Module("main");
> module->SetTarget(target);
>
> int err;
> err = module->Compile(sourceStr);
>
> ispc::IspcJIT * ispcJit = new ispc::IspcJIT;
> err = ispcJit->initExecutionEngine(target);
> ispc::IspcJIT::ModuleHandle H = ispcJit->addModule(module);
>
> llvm::JITSymbol sym1 = ispcJit->findSymbol("main_ispc");
> assert(sym1 && "Function not found");
> llvm::JITTargetAddress addr1 = llvm::cantFail(sym1.getAddress());
> ...
>
> ispc::ispcTerminate();
>
> As far as I do not need external symbols everything works as expected, the 
> problem is JIT compiling kernels with calls to ISPCAlloc, ISPCLaunch and 
> ISPCSync. Those symbols are statically linked into the library calling the 
> JIT.
>
> I figured out that I need to add the external symbols with 
> llvm::DynamicLibrary::AddSymbol(..) at runtime in order to be able to find 
> them, but after finding them I am having resolve issues ("Relocation 
> overflow"), file RuntimeDyldCOFFX86_64.h.
> This is the function that adds the external symbols.
>
> void ispcJitAddExplicitSymbols() {
>     llvm::sys::DynamicLibrary::AddSymbol("ISPCAlloc", &ISPCAlloc);
>     llvm::sys::DynamicLibrary::AddSymbol("ISPCLaunch", &ISPCLaunch);
>     llvm::sys::DynamicLibrary::AddSymbol("ISPCSync", &ISPCSync);
> }
>
> I am new to the COFF object format but I guess I need somehow to indicate 
> that those symbols are not internal when they are added to a module as 
> builtin functions with ISPC.
> Could anyone knowing better than me all the machinery give me some hints?
>
> Thanks.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Intel SPMD Program Compiler Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to