diff --git a/src/compiler/glsl/gl_nir_lower_samplers_as_deref.c b/src/compiler/glsl/gl_nir_lower_samplers_as_deref.c index 7b529bc4347..53e89ad900d 100644 --- a/src/compiler/glsl/gl_nir_lower_samplers_as_deref.c +++ b/src/compiler/glsl/gl_nir_lower_samplers_as_deref.c @@ -122,8 +122,7 @@ static void record_images_used(struct shader_info *info, nir_intrinsic_instr *instr) { - nir_variable *var = - nir_deref_instr_get_variable(nir_src_as_deref(instr->src[0])); + nir_variable *var = nir_intrinsic_get_var(instr, 0); /* Structs have been lowered already, so get_aoa_size is sufficient. */ const unsigned size = diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c index e488a799671..a9f642bfd89 100644 --- a/src/compiler/nir/nir.c +++ b/src/compiler/nir/nir.c @@ -2842,8 +2842,7 @@ nir_rewrite_image_intrinsic(nir_intrinsic_instr *intrin, nir_ssa_def *src, unreachable("Unhanded image intrinsic"); } - nir_deref_instr *deref = nir_src_as_deref(intrin->src[0]); - nir_variable *var = nir_deref_instr_get_variable(deref); + nir_variable *var = nir_intrinsic_get_var(intrin, 0); /* Only update the format if the intrinsic doesn't have one set */ if (nir_intrinsic_format(intrin) == PIPE_FORMAT_NONE) diff --git a/src/compiler/nir/nir_linking_helpers.c b/src/compiler/nir/nir_linking_helpers.c index 255c711d731..1538311b05f 100644 --- a/src/compiler/nir/nir_linking_helpers.c +++ b/src/compiler/nir/nir_linking_helpers.c @@ -1048,8 +1048,7 @@ replace_varying_input_by_constant_load(nir_shader *shader, nir_builder b = nir_builder_create(impl); - nir_variable *out_var = - nir_deref_instr_get_variable(nir_src_as_deref(store_intr->src[0])); + nir_variable *out_var = nir_intrinsic_get_var(store_intr, 0); bool progress = false; nir_foreach_block(block, impl) { @@ -1099,8 +1098,7 @@ replace_duplicate_input(nir_shader *shader, nir_variable *input_var, nir_builder b = nir_builder_create(impl); - nir_variable *dup_out_var = - nir_deref_instr_get_variable(nir_src_as_deref(dup_store_intr->src[0])); + nir_variable *dup_out_var = nir_intrinsic_get_var(dup_store_intr, 0); bool progress = false; nir_foreach_block(block, impl) { @@ -1234,8 +1232,7 @@ replace_varying_input_by_uniform_load(nir_shader *shader, nir_builder b = nir_builder_create(impl); - nir_variable *out_var = - nir_deref_instr_get_variable(nir_src_as_deref(store_intr->src[0])); + nir_variable *out_var = nir_intrinsic_get_var(store_intr, 0); nir_intrinsic_instr *load = nir_instr_as_intrinsic(scalar->def->parent_instr); nir_deref_instr *deref = nir_src_as_deref(load->src[0]); diff --git a/src/compiler/nir/nir_lower_alpha_test.c b/src/compiler/nir/nir_lower_alpha_test.c index 86105c87391..27e8b256e2e 100644 --- a/src/compiler/nir/nir_lower_alpha_test.c +++ b/src/compiler/nir/nir_lower_alpha_test.c @@ -55,7 +55,7 @@ nir_lower_alpha_test(nir_shader *shader, enum compare_func func, switch (intr->intrinsic) { case nir_intrinsic_store_deref: - out = nir_deref_instr_get_variable(nir_src_as_deref(intr->src[0])); + out = nir_intrinsic_get_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_clamp_color_outputs.c b/src/compiler/nir/nir_lower_clamp_color_outputs.c index 7797b8b91af..c790dad4cfc 100644 --- a/src/compiler/nir/nir_lower_clamp_color_outputs.c +++ b/src/compiler/nir/nir_lower_clamp_color_outputs.c @@ -58,7 +58,7 @@ lower_intrinsic(nir_builder *b, nir_intrinsic_instr *intr, nir_shader *shader) switch (intr->intrinsic) { case nir_intrinsic_store_deref: - out = nir_deref_instr_get_variable(nir_src_as_deref(intr->src[0])); + out = nir_intrinsic_get_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_fragcolor.c b/src/compiler/nir/nir_lower_fragcolor.c index 8c7c234efaa..d9c3e051729 100644 --- a/src/compiler/nir/nir_lower_fragcolor.c +++ b/src/compiler/nir/nir_lower_fragcolor.c @@ -60,7 +60,7 @@ lower_fragcolor_instr(nir_builder *b, nir_instr *intr, void *data) if (instr->intrinsic != nir_intrinsic_store_deref) return false; - out = nir_deref_instr_get_variable(nir_src_as_deref(instr->src[0])); + out = nir_intrinsic_get_var(instr, 0); if (out->data.location != FRAG_RESULT_COLOR || out->data.mode != nir_var_shader_out) return false; b->cursor = nir_after_instr(&instr->instr); diff --git a/src/gallium/auxiliary/nir/nir_to_tgsi_info.c b/src/gallium/auxiliary/nir/nir_to_tgsi_info.c index 1926a34f33a..72d87a8ef3f 100644 --- a/src/gallium/auxiliary/nir/nir_to_tgsi_info.c +++ b/src/gallium/auxiliary/nir/nir_to_tgsi_info.c @@ -49,12 +49,6 @@ static nir_variable* tex_get_texture_var(const nir_tex_instr *instr) return NULL; } -static nir_variable* intrinsic_get_var(const nir_intrinsic_instr *instr) -{ - return nir_deref_instr_get_variable(nir_src_as_deref(instr->src[0])); -} - - static void gather_usage_helper(const nir_deref_instr **deref_ptr, unsigned location, uint8_t mask, @@ -311,7 +305,7 @@ static void scan_instruction(const struct nir_shader *nir, info->writes_memory = true; break; case nir_intrinsic_load_deref: { - const nir_variable *var = intrinsic_get_var(intr); + const nir_variable *var = nir_intrinsic_get_var(intr, 0); const nir_variable_mode mode = var->data.mode; nir_deref_instr *const deref = nir_src_as_deref(intr->src[0]); enum glsl_base_type base_type = @@ -356,7 +350,7 @@ static void scan_instruction(const struct nir_shader *nir, case nir_intrinsic_interp_deref_at_centroid: case nir_intrinsic_interp_deref_at_sample: case nir_intrinsic_interp_deref_at_offset: { - enum glsl_interp_mode interp = intrinsic_get_var(intr)->data.interpolation; + enum glsl_interp_mode interp = nir_intrinsic_get_var(intr, 0)->data.interpolation; switch (interp) { case INTERP_MODE_SMOOTH: case INTERP_MODE_NONE: diff --git a/src/gallium/drivers/d3d12/d3d12_lower_image_casts.c b/src/gallium/drivers/d3d12/d3d12_lower_image_casts.c index c18791feabc..78f265d72a7 100644 --- a/src/gallium/drivers/d3d12/d3d12_lower_image_casts.c +++ b/src/gallium/drivers/d3d12/d3d12_lower_image_casts.c @@ -200,7 +200,7 @@ lower_image_cast_instr(nir_builder *b, nir_instr *instr, void *_data) return false; const struct d3d12_image_format_conversion_info_arr* info = _data; - nir_variable *image = nir_deref_instr_get_variable(nir_src_as_deref(intr->src[0])); + nir_variable *image = nir_intrinsic_get_var(intr, 0); assert(image); if (image->data.driver_location >= info->n_images) diff --git a/src/gallium/drivers/d3d12/d3d12_nir_passes.c b/src/gallium/drivers/d3d12/d3d12_nir_passes.c index 8d14a8ea38e..0554b27a19f 100644 --- a/src/gallium/drivers/d3d12/d3d12_nir_passes.c +++ b/src/gallium/drivers/d3d12/d3d12_nir_passes.c @@ -792,7 +792,7 @@ is_multisampling_instr(const nir_instr *instr, const void *_data) nir_io_semantics semantics = nir_intrinsic_io_semantics(intr); return semantics.location == FRAG_RESULT_SAMPLE_MASK; } else if (intr->intrinsic == nir_intrinsic_store_deref) { - nir_variable *var = nir_deref_instr_get_variable(nir_src_as_deref(intr->src[0])); + nir_variable *var = nir_intrinsic_get_var(intr, 0); return var->data.location == FRAG_RESULT_SAMPLE_MASK; } else if (intr->intrinsic == nir_intrinsic_load_sample_id || intr->intrinsic == nir_intrinsic_load_sample_mask_in) diff --git a/src/gallium/drivers/r600/sfn/sfn_nir_lower_fs_out_to_vector.cpp b/src/gallium/drivers/r600/sfn/sfn_nir_lower_fs_out_to_vector.cpp index 3f25f700fe4..b3fbc7d9cf2 100644 --- a/src/gallium/drivers/r600/sfn/sfn_nir_lower_fs_out_to_vector.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_nir_lower_fs_out_to_vector.cpp @@ -44,8 +44,8 @@ using std::vector; struct nir_intrinsic_instr_less { bool operator()(const nir_intrinsic_instr *lhs, const nir_intrinsic_instr *rhs) const { - nir_variable *vlhs = nir_deref_instr_get_variable(nir_src_as_deref(lhs->src[0])); - nir_variable *vrhs = nir_deref_instr_get_variable(nir_src_as_deref(rhs->src[0])); + nir_variable *vlhs = nir_intrinsic_get_var(lhs, 0); + nir_variable *vrhs = nir_intrinsic_get_var(rhs, 0); auto ltype = glsl_get_base_type(vlhs->type); auto rtype = glsl_get_base_type(vrhs->type); @@ -354,7 +354,7 @@ NirLowerIOToVector::vec_instr_stack_pop(nir_builder *b, }); nir_intrinsic_instr *intr = *ir_sorted_set.begin(); - nir_variable *var = nir_deref_instr_get_variable(nir_src_as_deref(intr->src[0])); + nir_variable *var = nir_intrinsic_get_var(intr, 0); unsigned loc = var->data.location - m_base_slot; @@ -383,7 +383,7 @@ NirLowerIOToVector::vec_instr_stack_pop(nir_builder *b, for (auto k = ir_sorted_set.begin() + 1; k != ir_sorted_set.end(); ++k) { nir_intrinsic_instr *intr2 = *k; - nir_variable *var2 = nir_deref_instr_get_variable(nir_src_as_deref(intr2->src[0])); + nir_variable *var2 = nir_intrinsic_get_var(intr2, 0); unsigned loc2 = var->data.location - m_base_slot; if (m_vars[loc][var->data.location_frac] != diff --git a/src/gallium/drivers/r600/sfn/sfn_nir_vectorize_vs_inputs.c b/src/gallium/drivers/r600/sfn/sfn_nir_vectorize_vs_inputs.c index 6735a474759..e2037b78534 100644 --- a/src/gallium/drivers/r600/sfn/sfn_nir_vectorize_vs_inputs.c +++ b/src/gallium/drivers/r600/sfn/sfn_nir_vectorize_vs_inputs.c @@ -101,8 +101,8 @@ r600_io_access_same_var(const nir_instr *instr1, const nir_instr *instr2) nir_intrinsic_instr *intr1 = nir_instr_as_intrinsic(instr1); nir_intrinsic_instr *intr2 = nir_instr_as_intrinsic(instr2); - nir_variable *var1 = nir_deref_instr_get_variable(nir_src_as_deref(intr1->src[0])); - nir_variable *var2 = nir_deref_instr_get_variable(nir_src_as_deref(intr2->src[0])); + nir_variable *var1 = nir_intrinsic_get_var(intr1, 0); + nir_variable *var2 = nir_intrinsic_get_var(intr2, 0); /* We don't handle combining vars of different base types, so skip those */ if (glsl_get_base_type(var1->type) != glsl_get_base_type(var2->type)) @@ -185,7 +185,7 @@ r600_vec_instr_stack_pop(nir_builder *b, assert(last->type == nir_instr_type_intrinsic); nir_intrinsic_instr *intr = nir_instr_as_intrinsic(last); - nir_variable *var = nir_deref_instr_get_variable(nir_src_as_deref(intr->src[0])); + nir_variable *var = nir_intrinsic_get_var(intr, 0); unsigned loc = r600_correct_location(var); nir_variable *new_var; @@ -229,7 +229,7 @@ r600_hash_instr(const nir_instr *instr) assert(instr->type == nir_instr_type_intrinsic); nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr); - nir_variable *var = nir_deref_instr_get_variable(nir_src_as_deref(intr->src[0])); + nir_variable *var = nir_intrinsic_get_var(intr, 0); uint32_t hash = 0; diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c index 90cd232397f..57c07015e40 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c +++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c @@ -2729,7 +2729,7 @@ emit_store_deref(struct ntv_context *ctx, nir_intrinsic_instr *intr) const struct glsl_type *gtype = nir_src_as_deref(intr->src[0])->type; SpvId type = get_glsl_type(ctx, gtype); - nir_variable *var = nir_deref_instr_get_variable(nir_src_as_deref(intr->src[0])); + nir_variable *var = nir_intrinsic_get_var(intr, 0); unsigned wrmask = nir_intrinsic_write_mask(intr); if (!glsl_type_is_scalar(gtype) && wrmask != BITFIELD_MASK(glsl_type_is_array(gtype) ? glsl_get_aoa_size(gtype) : glsl_get_vector_elements(gtype))) { diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index 1a80dc16523..cdb1bb84a7a 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -1651,7 +1651,7 @@ lower_fbfetch_instr(nir_builder *b, nir_instr *instr, void *data) nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr); if (intr->intrinsic != nir_intrinsic_load_deref) return false; - nir_variable *var = nir_deref_instr_get_variable(nir_src_as_deref(intr->src[0])); + nir_variable *var = nir_intrinsic_get_var(intr, 0); if (!var->data.fb_fetch_output) return false; b->cursor = nir_after_instr(instr); @@ -4327,8 +4327,7 @@ scan_nir(struct zink_screen *screen, nir_shader *shader, struct zink_shader *zs) intr->intrinsic == nir_intrinsic_image_deref_format || intr->intrinsic == nir_intrinsic_image_deref_order) { - nir_variable *var = - nir_deref_instr_get_variable(nir_src_as_deref(intr->src[0])); + nir_variable *var = nir_intrinsic_get_var(intr, 0); /* Structs have been lowered already, so get_aoa_size is sufficient. */ const unsigned size = diff --git a/src/microsoft/compiler/dxil_nir.c b/src/microsoft/compiler/dxil_nir.c index 3cdf4ba7b27..2d3fb0d321d 100644 --- a/src/microsoft/compiler/dxil_nir.c +++ b/src/microsoft/compiler/dxil_nir.c @@ -2599,7 +2599,7 @@ guess_image_format_for_var(nir_shader *s, nir_variable *var) case nir_intrinsic_image_deref_store: case nir_intrinsic_image_deref_atomic: case nir_intrinsic_image_deref_atomic_swap: - if (nir_deref_instr_get_variable(nir_src_as_deref(intr->src[0])) != var) + if (nir_intrinsic_get_var(intr, 0) != var) continue; break; case nir_intrinsic_image_load: