nir: Relax opt_if logic to prevent re-merging 64bit phis for loop headers
[mesa.git] / src / compiler / nir / nir_opt_access.c
index 731b129ad9789ceb976d490d620973b5893966c2..d428e29f6ea24fa22940f9f83f3a89b6148ce4d9 100644 (file)
@@ -120,6 +120,7 @@ gather_intrinsic(struct access_state *state, nir_intrinsic_instr *instr)
 
       _mesa_set_add(state->vars_written, var);
       state->buffers_written = true;
+      break;
 
    case nir_intrinsic_memory_barrier:
       state->buffer_barriers = true;
@@ -134,11 +135,12 @@ gather_intrinsic(struct access_state *state, nir_intrinsic_instr *instr)
       state->image_barriers = true;
       break;
 
-   case nir_intrinsic_scoped_memory_barrier:
+   case nir_intrinsic_scoped_barrier:
       /* TODO: Could be more granular if we had nir_var_mem_image. */
       if (nir_intrinsic_memory_modes(instr) & (nir_var_mem_ubo |
                                                nir_var_mem_ssbo |
-                                               nir_var_uniform)) {
+                                               nir_var_uniform |
+                                               nir_var_mem_global)) {
          state->buffer_barriers = true;
          state->image_barriers = true;
       }
@@ -320,7 +322,9 @@ nir_opt_access(nir_shader *shader)
       }
    }
 
-   nir_foreach_variable(var, &shader->uniforms)
+   nir_foreach_variable_with_modes(var, shader, nir_var_uniform |
+                                                nir_var_mem_ubo |
+                                                nir_var_mem_ssbo)
       var_progress |= process_variable(&state, var);
 
    nir_foreach_function(func, shader) {