[Mesa-dev] [PATCH 0/6] nir: A couple of SPIR-V focused loop optimizations
Jason Ekstrand
jason at jlekstrand.net
Tue Dec 20 04:11:46 UTC 2016
While working with Tim on loop unrolling, I realized that the new NIR loop
unrolling pass couldn't actually unroll any loops coming out of SPIR-V
thanks to the way we handle continues. This little series adds two
relatively small optimization passes that deal with this by peeling apart
ifs at the tops of loops that take one branch on the first iteration and
the other branch on all subsequent operations.
Jason Ekstrand (6):
nir: Add a couple quick-and-dirty out-of-SSA helpers
nir: Correctly handle blocks in cf_node_cf_tree_next
nir: Expose function_impl versions of copy-prop and dce
nir: Add an optimization pass to remove trivial continues
nir: Add a pass for moving SPIR-V continue blocks to the ends of loops
i965: Use nir_opt_trivial_continues and nir_opt_if
src/compiler/Makefile.sources | 2 +
src/compiler/nir/nir.c | 2 +-
src/compiler/nir/nir.h | 9 +
src/compiler/nir/nir_from_ssa.c | 189 ++++++++++++++++++--
src/compiler/nir/nir_opt_copy_propagate.c | 2 +-
src/compiler/nir/nir_opt_dce.c | 2 +-
src/compiler/nir/nir_opt_if.c | 253 +++++++++++++++++++++++++++
src/compiler/nir/nir_opt_trivial_continues.c | 141 +++++++++++++++
src/mesa/drivers/dri/i965/brw_nir.c | 2 +
9 files changed, 587 insertions(+), 15 deletions(-)
create mode 100644 src/compiler/nir/nir_opt_if.c
create mode 100644 src/compiler/nir/nir_opt_trivial_continues.c
--
2.5.0.400.gff86faf
More information about the mesa-dev
mailing list