<p dir="ltr">Um, why? I'm sure you have some reason but I don't immediately see how a progress flag from lower_vec_to_movs is useful. Some of the others definitely are.<br>
--Jason</p>
<div class="gmail_quote">On Sep 18, 2015 10:37 AM, "Kenneth Graunke" <<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Signed-off-by: Kenneth Graunke <<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>><br>
---<br>
src/glsl/nir/nir.h | 2 +-<br>
src/glsl/nir/nir_lower_vec_to_movs.c | 16 ++++++++++++----<br>
2 files changed, 13 insertions(+), 5 deletions(-)<br>
<br>
diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h<br>
index 31c0c27..0950289 100644<br>
--- a/src/glsl/nir/nir.h<br>
+++ b/src/glsl/nir/nir.h<br>
@@ -1826,7 +1826,7 @@ void nir_lower_vars_to_ssa(nir_shader *shader);<br>
void nir_remove_dead_variables(nir_shader *shader);<br>
<br>
void nir_move_vec_src_uses_to_dest(nir_shader *shader);<br>
-void nir_lower_vec_to_movs(nir_shader *shader);<br>
+bool nir_lower_vec_to_movs(nir_shader *shader);<br>
void nir_lower_alu_to_scalar(nir_shader *shader);<br>
void nir_lower_load_const_to_scalar(nir_shader *shader);<br>
<br>
diff --git a/src/glsl/nir/nir_lower_vec_to_movs.c b/src/glsl/nir/nir_lower_vec_to_movs.c<br>
index f5d30be..b7ee4e8 100644<br>
--- a/src/glsl/nir/nir_lower_vec_to_movs.c<br>
+++ b/src/glsl/nir/nir_lower_vec_to_movs.c<br>
@@ -34,6 +34,7 @@<br>
<br>
struct vec_to_movs_state {<br>
nir_function_impl *impl;<br>
+ bool progress;<br>
};<br>
<br>
static bool<br>
@@ -251,24 +252,31 @@ lower_vec_to_movs_block(nir_block *block, void *void_state)<br>
<br>
nir_instr_remove(&vec->instr);<br>
ralloc_free(vec);<br>
+ state->progress = true;<br>
}<br>
<br>
return true;<br>
}<br>
<br>
-static void<br>
+static bool<br>
nir_lower_vec_to_movs_impl(nir_function_impl *impl)<br>
{<br>
- struct vec_to_movs_state state = { impl };<br>
+ struct vec_to_movs_state state = { impl, false };<br>
<br>
nir_foreach_block(impl, lower_vec_to_movs_block, &state);<br>
+<br>
+ return state.progress;<br>
}<br>
<br>
-void<br>
+bool<br>
nir_lower_vec_to_movs(nir_shader *shader)<br>
{<br>
+ bool progress = false;<br>
+<br>
nir_foreach_overload(shader, overload) {<br>
if (overload->impl)<br>
- nir_lower_vec_to_movs_impl(overload->impl);<br>
+ progress = nir_lower_vec_to_movs_impl(overload->impl) || progress;<br>
}<br>
+<br>
+ return progress;<br>
}<br>
--<br>
2.5.1<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">http://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</blockquote></div>