Mesa (master): nir: Handle memcpy in copy_prop_vars and combine_stores

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Oct 2 07:46:23 UTC 2020


Module: Mesa
Branch: master
Commit: e363da3bdd3f16e9e9aba763230238479bfa4995
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e363da3bdd3f16e9e9aba763230238479bfa4995

Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Fri Sep 25 23:42:08 2020 -0500

nir: Handle memcpy in copy_prop_vars and combine_stores

Fixes: b2899f72657 "nir: Add a new memcpy intrinsic"
Reviewed-by: Jesse Natalie <jenatali at microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6871>

---

 src/compiler/nir/nir_opt_combine_stores.c | 3 ++-
 src/compiler/nir/nir_opt_copy_prop_vars.c | 4 +++-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/compiler/nir/nir_opt_combine_stores.c b/src/compiler/nir/nir_opt_combine_stores.c
index 08fa4ac4463..19671b7d223 100644
--- a/src/compiler/nir/nir_opt_combine_stores.c
+++ b/src/compiler/nir/nir_opt_combine_stores.c
@@ -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);
diff --git a/src/compiler/nir/nir_opt_copy_prop_vars.c b/src/compiler/nir/nir_opt_copy_prop_vars.c
index 8b41e0e8832..e29b225759d 100644
--- a/src/compiler/nir/nir_opt_copy_prop_vars.c
+++ b/src/compiler/nir/nir_opt_copy_prop_vars.c
@@ -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:



More information about the mesa-commit mailing list