mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 06:58:05 +02:00
aco: add support for fp32 addition atomics
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19810>
This commit is contained in:
parent
ea1ac3901a
commit
068c84f275
2 changed files with 19 additions and 0 deletions
|
|
@ -6666,6 +6666,11 @@ 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_fadd:
|
||||
buf_op = aco_opcode::buffer_atomic_add_f32;
|
||||
buf_op64 = aco_opcode::num_opcodes;
|
||||
image_op = aco_opcode::num_opcodes;
|
||||
break;
|
||||
case nir_intrinsic_bindless_image_atomic_fmin:
|
||||
buf_op = aco_opcode::buffer_atomic_fmin;
|
||||
buf_op64 = aco_opcode::buffer_atomic_fmin_x2;
|
||||
|
|
@ -6860,6 +6865,10 @@ visit_atomic_ssbo(isel_context* ctx, nir_intrinsic_instr* instr)
|
|||
op32 = aco_opcode::buffer_atomic_cmpswap;
|
||||
op64 = aco_opcode::buffer_atomic_cmpswap_x2;
|
||||
break;
|
||||
case nir_intrinsic_ssbo_atomic_fadd:
|
||||
op32 = aco_opcode::buffer_atomic_add_f32;
|
||||
op64 = aco_opcode::num_opcodes;
|
||||
break;
|
||||
case nir_intrinsic_ssbo_atomic_fmin:
|
||||
op32 = aco_opcode::buffer_atomic_fmin;
|
||||
op64 = aco_opcode::buffer_atomic_fmin_x2;
|
||||
|
|
@ -7118,6 +7127,10 @@ visit_global_atomic(isel_context* ctx, nir_intrinsic_instr* instr)
|
|||
op32 = global ? aco_opcode::global_atomic_cmpswap : aco_opcode::flat_atomic_cmpswap;
|
||||
op64 = global ? aco_opcode::global_atomic_cmpswap_x2 : aco_opcode::flat_atomic_cmpswap_x2;
|
||||
break;
|
||||
case nir_intrinsic_global_atomic_fadd_amd:
|
||||
op32 = global ? aco_opcode::global_atomic_add_f32 : aco_opcode::flat_atomic_add_f32;
|
||||
op64 = aco_opcode::num_opcodes;
|
||||
break;
|
||||
case nir_intrinsic_global_atomic_fmin_amd:
|
||||
op32 = global ? aco_opcode::global_atomic_fmin : aco_opcode::flat_atomic_fmin;
|
||||
op64 = global ? aco_opcode::global_atomic_fmin_x2 : aco_opcode::flat_atomic_fmin_x2;
|
||||
|
|
@ -8336,6 +8349,7 @@ 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_fadd:
|
||||
case nir_intrinsic_bindless_image_atomic_fmin:
|
||||
case nir_intrinsic_bindless_image_atomic_fmax: visit_image_atomic(ctx, instr); break;
|
||||
case nir_intrinsic_load_ssbo: visit_load_ssbo(ctx, instr); break;
|
||||
|
|
@ -8355,6 +8369,7 @@ visit_intrinsic(isel_context* ctx, nir_intrinsic_instr* instr)
|
|||
case nir_intrinsic_global_atomic_xor_amd:
|
||||
case nir_intrinsic_global_atomic_exchange_amd:
|
||||
case nir_intrinsic_global_atomic_comp_swap_amd:
|
||||
case nir_intrinsic_global_atomic_fadd_amd:
|
||||
case nir_intrinsic_global_atomic_fmin_amd:
|
||||
case nir_intrinsic_global_atomic_fmax_amd: visit_global_atomic(ctx, instr); break;
|
||||
case nir_intrinsic_ssbo_atomic_add:
|
||||
|
|
@ -8367,6 +8382,7 @@ visit_intrinsic(isel_context* ctx, nir_intrinsic_instr* instr)
|
|||
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: visit_atomic_ssbo(ctx, instr); break;
|
||||
case nir_intrinsic_load_scratch: visit_load_scratch(ctx, instr); break;
|
||||
|
|
|
|||
|
|
@ -638,6 +638,7 @@ init_context(isel_context* ctx, nir_shader* shader)
|
|||
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_global_atomic_add_amd:
|
||||
|
|
@ -650,6 +651,7 @@ init_context(isel_context* ctx, nir_shader* shader)
|
|||
case nir_intrinsic_global_atomic_xor_amd:
|
||||
case nir_intrinsic_global_atomic_exchange_amd:
|
||||
case nir_intrinsic_global_atomic_comp_swap_amd:
|
||||
case nir_intrinsic_global_atomic_fadd_amd:
|
||||
case nir_intrinsic_global_atomic_fmin_amd:
|
||||
case nir_intrinsic_global_atomic_fmax_amd:
|
||||
case nir_intrinsic_bindless_image_atomic_add:
|
||||
|
|
@ -662,6 +664,7 @@ 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_fadd:
|
||||
case nir_intrinsic_bindless_image_atomic_fmin:
|
||||
case nir_intrinsic_bindless_image_atomic_fmax:
|
||||
case nir_intrinsic_bindless_image_size:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue