summaryrefslogtreecommitdiff
path: root/src/compiler/nir/nir_validate.c
diff options
context:
space:
mode:
authorFaith Ekstrand <faith.ekstrand@collabora.com>2023-08-14 11:41:49 -0500
committerMarge Bot <emma+marge@anholt.net>2023-08-14 21:22:53 +0000
commitc7fb2228e6997f165eb2d642e4582490a0af9706 (patch)
treec94c1d28939daf32cd6931027e2751b6baf3b4d5 /src/compiler/nir/nir_validate.c
parentb9e514d25be7965fb36c714c8bf5ece417763600 (diff)
nir/validate: Replace all dest validation with validate_def
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24674>
Diffstat (limited to 'src/compiler/nir/nir_validate.c')
-rw-r--r--src/compiler/nir/nir_validate.c40
1 files changed, 14 insertions, 26 deletions
diff --git a/src/compiler/nir/nir_validate.c b/src/compiler/nir/nir_validate.c
index 4bca4056e57..0e51d0366de 100644
--- a/src/compiler/nir/nir_validate.c
+++ b/src/compiler/nir/nir_validate.c
@@ -180,8 +180,14 @@ validate_alu_src(nir_alu_instr *instr, unsigned index, validate_state *state)
}
static void
-validate_ssa_def(nir_def *def, validate_state *state)
+validate_def(nir_def *def, validate_state *state,
+ unsigned bit_sizes, unsigned num_components)
{
+ if (bit_sizes)
+ validate_assert(state, def->bit_size & bit_sizes);
+ if (num_components)
+ validate_assert(state, def->num_components == num_components);
+
validate_assert(state, def->index < state->impl->ssa_alloc);
validate_assert(state, !BITSET_TEST(state->ssa_defs_found, def->index));
BITSET_SET(state->ssa_defs_found, def->index);
@@ -201,24 +207,6 @@ validate_ssa_def(nir_def *def, validate_state *state)
}
static void
-validate_dest(nir_dest *dest, validate_state *state,
- unsigned bit_sizes, unsigned num_components)
-{
- if (bit_sizes)
- validate_assert(state, dest->ssa.bit_size & bit_sizes);
- if (num_components)
- validate_assert(state, dest->ssa.num_components == num_components);
- validate_ssa_def(&dest->ssa, state);
-}
-
-static void
-validate_alu_dest(nir_alu_instr *instr, validate_state *state)
-{
- nir_alu_dest *dest = &instr->dest;
- validate_dest(&dest->dest, state, 0, 0);
-}
-
-static void
validate_alu_instr(nir_alu_instr *instr, validate_state *state)
{
validate_assert(state, instr->op < nir_num_opcodes);
@@ -275,7 +263,7 @@ validate_alu_instr(nir_alu_instr *instr, validate_state *state)
dest_bit_size == 64);
}
- validate_alu_dest(instr, state);
+ validate_def(&instr->dest.dest.ssa, state, 0, 0);
}
static void
@@ -395,7 +383,7 @@ validate_deref_instr(nir_deref_instr *instr, validate_state *state)
* want to let other compiler components such as SPIR-V decide how big
* pointers should be.
*/
- validate_dest(&instr->dest, state, 0, 0);
+ validate_def(&instr->dest.ssa, state, 0, 0);
/* Certain modes cannot be used as sources for phi instructions because
* way too many passes assume that they can always chase deref chains.
@@ -703,7 +691,7 @@ validate_intrinsic_instr(nir_intrinsic_instr *instr, validate_state *state)
else
dest_bit_size = dest_bit_size ? dest_bit_size : bit_sizes;
- validate_dest(&instr->dest, state, dest_bit_size, components_written);
+ validate_def(&instr->dest.ssa, state, dest_bit_size, components_written);
}
if (!vectorized_intrinsic(instr))
@@ -859,7 +847,7 @@ validate_tex_instr(nir_tex_instr *instr, validate_state *state)
if (instr->is_gather_implicit_lod)
validate_assert(state, instr->op == nir_texop_tg4);
- validate_dest(&instr->dest, state, 0, nir_tex_instr_dest_size(instr));
+ validate_def(&instr->dest.ssa, state, 0, nir_tex_instr_dest_size(instr));
unsigned bit_size = nir_alu_type_get_type_size(instr->dest_type);
validate_assert(state,
@@ -916,7 +904,7 @@ validate_const_value(nir_const_value *val, unsigned bit_size,
static void
validate_load_const_instr(nir_load_const_instr *instr, validate_state *state)
{
- validate_ssa_def(&instr->def, state);
+ validate_def(&instr->def, state, 0, 0);
for (unsigned i = 0; i < instr->def.num_components; i++)
validate_const_value(&instr->value[i], instr->def.bit_size, false, state);
@@ -925,7 +913,7 @@ validate_load_const_instr(nir_load_const_instr *instr, validate_state *state)
static void
validate_ssa_undef_instr(nir_undef_instr *instr, validate_state *state)
{
- validate_ssa_def(&instr->def, state);
+ validate_def(&instr->def, state, 0, 0);
}
static void
@@ -936,7 +924,7 @@ validate_phi_instr(nir_phi_instr *instr, validate_state *state)
* basic blocks, to avoid validating an SSA use before its definition.
*/
- validate_dest(&instr->dest, state, 0, 0);
+ validate_def(&instr->dest.ssa, state, 0, 0);
exec_list_validate(&instr->srcs);
validate_assert(state, exec_list_length(&instr->srcs) ==