summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYang, Rong R <rong.r.yang@intel.com>2017-06-22 17:38:55 +0800
committerYang Rong <rong.r.yang@intel.com>2017-06-23 16:04:54 +0800
commit36f6a8b6b956ffed15d100abe677125d4a5aeaed (patch)
tree17353b2825c6fbb8124746bafca9aa9ee196a8f0 /src
parentf32e067b2ef32568253cf32fd1bd0eaafe20439c (diff)
downloadbeignet-36f6a8b6b956ffed15d100abe677125d4a5aeaed.tar.gz
GBE: clean llvm module's clone and release.
There are some changes: 1. Clone the module before call LLVMLinkModules2, remove other clones for it. 2. Don't delete module in function llvmToGen. 3. Add a function programNewFromLLVMFile so genProgramNewFromLLVM and buildFromLLVMModule only handle llvm module. Actually, programNewFromLLVMFile is only used by clCreateProgramWithLLVMIntel, and I think it is useless, maybe we could delete it at all. V2: define errDiag beside #if/#endif. Signed-off-by: Yang Rong <rong.r.yang@intel.com> Reviewed-by: Pan Xiuli <xiuli.pan@intel.com>
Diffstat (limited to 'src')
-rw-r--r--src/cl_gbe_loader.cpp5
-rw-r--r--src/cl_gbe_loader.h1
-rw-r--r--src/cl_program.c2
3 files changed, 7 insertions, 1 deletions
diff --git a/src/cl_gbe_loader.cpp b/src/cl_gbe_loader.cpp
index f190b0d8..0379b3ec 100644
--- a/src/cl_gbe_loader.cpp
+++ b/src/cl_gbe_loader.cpp
@@ -24,6 +24,7 @@
//function pointer from libgbe.so
gbe_program_new_from_source_cb *compiler_program_new_from_source = NULL;
+gbe_program_new_from_llvm_file_cb *compiler_program_new_from_llvm_file = NULL;
gbe_program_compile_from_source_cb *compiler_program_compile_from_source = NULL;
gbe_program_new_gen_program_cb *compiler_program_new_gen_program = NULL;
gbe_program_link_program_cb *compiler_program_link_program = NULL;
@@ -298,6 +299,10 @@ struct GbeLoaderInitializer
if (compiler_program_new_from_source == NULL)
return;
+ compiler_program_new_from_llvm_file = *(gbe_program_new_from_llvm_file_cb **)dlsym(dlhCompiler, "gbe_program_new_from_llvm_file");
+ if (compiler_program_new_from_llvm_file == NULL)
+ return;
+
compiler_program_compile_from_source = *(gbe_program_compile_from_source_cb **)dlsym(dlhCompiler, "gbe_program_compile_from_source");
if (compiler_program_compile_from_source == NULL)
return;
diff --git a/src/cl_gbe_loader.h b/src/cl_gbe_loader.h
index df885d21..df85f1e0 100644
--- a/src/cl_gbe_loader.h
+++ b/src/cl_gbe_loader.h
@@ -25,6 +25,7 @@
extern "C" {
#endif
extern gbe_program_new_from_source_cb *compiler_program_new_from_source;
+extern gbe_program_new_from_llvm_file_cb *compiler_program_new_from_llvm_file;
extern gbe_program_compile_from_source_cb *compiler_program_compile_from_source;
extern gbe_program_new_gen_program_cb *compiler_program_new_gen_program;
extern gbe_program_link_program_cb *compiler_program_link_program;
diff --git a/src/cl_program.c b/src/cl_program.c
index bb96d98f..faa35725 100644
--- a/src/cl_program.c
+++ b/src/cl_program.c
@@ -458,7 +458,7 @@ cl_program_create_from_llvm(cl_context ctx,
goto error;
}
- program->opaque = compiler_program_new_from_llvm(ctx->devices[0]->device_id, file_name, NULL, NULL, NULL, program->build_log_max_sz, program->build_log, &program->build_log_sz, 1, NULL);
+ program->opaque = compiler_program_new_from_llvm_file(ctx->devices[0]->device_id, file_name, program->build_log_max_sz, program->build_log, &program->build_log_sz);
if (UNLIKELY(program->opaque == NULL)) {
err = CL_INVALID_PROGRAM;
goto error;