Lines Matching refs:tail
406 nir_deref *tail = &deref_var->deref;
438 tail->child = &deref_arr->deref;
439 tail = tail->child;
451 vtn_assert(tail->type == deref_type->type);
456 tail->child = &deref_struct->deref;
457 tail = tail->child;
472 nir_deref *tail, struct vtn_ssa_value *inout)
474 /* The deref tail may contain a deref to select a component of a vector (in
475 * other words, it might not be an actual tail) so we have to save it away
478 nir_deref *old_child = tail->child;
480 if (glsl_type_is_vector_or_scalar(tail->type)) {
484 tail->child = NULL;
491 intrin->num_components = glsl_get_vector_elements(tail->type);
496 glsl_get_bit_size(tail->type),
505 } else if (glsl_get_base_type(tail->type) == GLSL_TYPE_ARRAY ||
506 glsl_type_is_matrix(tail->type)) {
507 unsigned elems = glsl_get_length(tail->type);
510 deref_arr->deref.type = glsl_get_array_element(tail->type);
511 tail->child = &deref_arr->deref;
514 _vtn_local_load_store(b, load, deref, tail->child, inout->elems[i]);
517 vtn_assert(glsl_get_base_type(tail->type) == GLSL_TYPE_STRUCT);
518 unsigned elems = glsl_get_length(tail->type);
520 tail->child = &deref_struct->deref;
523 deref_struct->deref.type = glsl_get_struct_field(tail->type, i);
524 _vtn_local_load_store(b, load, deref, tail->child, inout->elems[i]);
528 tail->child = old_child;
539 * Gets the NIR-level deref tail, which may have as a child an array deref