diff --git a/src/compiler/nir/nir_opt_uniform_atomics.c b/src/compiler/nir/nir_opt_uniform_atomics.c index 47d08d2d579..c0282b489e5 100644 --- a/src/compiler/nir/nir_opt_uniform_atomics.c +++ b/src/compiler/nir/nir_opt_uniform_atomics.c @@ -41,31 +41,27 @@ static bool parse_atomic(nir_intrinsic_instr *intr, unsigned *offset_src, - unsigned *data_src, unsigned *offset2_src) + unsigned *offset2_src) { switch (intr->intrinsic) { case nir_intrinsic_ssbo_atomic: *offset_src = 1; - *data_src = 2; *offset2_src = *offset_src; return true; case nir_intrinsic_shared_atomic: case nir_intrinsic_global_atomic: case nir_intrinsic_deref_atomic: *offset_src = 0; - *data_src = 1; *offset2_src = *offset_src; return true; case nir_intrinsic_global_atomic_amd: *offset_src = 0; - *data_src = 1; *offset2_src = 2; return true; case nir_intrinsic_image_deref_atomic: case nir_intrinsic_image_atomic: case nir_intrinsic_bindless_image_atomic: *offset_src = 1; - *data_src = 3; *offset2_src = *offset_src; return true; @@ -210,9 +206,9 @@ static nir_def * optimize_atomic(nir_builder *b, nir_intrinsic_instr *intrin, bool return_prev) { unsigned offset_src = 0; - unsigned data_src = 0; + unsigned data_src = nir_get_io_data_src_number(intrin); unsigned offset2_src = 0; - parse_atomic(intrin, &offset_src, &data_src, &offset2_src); + parse_atomic(intrin, &offset_src, &offset2_src); nir_atomic_op atomic_op = nir_intrinsic_atomic_op(intrin); nir_op op = nir_atomic_op_to_alu(atomic_op); @@ -307,13 +303,13 @@ opt_uniform_atomics(nir_function_impl *impl, bool fs_atomics_predicated) continue; nir_intrinsic_instr *intrin = nir_instr_as_intrinsic(instr); - unsigned offset_src, data_src, offset2_src; - if (!parse_atomic(intrin, &offset_src, &data_src, &offset2_src)) + unsigned offset_src, offset2_src; + if (!parse_atomic(intrin, &offset_src, &offset2_src)) continue; nir_atomic_op atomic_op = nir_intrinsic_atomic_op(intrin); if (atomic_op == nir_atomic_op_xchg) { - if (nir_src_is_divergent(&intrin->src[data_src])) + if (nir_src_is_divergent(nir_get_io_data_src(intrin))) continue; } else if (nir_atomic_op_to_alu(atomic_op) == nir_num_opcodes) { continue;