aco: implement nir_bindless_image_atomic_inc/dec_wrap

Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22525>
This commit is contained in:
Qiang Yu 2023-04-15 16:50:40 +08:00 committed by Marge Bot
parent b54f07870e
commit 9cd3aa173a
2 changed files with 14 additions and 0 deletions

View file

@ -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;

View file

@ -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: