[Mesa-dev] [PATCH v2 42/52] nir/opt_intrinsics: Rework progress

Lionel Landwerlin lionel.g.landwerlin at intel.com
Fri Oct 13 10:31:44 UTC 2017


Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>

On 13/10/17 06:48, Jason Ekstrand wrote:
> This commit fixes two issues:  First, we were returning false regardless
> of whether or not the function made progress.  Second, we were calling
> nir_metadata_preserve far more often than needed; we only need to call
> it once per impl.
> ---
>   src/compiler/nir/nir_opt_intrinsics.c | 14 +++++++++-----
>   1 file changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/src/compiler/nir/nir_opt_intrinsics.c b/src/compiler/nir/nir_opt_intrinsics.c
> index f12dc87..26a0f96 100644
> --- a/src/compiler/nir/nir_opt_intrinsics.c
> +++ b/src/compiler/nir/nir_opt_intrinsics.c
> @@ -121,8 +121,6 @@ opt_intrinsics_impl(nir_function_impl *impl)
>            nir_ssa_def_rewrite_uses(&intrin->dest.ssa,
>                                     nir_src_for_ssa(replacement));
>            nir_instr_remove(instr);
> -         nir_metadata_preserve(impl, nir_metadata_block_index |
> -                                     nir_metadata_dominance);
>            progress = true;
>         }
>      }
> @@ -136,9 +134,15 @@ nir_opt_intrinsics(nir_shader *shader)
>      bool progress = false;
>   
>      nir_foreach_function(function, shader) {
> -      if (function->impl)
> -         progress |= opt_intrinsics_impl(function->impl);
> +      if (!function->impl)
> +         continue;
> +
> +      if (opt_intrinsics_impl(function->impl)) {
> +         progress = true;
> +         nir_metadata_preserve(function->impl, nir_metadata_block_index |
> +                                               nir_metadata_dominance);
> +      }
>      }
>   
> -   return false;
> +   return progress;
>   }




More information about the mesa-dev mailing list