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