mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-03-11 20:00:38 +01:00
nir/opt_uniform_atomics: use data helper
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Job Noorman <jnoorman@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39939>
This commit is contained in:
parent
76d5436f04
commit
9da61b3ea5
1 changed files with 6 additions and 10 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue