nir: glsl_get_bit_size() should take glsl_type
authorRob Clark <robclark@freedesktop.org>
Wed, 11 May 2016 19:05:09 +0000 (15:05 -0400)
committerRob Clark <robclark@freedesktop.org>
Thu, 12 May 2016 17:39:40 +0000 (13:39 -0400)
It's what all the call-sites once, so gets rid of a bunch of inlined
glsl_get_base_type() at the call-sites.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/compiler/nir/glsl_to_nir.cpp
src/compiler/nir/nir.c
src/compiler/nir/nir_builder.h
src/compiler/nir/nir_lower_locals_to_regs.c
src/compiler/nir/nir_lower_var_copies.c
src/compiler/nir/nir_lower_vars_to_ssa.c
src/compiler/nir_types.h
src/compiler/spirv/spirv_to_nir.c
src/compiler/spirv/vtn_variables.c

index a86b966a26b31d522deafb66c0647611be6f5b81..aeeba5d5573d1b2c43d01b2b389bae6d5dcadd0f 100644 (file)
@@ -856,7 +856,7 @@ nir_visitor::visit(ir_call *ir)
          instr->num_components = type->vector_elements;
 
          /* Setup destination register */
-         unsigned bit_size = glsl_get_bit_size(type->base_type);
+         unsigned bit_size = glsl_get_bit_size(type);
          nir_ssa_dest_init(&instr->instr, &instr->dest,
                            type->vector_elements, bit_size, NULL);
 
@@ -942,7 +942,7 @@ nir_visitor::visit(ir_call *ir)
          instr->num_components = type->vector_elements;
 
          /* Setup destination register */
-         unsigned bit_size = glsl_get_bit_size(type->base_type);
+         unsigned bit_size = glsl_get_bit_size(type);
          nir_ssa_dest_init(&instr->instr, &instr->dest,
                            type->vector_elements, bit_size, NULL);
 
@@ -1005,7 +1005,7 @@ nir_visitor::visit(ir_call *ir)
 
          /* Atomic result */
          assert(ir->return_deref);
-         unsigned bit_size = glsl_get_bit_size(ir->return_deref->type->base_type);
+         unsigned bit_size = glsl_get_bit_size(ir->return_deref->type);
          nir_ssa_dest_init(&instr->instr, &instr->dest,
                            ir->return_deref->type->vector_elements,
                            bit_size, NULL);
@@ -1186,7 +1186,7 @@ nir_visitor::evaluate_rvalue(ir_rvalue* ir)
       load_instr->num_components = ir->type->vector_elements;
       load_instr->variables[0] = this->deref_head;
       ralloc_steal(load_instr, load_instr->variables[0]);
-      unsigned bit_size = glsl_get_bit_size(ir->type->base_type);
+      unsigned bit_size = glsl_get_bit_size(ir->type);
       add_instr(&load_instr->instr, ir->type->vector_elements, bit_size);
    }
 
@@ -1207,7 +1207,7 @@ nir_visitor::visit(ir_expression *ir)
    case ir_binop_ubo_load: {
       nir_intrinsic_instr *load =
          nir_intrinsic_instr_create(this->shader, nir_intrinsic_load_ubo);
-      unsigned bit_size = glsl_get_bit_size(ir->type->base_type);
+      unsigned bit_size = glsl_get_bit_size(ir->type);
       load->num_components = ir->type->vector_elements;
       load->src[0] = nir_src_for_ssa(evaluate_rvalue(ir->operands[0]));
       load->src[1] = nir_src_for_ssa(evaluate_rvalue(ir->operands[1]));
@@ -1276,7 +1276,7 @@ nir_visitor::visit(ir_expression *ir)
           intrin->intrinsic == nir_intrinsic_interp_var_at_sample)
          intrin->src[0] = nir_src_for_ssa(evaluate_rvalue(ir->operands[1]));
 
-      unsigned bit_size =  glsl_get_bit_size(deref->type->base_type);
+      unsigned bit_size =  glsl_get_bit_size(deref->type);
       add_instr(&intrin->instr, deref->type->vector_elements, bit_size);
 
       if (swizzle) {
@@ -1496,7 +1496,7 @@ nir_visitor::visit(ir_expression *ir)
          nir_intrinsic_get_buffer_size);
       load->num_components = ir->type->vector_elements;
       load->src[0] = nir_src_for_ssa(evaluate_rvalue(ir->operands[0]));
-      unsigned bit_size = glsl_get_bit_size(ir->type->base_type);
+      unsigned bit_size = glsl_get_bit_size(ir->type);
       add_instr(&load->instr, ir->type->vector_elements, bit_size);
       return;
    }
@@ -1934,7 +1934,7 @@ nir_visitor::visit(ir_texture *ir)
 
    assert(src_number == num_srcs);
 
-   unsigned bit_size = glsl_get_bit_size(ir->type->base_type);
+   unsigned bit_size = glsl_get_bit_size(ir->type);
    add_instr(&instr->instr, nir_tex_instr_dest_size(instr), bit_size);
 }
 
index 867a43cefbdfe0d1415bc64ff5c58cf4c459f64e..71adcb3626756129d3f047f80308d1e4c0af7b26 100644 (file)
@@ -694,7 +694,7 @@ nir_deref_get_const_initializer_load(nir_shader *shader, nir_deref_var *deref)
       tail = tail->child;
    }
 
-   unsigned bit_size = glsl_get_bit_size(glsl_get_base_type(tail->type));
+   unsigned bit_size = glsl_get_bit_size(tail->type);
    nir_load_const_instr *load =
       nir_load_const_instr_create(shader, glsl_get_vector_elements(tail->type),
                                   bit_size);
index 4fa97799d315cf0e5522ae9f801699149217204e..a142d48b82ec91c446adad569bfc607bf090b404 100644 (file)
@@ -403,7 +403,7 @@ nir_load_var(nir_builder *build, nir_variable *var)
    load->num_components = num_components;
    load->variables[0] = nir_deref_var_create(load, var);
    nir_ssa_dest_init(&load->instr, &load->dest, num_components,
-                     glsl_get_bit_size(glsl_get_base_type(var->type)), NULL);
+                     glsl_get_bit_size(var->type), NULL);
    nir_builder_instr_insert(build, &load->instr);
    return &load->dest.ssa;
 }
index 7c52c161ccb810e2499307161678248fd8751938..61cc7fa19891a6af490dd11bf86c1645c165babd 100644 (file)
@@ -119,7 +119,7 @@ get_reg_for_deref(nir_deref_var *deref, struct locals_to_regs_state *state)
    nir_register *reg = nir_local_reg_create(state->impl);
    reg->num_components = glsl_get_vector_elements(tail->type);
    reg->num_array_elems = array_size > 1 ? array_size : 0;
-   reg->bit_size = glsl_get_bit_size(glsl_get_base_type(tail->type));
+   reg->bit_size = glsl_get_bit_size(tail->type);
 
    _mesa_hash_table_insert_pre_hashed(state->regs_table, hash, deref, reg);
    nir_array_add(&state->derefs_array, nir_deref_var *, deref);
