--- src/compiler/nir/nir_gather_info.c | 2 +- src/compiler/nir/nir_inline_functions.c | 6 +++--- src/compiler/nir/nir_linking_helpers.c | 10 ++++------ src/compiler/nir/nir_lower_alpha_test.c | 2 +- src/compiler/nir/nir_lower_atomics.c | 11 ++++++----- src/compiler/nir/nir_lower_clamp_color_outputs.c | 2 +- src/compiler/nir/nir_lower_global_vars_to_local.c | 2 +- src/compiler/nir/nir_lower_indirect_derefs.c | 4 ++-- src/compiler/nir/nir_lower_io.c | 10 +++++----- src/compiler/nir/nir_lower_io_arrays_to_elements.c | 4 ++-- src/compiler/nir/nir_lower_io_to_scalar.c | 2 +- src/compiler/nir/nir_lower_io_types.c | 2 +- src/compiler/nir/nir_lower_locals_to_regs.c | 4 ++-- src/compiler/nir/nir_lower_phis_to_scalar.c | 9 +++++---- src/compiler/nir/nir_lower_system_values.c | 2 +- src/compiler/nir/nir_lower_wpos_ytransform.c | 4 ++-- src/compiler/nir/nir_opt_peephole_select.c | 2 +- src/compiler/nir/nir_propagate_invariant.c | 8 ++++---- src/compiler/nir/nir_remove_dead_variables.c | 11 ++++++----- src/compiler/nir/nir_validate.c | 22 +++++++++++++--------- 20 files changed, 62 insertions(+), 57 deletions(-)
diff --git a/src/compiler/nir/nir_gather_info.c b/src/compiler/nir/nir_gather_info.c index 743f968035b..1f7f95b94ae 100644 --- a/src/compiler/nir/nir_gather_info.c +++ b/src/compiler/nir/nir_gather_info.c @@ -233,7 +233,7 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader) case nir_intrinsic_interp_var_at_offset: case nir_intrinsic_load_var: case nir_intrinsic_store_var: { - nir_variable *var = instr->variables[0]->var; + nir_variable *var = nir_intrinsic_var(instr, 0); if (var->data.mode == nir_var_shader_in || var->data.mode == nir_var_shader_out) { diff --git a/src/compiler/nir/nir_inline_functions.c b/src/compiler/nir/nir_inline_functions.c index b91e7bc86da..db66e398ae1 100644 --- a/src/compiler/nir/nir_inline_functions.c +++ b/src/compiler/nir/nir_inline_functions.c @@ -118,12 +118,12 @@ lower_params_to_locals_block(nir_block *block, nir_function_impl *impl) switch (intrin->intrinsic) { case nir_intrinsic_store_var: - lower_param_to_local(intrin->variables[0]->var, impl, true); + lower_param_to_local(nir_intrinsic_var(intrin, 0), impl, true); break; case nir_intrinsic_copy_var: - lower_param_to_local(intrin->variables[0]->var, impl, true); - lower_param_to_local(intrin->variables[1]->var, impl, false); + lower_param_to_local(nir_intrinsic_var(intrin, 0), impl, true); + lower_param_to_local(nir_intrinsic_var(intrin, 1), impl, false); break; case nir_intrinsic_load_var: diff --git a/src/compiler/nir/nir_linking_helpers.c b/src/compiler/nir/nir_linking_helpers.c index 2b0a2668a33..fd8f6d947b4 100644 --- a/src/compiler/nir/nir_linking_helpers.c +++ b/src/compiler/nir/nir_linking_helpers.c @@ -71,18 +71,16 @@ tcs_add_output_reads(nir_shader *shader, uint64_t *read, uint64_t *patches_read) nir_intrinsic_instr *intrin_instr = nir_instr_as_intrinsic(instr); if (intrin_instr->intrinsic == nir_intrinsic_load_var && - intrin_instr->variables[0]->var->data.mode == + nir_intrinsic_var(intrin_instr, 0)->data.mode == nir_var_shader_out) { - nir_variable *var = intrin_instr->variables[0]->var; + nir_variable *var = nir_intrinsic_var(intrin_instr, 0); if (var->data.patch) { patches_read[var->data.location_frac] |= - get_variable_io_mask(intrin_instr->variables[0]->var, - shader->info.stage); + get_variable_io_mask(var, shader->info.stage); } else { read[var->data.location_frac] |= - get_variable_io_mask(intrin_instr->variables[0]->var, - shader->info.stage); + get_variable_io_mask(var, shader->info.stage); } } } diff --git a/src/compiler/nir/nir_lower_alpha_test.c b/src/compiler/nir/nir_lower_alpha_test.c index 6bf9ff142df..8ebf37806d9 100644 --- a/src/compiler/nir/nir_lower_alpha_test.c +++ b/src/compiler/nir/nir_lower_alpha_test.c @@ -56,7 +56,7 @@ nir_lower_alpha_test(nir_shader *shader, enum compare_func func, switch (intr->intrinsic) { case nir_intrinsic_store_var: - out = intr->variables[0]->var; + out = nir_intrinsic_var(intr, 0); break; case nir_intrinsic_store_output: /* already had i/o lowered.. lookup the matching output var: */ diff --git a/src/compiler/nir/nir_lower_atomics.c b/src/compiler/nir/nir_lower_atomics.c index bdab4b87377..3ceeea2f349 100644 --- a/src/compiler/nir/nir_lower_atomics.c +++ b/src/compiler/nir/nir_lower_atomics.c @@ -90,13 +90,14 @@ lower_instr(nir_intrinsic_instr *instr, return false; } - if (instr->variables[0]->var->data.mode != nir_var_uniform && - instr->variables[0]->var->data.mode != nir_var_shader_storage && - instr->variables[0]->var->data.mode != nir_var_shared) + const nir_variable *var = nir_intrinsic_var(instr, 0); + if (var->data.mode != nir_var_uniform && + var->data.mode != nir_var_shader_storage && + var->data.mode != nir_var_shared) return false; /* atomics passed as function arguments can't be lowered */ void *mem_ctx = ralloc_parent(instr); - unsigned uniform_loc = instr->variables[0]->var->data.location; + unsigned uniform_loc = var->data.location; nir_intrinsic_instr *new_instr = nir_intrinsic_instr_create(mem_ctx, op); nir_intrinsic_set_base(new_instr, @@ -104,7 +105,7 @@ lower_instr(nir_intrinsic_instr *instr, nir_load_const_instr *offset_const = nir_load_const_instr_create(mem_ctx, 1, 32); - offset_const->value.u32[0] = instr->variables[0]->var->data.offset; + offset_const->value.u32[0] = var->data.offset; nir_instr_insert_before(&instr->instr, &offset_const->instr); diff --git a/src/compiler/nir/nir_lower_clamp_color_outputs.c b/src/compiler/nir/nir_lower_clamp_color_outputs.c index 55becbf769e..d8dd6d0e7be 100644 --- a/src/compiler/nir/nir_lower_clamp_color_outputs.c +++ b/src/compiler/nir/nir_lower_clamp_color_outputs.c @@ -68,7 +68,7 @@ lower_intrinsic(lower_state *state, nir_intrinsic_instr *intr) switch (intr->intrinsic) { case nir_intrinsic_store_var: - out = intr->variables[0]->var; + out = nir_intrinsic_var(intr, 0); break; case nir_intrinsic_store_output: /* already had i/o lowered.. lookup the matching output var: */ diff --git a/src/compiler/nir/nir_lower_global_vars_to_local.c b/src/compiler/nir/nir_lower_global_vars_to_local.c index c8fdfde8cb1..b67040a13a0 100644 --- a/src/compiler/nir/nir_lower_global_vars_to_local.c +++ b/src/compiler/nir/nir_lower_global_vars_to_local.c @@ -44,7 +44,7 @@ mark_global_var_uses_block(nir_block *block, nir_function_impl *impl, unsigned num_vars = nir_intrinsic_infos[intrin->intrinsic].num_variables; for (unsigned i = 0; i < num_vars; i++) { - nir_variable *var = intrin->variables[i]->var; + nir_variable *var = nir_intrinsic_var(intrin, i); if (var->data.mode != nir_var_global) continue; diff --git a/src/compiler/nir/nir_lower_indirect_derefs.c b/src/compiler/nir/nir_lower_indirect_derefs.c index c949224b15c..76f19ecd7e6 100644 --- a/src/compiler/nir/nir_lower_indirect_derefs.c +++ b/src/compiler/nir/nir_lower_indirect_derefs.c @@ -152,8 +152,8 @@ lower_indirect_block(nir_block *block, nir_builder *b, * array variables. (We can't handle indirects on tightly packed * scalar arrays, so we need to lower them regardless.) */ - if (!(modes & intrin->variables[0]->var->data.mode) && - !intrin->variables[0]->var->data.compact) + nir_variable *var = nir_intrinsic_var(intrin, 0); + if (!(modes & var->data.mode) && !var->data.compact) continue; b->cursor = nir_before_instr(&intrin->instr); diff --git a/src/compiler/nir/nir_lower_io.c b/src/compiler/nir/nir_lower_io.c index df91febd68d..96a5cec1df2 100644 --- a/src/compiler/nir/nir_lower_io.c +++ b/src/compiler/nir/nir_lower_io.c @@ -160,7 +160,7 @@ lower_load(nir_intrinsic_instr *intrin, struct lower_io_state *state, unsigned component) { const nir_shader *nir = state->builder.shader; - nir_variable *var = intrin->variables[0]->var; + nir_variable *var = nir_intrinsic_var(intrin, 0); nir_variable_mode mode = var->data.mode; nir_ssa_def *barycentric = NULL; @@ -232,7 +232,7 @@ lower_store(nir_intrinsic_instr *intrin, struct lower_io_state *state, nir_ssa_def *vertex_index, nir_ssa_def *offset, unsigned component) { - nir_variable *var = intrin->variables[0]->var; + nir_variable *var = nir_intrinsic_var(intrin, 0); nir_variable_mode mode = var->data.mode; nir_intrinsic_op op; @@ -269,7 +269,7 @@ static nir_intrinsic_instr * lower_atomic(nir_intrinsic_instr *intrin, struct lower_io_state *state, nir_ssa_def *offset) { - nir_variable *var = intrin->variables[0]->var; + nir_variable *var = nir_intrinsic_var(intrin, 0); assert(var->data.mode == nir_var_shared); @@ -308,7 +308,7 @@ static nir_intrinsic_instr * lower_interpolate_at(nir_intrinsic_instr *intrin, struct lower_io_state *state, nir_ssa_def *offset, unsigned component) { - nir_variable *var = intrin->variables[0]->var; + nir_variable *var = nir_intrinsic_var(intrin, 0); assert(var->data.mode == nir_var_shader_in); @@ -398,7 +398,7 @@ nir_lower_io_block(nir_block *block, continue; } - nir_variable *var = intrin->variables[0]->var; + nir_variable *var = nir_intrinsic_var(intrin, 0); nir_variable_mode mode = var->data.mode; if ((state->modes & mode) == 0) diff --git a/src/compiler/nir/nir_lower_io_arrays_to_elements.c b/src/compiler/nir/nir_lower_io_arrays_to_elements.c index 9a5eec8f870..ff868e179c1 100644 --- a/src/compiler/nir/nir_lower_io_arrays_to_elements.c +++ b/src/compiler/nir/nir_lower_io_arrays_to_elements.c @@ -242,7 +242,7 @@ create_indirects_mask(nir_shader *shader, uint64_t *indirects, intr->intrinsic != nir_intrinsic_interp_var_at_offset) continue; - nir_variable *var = intr->variables[0]->var; + nir_variable *var = nir_intrinsic_var(intr, 0); if (var->data.mode != mode) continue; @@ -286,7 +286,7 @@ lower_io_arrays_to_elements(nir_shader *shader, nir_variable_mode mask, intr->intrinsic != nir_intrinsic_interp_var_at_offset) continue; - nir_variable *var = intr->variables[0]->var; + nir_variable *var = nir_intrinsic_var(intr, 0); /* Skip indirects */ uint64_t loc_mask = ((uint64_t)1) << var->data.location; diff --git a/src/compiler/nir/nir_lower_io_to_scalar.c b/src/compiler/nir/nir_lower_io_to_scalar.c index 7774c2d2458..0144cc26b38 100644 --- a/src/compiler/nir/nir_lower_io_to_scalar.c +++ b/src/compiler/nir/nir_lower_io_to_scalar.c @@ -311,7 +311,7 @@ nir_lower_io_to_scalar_early(nir_shader *shader, nir_variable_mode mask) intr->intrinsic != nir_intrinsic_interp_var_at_offset) continue; - nir_variable *var = intr->variables[0]->var; + nir_variable *var = nir_intrinsic_var(intr, 0); nir_variable_mode mode = var->data.mode; /* TODO: add patch support */ diff --git a/src/compiler/nir/nir_lower_io_types.c b/src/compiler/nir/nir_lower_io_types.c index 795bbd80d5d..cbe6d956148 100644 --- a/src/compiler/nir/nir_lower_io_types.c +++ b/src/compiler/nir/nir_lower_io_types.c @@ -121,7 +121,7 @@ lower_io_types_block(struct lower_io_types_state *state, nir_block *block) (intr->intrinsic != nir_intrinsic_store_var)) continue; - nir_variable *var = intr->variables[0]->var; + nir_variable *var = nir_intrinsic_var(intr, 0); if ((var->data.mode != nir_var_shader_in) && (var->data.mode != nir_var_shader_out)) diff --git a/src/compiler/nir/nir_lower_locals_to_regs.c b/src/compiler/nir/nir_lower_locals_to_regs.c index d0667bc5040..b224e64332e 100644 --- a/src/compiler/nir/nir_lower_locals_to_regs.c +++ b/src/compiler/nir/nir_lower_locals_to_regs.c @@ -206,7 +206,7 @@ lower_locals_to_regs_block(nir_block *block, switch (intrin->intrinsic) { case nir_intrinsic_load_var: { - if (intrin->variables[0]->var->data.mode != nir_var_local) + if (nir_intrinsic_var(intrin, 0)->data.mode != nir_var_local) continue; nir_alu_instr *mov = nir_alu_instr_create(state->shader, nir_op_imov); @@ -230,7 +230,7 @@ lower_locals_to_regs_block(nir_block *block, } case nir_intrinsic_store_var: { - if (intrin->variables[0]->var->data.mode != nir_var_local) + if (nir_intrinsic_var(intrin, 0)->data.mode != nir_var_local) continue; nir_src reg_src = get_deref_reg_src(intrin->variables[0], diff --git a/src/compiler/nir/nir_lower_phis_to_scalar.c b/src/compiler/nir/nir_lower_phis_to_scalar.c index b12718f2732..11cf9ab5c69 100644 --- a/src/compiler/nir/nir_lower_phis_to_scalar.c +++ b/src/compiler/nir/nir_lower_phis_to_scalar.c @@ -83,10 +83,11 @@ is_phi_src_scalarizable(nir_phi_src *src, nir_intrinsic_instr *src_intrin = nir_instr_as_intrinsic(src_instr); switch (src_intrin->intrinsic) { - case nir_intrinsic_load_var: - return src_intrin->variables[0]->var->data.mode == nir_var_shader_in || - src_intrin->variables[0]->var->data.mode == nir_var_uniform; - + case nir_intrinsic_load_var: { + const nir_variable *var = nir_intrinsic_var(src_intrin, 0); + return var->data.mode == nir_var_shader_in || + var->data.mode == nir_var_uniform; + } case nir_intrinsic_interp_var_at_centroid: case nir_intrinsic_interp_var_at_sample: case nir_intrinsic_interp_var_at_offset: diff --git a/src/compiler/nir/nir_lower_system_values.c b/src/compiler/nir/nir_lower_system_values.c index fb560ee21bb..31c3d2acf14 100644 --- a/src/compiler/nir/nir_lower_system_values.c +++ b/src/compiler/nir/nir_lower_system_values.c @@ -42,7 +42,7 @@ convert_block(nir_block *block, nir_builder *b) if (load_var->intrinsic != nir_intrinsic_load_var) continue; - nir_variable *var = load_var->variables[0]->var; + nir_variable *var = nir_intrinsic_var(load_var, 0); if (var->data.mode != nir_var_system_value) continue; diff --git a/src/compiler/nir/nir_lower_wpos_ytransform.c b/src/compiler/nir/nir_lower_wpos_ytransform.c index 62166e78746..1ad21cfc46f 100644 --- a/src/compiler/nir/nir_lower_wpos_ytransform.c +++ b/src/compiler/nir/nir_lower_wpos_ytransform.c @@ -81,7 +81,7 @@ emit_wpos_adjustment(lower_wpos_ytransform_state *state, bool invert, float adjX, float adjY[2]) { nir_builder *b = &state->b; - nir_variable *fragcoord = intr->variables[0]->var; + nir_variable *fragcoord = nir_intrinsic_var(intr, 0); nir_ssa_def *wpostrans, *wpos_temp, *wpos_temp_y, *wpos_input; assert(intr->dest.is_ssa); @@ -147,7 +147,7 @@ static void lower_fragcoord(lower_wpos_ytransform_state *state, nir_intrinsic_instr *intr) { const nir_lower_wpos_ytransform_options *options = state->options; - nir_variable *fragcoord = intr->variables[0]->var; + nir_variable *fragcoord = nir_intrinsic_var(intr, 0); float adjX = 0.0f; float adjY[2] = { 0.0f, 0.0f }; bool invert = false; diff --git a/src/compiler/nir/nir_opt_peephole_select.c b/src/compiler/nir/nir_opt_peephole_select.c index 4ca4f80d788..f1331917559 100644 --- a/src/compiler/nir/nir_opt_peephole_select.c +++ b/src/compiler/nir/nir_opt_peephole_select.c @@ -67,7 +67,7 @@ block_check_for_allowed_instrs(nir_block *block, unsigned *count, bool alu_ok) switch (intrin->intrinsic) { case nir_intrinsic_load_var: - switch (intrin->variables[0]->var->data.mode) { + switch (nir_intrinsic_var(intrin, 0)->data.mode) { case nir_var_shader_in: case nir_var_uniform: break; diff --git a/src/compiler/nir/nir_propagate_invariant.c b/src/compiler/nir/nir_propagate_invariant.c index 7b5bd6cce6b..190fead4e54 100644 --- a/src/compiler/nir/nir_propagate_invariant.c +++ b/src/compiler/nir/nir_propagate_invariant.c @@ -100,17 +100,17 @@ propagate_invariant_instr(nir_instr *instr, struct set *invariants) switch (intrin->intrinsic) { case nir_intrinsic_copy_var: /* If the destination is invariant then so is the source */ - if (var_is_invariant(intrin->variables[0]->var, invariants)) - add_var(intrin->variables[1]->var, invariants); + if (var_is_invariant(nir_intrinsic_var(intrin, 0), invariants)) + add_var(nir_intrinsic_var(intrin, 1), invariants); break; case nir_intrinsic_load_var: if (dest_is_invariant(&intrin->dest, invariants)) - add_var(intrin->variables[0]->var, invariants); + add_var(nir_intrinsic_var(intrin, 0), invariants); break; case nir_intrinsic_store_var: - if (var_is_invariant(intrin->variables[0]->var, invariants)) + if (var_is_invariant(nir_intrinsic_var(intrin, 0), invariants)) add_src(&intrin->src[0], invariants); break; diff --git a/src/compiler/nir/nir_remove_dead_variables.c b/src/compiler/nir/nir_remove_dead_variables.c index eff66f92d43..ebd56bc413c 100644 --- a/src/compiler/nir/nir_remove_dead_variables.c +++ b/src/compiler/nir/nir_remove_dead_variables.c @@ -35,16 +35,17 @@ add_var_use_intrinsic(nir_intrinsic_instr *instr, struct set *live, switch (instr->intrinsic) { case nir_intrinsic_copy_var: - _mesa_set_add(live, instr->variables[1]->var); + _mesa_set_add(live, nir_intrinsic_var(instr, 1)); /* Fall through */ case nir_intrinsic_store_var: { + const nir_variable *var = nir_intrinsic_var(instr, 0); /* The first source in both copy_var and store_var is the destination. * If the variable is a local that never escapes the shader, then we * don't mark it as live for just a store. */ - nir_variable_mode mode = instr->variables[0]->var->data.mode; + nir_variable_mode mode = var->data.mode; if (!(mode & (nir_var_local | nir_var_global | nir_var_shared))) - _mesa_set_add(live, instr->variables[0]->var); + _mesa_set_add(live, var); break; } @@ -58,7 +59,7 @@ add_var_use_intrinsic(nir_intrinsic_instr *instr, struct set *live, default: for (unsigned i = 0; i < num_vars; i++) { - _mesa_set_add(live, instr->variables[i]->var); + _mesa_set_add(live, nir_intrinsic_var(instr, i)); } break; } @@ -140,7 +141,7 @@ remove_dead_var_writes(nir_shader *shader, struct set *live) continue; /* Stores to dead variables need to be removed */ - if (intrin->variables[0]->var->data.mode == 0) + if (nir_intrinsic_var(intrin, 0)->data.mode == 0) nir_instr_remove(instr); } } diff --git a/src/compiler/nir/nir_validate.c b/src/compiler/nir/nir_validate.c index a49948fbb48..b1a20004a47 100644 --- a/src/compiler/nir/nir_validate.c +++ b/src/compiler/nir/nir_validate.c @@ -509,34 +509,38 @@ validate_intrinsic_instr(nir_intrinsic_instr *instr, validate_state *state) switch (instr->intrinsic) { case nir_intrinsic_load_var: { + nir_variable *var = nir_intrinsic_var(instr, 0); const struct glsl_type *type = nir_deref_tail(&instr->variables[0]->deref)->type; validate_assert(state, glsl_type_is_vector_or_scalar(type) || - (instr->variables[0]->var->data.mode == nir_var_uniform && + (var->data.mode == nir_var_uniform && glsl_get_base_type(type) == GLSL_TYPE_SUBROUTINE)); validate_assert(state, instr->num_components == glsl_get_vector_elements(type)); break; } case nir_intrinsic_store_var: { + nir_variable *var = nir_intrinsic_var(instr, 0); const struct glsl_type *type = nir_deref_tail(&instr->variables[0]->deref)->type; validate_assert(state, glsl_type_is_vector_or_scalar(type) || - (instr->variables[0]->var->data.mode == nir_var_uniform && + (var->data.mode == nir_var_uniform && glsl_get_base_type(type) == GLSL_TYPE_SUBROUTINE)); validate_assert(state, instr->num_components == glsl_get_vector_elements(type)); - validate_assert(state, instr->variables[0]->var->data.mode != nir_var_shader_in && - instr->variables[0]->var->data.mode != nir_var_uniform && - instr->variables[0]->var->data.mode != nir_var_shader_storage); + validate_assert(state, var->data.mode != nir_var_shader_in && + var->data.mode != nir_var_uniform && + var->data.mode != nir_var_shader_storage); validate_assert(state, (nir_intrinsic_write_mask(instr) & ~((1 << instr->num_components) - 1)) == 0); break; } - case nir_intrinsic_copy_var: + case nir_intrinsic_copy_var: { + nir_variable *var = nir_intrinsic_var(instr, 0); validate_assert(state, nir_deref_tail(&instr->variables[0]->deref)->type == nir_deref_tail(&instr->variables[1]->deref)->type); - validate_assert(state, instr->variables[0]->var->data.mode != nir_var_shader_in && - instr->variables[0]->var->data.mode != nir_var_uniform && - instr->variables[0]->var->data.mode != nir_var_shader_storage); + validate_assert(state, var->data.mode != nir_var_shader_in && + var->data.mode != nir_var_uniform && + var->data.mode != nir_var_shader_storage); break; + } default: break; } -- 2.14.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev