Module: Mesa Branch: main Commit: b54f07870e81de76e4f1df8f1ab42f39735fc19b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b54f07870e81de76e4f1df8f1ab42f39735fc19b
Author: Qiang Yu <[email protected]> Date: Sat Apr 15 16:41:46 2023 +0800 nir: add missing image atomic_inc/dec_wrap intrinsic 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/compiler/nir/nir_lower_non_uniform_access.c | 6 ++++++ src/compiler/nir/nir_opt_access.c | 4 ++++ src/compiler/nir/nir_opt_non_uniform_access.c | 6 ++++++ src/compiler/nir/nir_validate.c | 8 +++++++- 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/compiler/nir/nir_lower_non_uniform_access.c b/src/compiler/nir/nir_lower_non_uniform_access.c index 80a635f9ac6..1d7a0164ddd 100644 --- a/src/compiler/nir/nir_lower_non_uniform_access.c +++ b/src/compiler/nir/nir_lower_non_uniform_access.c @@ -267,6 +267,8 @@ nir_lower_non_uniform_access_impl(nir_function_impl *impl, case nir_intrinsic_image_atomic_xor: case nir_intrinsic_image_atomic_exchange: case nir_intrinsic_image_atomic_comp_swap: + case nir_intrinsic_image_atomic_inc_wrap: + case nir_intrinsic_image_atomic_dec_wrap: case nir_intrinsic_image_atomic_fadd: case nir_intrinsic_image_atomic_fmin: case nir_intrinsic_image_atomic_fmax: @@ -287,6 +289,8 @@ nir_lower_non_uniform_access_impl(nir_function_impl *impl, 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: @@ -307,6 +311,8 @@ nir_lower_non_uniform_access_impl(nir_function_impl *impl, case nir_intrinsic_image_deref_atomic_xor: case nir_intrinsic_image_deref_atomic_exchange: case nir_intrinsic_image_deref_atomic_comp_swap: + case nir_intrinsic_image_deref_atomic_inc_wrap: + case nir_intrinsic_image_deref_atomic_dec_wrap: case nir_intrinsic_image_deref_atomic_fadd: case nir_intrinsic_image_deref_atomic_fmin: case nir_intrinsic_image_deref_atomic_fmax: diff --git a/src/compiler/nir/nir_opt_access.c b/src/compiler/nir/nir_opt_access.c index 733da8dcc61..d8ca876eead 100644 --- a/src/compiler/nir/nir_opt_access.c +++ b/src/compiler/nir/nir_opt_access.c @@ -93,6 +93,8 @@ gather_intrinsic(struct access_state *state, nir_intrinsic_instr *instr) case nir_intrinsic_image_deref_atomic_xor: case nir_intrinsic_image_deref_atomic_exchange: case nir_intrinsic_image_deref_atomic_comp_swap: + case nir_intrinsic_image_deref_atomic_inc_wrap: + case nir_intrinsic_image_deref_atomic_dec_wrap: case nir_intrinsic_image_deref_atomic_fadd: case nir_intrinsic_image_deref_atomic_fmin: case nir_intrinsic_image_deref_atomic_fmax: @@ -136,6 +138,8 @@ gather_intrinsic(struct access_state *state, 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: diff --git a/src/compiler/nir/nir_opt_non_uniform_access.c b/src/compiler/nir/nir_opt_non_uniform_access.c index f774ecd98aa..7588333cae3 100644 --- a/src/compiler/nir/nir_opt_non_uniform_access.c +++ b/src/compiler/nir/nir_opt_non_uniform_access.c @@ -74,6 +74,8 @@ is_image_intrinsic(nir_intrinsic_instr *intrin) case nir_intrinsic_image_atomic_xor: case nir_intrinsic_image_atomic_exchange: case nir_intrinsic_image_atomic_comp_swap: + case nir_intrinsic_image_atomic_inc_wrap: + case nir_intrinsic_image_atomic_dec_wrap: case nir_intrinsic_image_atomic_fadd: case nir_intrinsic_image_atomic_fmin: case nir_intrinsic_image_atomic_fmax: @@ -93,6 +95,8 @@ is_image_intrinsic(nir_intrinsic_instr *intrin) 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: @@ -112,6 +116,8 @@ is_image_intrinsic(nir_intrinsic_instr *intrin) case nir_intrinsic_image_deref_atomic_xor: case nir_intrinsic_image_deref_atomic_exchange: case nir_intrinsic_image_deref_atomic_comp_swap: + case nir_intrinsic_image_deref_atomic_inc_wrap: + case nir_intrinsic_image_deref_atomic_dec_wrap: case nir_intrinsic_image_deref_atomic_fadd: case nir_intrinsic_image_deref_atomic_fmin: case nir_intrinsic_image_deref_atomic_fmax: diff --git a/src/compiler/nir/nir_validate.c b/src/compiler/nir/nir_validate.c index 1ce0eab64b7..420b97ca143 100644 --- a/src/compiler/nir/nir_validate.c +++ b/src/compiler/nir/nir_validate.c @@ -723,6 +723,8 @@ validate_intrinsic_instr(nir_intrinsic_instr *instr, validate_state *state) case nir_intrinsic_image_deref_atomic_or: case nir_intrinsic_image_deref_atomic_xor: case nir_intrinsic_image_deref_atomic_comp_swap: + case nir_intrinsic_image_deref_atomic_inc_wrap: + case nir_intrinsic_image_deref_atomic_dec_wrap: case nir_intrinsic_image_atomic_add: case nir_intrinsic_image_atomic_imin: case nir_intrinsic_image_atomic_umin: @@ -732,6 +734,8 @@ validate_intrinsic_instr(nir_intrinsic_instr *instr, validate_state *state) case nir_intrinsic_image_atomic_or: case nir_intrinsic_image_atomic_xor: case nir_intrinsic_image_atomic_comp_swap: + case nir_intrinsic_image_atomic_inc_wrap: + case nir_intrinsic_image_atomic_dec_wrap: case nir_intrinsic_bindless_image_atomic_add: case nir_intrinsic_bindless_image_atomic_imin: case nir_intrinsic_bindless_image_atomic_umin: @@ -740,7 +744,9 @@ validate_intrinsic_instr(nir_intrinsic_instr *instr, validate_state *state) case nir_intrinsic_bindless_image_atomic_and: case nir_intrinsic_bindless_image_atomic_or: case nir_intrinsic_bindless_image_atomic_xor: - case nir_intrinsic_bindless_image_atomic_comp_swap: { + case nir_intrinsic_bindless_image_atomic_comp_swap: + case nir_intrinsic_bindless_image_atomic_inc_wrap: + case nir_intrinsic_bindless_image_atomic_dec_wrap: { enum pipe_format format = image_intrin_format(instr); if (format != PIPE_FORMAT_COUNT) { validate_assert(state, format == PIPE_FORMAT_R32_UINT ||