index 1a7e2ee78e1464a676ad4dd6d51de4469301d738..b7e9989808b47b81ed9fc75c255fd7aa38dae496 100644 (file)
@@ -116,8 +116,7 @@ emit_copy_load_store(nir_intrinsic_instr *copy_instr,
       assert(src_tail->type == dest_tail->type);
 
       unsigned num_components = glsl_get_vector_elements(src_tail->type);
-      unsigned bit_size =
-         glsl_get_bit_size(glsl_get_base_type(src_tail->type));
+      unsigned bit_size = glsl_get_bit_size(src_tail->type);
 
       nir_intrinsic_instr *load =
          nir_intrinsic_instr_create(mem_ctx, nir_intrinsic_load_var);
index eae40755998004cccc6cd3c28e9f094b218a81f1..d62cec014aa9f045557cdbeaa14032e3ad18e3fd 100644 (file)
@@ -725,7 +725,7 @@ nir_lower_vars_to_ssa_impl(nir_function_impl *impl)
       node->pb_value =
          nir_phi_builder_add_value(state.phi_builder,
                                    glsl_get_vector_elements(node->type),
-                                   glsl_get_bit_size(glsl_get_base_type(node->type)),
+                                   glsl_get_bit_size(node->type),
                                    store_blocks);
 
       if (node->deref->var->constant_initializer) {
index 31e4d2040567891c6ee7b457266c8f04d6b4b6c0..7d9917f88d8c7a35360abfef1f712ad72645c277 100644 (file)
@@ -82,9 +82,9 @@ unsigned glsl_get_record_location_offset(const struct glsl_type *type,
                                          unsigned length);
 
 static inline unsigned
-glsl_get_bit_size(enum glsl_base_type type)
+glsl_get_bit_size(const struct glsl_type *type)
 {
-   switch (type) {
+   switch (glsl_get_base_type(type)) {
    case GLSL_TYPE_INT:
    case GLSL_TYPE_UINT:
    case GLSL_TYPE_BOOL:
index 8d4f771364fc14cac3bf65d903b82f71c1cfda62..c65f971ad79e86f880d3f2a9ac317689075c2ed4 100644 (file)
@@ -38,7 +38,7 @@ vtn_undef_ssa_value(struct vtn_builder *b, const struct glsl_type *type)
 
    if (glsl_type_is_vector_or_scalar(type)) {
       unsigned num_components = glsl_get_vector_elements(val->type);
-      unsigned bit_size = glsl_get_bit_size(glsl_get_base_type(val->type));
+      unsigned bit_size = glsl_get_bit_size(val->type);
       val->def = nir_ssa_undef(&b->nb, num_components, bit_size);
    } else {
       unsigned elems = glsl_get_length(val->type);
@@ -1034,7 +1034,7 @@ vtn_handle_constant(struct vtn_builder *b, SpvOp opcode,
 
          unsigned num_components = glsl_get_vector_elements(val->const_type);
          unsigned bit_size =
-            glsl_get_bit_size(glsl_get_base_type(val->const_type));
+            glsl_get_bit_size(val->const_type);
 
          nir_const_value src[3];
          assert(count <= 7);
@@ -1783,7 +1783,7 @@ vtn_ssa_transpose(struct vtn_builder *b, struct vtn_ssa_value *src)
    for (unsigned i = 0; i < glsl_get_matrix_columns(dest->type); i++) {
       nir_alu_instr *vec = create_vec(b->shader,
                                       glsl_get_matrix_columns(src->type),
-                                      glsl_get_bit_size(glsl_get_base_type(src->type)));
+                                      glsl_get_bit_size(src->type));
       if (glsl_type_is_vector_or_scalar(src->type)) {
           vec->src[0].src = nir_src_for_ssa(src->def);
           vec->src[0].swizzle[0] = i;
index d2f174c90b93d9dc99580b5f125a90ea8bea39ab..bbe1166aff079a6089989ff9038046cf93847948 100644 (file)
@@ -191,7 +191,7 @@ _vtn_local_load_store(struct vtn_builder *b, bool load, nir_deref_var *deref,
       if (load) {
          nir_ssa_dest_init(&intrin->instr, &intrin->dest,
                            intrin->num_components,
-                           glsl_get_bit_size(glsl_get_base_type(tail->type)),
+                           glsl_get_bit_size(tail->type),
                            NULL);
          inout->def = &intrin->dest.ssa;
       } else {
@@ -414,7 +414,7 @@ _vtn_load_store_tail(struct vtn_builder *b, nir_intrinsic_op op, bool load,
    if (load) {
       nir_ssa_dest_init(&instr->instr, &instr->dest,
                         instr->num_components,
-                        glsl_get_bit_size(glsl_get_base_type(type)), NULL);
+                        glsl_get_bit_size(type), NULL);
       (*inout)->def = &instr->dest.ssa;
    }