This is the second version of my dead control-flow series. In addition to fixing up a few things pointed out by Jason and cleaning up a few other odds and ends, I've fixed a number of bugs caught by disabling opt_if_simplification in GLSL IR as in the last patch. In particular, patch 5 deals with rewriting phi nodes when deleting control flow, something I forgot when doing the original series.
I've run the series, including the last patch which is just for testing, through piglit and there are no regressions except for shaders/glsl-const-folding-01, which is due to the last patch disabling the GLSL IR optimization that the test is relying on, and glslparsertest/shaders/correctfull.frag, which now crashes in the i965 fs backend -- it seems to be an issue with i965, and not NIR, that was uncovered after NIR was made more aggressive. I've also verified that the public shader-db doesn't crash with this series (including the last patch), and manually tested some of the tricker cases, although it would be a good idea to run the entire thing through the private shader-db too. This series is also available at git://people.freedesktop.org/~cwabbott0/mesa nir-dead-cf-v4 Connor Abbott (14): nir/vars_to_ssa: don't rewrite removed instructions nir: insert ssa_undef instructions when cleaning up defs/uses nir: cleanup cf nodes earlier in nir_cf_node_remove() nir: properly clean up jumps when removing cf nodes nir: fix up phi nodes when removing cf nodes nir: add nir_cf_node_remove_after() nir/validate: validate successors at the end of a loop nir: add an optimization for removing dead control flow nir/dead_cf: delete code that's unreachable due to jumps nir: add nir_block_get_following_loop() helper nir: add a helper for iterating over blocks in a cf node nir/dead_cf: add support for removing useless loops i965/fs/nir: enable the dead control flow optimization XXX disable opt_if_simplification src/glsl/Makefile.sources | 1 + src/glsl/glsl_parser_extras.cpp | 2 +- src/glsl/nir/nir.c | 243 +++++++++++++++++++++++-- src/glsl/nir/nir.h | 17 ++ src/glsl/nir/nir_lower_vars_to_ssa.c | 3 +- src/glsl/nir/nir_opt_dead_cf.c | 342 +++++++++++++++++++++++++++++++++++ src/glsl/nir/nir_validate.c | 21 +++ src/mesa/drivers/dri/i965/brw_nir.c | 2 + 8 files changed, 615 insertions(+), 16 deletions(-) create mode 100644 src/glsl/nir/nir_opt_dead_cf.c -- 2.1.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev