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;
173 if (use_src != &use_deref->parent)
319 nir_deref_instr *parent = *(p - 1);
320 offset += struct_type_get_field_offset(parent->type, size_align,
356 nir_deref_instr *parent = *(p - 1);
358 struct_type_get_field_offset(parent->type, size_align,
431 assert(deref->parent.is_ssa);
432 nir_deref_instr *parent =
433 nir_instr_as_deref(deref->parent.ssa->parent_instr);
434 parent_modes = parent->modes;
755 nir_deref_instr *parent = nir_src_as_deref(deref->parent);
756 if (parent) {
757 parent = rematerialize_deref_in_block(parent, state);
758 new_deref->parent = nir_src_for_ssa(&parent->dest.ssa);
760 nir_src_copy(&new_deref->parent, &deref->parent);
867 nir_deref_instr_fixup_child_types(nir_deref_instr *parent)
869 nir_foreach_use(use, &parent->dest.ssa) {
880 child->type = glsl_get_array_element(parent->type);
884 child->type = parent->type;
888 child->type = glsl_get_struct_field(parent->type,
917 assert(src_deref->parent.is_ssa);
919 src_deref->parent.ssa);
931 nir_deref_instr *parent = nir_src_as_deref(cast->parent);
933 if (parent->deref_type == nir_deref_type_array) {
935 glsl_get_explicit_stride(nir_deref_instr_parent(parent)->type);
936 } else if (parent->deref_type == nir_deref_type_ptr_as_array) {
938 nir_deref_instr_array_stride(parent);
958 nir_deref_instr *parent = nir_src_as_deref(cast->parent);
959 if (parent == NULL)
967 if (!nir_get_explicit_deref_align(parent, false /* default_to_type_align */,
976 * memory operation which, in this case, is the cast and not its parent so
982 /* If we've gotten here, we have a parent deref with an align_mul at least
993 * because our call to nir_get_explicit_deref_align(parent, ...) above
1004 * it's possible that the parent's alignment offset disagrees with the
1007 * it even if the align_mul from the parent is larger.
1013 /* If we got here, the parent has better alignment information than the
1030 nir_deref_instr *parent = nir_deref_instr_parent(first_cast);
1031 if (parent == NULL || parent->deref_type != nir_deref_type_cast)
1033 first_cast = parent;
1038 nir_instr_rewrite_src(&cast->instr, &cast->parent,
1039 nir_src_for_ssa(first_cast->parent.ssa));
1048 * the parent eventually comes from a cast that we restricted earlier.
1058 nir_deref_instr *parent = nir_src_as_deref(deref->parent);
1059 if (parent == NULL || parent->modes == deref->modes)
1062 assert(parent->modes & deref->modes);
1063 deref->modes &= parent->modes;
1071 nir_deref_instr *parent = nir_src_as_deref(cast->parent);
1072 if (parent == NULL)
1078 const struct glsl_type *parent_type = parent->type;
1099 &parent->dest.ssa);
1103 nir_deref_instr_fixup_child_types(parent);
1120 nir_deref_instr *parent = nir_src_as_deref(cast->parent);
1121 if (!parent)
1127 if (!glsl_type_is_struct(parent->type))
1131 if (glsl_get_length(parent->type) < 1)
1134 if (glsl_get_struct_field_offset(parent->type, 0) != 0)
1137 if (cast->type != glsl_get_struct_field(parent->type, 0))
1140 nir_deref_instr *replace = nir_build_deref_struct(b, parent, 0);
1172 assert(cast->parent.is_ssa);
1182 nir_instr_rewrite_src(use_src->parent_instr, use_src, cast->parent);
1200 nir_deref_instr *parent = nir_deref_instr_parent(deref);
1205 * and we can just replace its uses with its parent, unless it has
1214 if (parent->deref_type == nir_deref_type_cast &&
1215 parent->cast.align_mul == 0 &&
1216 is_trivial_deref_cast(parent))
1217 parent = nir_deref_instr_parent(parent);
1219 &parent->dest.ssa);
1224 if (parent->deref_type != nir_deref_type_array &&
1225 parent->deref_type != nir_deref_type_ptr_as_array)
1228 assert(parent->parent.is_ssa);
1229 assert(parent->arr.index.is_ssa);
1232 deref->arr.in_bounds &= parent->arr.in_bounds;
1234 nir_ssa_def *new_idx = nir_iadd(b, parent->arr.index.ssa,
1237 deref->deref_type = parent->deref_type;
1238 nir_instr_rewrite_src(&deref->instr, &deref->parent, parent->parent);
1257 nir_deref_instr *parent = nir_src_as_deref(cast->parent);
1258 if (parent == NULL)
1261 /* The parent has to be a vector or scalar */
1262 if (!glsl_type_is_vector_or_scalar(parent->type))
1267 unsigned parent_bit_size = glsl_get_bit_size(parent->type);
1273 glsl_get_explicit_stride(parent->type))
1279 unsigned parent_bytes = glsl_get_vector_elements(parent->type) *
1319 nir_deref_instr *parent = nir_src_as_deref(deref->parent);
1320 const unsigned new_num_comps = glsl_get_vector_elements(parent->type);
1321 const unsigned new_bit_size = glsl_get_bit_size(parent->type);
1323 /* Stomp it to reference the parent */
1325 nir_src_for_ssa(&parent->dest.ssa));
1361 nir_deref_instr *parent = nir_src_as_deref(deref->parent);
1362 const unsigned new_num_comps = glsl_get_vector_elements(parent->type);
1363 const unsigned new_bit_size = glsl_get_bit_size(parent->type);
1366 nir_src_for_ssa(&parent->dest.ssa));