[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