From 44d89774e0fae6cd4736a89051a8fffb57f4e6fa Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 15 May 2023 10:31:11 -0400 Subject: nir/lower_io: Drop legacy atomics Signed-off-by: Alyssa Rosenzweig Reviewed-by: Emma Anholt Reviewed-by: Jesse Natalie Part-of: --- src/compiler/nir/nir_lower_io.c | 173 +++++----------------------------------- 1 file changed, 22 insertions(+), 151 deletions(-) diff --git a/src/compiler/nir/nir_lower_io.c b/src/compiler/nir/nir_lower_io.c index e31b623da37..b4e8f93b49b 100644 --- a/src/compiler/nir/nir_lower_io.c +++ b/src/compiler/nir/nir_lower_io.c @@ -45,24 +45,8 @@ static nir_intrinsic_op ssbo_atomic_for_deref(nir_intrinsic_op deref_op) { switch (deref_op) { -#define OP(O) case nir_intrinsic_deref_##O: return nir_intrinsic_ssbo_##O; - OP(atomic) - OP(atomic_swap) - OP(atomic_exchange) - OP(atomic_comp_swap) - OP(atomic_add) - OP(atomic_imin) - OP(atomic_umin) - OP(atomic_imax) - OP(atomic_umax) - OP(atomic_and) - OP(atomic_or) - OP(atomic_xor) - OP(atomic_fadd) - OP(atomic_fmin) - OP(atomic_fmax) - OP(atomic_fcomp_swap) -#undef OP + case nir_intrinsic_deref_atomic: return nir_intrinsic_ssbo_atomic; + case nir_intrinsic_deref_atomic_swap: return nir_intrinsic_ssbo_atomic_swap; default: unreachable("Invalid SSBO atomic"); } @@ -73,28 +57,18 @@ global_atomic_for_deref(nir_address_format addr_format, nir_intrinsic_op deref_op) { switch (deref_op) { -#define OP(O) case nir_intrinsic_deref_##O: \ - if (addr_format != nir_address_format_2x32bit_global) \ - return nir_intrinsic_global_##O; \ - else \ - return nir_intrinsic_global_##O##_2x32; - OP(atomic) - OP(atomic_swap) - OP(atomic_exchange) - OP(atomic_comp_swap) - OP(atomic_add) - OP(atomic_imin) - OP(atomic_umin) - OP(atomic_imax) - OP(atomic_umax) - OP(atomic_and) - OP(atomic_or) - OP(atomic_xor) - OP(atomic_fadd) - OP(atomic_fmin) - OP(atomic_fmax) - OP(atomic_fcomp_swap) -#undef OP + case nir_intrinsic_deref_atomic: + if (addr_format != nir_address_format_2x32bit_global) + return nir_intrinsic_global_atomic; + else + return nir_intrinsic_global_atomic_2x32; + + case nir_intrinsic_deref_atomic_swap: + if (addr_format != nir_address_format_2x32bit_global) + return nir_intrinsic_global_atomic_swap; + else + return nir_intrinsic_global_atomic_swap_2x32; + default: unreachable("Invalid SSBO atomic"); } @@ -104,24 +78,8 @@ static nir_intrinsic_op shared_atomic_for_deref(nir_intrinsic_op deref_op) { switch (deref_op) { -#define OP(O) case nir_intrinsic_deref_##O: return nir_intrinsic_shared_##O; - OP(atomic) - OP(atomic_swap) - OP(atomic_exchange) - OP(atomic_comp_swap) - OP(atomic_add) - OP(atomic_imin) - OP(atomic_umin) - OP(atomic_imax) - OP(atomic_umax) - OP(atomic_and) - OP(atomic_or) - OP(atomic_xor) - OP(atomic_fadd) - OP(atomic_fmin) - OP(atomic_fmax) - OP(atomic_fcomp_swap) -#undef OP + case nir_intrinsic_deref_atomic: return nir_intrinsic_shared_atomic; + case nir_intrinsic_deref_atomic_swap: return nir_intrinsic_shared_atomic_swap; default: unreachable("Invalid shared atomic"); } @@ -131,24 +89,10 @@ static nir_intrinsic_op task_payload_atomic_for_deref(nir_intrinsic_op deref_op) { switch (deref_op) { -#define OP(O) case nir_intrinsic_deref_##O: return nir_intrinsic_task_payload_##O; - OP(atomic) - OP(atomic_swap) - OP(atomic_exchange) - OP(atomic_comp_swap) - OP(atomic_add) - OP(atomic_imin) - OP(atomic_umin) - OP(atomic_imax) - OP(atomic_umax) - OP(atomic_and) - OP(atomic_or) - OP(atomic_xor) - OP(atomic_fadd) - OP(atomic_fmin) - OP(atomic_fmax) - OP(atomic_fcomp_swap) -#undef OP + case nir_intrinsic_deref_atomic: + return nir_intrinsic_task_payload_atomic; + case nir_intrinsic_deref_atomic_swap: + return nir_intrinsic_task_payload_atomic_swap; default: unreachable("Invalid task payload atomic"); } @@ -1817,10 +1761,7 @@ build_explicit_io_atomic(nir_builder *b, nir_intrinsic_instr *intrin, } nir_intrinsic_instr *atomic = nir_intrinsic_instr_create(b->shader, op); - - /* XXX: Drop the if once legacy atomics are gone */ - if (nir_intrinsic_has_atomic_op(atomic)) - nir_intrinsic_set_atomic_op(atomic, nir_intrinsic_atomic_op(intrin)); + nir_intrinsic_set_atomic_op(atomic, nir_intrinsic_atomic_op(intrin)); unsigned src = 0; if (addr_format_is_global(addr_format, mode)) { @@ -2273,21 +2214,7 @@ nir_lower_explicit_io_impl(nir_function_impl *impl, nir_variable_mode modes, case nir_intrinsic_load_deref_block_intel: case nir_intrinsic_store_deref_block_intel: case nir_intrinsic_deref_atomic: - case nir_intrinsic_deref_atomic_swap: - case nir_intrinsic_deref_atomic_add: - case nir_intrinsic_deref_atomic_imin: - case nir_intrinsic_deref_atomic_umin: - case nir_intrinsic_deref_atomic_imax: - case nir_intrinsic_deref_atomic_umax: - case nir_intrinsic_deref_atomic_and: - case nir_intrinsic_deref_atomic_or: - case nir_intrinsic_deref_atomic_xor: - case nir_intrinsic_deref_atomic_exchange: - case nir_intrinsic_deref_atomic_comp_swap: - case nir_intrinsic_deref_atomic_fadd: - case nir_intrinsic_deref_atomic_fmin: - case nir_intrinsic_deref_atomic_fmax: - case nir_intrinsic_deref_atomic_fcomp_swap: { + case nir_intrinsic_deref_atomic_swap: { nir_deref_instr *deref = nir_src_as_deref(intrin->src[0]); if (nir_deref_mode_is_in_set(deref, modes)) { lower_explicit_io_access(&b, intrin, addr_format); @@ -2684,52 +2611,10 @@ nir_get_io_offset_src(nir_intrinsic_instr *instr) case nir_intrinsic_load_fs_input_interp_deltas: case nir_intrinsic_shared_atomic: case nir_intrinsic_shared_atomic_swap: - case nir_intrinsic_shared_atomic_add: - case nir_intrinsic_shared_atomic_and: - case nir_intrinsic_shared_atomic_comp_swap: - case nir_intrinsic_shared_atomic_exchange: - case nir_intrinsic_shared_atomic_fadd: - case nir_intrinsic_shared_atomic_fcomp_swap: - case nir_intrinsic_shared_atomic_fmax: - case nir_intrinsic_shared_atomic_fmin: - case nir_intrinsic_shared_atomic_imax: - case nir_intrinsic_shared_atomic_imin: - case nir_intrinsic_shared_atomic_or: - case nir_intrinsic_shared_atomic_umax: - case nir_intrinsic_shared_atomic_umin: - case nir_intrinsic_shared_atomic_xor: case nir_intrinsic_task_payload_atomic: case nir_intrinsic_task_payload_atomic_swap: - case nir_intrinsic_task_payload_atomic_add: - case nir_intrinsic_task_payload_atomic_imin: - case nir_intrinsic_task_payload_atomic_umin: - case nir_intrinsic_task_payload_atomic_imax: - case nir_intrinsic_task_payload_atomic_umax: - case nir_intrinsic_task_payload_atomic_and: - case nir_intrinsic_task_payload_atomic_or: - case nir_intrinsic_task_payload_atomic_xor: - case nir_intrinsic_task_payload_atomic_exchange: - case nir_intrinsic_task_payload_atomic_comp_swap: - case nir_intrinsic_task_payload_atomic_fadd: - case nir_intrinsic_task_payload_atomic_fmin: - case nir_intrinsic_task_payload_atomic_fmax: - case nir_intrinsic_task_payload_atomic_fcomp_swap: case nir_intrinsic_global_atomic: case nir_intrinsic_global_atomic_swap: - case nir_intrinsic_global_atomic_add: - case nir_intrinsic_global_atomic_and: - case nir_intrinsic_global_atomic_comp_swap: - case nir_intrinsic_global_atomic_exchange: - case nir_intrinsic_global_atomic_fadd: - case nir_intrinsic_global_atomic_fcomp_swap: - case nir_intrinsic_global_atomic_fmax: - case nir_intrinsic_global_atomic_fmin: - case nir_intrinsic_global_atomic_imax: - case nir_intrinsic_global_atomic_imin: - case nir_intrinsic_global_atomic_or: - case nir_intrinsic_global_atomic_umax: - case nir_intrinsic_global_atomic_umin: - case nir_intrinsic_global_atomic_xor: return &instr->src[0]; case nir_intrinsic_load_ubo: case nir_intrinsic_load_ssbo: @@ -2746,20 +2631,6 @@ nir_get_io_offset_src(nir_intrinsic_instr *instr) case nir_intrinsic_store_scratch: case nir_intrinsic_ssbo_atomic: case nir_intrinsic_ssbo_atomic_swap: - case nir_intrinsic_ssbo_atomic_add: - case nir_intrinsic_ssbo_atomic_imin: - case nir_intrinsic_ssbo_atomic_umin: - case nir_intrinsic_ssbo_atomic_imax: - case nir_intrinsic_ssbo_atomic_umax: - case nir_intrinsic_ssbo_atomic_and: - case nir_intrinsic_ssbo_atomic_or: - case nir_intrinsic_ssbo_atomic_xor: - case nir_intrinsic_ssbo_atomic_exchange: - case nir_intrinsic_ssbo_atomic_comp_swap: - case nir_intrinsic_ssbo_atomic_fadd: - case nir_intrinsic_ssbo_atomic_fmin: - case nir_intrinsic_ssbo_atomic_fmax: - case nir_intrinsic_ssbo_atomic_fcomp_swap: return &instr->src[1]; case nir_intrinsic_store_ssbo: case nir_intrinsic_store_per_vertex_output: -- cgit v1.2.1