[Mesa-dev] [PATCH 0/7] NIR dead control flow, take two
Connor Abbott
cwabbott0 at gmail.com
Tue Jul 21 21:53:25 PDT 2015
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
More information about the mesa-dev
mailing list