nir/spirv: Remove unneeded parameters from pointer_to_offset
authorJason Ekstrand <jason@jlekstrand.net>
Thu, 29 Jun 2017 17:33:31 +0000 (10:33 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 5 Jul 2017 22:26:53 +0000 (15:26 -0700)
Everyone now calls it with stop_at_matrix = false.  Since we're now
always walking all the way to the end of the access chain, the type
returned is just the same as ptr->type;

Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
src/compiler/spirv/spirv_to_nir.c
src/compiler/spirv/vtn_private.h
src/compiler/spirv/vtn_variables.c

index 72a890454edfd41886dbcc95f9ee173c40bbe443..3d9ef7661112c7ed91995be2176e1aee0c44e957 100644 (file)
@@ -2173,8 +2173,7 @@ vtn_handle_ssbo_or_shared_atomic(struct vtn_builder *b, SpvOp opcode,
    } else {
       assert(ptr->mode == vtn_variable_mode_ssbo);
       nir_ssa_def *offset, *index;
-      struct vtn_type *type;
-      offset = vtn_pointer_to_offset(b, ptr, &index, &type, NULL, false);
+      offset = vtn_pointer_to_offset(b, ptr, &index, NULL);
 
       nir_intrinsic_op op = get_ssbo_nir_atomic_op(opcode);
 
index b025eea49e34f6e04a1eaf0df1d6225211ee253a..603cfc2b6e351c8c8883cc91f4ca338d858df91a 100644 (file)
@@ -479,8 +479,7 @@ nir_deref_var *vtn_pointer_to_deref(struct vtn_builder *b,
                                     struct vtn_pointer *ptr);
 nir_ssa_def *
 vtn_pointer_to_offset(struct vtn_builder *b, struct vtn_pointer *ptr,
-                      nir_ssa_def **index_out, struct vtn_type **type_out,
-                      unsigned *end_idx_out, bool stop_at_matrix);
+                      nir_ssa_def **index_out, unsigned *end_idx_out);
 
 struct vtn_ssa_value *vtn_local_load(struct vtn_builder *b, nir_deref_var *src);
 
index 8e6e4c97a9e974f328bf0fe2dd493e8f2078f0f1..3b474dc3c375dad560b04c9033f344dd1e0277f6 100644 (file)
@@ -340,8 +340,7 @@ get_vulkan_resource_index(struct vtn_builder *b, struct vtn_pointer *ptr,
 
 nir_ssa_def *
 vtn_pointer_to_offset(struct vtn_builder *b, struct vtn_pointer *ptr,
-                      nir_ssa_def **index_out, struct vtn_type **type_out,
-                      unsigned *end_idx_out, bool stop_at_matrix)
+                      nir_ssa_def **index_out, unsigned *end_idx_out)
 {
    unsigned idx = 0;
    struct vtn_type *type;
@@ -358,11 +357,6 @@ vtn_pointer_to_offset(struct vtn_builder *b, struct vtn_pointer *ptr,
       case GLSL_TYPE_FLOAT:
       case GLSL_TYPE_DOUBLE:
       case GLSL_TYPE_BOOL:
-         /* Some users may not want matrix or vector derefs */
-         if (stop_at_matrix)
-            goto end;
-         /* Fall through */
-
       case GLSL_TYPE_ARRAY:
          offset = nir_iadd(&b->nb, offset,
                            vtn_access_link_as_ssa(b, ptr->chain->link[idx],
@@ -385,8 +379,7 @@ vtn_pointer_to_offset(struct vtn_builder *b, struct vtn_pointer *ptr,
       }
    }
 
-end:
-   *type_out = type;
+   assert(type == ptr->type);
    if (end_idx_out)
       *end_idx_out = idx;
 
@@ -671,13 +664,12 @@ vtn_block_load(struct vtn_builder *b, struct vtn_pointer *src)
 
    nir_ssa_def *offset, *index = NULL;
    unsigned chain_idx;
-   struct vtn_type *type;
-   offset = vtn_pointer_to_offset(b, src, &index, &type, &chain_idx, false);
+   offset = vtn_pointer_to_offset(b, src, &index, &chain_idx);
 
    struct vtn_ssa_value *value = NULL;
    _vtn_block_load_store(b, op, true, index, offset,
                          access_offset, access_size,
-                         src->chain, chain_idx, type, &value);
+                         src->chain, chain_idx, src->type, &value);
    return value;
 }
 
@@ -687,11 +679,10 @@ vtn_block_store(struct vtn_builder *b, struct vtn_ssa_value *src,
 {
    nir_ssa_def *offset, *index = NULL;
    unsigned chain_idx;
-   struct vtn_type *type;
-   offset = vtn_pointer_to_offset(b, dst, &index, &type, &chain_idx, false);
+   offset = vtn_pointer_to_offset(b, dst, &index, &chain_idx);
 
    _vtn_block_load_store(b, nir_intrinsic_store_ssbo, false, index, offset,
-                         0, 0, dst->chain, chain_idx, type, &src);
+                         0, 0, dst->chain, chain_idx, dst->type, &src);
 }
 
 static bool