<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Dec 21, 2016 at 6:26 PM, Timothy Arceri <span dir="ltr"><<a href="mailto:timothy.arceri@collabora.com" target="_blank">timothy.arceri@collabora.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">shader-db results for BDW:<br>
<br>
total instructions in shared programs: 12589614 -> 12590119 (0.00%)<br>
instructions in affected programs: 50525 -> 51030 (1.00%)<br>
helped: 7<br>
HURT: 145<br>
<br>
total cycles in shared programs: 241524604 -> 241490502 (-0.01%)<br>
cycles in affected programs: 1941404 -> 1907302 (-1.76%)<br>
helped: 302<br>
HURT: 449<br>
<br>
total loops in shared programs: 4245 -> 2947 (-30.58%)<br>
loops in affected programs: 1535 -> 237 (-84.56%)<br>
helped: 1142<br>
HURT: 0<br>
<br>
total spills in shared programs: 14453 -> 14453 (0.00%)<br>
spills in affected programs: 0 -> 0<br>
helped: 0<br>
HURT: 0<br>
<br>
total fills in shared programs: 18984 -> 18984 (0.00%)<br>
fills in affected programs: 0 -> 0<br>
helped: 0<br>
HURT: 0<br>
<br>
LOST:   26<br>
GAINED: 15<br>
---<br>
 src/mesa/drivers/dri/i965/brw_<wbr>compiler.c |  3 +++<br>
 src/mesa/drivers/dri/i965/brw_<wbr>nir.c      | 22 +++++++++++++++++-----<br>
 2 files changed, 20 insertions(+), 5 deletions(-)<br>
<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>brw_compiler.c b/src/mesa/drivers/dri/i965/<wbr>brw_compiler.c<br>
index 6a73719..d7900a7 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>brw_compiler.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>brw_compiler.c<br>
@@ -55,6 +55,7 @@ static const struct nir_shader_compiler_options scalar_nir_options = {<br>
    .lower_unpack_snorm_4x8 = true,<br>
    .lower_unpack_unorm_2x16 = true,<br>
    .lower_unpack_unorm_4x8 = true,<br>
+   .max_unroll_iterations = 32,<br>
 };<br>
<br>
 static const struct nir_shader_compiler_options vector_nir_options = {<br>
@@ -75,6 +76,7 @@ static const struct nir_shader_compiler_options vector_nir_options = {<br>
    .lower_unpack_unorm_2x16 = true,<br>
    .lower_extract_byte = true,<br>
    .lower_extract_word = true,<br>
+   .max_unroll_iterations = 32,<br>
 };<br>
<br>
 static const struct nir_shader_compiler_options vector_nir_options_gen6 = {<br>
@@ -92,6 +94,7 @@ static const struct nir_shader_compiler_options vector_nir_options_gen6 = {<br>
    .lower_unpack_unorm_2x16 = true,<br>
    .lower_extract_byte = true,<br>
    .lower_extract_word = true,<br>
+   .max_unroll_iterations = 32,<br>
 };<br>
<br>
 struct brw_compiler *<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>brw_nir.c b/src/mesa/drivers/dri/i965/<wbr>brw_nir.c<br>
index b44cbe8..0c1fb44 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>brw_nir.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>brw_nir.c<br>
@@ -396,8 +396,17 @@ brw_nir_lower_cs_shared(nir_<wbr>shader *nir)<br>
 #define OPT_V(pass, ...) NIR_PASS_V(nir, pass, ##__VA_ARGS__)<br>
<br>
 static nir_shader *<br>
-nir_optimize(nir_shader *nir, bool is_scalar)<br>
+nir_optimize(nir_shader *nir, const struct brw_compiler *compiler,<br>
+             bool is_scalar)<br>
 {<br>
+   nir_variable_mode indirect_mask = 0;<br>
+   if (compiler->glsl_compiler_<wbr>options[nir->stage].<wbr>EmitNoIndirectInput)<br>
+      indirect_mask |= nir_var_shader_in;<br>
+   if (compiler->glsl_compiler_<wbr>options[nir->stage].<wbr>EmitNoIndirectOutput)<br>
+      indirect_mask |= nir_var_shader_out;<br>
+   if (compiler->glsl_compiler_<wbr>options[nir->stage].<wbr>EmitNoIndirectTemp)<br>
+      indirect_mask |= nir_var_local;<br></blockquote><div><br></div><div>At some point we should stop setting glsl_compilerOptions[].EmitNo to anything other than false and just put your indirect mask in brw_compiler directly.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+<br>
    bool progress;<br>
    do {<br>
       progress = false;<br>
@@ -420,6 +429,9 @@ nir_optimize(nir_shader *nir, bool is_scalar)<br>
       OPT(nir_opt_algebraic);<br>
       OPT(nir_opt_constant_folding);<br>
       OPT(nir_opt_dead_cf);<br>
+      if (nir->options->max_unroll_<wbr>iterations != 0) {<br>
+         OPT(nir_opt_loop_unroll, indirect_mask);<br>
+      }<br>
       OPT(nir_opt_remove_phis);<br>
       OPT(nir_opt_undef);<br>
       OPT_V(nir_lower_doubles, nir_lower_drcp |<br>
@@ -477,7 +489,7 @@ brw_preprocess_nir(const struct brw_compiler *compiler, nir_shader *nir)<br>
<br>
    OPT(nir_split_var_copies);<br>
<br>
-   nir = nir_optimize(nir, is_scalar);<br>
+   nir = nir_optimize(nir, compiler, is_scalar);<br>
<br>
    if (is_scalar) {<br>
       OPT_V(nir_lower_load_const_to_<wbr>scalar);<br>
@@ -497,7 +509,7 @@ brw_preprocess_nir(const struct brw_compiler *compiler, nir_shader *nir)<br>
    nir_lower_indirect_derefs(nir, indirect_mask);<br>
<br>
    /* Get rid of split copies */<br>
-   nir = nir_optimize(nir, is_scalar);<br>
+   nir = nir_optimize(nir, compiler, is_scalar);<br>
<br>
    OPT_V(nir_lower_clip_cull_<wbr>distance_arrays);<br>
<br>
@@ -524,7 +536,7 @@ brw_postprocess_nir(nir_shader *nir, const struct brw_compiler *compiler,<br>
    bool progress; /* Written by OPT and OPT_V */<br>
    (void)progress;<br>
<br>
-   nir = nir_optimize(nir, is_scalar);<br>
+   nir = nir_optimize(nir, compiler, is_scalar);<br>
<br>
    if (devinfo->gen >= 6) {<br>
       /* Try and fuse multiply-adds */<br>
@@ -616,7 +628,7 @@ brw_nir_apply_sampler_key(nir_<wbr>shader *nir,<br>
<br>
    if (nir_lower_tex(nir, &tex_options)) {<br>
       nir_validate_shader(nir);<br>
-      nir = nir_optimize(nir, is_scalar);<br>
+      nir = nir_optimize(nir, compiler, is_scalar);<br>
    }<br>
<br>
    return nir;<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.9.3<br>
<br>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div></div>