static void validate_phi_instr(nir_phi_instr *instr, validate_state *state) { /* * don't validate the sources until we get to them from their predecessor * basic blocks, to avoid validating an SSA use before its definition. */ validate_dest(&instr->dest, state); exec_list_validate(&instr->srcs); assert(exec_list_length(&instr->srcs) == state->block->predecessors->entries); }
static void validate_phi_src(nir_phi_instr *instr, nir_block *pred, validate_state *state) { state->instr = &instr->instr; validate_assert(state, instr->dest.is_ssa); exec_list_validate(&instr->srcs); nir_foreach_phi_src(src, instr) { if (src->pred == pred) { validate_assert(state, src->src.is_ssa); validate_src(&src->src, state, instr->dest.ssa.bit_size, instr->dest.ssa.num_components); state->instr = NULL; return; } } abort(); }