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

Reply via email to