nir: Handle memcpy in copy_prop_vars and combine_stores
authorJason Ekstrand <jason@jlekstrand.net>
Sat, 26 Sep 2020 04:42:08 +0000 (23:42 -0500)
committerMarge Bot <eric+marge@anholt.net>
Fri, 2 Oct 2020 07:30:49 +0000 (07:30 +0000)
Fixes: b2899f72657 "nir: Add a new memcpy intrinsic"
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6871>

src/compiler/nir/nir_opt_combine_stores.c
src/compiler/nir/nir_opt_copy_prop_vars.c

index 08fa4ac..19671b7 100644 (file)
@@ -356,7 +356,8 @@ combine_stores_block(struct combine_stores_state *state, nir_block *block)
          break;
       }
 
-      case nir_intrinsic_copy_deref: {
+      case nir_intrinsic_copy_deref:
+      case nir_intrinsic_memcpy_deref: {
          nir_deref_instr *dst = nir_src_as_deref(intrin->src[0]);
          nir_deref_instr *src = nir_src_as_deref(intrin->src[1]);
          combine_stores_with_deref(state, dst);
index 8b41e0e..e29b225 100644 (file)
@@ -195,7 +195,8 @@ gather_vars_written(struct copy_prop_var_state *state,
          case nir_intrinsic_deref_atomic_exchange:
          case nir_intrinsic_deref_atomic_comp_swap:
          case nir_intrinsic_store_deref:
-         case nir_intrinsic_copy_deref: {
+         case nir_intrinsic_copy_deref:
+         case nir_intrinsic_memcpy_deref: {
             /* Destination in all of store_deref, copy_deref and the atomics is src[0]. */
             nir_deref_instr *dst = nir_src_as_deref(intrin->src[0]);
 
@@ -1056,6 +1057,7 @@ copy_prop_vars_block(struct copy_prop_var_state *state,
          break;
       }
 
+      case nir_intrinsic_memcpy_deref:
       case nir_intrinsic_deref_atomic_add:
       case nir_intrinsic_deref_atomic_imin:
       case nir_intrinsic_deref_atomic_umin: