v2: add constant_folding v6: print non final NIR only for verbose debugging
Signed-off-by: Karol Herbst <kher...@redhat.com> --- .../drivers/nouveau/codegen/nv50_ir_from_nir.cpp | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp index b22c62fd434..0b7a5981f73 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp @@ -31,6 +31,12 @@ #include "codegen/nv50_ir_lowering_helper.h" #include "codegen/nv50_ir_util.h" +static int +type_size(const struct glsl_type *type) +{ + return glsl_count_attribute_slots(type, false); +} + namespace { using namespace nv50_ir; @@ -52,6 +58,39 @@ Converter::Converter(Program *prog, nir_shader *nir, nv50_ir_prog_info *info) bool Converter::run() { + bool progress; + + if (prog->dbgFlags & NV50_IR_DEBUG_VERBOSE) + nir_print_shader(nir, stderr); + + NIR_PASS_V(nir, nir_lower_io, nir_var_all, type_size, (nir_lower_io_options)0); + NIR_PASS_V(nir, nir_lower_regs_to_ssa); + NIR_PASS_V(nir, nir_lower_load_const_to_scalar); + NIR_PASS_V(nir, nir_lower_vars_to_ssa); + NIR_PASS_V(nir, nir_lower_alu_to_scalar); + NIR_PASS_V(nir, nir_lower_phis_to_scalar); + + do { + progress = false; + /* some ops depend on having constants as sources, but those can also + * point to expressions made from constants like 0 + 1 + */ + NIR_PASS(progress, nir, nir_opt_constant_folding); + NIR_PASS(progress, nir, nir_copy_prop); + NIR_PASS(progress, nir, nir_opt_dce); + NIR_PASS(progress, nir, nir_opt_dead_cf); + } while (progress); + + NIR_PASS_V(nir, nir_lower_locals_to_regs); + NIR_PASS_V(nir, nir_remove_dead_variables, nir_var_local); + NIR_PASS_V(nir, nir_convert_from_ssa, true); + + /* Garbage collect dead instructions */ + nir_sweep(nir); + + if (prog->dbgFlags & NV50_IR_DEBUG_BASIC) + nir_print_shader(nir, stderr); + return false; } -- 2.14.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev