Lines Matching defs:dest
445 static void dest_free_indirects(nir_dest *dest)
447 if (!dest->is_ssa && dest->reg.indirect) {
448 assert(dest->reg.indirect->is_ssa || !dest->reg.indirect->reg.indirect);
449 free(dest->reg.indirect);
450 dest->reg.indirect = NULL;
457 void nir_src_copy(nir_src *dest, const nir_src *src)
459 src_free_indirects(dest);
461 dest->is_ssa = src->is_ssa;
463 dest->ssa = src->ssa;
465 dest->reg.base_offset = src->reg.base_offset;
466 dest->reg.reg = src->reg.reg;
468 dest->reg.indirect = calloc(1, sizeof(nir_src));
469 nir_src_copy(dest->reg.indirect, src->reg.indirect);
471 dest->reg.indirect = NULL;
476 void nir_dest_copy(nir_dest *dest, const nir_dest *src)
481 dest_free_indirects(dest);
483 dest->is_ssa = false;
485 dest->reg.base_offset = src->reg.base_offset;
486 dest->reg.reg = src->reg.reg;
488 dest->reg.indirect = calloc(1, sizeof(nir_src));
489 nir_src_copy(dest->reg.indirect, src->reg.indirect);
491 dest->reg.indirect = NULL;
496 nir_alu_src_copy(nir_alu_src *dest, const nir_alu_src *src)
498 nir_src_copy(&dest->src, &src->src);
499 dest->abs = src->abs;
500 dest->negate = src->negate;
502 dest->swizzle[i] = src->swizzle[i];
506 nir_alu_dest_copy(nir_alu_dest *dest, const nir_alu_dest *src)
508 nir_dest_copy(&dest->dest, &src->dest);
509 dest->write_mask = src->write_mask;
510 dest->saturate = src->saturate;
668 dest_init(nir_dest *dest)
670 dest->is_ssa = false;
671 dest->reg.reg = NULL;
672 dest->reg.indirect = NULL;
673 dest->reg.base_offset = 0;
677 alu_dest_init(nir_alu_dest *dest)
679 dest_init(&dest->dest);
680 dest->saturate = false;
681 dest->write_mask = 0xf;
702 alu_dest_init(&instr->dest);
726 dest_init(&instr->dest);
775 dest_init(&instr->dest);
817 dest_init(&instr->dest);
886 dest_init(&instr->dest);
1107 add_reg_def_cb(nir_dest *dest, void *state)
1111 if (!dest->is_ssa) {
1112 dest->reg.parent_instr = instr;
1113 list_addtail(&dest->reg.def_link, &dest->reg.reg->defs);
1212 remove_def_cb(nir_dest *dest, void *state)
1216 if (!dest->is_ssa)
1217 list_del(&dest->reg.def_link);
1246 static bool free_dest_indirects_cb(nir_dest *dest, void *state)
1248 dest_free_indirects(dest);
1396 nir_ssa_def_visitor(nir_dest *dest, void *void_state)
1400 if (dest->is_ssa)
1401 return state->cb(&dest->ssa, state->client_state);
1437 assert(nir_instr_as_alu(instr)->dest.dest.is_ssa);
1438 return &nir_instr_as_alu(instr)->dest.dest.ssa;
1441 assert(nir_instr_as_deref(instr)->dest.is_ssa);
1442 return &nir_instr_as_deref(instr)->dest.ssa;
1445 assert(nir_instr_as_tex(instr)->dest.is_ssa);
1446 return &nir_instr_as_tex(instr)->dest.ssa;
1451 assert(intrin->dest.is_ssa);
1452 return &intrin->dest.ssa;
1459 assert(nir_instr_as_phi(instr)->dest.is_ssa);
1460 return &nir_instr_as_phi(instr)->dest.ssa;
1484 return !nir_instr_as_alu(instr)->dest.dest.is_ssa;
1487 return !nir_instr_as_deref(instr)->dest.is_ssa;
1490 return !nir_instr_as_tex(instr)->dest.is_ssa;
1495 !intrin->dest.is_ssa;
1499 return !nir_instr_as_phi(instr)->dest.is_ssa;
1688 nir_instr_move_src(nir_instr *dest_instr, nir_src *dest, nir_src *src)
1690 assert(!src_is_valid(dest) || dest->parent_instr == dest_instr);
1692 src_remove_all_uses(dest);
1693 src_free_indirects(dest);
1695 *dest = *src;
1697 src_add_all_uses(dest, dest_instr, NULL);
1712 nir_instr_rewrite_dest(nir_instr *instr, nir_dest *dest, nir_dest new_dest)
1714 if (dest->is_ssa) {
1716 assert(nir_ssa_def_is_unused(&dest->ssa));
1718 list_del(&dest->reg.def_link);
1719 if (dest->reg.indirect)
1720 src_remove_all_uses(dest->reg.indirect);
1726 nir_dest_copy(dest, &new_dest);
1728 dest->reg.parent_instr = instr;
1729 list_addtail(&dest->reg.def_link, &new_dest.reg.reg->defs);
1731 if (dest->reg.indirect)
1732 src_add_all_uses(dest->reg.indirect, instr, NULL);
1762 nir_ssa_dest_init(nir_instr *instr, nir_dest *dest,
1766 dest->is_ssa = true;
1767 nir_ssa_def_init(instr, &dest->ssa, num_components, bit_size);
2253 dest_is_ssa(nir_dest *dest, void *_state)
2256 return dest->is_ssa;
2839 for (unsigned i = 0; i < alu->dest.dest.ssa.num_components; i++) {
2930 return !instr->dest.saturate &&
2934 for (unsigned i = 0; i < instr->dest.dest.ssa.num_components; i++) {
2938 return !instr->dest.saturate;
3093 return (instr->dest.write_mask >> channel) & 1;
3115 return nir_dest_num_components(instr->dest.dest);