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:
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. 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(&block->instr_list)) - return false; - if (nir_cf_node_is_first(&block->cf_node)) return false; -- 2.8.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev