nir/opt_load_store_vectorize: don't vectorize stores across demote
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Fixes: ce9205c03bd ("nir: add a load/store vectorization pass")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7163>
diff --git a/src/compiler/nir/nir_opt_load_store_vectorize.c b/src/compiler/nir/nir_opt_load_store_vectorize.c
index 593a022..6be3817 100644
--- a/src/compiler/nir/nir_opt_load_store_vectorize.c
+++ b/src/compiler/nir/nir_opt_load_store_vectorize.c
@@ -1172,6 +1172,11 @@
case nir_intrinsic_discard:
modes = nir_var_all;
break;
+ case nir_intrinsic_demote_if:
+ case nir_intrinsic_demote:
+ acquire = false;
+ modes = nir_var_all;
+ break;
case nir_intrinsic_memory_barrier_buffer:
modes = nir_var_mem_ssbo | nir_var_mem_global;
break;
diff --git a/src/compiler/nir/nir_schedule.c b/src/compiler/nir/nir_schedule.c
index 126c49a..36a0455 100644
--- a/src/compiler/nir/nir_schedule.c
+++ b/src/compiler/nir/nir_schedule.c
@@ -355,6 +355,8 @@
case nir_intrinsic_discard:
case nir_intrinsic_discard_if:
+ case nir_intrinsic_demote:
+ case nir_intrinsic_demote_if:
/* We are adding two dependencies:
*
* * A individual one that we could use to add a read_dep while handling