intel/fs: Don't loop when lowering CS intrinsics
authorCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Wed, 3 Apr 2019 00:41:07 +0000 (17:41 -0700)
committerCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Tue, 9 Apr 2019 02:29:33 +0000 (19:29 -0700)
This was needed when certain intrinsics were lowered to other ones
that were defined by the same pass.  After 060817b2 "intel,nir: Move
gl_LocalInvocationID lowering to nir_lower_system_values" we don't
need the loop anymore.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/intel/compiler/brw_nir_lower_cs_intrinsics.c

index 6180e6a706b667709ed436dea00d0f4df4a88244..434ad005281172e3268359c12e9de411fc33d172 100644 (file)
@@ -193,11 +193,10 @@ brw_nir_lower_cs_intrinsics(nir_shader *nir,
 {
    assert(nir->info.stage == MESA_SHADER_COMPUTE);
 
-   bool progress = false;
-   struct lower_intrinsics_state state;
-   memset(&state, 0, sizeof(state));
-   state.nir = nir;
-   state.dispatch_width = dispatch_width;
+   struct lower_intrinsics_state state = {
+      .nir = nir,
+      .dispatch_width = dispatch_width,
+   };
 
    assert(!nir->info.cs.local_size_variable);
    state.local_workgroup_size = nir->info.cs.local_size[0] *
@@ -212,16 +211,12 @@ brw_nir_lower_cs_intrinsics(nir_shader *nir,
       assert(state.local_workgroup_size % 4 == 0);
    }
 
-   do {
-      state.progress = false;
-      nir_foreach_function(function, nir) {
-         if (function->impl) {
-            state.impl = function->impl;
-            lower_cs_intrinsics_convert_impl(&state);
-         }
+   nir_foreach_function(function, nir) {
+      if (function->impl) {
+         state.impl = function->impl;
+         lower_cs_intrinsics_convert_impl(&state);
       }
-      progress |= state.progress;
-   } while (state.progress);
+   }
 
-   return progress;
+   return state.progress;
 }