nir/lower_indirect: nir_variable_mode is now a bitfield
authorJason Ekstrand <jason.ekstrand@intel.com>
Mon, 11 Apr 2016 20:38:02 +0000 (13:38 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 13 Apr 2016 19:44:07 +0000 (12:44 -0700)
Acked-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
src/compiler/nir/nir.h
src/compiler/nir/nir_lower_indirect_derefs.c

index 255c3a03d72388c61bcdbd5d4f6d2db2797021e8..098094552bfe256afff5f77dfbfe6ea6e14113e3 100644 (file)
@@ -2185,7 +2185,7 @@ void nir_lower_var_copies(nir_shader *shader);
 
 bool nir_lower_global_vars_to_local(nir_shader *shader);
 
-bool nir_lower_indirect_derefs(nir_shader *shader, uint32_t mode_mask);
+bool nir_lower_indirect_derefs(nir_shader *shader, nir_variable_mode modes);
 
 bool nir_lower_locals_to_regs(nir_shader *shader);
 
index 62b8c84a9561730f8f98f74cdc4d02be010f412d..a69dd6125658cec6dddc0f59075e8a512f408dda 100644 (file)
@@ -161,7 +161,7 @@ deref_has_indirect(nir_deref_var *deref)
 
 struct lower_indirect_state {
    nir_builder builder;
-   uint32_t mode_mask;
+   nir_variable_mode modes;
    bool progress;
 };
 
@@ -183,7 +183,7 @@ lower_indirect_block(nir_block *block, void *void_state)
          continue;
 
       /* Only lower variables whose mode is in the mask */
-      if (!(state->mode_mask & (1 << intrin->variables[0]->var->data.mode)))
+      if (!(state->modes & intrin->variables[0]->var->data.mode))
          continue;
 
       state->builder.cursor = nir_before_instr(&intrin->instr);
@@ -206,12 +206,12 @@ lower_indirect_block(nir_block *block, void *void_state)
 }
 
 static bool
-lower_indirects_impl(nir_function_impl *impl, uint32_t mode_mask)
+lower_indirects_impl(nir_function_impl *impl, nir_variable_mode modes)
 {
    struct lower_indirect_state state;
 
    state.progress = false;
-   state.mode_mask = mode_mask;
+   state.modes = modes;
    nir_builder_init(&state.builder, impl);
 
    nir_foreach_block(impl, lower_indirect_block, &state);
@@ -228,13 +228,13 @@ lower_indirects_impl(nir_function_impl *impl, uint32_t mode_mask)
  * that does a binary search on the array index.
  */
 bool
-nir_lower_indirect_derefs(nir_shader *shader, uint32_t mode_mask)
+nir_lower_indirect_derefs(nir_shader *shader, nir_variable_mode modes)
 {
    bool progress = false;
 
    nir_foreach_function(shader, function) {
       if (function->impl)
-         progress = lower_indirects_impl(function->impl, mode_mask) || progress;
+         progress = lower_indirects_impl(function->impl, modes) || progress;
    }
 
    return progress;