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:

Reply via email to