Lines Matching refs:parent
1145 nir_build_deref_array(nir_builder *build, nir_deref_instr *parent,
1148 assert(glsl_type_is_array(parent->type) ||
1149 glsl_type_is_matrix(parent->type) ||
1150 glsl_type_is_vector(parent->type));
1152 assert(index->bit_size == parent->dest.ssa.bit_size);
1157 deref->modes = parent->modes;
1158 deref->type = glsl_get_array_element(parent->type);
1159 deref->parent = nir_src_for_ssa(&parent->dest.ssa);
1163 parent->dest.ssa.num_components,
1164 parent->dest.ssa.bit_size, NULL);
1172 nir_build_deref_array_imm(nir_builder *build, nir_deref_instr *parent,
1175 assert(parent->dest.is_ssa);
1177 parent->dest.ssa.bit_size);
1179 return nir_build_deref_array(build, parent, idx_ssa);
1183 nir_build_deref_ptr_as_array(nir_builder *build, nir_deref_instr *parent,
1186 assert(parent->deref_type == nir_deref_type_array ||
1187 parent->deref_type == nir_deref_type_ptr_as_array ||
1188 parent->deref_type == nir_deref_type_cast);
1190 assert(index->bit_size == parent->dest.ssa.bit_size);
1195 deref->modes = parent->modes;
1196 deref->type = parent->type;
1197 deref->parent = nir_src_for_ssa(&parent->dest.ssa);
1201 parent->dest.ssa.num_components,
1202 parent->dest.ssa.bit_size, NULL);
1210 nir_build_deref_array_wildcard(nir_builder *build, nir_deref_instr *parent)
1212 assert(glsl_type_is_array(parent->type) ||
1213 glsl_type_is_matrix(parent->type));
1218 deref->modes = parent->modes;
1219 deref->type = glsl_get_array_element(parent->type);
1220 deref->parent = nir_src_for_ssa(&parent->dest.ssa);
1223 parent->dest.ssa.num_components,
1224 parent->dest.ssa.bit_size, NULL);
1232 nir_build_deref_struct(nir_builder *build, nir_deref_instr *parent,
1235 assert(glsl_type_is_struct_or_ifc(parent->type));
1240 deref->modes = parent->modes;
1241 deref->type = glsl_get_struct_field(parent->type, index);
1242 deref->parent = nir_src_for_ssa(&parent->dest.ssa);
1246 parent->dest.ssa.num_components,
1247 parent->dest.ssa.bit_size, NULL);
1255 nir_build_deref_cast(nir_builder *build, nir_ssa_def *parent,
1264 deref->parent = nir_src_for_ssa(parent);
1268 parent->num_components, parent->bit_size, NULL);
1276 nir_alignment_deref_cast(nir_builder *build, nir_deref_instr *parent,
1282 deref->modes = parent->modes;
1283 deref->type = parent->type;
1284 deref->parent = nir_src_for_ssa(&parent->dest.ssa);
1290 parent->dest.ssa.num_components,
1291 parent->dest.ssa.bit_size, NULL);
1298 /** Returns a deref that follows another but starting from the given parent
1301 * as the leader deref but it may have a different parent. This is very
1305 nir_build_deref_follower(nir_builder *b, nir_deref_instr *parent,
1308 /* If the derefs would have the same parent, don't make a new one */
1309 assert(leader->parent.is_ssa);
1310 if (leader->parent.ssa == &parent->dest.ssa)
1313 UNUSED nir_deref_instr *leader_parent = nir_src_as_deref(leader->parent);
1317 unreachable("A var dereference cannot have a parent");
1322 assert(glsl_type_is_matrix(parent->type) ||
1323 glsl_type_is_array(parent->type) ||
1325 glsl_type_is_vector(parent->type)));
1326 assert(glsl_get_length(parent->type) ==
1332 parent->dest.ssa.bit_size);
1333 return nir_build_deref_array(b, parent, index);
1335 return nir_build_deref_array_wildcard(b, parent);
1339 assert(glsl_type_is_struct_or_ifc(parent->type));
1340 assert(glsl_get_length(parent->type) ==
1343 return nir_build_deref_struct(b, parent, leader->strct.index);