This is to enable a feature in the Intel tool OpenCL Code Builder. It is a non-standard option.
Laura On Tue, Jul 28, 2015 at 12:30 AM, Song, Ruiling <[email protected]> wrote: > Could you explain why this is needed? > And is "dump-opt-llvm" a llvm-standard option or opencl option? > > Thanks! > Ruiling > > -----Original Message----- > > From: Beignet [mailto:[email protected]] On Behalf > Of > > Laura Ekstrand > > Sent: Friday, July 10, 2015 3:04 AM > > To: [email protected] > > Cc: Ekstrand, Laura D > > Subject: [Beignet] [PATCH] backend/src/backend: Handle > -dump-opt-llvm=[PATH] > > > > Allows the user to request a dump of the LLVM-generated IR to the file > specified > > in [PATH]. > > --- > > backend/src/backend/program.cpp | 26 +++++++++++++++++++++++--- > > 1 file changed, 23 insertions(+), 3 deletions(-) > > > > diff --git a/backend/src/backend/program.cpp > > b/backend/src/backend/program.cpp index e4cdeaa..b55f75a 100644 > > --- a/backend/src/backend/program.cpp > > +++ b/backend/src/backend/program.cpp > > @@ -640,6 +640,7 @@ namespace gbe { > > const char *options, > > const char *temp_header_path, > > std::vector<std::string>& clOpt, > > + std::string& dumpLLVMFileName, > > std::string& clName, > > int& optLevel, > > size_t stringSize, @@ -719,6 > +720,11 @@ namespace gbe { > > clOpt.push_back("__FAST_RELAXED_MATH__=1"); > > } > > > > + if(str.find("-dump-opt-llvm=") != std::string::npos) { > > + dumpLLVMFileName = str.substr(str.find("=") + 1); > > + continue; // Don't push this str back; ignore it. > > + } > > + > > clOpt.push_back(str); > > } > > free(str); > > @@ -781,8 +787,10 @@ namespace gbe { > > int optLevel = 1; > > std::vector<std::string> clOpt; > > std::string clName; > > - if (!processSourceAndOption(source, options, NULL, clOpt, clName, > > - optLevel, stringSize, err, errSize)) > > + std::string dumpLLVMFileName; > > + if (!processSourceAndOption(source, options, NULL, clOpt, > > + dumpLLVMFileName, clName, optLevel, > > + stringSize, err, errSize)) > > return NULL; > > > > gbe_program p; > > @@ -804,6 +812,16 @@ namespace gbe { > > clangErrSize = *errSize; > > } > > > > + // Dump the LLVM if requested. > > + if (!dumpLLVMFileName.empty()) { > > + std::string err; > > + llvm::raw_fd_ostream ostream (dumpLLVMFileName.c_str(), > > + err, llvm::sys::fs::F_RW); > > + if (err.empty()) { > > + out_module->print(ostream, 0); > > + } //Otherwise, you'll have to make do without the dump. > > + } > > + > > p = gbe_program_new_from_llvm(deviceID, NULL, out_module, > llvm_ctx, > > stringSize, > > err, errSize, optLevel); > > if (err != NULL) > > @@ -834,7 +852,9 @@ namespace gbe { > > int optLevel = 1; > > std::vector<std::string> clOpt; > > std::string clName; > > - if (!processSourceAndOption(source, options, temp_header_path, > clOpt, > > clName, > > + std::string dumpLLVMFileName; > > + if (!processSourceAndOption(source, options, temp_header_path, > clOpt, > > + dumpLLVMFileName, clName, > > optLevel, stringSize, err, errSize)) > > return NULL; > > > > -- > > 2.1.0 > > > > _______________________________________________ > > 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
