Lines Matching defs:deref

166    /* remove the original instr and its deref chain */
217 /* remove the original instr and its deref chain */
648 nir_ssa_def *deref = &nir_build_deref_var(b, fbfetch)->dest.ssa;
650 nir_ssa_def *load = nir_image_deref_load(b, 4, 32, deref, nir_imm_vec4(b, 0, 0, 0, 1), sample, nir_imm_int(b, 0));
986 nir_deref_instr *deref = nir_src_as_deref(intr->src[0]);
987 nir_variable *var = nir_deref_instr_get_variable(deref);
1265 /* generate new atomic deref ops for every component */
1273 /* deref ops have no offset src, so copy the srcs after it */
1512 /* input needs to be rewritten as an undef to ensure the entire deref chain is deleted */
1597 deref_is_matrix(nir_deref_instr *deref)
1599 if (glsl_type_is_matrix(deref->type))
1600 return deref->type;
1601 nir_deref_instr *parent = nir_deref_instr_parent(deref);
1629 nir_deref_instr *deref = nir_instr_as_deref(instr);
1630 if (!(deref->modes & (nir_var_shader_in | nir_var_shader_out)))
1632 if (nir_deref_instr_get_variable(deref) != var)
1635 /* matrix types are special: store the original deref type for later use */
1636 const struct glsl_type *matrix = deref_is_matrix(deref);
1637 nir_deref_instr *parent = nir_deref_instr_parent(deref);
1639 /* if this isn't a direct matrix deref, it's maybe a matrix row deref */
1641 /* propagate parent matrix type to row deref */
1647 _mesa_hash_table_insert(derefs, deref, (void*)matrix);
1648 if (deref->deref_type == nir_deref_type_var)
1649 deref->type = var->type;
1651 deref->type = rewrite_64bit_type(shader, deref->type, var);
1665 nir_deref_instr *deref = nir_src_as_deref(intr->src[0]);
1668 /* this is the stored matrix type from the deref */
1669 struct hash_entry *he = _mesa_hash_table_search(derefs, deref);
1688 assert(deref->deref_type == nir_deref_type_array);
1689 nir_deref_instr *var_deref = nir_deref_instr_parent(deref);
1691 nir_ssa_def *index = deref->arr.index.ssa;
1712 /* deref the rewritten struct to the appropriate vec4/vec2 */
1726 _mesa_set_add(deletes, &deref->instr);
1730 nir_store_deref(&b, deref, dest, mask);
1736 nir_deref_instr *strct = nir_build_deref_struct(&b, deref, i);
1748 assert(deref->deref_type == nir_deref_type_array);
1749 nir_deref_instr *var_deref = nir_deref_instr_parent(deref);
1751 nir_ssa_def *index = deref->arr.index.ssa;
1794 _mesa_set_add(deletes, &deref->instr);
1797 nir_ssa_def *load = nir_load_deref(&b, deref);
1806 nir_deref_instr *strct = nir_build_deref_struct(&b, deref, i);
1826 /* derefs must be queued for deletion to avoid deleting the same deref repeatedly */
1878 nir_deref_instr *deref = nir_instr_as_deref(instr);
1879 if (!(deref->modes & nir_var_shader_out))
1881 if (nir_deref_instr_get_variable(deref) != var)
1883 if (deref->deref_type != nir_deref_type_struct)
1885 nir_deref_instr *parent = nir_deref_instr_parent(deref);
1888 deref->modes = nir_var_shader_temp;
1891 nir_ssa_def *dest = &nir_build_deref_var(&b, members[deref->strct.index])->dest.ssa;
1892 nir_ssa_def_rewrite_uses_after(&deref->dest.ssa, dest, &deref->instr);
1893 nir_instr_remove(&deref->instr);
2034 nir_deref_instr *deref = nir_instr_as_deref(instr);
2035 if (deref->deref_type == nir_deref_type_var && deref->var == var)
2410 /* rewrite bindless instructions as array deref instructions */
2426 nir_deref_instr *deref = nir_build_deref_var(b, var);
2428 deref = nir_build_deref_array(b, deref, nir_u2uN(b, tex->src[idx].src.ssa, 32));
2429 nir_instr_rewrite_src_ssa(in, &tex->src[idx].src, &deref->dest.ssa);
2460 /* convert bindless intrinsics to deref intrinsics */
2493 nir_deref_instr *deref = nir_build_deref_var(b, var);
2495 deref = nir_build_deref_array(b, deref, nir_u2uN(b, instr->src[0].ssa, 32));
2496 nir_instr_rewrite_src_ssa(in, &instr->src[0], &deref->dest.ssa);
2534 nir_deref_instr *deref = nir_build_deref_var(b, var);
2536 nir_ssa_def *def = nir_load_deref(b, deref);
2540 nir_store_deref(b, deref, instr->src[1].ssa, nir_intrinsic_write_mask(instr));