On Wed, Dec 17, 2014 at 4:52 PM, Connor Abbott <cwabbo...@gmail.com> 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 <cwabbo...@gmail.com> > > > On Tue, Dec 16, 2014 at 1:05 AM, Jason Ekstrand <ja...@jlekstrand.net> > 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 > > mesa-dev@lists.freedesktop.org > > http://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev