On Wed, Dec 17, 2014 at 4:52 PM, Connor Abbott <[email protected]> wrote: > > I think we're missing a few things: > > * Phi node sources >
Added > * Parallel copy entries > I don't think we're validating anything for parallel copies right now. It would be nice to, but there's no real good way to do so since they always get created and destroyed inside of the out-of-SSA pass. We do support printing them, but that's really only for debugging out-of-SSA and getting it to happen requires hacking up the out-of-SSA pass. > > Whether you care enough to validate those is up to you. Otherwise > > Reviewed-by: Connor Abbott <[email protected]> > > > On Tue, Dec 16, 2014 at 1:05 AM, Jason Ekstrand <[email protected]> > wrote: > > --- > > src/glsl/nir/nir_validate.c | 13 +++++++++++++ > > 1 file changed, 13 insertions(+) > > > > diff --git a/src/glsl/nir/nir_validate.c b/src/glsl/nir/nir_validate.c > > index 200c85a..ae8deb8 100644 > > --- a/src/glsl/nir/nir_validate.c > > +++ b/src/glsl/nir/nir_validate.c > > @@ -452,6 +452,7 @@ validate_phi_src(nir_phi_instr *instr, nir_block > *pred, validate_state *state) > > { > > state->instr = &instr->instr; > > > > + exec_list_validate(&instr->srcs); > > foreach_list_typed(nir_phi_src, src, node, &instr->srcs) { > > if (src->pred == pred) { > > validate_src(&src->src, state); > > @@ -482,6 +483,7 @@ validate_block(nir_block *block, validate_state > *state) > > > > state->block = block; > > > > + exec_list_validate(&block->instr_list); > > nir_foreach_instr(block, instr) { > > if (instr->type == nir_instr_type_phi) { > > assert(instr == nir_block_first_instr(block) || > > @@ -548,10 +550,12 @@ validate_if(nir_if *if_stmt, validate_state *state) > > nir_cf_node *old_parent = state->parent_node; > > state->parent_node = &if_stmt->cf_node; > > > > + exec_list_validate(&if_stmt->then_list); > > foreach_list_typed(nir_cf_node, cf_node, node, &if_stmt->then_list) { > > validate_cf_node(cf_node, state); > > } > > > > + exec_list_validate(&if_stmt->else_list); > > foreach_list_typed(nir_cf_node, cf_node, node, &if_stmt->else_list) { > > validate_cf_node(cf_node, state); > > } > > @@ -579,6 +583,7 @@ validate_loop(nir_loop *loop, validate_state *state) > > nir_cf_node *old_parent = state->parent_node; > > state->parent_node = &loop->cf_node; > > > > + exec_list_validate(&loop->body); > > foreach_list_typed(nir_cf_node, cf_node, node, &loop->body) { > > validate_cf_node(cf_node, state); > > } > > @@ -705,14 +710,17 @@ validate_function_impl(nir_function_impl *impl, > validate_state *state) > > state->impl = impl; > > state->parent_node = &impl->cf_node; > > > > + exec_list_validate(&impl->locals); > > foreach_list_typed(nir_variable, var, node, &impl->locals) { > > validate_var_decl(var, false, state); > > } > > > > + exec_list_validate(&impl->registers); > > foreach_list_typed(nir_register, reg, node, &impl->registers) { > > prevalidate_reg_decl(reg, false, state); > > } > > > > + exec_list_validate(&impl->body); > > foreach_list_typed(nir_cf_node, node, node, &impl->body) { > > validate_cf_node(node, state); > > } > > @@ -733,6 +741,7 @@ validate_function_overload(nir_function_overload > *overload, > > static void > > validate_function(nir_function *func, validate_state *state) > > { > > + exec_list_validate(&func->overload_list); > > foreach_list_typed(nir_function_overload, overload, node, > &func->overload_list) { > > assert(overload->function == func); > > validate_function_overload(overload, state); > > @@ -774,18 +783,22 @@ nir_validate_shader(nir_shader *shader) > > validate_var_decl((nir_variable *) entry->data, true, &state); > > } > > > > + exec_list_validate(&shader->globals); > > foreach_list_typed(nir_variable, var, node, &shader->globals) { > > validate_var_decl(var, true, &state); > > } > > > > + exec_list_validate(&shader->system_values); > > foreach_list_typed(nir_variable, var, node, &shader->system_values) { > > validate_var_decl(var, true, &state); > > } > > > > + 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); > > } > > -- > > 2.2.0 > > > > _______________________________________________ > > mesa-dev mailing list > > [email protected] > > http://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
