<p dir="ltr">On Aug 1, 2016 12:41 PM, "Eric Anholt" <<a href="mailto:eric@anholt.net">eric@anholt.net</a>> wrote:<br>
><br>
> nir_opt_peephole_select has the job of removing IF statements with no side<br>
> effects.  However, if the IF statement's successor didn't have any<br>
> instructions in it, we were skipping it, which occurred in mupen64 on<br>
> vc4 with glsl_to_nir enabled:</p>
<p dir="ltr">Ugh... This makes sense.  I do keep thinking that, one day, this should be rolled into dead_cf...  Oh well</p>
<p dir="ltr">Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>></p>
<p dir="ltr">> instructions in affected programs:     6134 -> 4120 (-32.83%)<br>
> total uniforms in shared programs: 38268 -> 38219 (-0.13%)<br>
><br>
> No changes on Haswell shader-db.<br>
> ---<br>
><br>
> The comment abou the end block is concerning, but I think actually the<br>
> end block doesn't get iterated over.  I would be surprised if HSW<br>
> shader-db didn't crash if the end block was actually visited.</p>
<p dir="ltr">As of recent block iteration changes, we no longer hit the end block using nir_foreach_block so it should be ok.</p>
<p dir="ltr">>  src/compiler/nir/nir_opt_peephole_select.c | 7 -------<br>
>  1 file changed, 7 deletions(-)<br>
><br>
> diff --git a/src/compiler/nir/nir_opt_peephole_select.c b/src/compiler/nir/nir_opt_peephole_select.c<br>
> index 7fcc71ea9d76..633e9f486c08 100644<br>
> --- a/src/compiler/nir/nir_opt_peephole_select.c<br>
> +++ b/src/compiler/nir/nir_opt_peephole_select.c<br>
> @@ -127,13 +127,6 @@ block_check_for_allowed_instrs(nir_block *block)<br>
>  static bool<br>
>  nir_opt_peephole_select_block(nir_block *block, void *mem_ctx)<br>
>  {<br>
> -   /* If the block is empty, then it certainly doesn't have any phi nodes,<br>
> -    * so we can skip it.  This also ensures that we do an early skip on the<br>
> -    * end block of the function which isn't actually attached to the CFG.<br>
> -    */<br>
> -   if (exec_list_is_empty(&block->instr_list))<br>
> -      return false;<br>
> -<br>
>     if (nir_cf_node_is_first(&block->cf_node))<br>
>        return false;<br>
><br>
> --<br>
> 2.8.1<br>
><br>
> _______________________________________________<br>
> mesa-dev mailing list<br>
> <a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a></p>