This is another spin of my dead control flow elimination series, this time based on the control flow modification series I sent out earlier. It's much shorter, since it now uses the much-more-reusable modification API, rather than a few ad-hoc functions to do what it needs to do. The changes themselves were relatively minor, however.
Like before, the last patch is for testing purposes only; it lobotomizes the GLSL IR pass that does roughly the equivalent thing, so that the NIR version gets more exposure. It causes one extra piglit failure, but that's expected and not due to the NIR pass. The constant folding test expects the compiler to optimize away a function call before link time, but after disabling the optimization, that no longer happens. Jenkins reports that piglit.spec.arb_shader_atomic_counters.semantics also fails, but only on one platform and I couldn't reproduce it so it seems like a spurious failure. Other than that, there are no piglit regressions. Connor Abbott (7): 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 | 23 +++ src/glsl/nir/nir.h | 6 + src/glsl/nir/nir_opt_dead_cf.c | 359 ++++++++++++++++++++++++++++++++++++ src/mesa/drivers/dri/i965/brw_nir.c | 2 + 6 files changed, 392 insertions(+), 1 deletion(-) create mode 100644 src/glsl/nir/nir_opt_dead_cf.c -- 2.4.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev