Module: Mesa
Branch: master
Commit: ae3a856c34e348f721c2d647999813801b5eb33c
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ae3a856c34e348f721c2d647999813801b5eb33c

Author: Jason Ekstrand <jason.ekstr...@intel.com>
Date:   Tue Mar 20 15:44:16 2018 -0700

nir/lower_atomics: Rework the main walker loop a bit

This replaces some "if (...} { }" with "if (...) continue;" to reduce
nesting depth and makes nir_metadata_preserve conditional on progress
for the given impl.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com>

---

 src/compiler/nir/nir_lower_atomics.c | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/src/compiler/nir/nir_lower_atomics.c 
b/src/compiler/nir/nir_lower_atomics.c
index 6b046bc426..ee66aa3d7d 100644
--- a/src/compiler/nir/nir_lower_atomics.c
+++ b/src/compiler/nir/nir_lower_atomics.c
@@ -183,18 +183,26 @@ nir_lower_atomics(nir_shader *shader,
    bool progress = false;
 
    nir_foreach_function(function, shader) {
-      if (function->impl) {
-         nir_foreach_block(block, function->impl) {
-            nir_foreach_instr_safe(instr, block) {
-               if (instr->type == nir_instr_type_intrinsic)
-                  progress |= lower_instr(nir_instr_as_intrinsic(instr),
-                                          shader_program, shader,
-                                          use_binding_as_idx);
-            }
+      if (!function->impl)
+         continue;
+
+      bool impl_progress = false;
+
+      nir_foreach_block(block, function->impl) {
+         nir_foreach_instr_safe(instr, block) {
+            if (instr->type != nir_instr_type_intrinsic)
+               continue;
+
+            impl_progress |= lower_instr(nir_instr_as_intrinsic(instr),
+                                         shader_program, shader,
+                                         use_binding_as_idx);
          }
+      }
 
+      if (impl_progress) {
          nir_metadata_preserve(function->impl, nir_metadata_block_index |
                                                nir_metadata_dominance);
+         progress = true;
       }
    }
 

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to