Lines Matching refs:parent
32 nir_deref_instr *parent = nir_src_as_deref(cast->parent);
33 if (!parent)
36 return cast->modes == parent->modes &&
37 cast->type == parent->type &&
38 cast->dest.ssa.num_components == parent->dest.ssa.num_components &&
39 cast->dest.ssa.bit_size == parent->dest.ssa.bit_size;
172 if (use_src != &use_deref->parent)
309 nir_deref_instr *parent = *(p - 1);
310 offset += struct_type_get_field_offset(parent->type, size_align,
346 nir_deref_instr *parent = *(p - 1);
348 struct_type_get_field_offset(parent->type, size_align,
418 assert(deref->parent.is_ssa);
419 nir_deref_instr *parent =
420 nir_instr_as_deref(deref->parent.ssa->parent_instr);
421 parent_modes = parent->modes;
707 nir_deref_instr *parent = nir_src_as_deref(deref->parent);
708 if (parent) {
709 parent = rematerialize_deref_in_block(parent, state);
710 new_deref->parent = nir_src_for_ssa(&parent->dest.ssa);
712 nir_src_copy(&new_deref->parent, &deref->parent);
819 nir_deref_instr_fixup_child_types(nir_deref_instr *parent)
821 nir_foreach_use(use, &parent->dest.ssa) {
832 child->type = glsl_get_array_element(parent->type);
836 child->type = parent->type;
840 child->type = glsl_get_struct_field(parent->type,
859 nir_deref_instr *parent = nir_src_as_deref(cast->parent);
861 if (parent->deref_type == nir_deref_type_array) {
863 glsl_get_explicit_stride(nir_deref_instr_parent(parent)->type);
864 } else if (parent->deref_type == nir_deref_type_ptr_as_array) {
866 nir_deref_instr_array_stride(parent);
886 nir_deref_instr *parent = nir_src_as_deref(cast->parent);
887 if (parent == NULL)
895 if (!nir_get_explicit_deref_align(parent, false /* default_to_type_align */,
904 * memory operation which, in this case, is the cast and not its parent so
910 /* If we've gotten here, we have a parent deref with an align_mul at least
921 * because our call to nir_get_explicit_deref_align(parent, ...) above
932 * it's possible that the parent's alignment offset disagrees with the
935 * it even if the align_mul from the parent is larger.
941 /* If we got here, the parent has better alignment information than the
958 nir_deref_instr *parent = nir_deref_instr_parent(first_cast);
959 if (parent == NULL || parent->deref_type != nir_deref_type_cast)
961 first_cast = parent;
966 nir_instr_rewrite_src(&cast->instr, &cast->parent,
967 nir_src_for_ssa(first_cast->parent.ssa));
976 * the parent eventually comes from a cast that we restricted earlier.
986 nir_deref_instr *parent = nir_src_as_deref(deref->parent);
987 if (parent == NULL || parent->modes == deref->modes)
990 assert(parent->modes & deref->modes);
991 deref->modes &= parent->modes;
999 nir_deref_instr *parent = nir_src_as_deref(cast->parent);
1000 if (parent == NULL)
1006 const struct glsl_type *parent_type = parent->type;
1024 &parent->dest.ssa);
1028 nir_deref_instr_fixup_child_types(parent);
1045 nir_deref_instr *parent = nir_src_as_deref(cast->parent);
1046 if (!parent)
1052 if (!glsl_type_is_struct(parent->type))
1056 if (glsl_get_length(parent->type) < 1)
1059 if (glsl_get_struct_field_offset(parent->type, 0) != 0)
1062 if (cast->type != glsl_get_struct_field(parent->type, 0))
1065 nir_deref_instr *replace = nir_build_deref_struct(b, parent, 0);
1097 assert(cast->parent.is_ssa);
1107 nir_instr_rewrite_src(use_src->parent_instr, use_src, cast->parent);
1125 nir_deref_instr *parent = nir_deref_instr_parent(deref);
1130 * and we can just replace its uses with its parent, unless it has
1139 if (parent->deref_type == nir_deref_type_cast &&
1140 parent->cast.align_mul == 0 &&
1141 is_trivial_deref_cast(parent))
1142 parent = nir_deref_instr_parent(parent);
1144 &parent->dest.ssa);
1149 if (parent->deref_type != nir_deref_type_array &&
1150 parent->deref_type != nir_deref_type_ptr_as_array)
1153 assert(parent->parent.is_ssa);
1154 assert(parent->arr.index.is_ssa);
1157 nir_ssa_def *new_idx = nir_iadd(b, parent->arr.index.ssa,
1160 deref->deref_type = parent->deref_type;
1161 nir_instr_rewrite_src(&deref->instr, &deref->parent, parent->parent);
1180 nir_deref_instr *parent = nir_src_as_deref(cast->parent);
1181 if (parent == NULL)
1184 /* The parent has to be a vector or scalar */
1185 if (!glsl_type_is_vector_or_scalar(parent->type))
1190 unsigned parent_bit_size = glsl_get_bit_size(parent->type);
1196 glsl_get_explicit_stride(parent->type))
1202 unsigned parent_bytes = glsl_get_vector_elements(parent->type) *
1242 nir_deref_instr *parent = nir_src_as_deref(deref->parent);
1243 const unsigned new_num_comps = glsl_get_vector_elements(parent->type);
1244 const unsigned new_bit_size = glsl_get_bit_size(parent->type);
1246 /* Stomp it to reference the parent */
1248 nir_src_for_ssa(&parent->dest.ssa));
1284 nir_deref_instr *parent = nir_src_as_deref(deref->parent);
1285 const unsigned new_num_comps = glsl_get_vector_elements(parent->type);
1286 const unsigned new_bit_size = glsl_get_bit_size(parent->type);
1289 nir_src_for_ssa(&parent->dest.ssa));