On Thu, 2018-03-01 at 13:39 -0600, Aaron Watry wrote: > Copying the individual fields from the device when compiling/linking > will lead to an unnecessarily large number of fields getting passed > around. > > v3: Rebase on current master > v2: Use device in function args before making additional changes in following > patches > > Signed-off-by: Aaron Watry <awa...@gmail.com> > Cc: Jan Vesely <jan.ves...@rutgers.edu> > Cc: Pierre Moreau <pierre.mor...@free.fr>
Few places could use temporary variable, dunno what Francisco prefers. This version LGTM. Reviewed-by: Jan Vesely <jan.ves...@rutgers.edu> Jan > --- > src/gallium/state_trackers/clover/core/program.cpp | 7 +++---- > .../state_trackers/clover/llvm/invocation.cpp | 20 > ++++++++++---------- > .../state_trackers/clover/llvm/invocation.hpp | 5 ++--- > 3 files changed, 15 insertions(+), 17 deletions(-) > > diff --git a/src/gallium/state_trackers/clover/core/program.cpp > b/src/gallium/state_trackers/clover/core/program.cpp > index ae4b50a879..4e74fccd97 100644 > --- a/src/gallium/state_trackers/clover/core/program.cpp > +++ b/src/gallium/state_trackers/clover/core/program.cpp > @@ -53,8 +53,8 @@ program::compile(const ref_vector<device> &devs, const > std::string &opts, > try { > const module m = (dev.ir_format() == PIPE_SHADER_IR_TGSI ? > tgsi::compile_program(_source, log) : > - llvm::compile_program(_source, headers, > - dev.ir_target(), opts, > log)); > + llvm::compile_program(_source, headers, dev, > + opts, log)); > _builds[&dev] = { m, opts, log }; > } catch (...) { > _builds[&dev] = { module(), opts, log }; > @@ -78,8 +78,7 @@ program::link(const ref_vector<device> &devs, const > std::string &opts, > try { > const module m = (dev.ir_format() == PIPE_SHADER_IR_TGSI ? > tgsi::link_program(ms) : > - llvm::link_program(ms, dev.ir_format(), > - dev.ir_target(), opts, log)); > + llvm::link_program(ms, dev, opts, log)); > _builds[&dev] = { m, opts, log }; > } catch (...) { > _builds[&dev] = { module(), opts, log }; > diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp > b/src/gallium/state_trackers/clover/llvm/invocation.cpp > index e4ca5fa444..c8c0311a3a 100644 > --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp > +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp > @@ -201,17 +201,17 @@ namespace { > module > clover::llvm::compile_program(const std::string &source, > const header_map &headers, > - const std::string &target, > + const device &dev, > const std::string &opts, > std::string &r_log) { > if (has_flag(debug::clc)) > debug::log(".cl", "// Options: " + opts + '\n' + source); > > auto ctx = create_context(r_log); > - auto c = create_compiler_instance(target, tokenize(opts + " input.cl"), > - r_log); > - auto mod = compile(*ctx, *c, "input.cl", source, headers, target, opts, > - r_log); > + auto c = create_compiler_instance(dev.ir_target(), > + tokenize(opts + " input.cl"), r_log); > + auto mod = compile(*ctx, *c, "input.cl", source, headers, dev.ir_target(), > + opts, r_log); > > if (has_flag(debug::llvm)) > debug::log(".ll", print_module_bitcode(*mod)); > @@ -269,14 +269,14 @@ namespace { > > module > clover::llvm::link_program(const std::vector<module> &modules, > - enum pipe_shader_ir ir, const std::string &target, > + const device &dev, > const std::string &opts, std::string &r_log) { > std::vector<std::string> options = tokenize(opts + " input.cl"); > const bool create_library = count("-create-library", options); > erase_if(equals("-create-library"), options); > > auto ctx = create_context(r_log); > - auto c = create_compiler_instance(target, options, r_log); > + auto c = create_compiler_instance(dev.ir_target(), options, r_log); > auto mod = link(*ctx, *c, modules, r_log); > > optimize(*mod, c->getCodeGenOpts().OptimizationLevel, !create_library); > @@ -291,11 +291,11 @@ clover::llvm::link_program(const std::vector<module> > &modules, > if (create_library) { > return build_module_library(*mod, module::section::text_library); > > - } else if (ir == PIPE_SHADER_IR_NATIVE) { > + } else if (dev.ir_format() == PIPE_SHADER_IR_NATIVE) { > if (has_flag(debug::native)) > - debug::log(id + ".asm", print_module_native(*mod, target)); > + debug::log(id + ".asm", print_module_native(*mod, > dev.ir_target())); > > - return build_module_native(*mod, target, *c, r_log); > + return build_module_native(*mod, dev.ir_target(), *c, r_log); > > } else { > unreachable("Unsupported IR."); > diff --git a/src/gallium/state_trackers/clover/llvm/invocation.hpp > b/src/gallium/state_trackers/clover/llvm/invocation.hpp > index 5b3530c382..ff9caa457c 100644 > --- a/src/gallium/state_trackers/clover/llvm/invocation.hpp > +++ b/src/gallium/state_trackers/clover/llvm/invocation.hpp > @@ -32,13 +32,12 @@ namespace clover { > namespace llvm { > module compile_program(const std::string &source, > const header_map &headers, > - const std::string &target, > + const device &device, > const std::string &opts, > std::string &r_log); > > module link_program(const std::vector<module> &modules, > - enum pipe_shader_ir ir, > - const std::string &target, > + const device &device, > const std::string &opts, > std::string &r_log); > }
signature.asc
Description: This is a digitally signed message part
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev