Pushed, thanks.
> -----Original Message----- > From: Beignet [mailto:[email protected]] On Behalf Of > Guo, Yejun > Sent: Thursday, August 20, 2015 16:08 > To: Navare, Manasi D; [email protected] > Cc: Navare, Manasi D > Subject: Re: [Beignet] [PATCH 1/3] backend/src/backend: Handle -dump- > opt-llvm=[PATH] in clCompileProgram and clBuildProgram OpenCL API > > LGTM, thanks. > > -----Original Message----- > From: Beignet [mailto:[email protected]] On Behalf Of > Manasi Navare > Sent: Tuesday, August 18, 2015 7:17 PM > To: [email protected] > Cc: Navare, Manasi D > Subject: [Beignet] [PATCH 1/3] backend/src/backend: Handle -dump-opt- > llvm=[PATH] in clCompileProgram and clBuildProgram OpenCL API > > This is a resubmission of the patch with support for LLVM 3.4 Allows the user > to request a dump of the LLVM-generated IR to the file specified in [PATH] > through clCompileProgram options > > Signed-off-by: Manasi Navare <[email protected]> > --- > backend/src/backend/program.cpp | 61 +++++++++++++++++++++---------- > ---------- > 1 file changed, 31 insertions(+), 30 deletions(-) > > diff --git a/backend/src/backend/program.cpp > b/backend/src/backend/program.cpp index c02096f..d9e6416 100644 > --- a/backend/src/backend/program.cpp > +++ b/backend/src/backend/program.cpp > @@ -519,7 +519,7 @@ namespace gbe { > BVAR(OCL_OUTPUT_BUILD_LOG, false); > > static bool buildModuleFromSource(const char* input, llvm::Module** > out_module, llvm::LLVMContext* llvm_ctx, > - std::vector<std::string>& options, > size_t stringSize, char > *err, > + std::string dumpLLVMFileName, > + std::vector<std::string>& options, size_t stringSize, char *err, > size_t *errSize) { > // Arguments to pass to the clang frontend > vector<const char *> args; > @@ -628,6 +628,34 @@ namespace gbe { > #endif > > *out_module = module; > + > +// Dump the LLVM if requested. > +#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR < 6) > + if (!dumpLLVMFileName.empty()) { > + std::string err; > + llvm::raw_fd_ostream ostream (dumpLLVMFileName.c_str(), > + err, > + #if LLVM_VERSION_MINOR == 3 > + 0 > + #else > + llvm::sys::fs::F_None > + #endif > + ); > + > + if (err.empty()) { > + (*out_module)->print(ostream, 0); > + } //Otherwise, you'll have to make do without the dump. > + } > +#else > + if (!dumpLLVMFileName.empty()) { > + std::error_code err; > + llvm::raw_fd_ostream ostream (dumpLLVMFileName.c_str(), > + err, llvm::sys::fs::F_None); > + if (!err) { > + (*out_module)->print(ostream, 0); > + } //Otherwise, you'll have to make do without the dump. > + } > +#endif > return true; > } > > @@ -808,7 +836,7 @@ namespace gbe { > if (!llvm::llvm_is_multithreaded()) > llvm_mutex.lock(); > > - if (buildModuleFromSource(clName.c_str(), &out_module, llvm_ctx, clOpt, > + if (buildModuleFromSource(clName.c_str(), &out_module, llvm_ctx, > + dumpLLVMFileName, clOpt, > stringSize, err, errSize)) { > // Now build the program from llvm > size_t clangErrSize = 0; > @@ -819,33 +847,6 @@ namespace gbe { > clangErrSize = *errSize; > } > > - // Dump the LLVM if requested. > - #if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR < 6) > - if (!dumpLLVMFileName.empty()) { > - std::string err; > - llvm::raw_fd_ostream ostream (dumpLLVMFileName.c_str(), > - err, > - #if LLVM_VERSION_MINOR == 3 > - 0 > - #else > - llvm::sys::fs::F_RW > - #endif > - ); > - if (err.empty()) { > - out_module->print(ostream, 0); > - } //Otherwise, you'll have to make do without the dump. > - } > - #else > - if (!dumpLLVMFileName.empty()) { > - std::error_code err; > - llvm::raw_fd_ostream ostream (dumpLLVMFileName.c_str(), > - err, llvm::sys::fs::F_RW); > - if (!err) { > - out_module->print(ostream, 0); > - } //Otherwise, you'll have to make do without the dump. > - } > - #endif > - > FILE *asmDumpStream = fopen(dumpASMFileName.c_str(), "w"); > if (asmDumpStream) > fclose(asmDumpStream); > @@ -891,7 +892,7 @@ namespace gbe { > //for some functions, so we use global context now, need switch to new > context later. > llvm::Module * out_module; > llvm::LLVMContext* llvm_ctx = &llvm::getGlobalContext(); > - if (buildModuleFromSource(clName.c_str(), &out_module, llvm_ctx, clOpt, > + if (buildModuleFromSource(clName.c_str(), &out_module, llvm_ctx, > + dumpLLVMFileName, clOpt, > stringSize, err, errSize)) { > // Now build the program from llvm > if (err != NULL) { > -- > 1.9.1 > > _______________________________________________ > Beignet mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/beignet > _______________________________________________ > Beignet mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
