Module: Mesa Branch: main Commit: 9cd3aa173ab72f88c959b8c03be642855e189d96 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9cd3aa173ab72f88c959b8c03be642855e189d96
Author: Qiang Yu <[email protected]> Date: Sat Apr 15 16:50:40 2023 +0800 aco: implement nir_bindless_image_atomic_inc/dec_wrap Reviewed-by: Rhys Perry <[email protected]> Signed-off-by: Qiang Yu <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22525> --- src/amd/compiler/aco_instruction_selection.cpp | 12 ++++++++++++ src/amd/compiler/aco_instruction_selection_setup.cpp | 2 ++ 2 files changed, 14 insertions(+) diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index 0f095006f65..7e9c82f6413 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -6457,6 +6457,16 @@ visit_image_atomic(isel_context* ctx, nir_intrinsic_instr* instr) buf_op64 = aco_opcode::buffer_atomic_cmpswap_x2; image_op = aco_opcode::image_atomic_cmpswap; break; + case nir_intrinsic_bindless_image_atomic_inc_wrap: + buf_op = aco_opcode::buffer_atomic_inc; + buf_op64 = aco_opcode::buffer_atomic_inc_x2; + image_op = aco_opcode::image_atomic_inc; + break; + case nir_intrinsic_bindless_image_atomic_dec_wrap: + buf_op = aco_opcode::buffer_atomic_dec; + buf_op64 = aco_opcode::buffer_atomic_dec_x2; + image_op = aco_opcode::image_atomic_dec; + break; case nir_intrinsic_bindless_image_atomic_fadd: buf_op = aco_opcode::buffer_atomic_add_f32; buf_op64 = aco_opcode::num_opcodes; @@ -8198,6 +8208,8 @@ visit_intrinsic(isel_context* ctx, nir_intrinsic_instr* instr) case nir_intrinsic_bindless_image_atomic_xor: case nir_intrinsic_bindless_image_atomic_exchange: case nir_intrinsic_bindless_image_atomic_comp_swap: + case nir_intrinsic_bindless_image_atomic_inc_wrap: + case nir_intrinsic_bindless_image_atomic_dec_wrap: case nir_intrinsic_bindless_image_atomic_fadd: case nir_intrinsic_bindless_image_atomic_fmin: case nir_intrinsic_bindless_image_atomic_fmax: visit_image_atomic(ctx, instr); break; diff --git a/src/amd/compiler/aco_instruction_selection_setup.cpp b/src/amd/compiler/aco_instruction_selection_setup.cpp index a87120bbdfd..a4bcca70a7a 100644 --- a/src/amd/compiler/aco_instruction_selection_setup.cpp +++ b/src/amd/compiler/aco_instruction_selection_setup.cpp @@ -547,6 +547,8 @@ init_context(isel_context* ctx, nir_shader* shader) case nir_intrinsic_bindless_image_atomic_xor: case nir_intrinsic_bindless_image_atomic_exchange: case nir_intrinsic_bindless_image_atomic_comp_swap: + case nir_intrinsic_bindless_image_atomic_inc_wrap: + case nir_intrinsic_bindless_image_atomic_dec_wrap: case nir_intrinsic_bindless_image_atomic_fadd: case nir_intrinsic_bindless_image_atomic_fmin: case nir_intrinsic_bindless_image_atomic_fmax:
