Mesa (main): nir: Delete the per-instr SSA liveness impl.
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Feb 10 01:12:37 UTC 2022
Module: Mesa
Branch: main
Commit: 20469009c7153b154e754446b8e0694610c6d03e
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=20469009c7153b154e754446b8e0694610c6d03e
Author: Emma Anholt <emma at anholt.net>
Date: Mon Jan 3 16:41:07 2022 -0800
nir: Delete the per-instr SSA liveness impl.
It was introduced for nir-to-tgsi, and I found that it was the wrong
approach. There's a reason nobody else does RA this way.
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14404>
---
src/compiler/nir/nir.h | 20 ------------
src/compiler/nir/nir_liveness.c | 71 -----------------------------------------
2 files changed, 91 deletions(-)
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
index 2837170b13f..bbfd810190c 100644
--- a/src/compiler/nir/nir.h
+++ b/src/compiler/nir/nir.h
@@ -3569,26 +3569,6 @@ nir_shader_get_entrypoint(nir_shader *shader)
return func->impl;
}
-typedef struct nir_liveness_bounds {
- uint32_t start;
- uint32_t end;
-} nir_liveness_bounds;
-
-typedef struct nir_instr_liveness {
- /**
- * nir_instr->index for the start and end of a single live interval for SSA
- * defs. ssa values last used by a nir_if condition will have an interval
- * ending at the first instruction after the last one before the if
- * condition.
- *
- * Indexed by def->index (impl->ssa_alloc elements).
- */
- struct nir_liveness_bounds *defs;
-} nir_instr_liveness;
-
-nir_instr_liveness *
-nir_live_ssa_defs_per_instr(nir_function_impl *impl);
-
nir_shader *nir_shader_create(void *mem_ctx,
gl_shader_stage stage,
const nir_shader_compiler_options *options,
diff --git a/src/compiler/nir/nir_liveness.c b/src/compiler/nir/nir_liveness.c
index 941ed1cfa1d..1e986ff0e41 100644
--- a/src/compiler/nir/nir_liveness.c
+++ b/src/compiler/nir/nir_liveness.c
@@ -342,74 +342,3 @@ nir_ssa_defs_interfere(nir_ssa_def *a, nir_ssa_def *b)
return nir_ssa_def_is_live_at(b, a->parent_instr);
}
}
-
-/* Takes an SSA def's defs and uses and expands the live interval to cover
- * that range. Control flow effects are handled separately.
- */
-static bool def_cb(nir_ssa_def *def, void *state)
-{
- nir_instr_liveness *liveness = state;
- nir_instr *instr = def->parent_instr;
- int index = def->index;
-
- liveness->defs[index].start = MIN2(liveness->defs[index].start, instr->index);
-
- nir_foreach_use(src, def) {
- liveness->defs[index].end = MAX2(liveness->defs[index].end,
- src->parent_instr->index);
- }
-
- return true;
-}
-
-nir_instr_liveness *
-nir_live_ssa_defs_per_instr(nir_function_impl *impl)
-{
- /* We'll use block-level live_ssa_defs to expand our per-instr ranges for
- * control flow.
- */
- nir_metadata_require(impl,
- nir_metadata_block_index |
- nir_metadata_instr_index |
- nir_metadata_live_ssa_defs);
-
- /* Make our struct. */
- nir_instr_liveness *liveness = ralloc(NULL, nir_instr_liveness);
- liveness->defs = rzalloc_array(liveness, nir_liveness_bounds,
- impl->ssa_alloc);
-
- /* Set our starts so we can use MIN2() as we accumulate bounds. */
- for (int i = 0; i < impl->ssa_alloc; i++)
- liveness->defs->start = ~0;
-
- nir_foreach_block(block, impl) {
- unsigned index;
- BITSET_FOREACH_SET(index, block->live_in, impl->ssa_alloc) {
- liveness->defs[index].start = MIN2(liveness->defs[index].start,
- block->start_ip);
- }
-
- nir_foreach_instr(instr, block) {
- nir_foreach_ssa_def(instr, def_cb, liveness);
- };
-
- /* track an if src's use. We need to make sure that our value is live
- * across the if reference, where we don't have an instr->index
- * representing the use. Mark it as live through the end of the block.
- */
- nir_if *nif = nir_block_get_following_if(block);
- if (nif) {
- if (nif->condition.is_ssa) {
- liveness->defs[nif->condition.ssa->index].end = MAX2(
- liveness->defs[nif->condition.ssa->index].end, block->end_ip);
- }
- }
-
- BITSET_FOREACH_SET(index, block->live_out, impl->ssa_alloc) {
- liveness->defs[index].end = MAX2(liveness->defs[index].end,
- block->end_ip);
- }
- }
-
- return liveness;
-}
More information about the mesa-commit
mailing list