---
 src/glsl/nir/nir.h       | 9 +++++++++
 src/glsl/nir/nir_print.c | 3 +++
 2 files changed, 12 insertions(+)

diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h
index f4db3f8..27e7e7a 100644
--- a/src/glsl/nir/nir.h
+++ b/src/glsl/nir/nir.h
@@ -625,9 +625,18 @@ typedef struct {
    nir_variable *var;
 } nir_deref_var;
 
+/* This enum describes how the array is referenced.  If the deref is
+ * direct then the base_offset is used.  If the deref is indirect then then
+ * offset is given by base_offset + indirect.  If the deref is a wildcard
+ * then the deref refers to all of the elements of the array at the same
+ * time.  Wildcard dereferences are only ever allowed in copy_var
+ * intrinsics and the source and destination derefs must have matching
+ * wildcards.
+ */
 typedef enum {
    nir_deref_array_type_direct,
    nir_deref_array_type_indirect,
+   nir_deref_array_type_wildcard,
 } nir_deref_array_type;
 
 typedef struct {
diff --git a/src/glsl/nir/nir_print.c b/src/glsl/nir/nir_print.c
index 15f6ae1..45b8623 100644
--- a/src/glsl/nir/nir_print.c
+++ b/src/glsl/nir/nir_print.c
@@ -275,6 +275,9 @@ print_deref_array(nir_deref_array *deref, print_var_state 
*state, FILE *fp)
          fprintf(fp, "%u + ", deref->base_offset);
       print_src(&deref->indirect, fp);
       break;
+   case nir_deref_array_type_wildcard:
+      fprintf(fp, "*");
+      break;
    }
    fprintf(fp, "]");
 }
-- 
2.2.0

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to