nir: Get rid of global registers
We have a pass to lower global registers to locals and many drivers dutifully call it. However, no one ever creates a global register ever so it's all dead code. It's time we bury it. Acked-by: Karol Herbst <kherbst@redhat.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -151,10 +151,8 @@ validate_reg_src(nir_src *src, validate_state *state,
|
||||
_mesa_set_add(reg_state->if_uses, src);
|
||||
}
|
||||
|
||||
if (!src->reg.reg->is_global) {
|
||||
validate_assert(state, reg_state->where_defined == state->impl &&
|
||||
"using a register declared in a different function");
|
||||
}
|
||||
validate_assert(state, reg_state->where_defined == state->impl &&
|
||||
"using a register declared in a different function");
|
||||
|
||||
if (bit_sizes)
|
||||
validate_assert(state, src->reg.reg->bit_size & bit_sizes);
|
||||
@@ -254,10 +252,8 @@ validate_reg_dest(nir_reg_dest *dest, validate_state *state,
|
||||
reg_validate_state *reg_state = (reg_validate_state *) entry2->data;
|
||||
_mesa_set_add(reg_state->defs, dest);
|
||||
|
||||
if (!dest->reg->is_global) {
|
||||
validate_assert(state, reg_state->where_defined == state->impl &&
|
||||
"writing to a register declared in a different function");
|
||||
}
|
||||
validate_assert(state, reg_state->where_defined == state->impl &&
|
||||
"writing to a register declared in a different function");
|
||||
|
||||
if (bit_sizes)
|
||||
validate_assert(state, dest->reg->bit_size & bit_sizes);
|
||||
@@ -933,14 +929,9 @@ validate_cf_node(nir_cf_node *node, validate_state *state)
|
||||
}
|
||||
|
||||
static void
|
||||
prevalidate_reg_decl(nir_register *reg, bool is_global, validate_state *state)
|
||||
prevalidate_reg_decl(nir_register *reg, validate_state *state)
|
||||
{
|
||||
validate_assert(state, reg->is_global == is_global);
|
||||
|
||||
if (is_global)
|
||||
validate_assert(state, reg->index < state->shader->reg_alloc);
|
||||
else
|
||||
validate_assert(state, reg->index < state->impl->reg_alloc);
|
||||
validate_assert(state, reg->index < state->impl->reg_alloc);
|
||||
validate_assert(state, !BITSET_TEST(state->regs_found, reg->index));
|
||||
BITSET_SET(state->regs_found, reg->index);
|
||||
|
||||
@@ -953,7 +944,7 @@ prevalidate_reg_decl(nir_register *reg, bool is_global, validate_state *state)
|
||||
reg_state->if_uses = _mesa_pointer_set_create(reg_state);
|
||||
reg_state->defs = _mesa_pointer_set_create(reg_state);
|
||||
|
||||
reg_state->where_defined = is_global ? NULL : state->impl;
|
||||
reg_state->where_defined = state->impl;
|
||||
|
||||
_mesa_hash_table_insert(state->regs, reg, reg_state);
|
||||
}
|
||||
@@ -1116,7 +1107,7 @@ validate_function_impl(nir_function_impl *impl, validate_state *state)
|
||||
sizeof(BITSET_WORD));
|
||||
exec_list_validate(&impl->registers);
|
||||
foreach_list_typed(nir_register, reg, node, &impl->registers) {
|
||||
prevalidate_reg_decl(reg, false, state);
|
||||
prevalidate_reg_decl(reg, state);
|
||||
}
|
||||
|
||||
state->ssa_defs_found = realloc(state->ssa_defs_found,
|
||||
@@ -1253,25 +1244,11 @@ nir_validate_shader(nir_shader *shader, const char *when)
|
||||
validate_var_decl(var, true, &state);
|
||||
}
|
||||
|
||||
state.regs_found = realloc(state.regs_found,
|
||||
BITSET_WORDS(shader->reg_alloc) *
|
||||
sizeof(BITSET_WORD));
|
||||
memset(state.regs_found, 0, BITSET_WORDS(shader->reg_alloc) *
|
||||
sizeof(BITSET_WORD));
|
||||
exec_list_validate(&shader->registers);
|
||||
foreach_list_typed(nir_register, reg, node, &shader->registers) {
|
||||
prevalidate_reg_decl(reg, true, &state);
|
||||
}
|
||||
|
||||
exec_list_validate(&shader->functions);
|
||||
foreach_list_typed(nir_function, func, node, &shader->functions) {
|
||||
validate_function(func, &state);
|
||||
}
|
||||
|
||||
foreach_list_typed(nir_register, reg, node, &shader->registers) {
|
||||
postvalidate_reg_decl(reg, &state);
|
||||
}
|
||||
|
||||
if (_mesa_hash_table_num_entries(state.errors) > 0)
|
||||
dump_errors(&state, when);
|
||||
|
||||
|
Reference in New Issue
Block a user