Lines Matching refs:src

41    struct copy_src src;
88 assert(!entry->src.flags);
100 if (entry->src.reg >= RA_HALF_SIZE) {
101 /* Choose a temporary that doesn't overlap src or dst */
104 /* Swap src and the temporary */
107 .src = {.reg = entry->src.reg & ~1u},
112 /* If src and dst are within the same full register, then swapping src
116 (entry->src.reg & ~1u) == (entry->dst & ~1u) ?
119 /* Do the original swap with src replaced with tmp */
122 .src = {.reg = tmp + (entry->src.reg & 1)},
127 /* Swap src and the temporary back */
130 .src = {.reg = entry->src.reg & ~1u},
143 .src = {.reg = entry->dst},
144 .dst = entry->src.reg,
151 unsigned src_num = ra_physreg_to_num(entry->src.reg, entry->flags);
193 physreg_t tmp = !entry->src.flags && entry->src.reg < 2 ? 2 : 0;
197 .src = {.reg = entry->dst & ~1u},
202 /* Similar to in do_swap(), account for src being swapped with tmp if
203 * src and dst are in the same register.
205 struct copy_src src = entry->src;
206 if (!src.flags && (src.reg & ~1u) == (entry->dst & ~1u))
207 src.reg = tmp + (src.reg & 1u);
211 .src = src,
218 .src = {.reg = entry->dst & ~1u},
225 if (!entry->src.flags && entry->src.reg >= RA_HALF_SIZE) {
226 unsigned src_num = ra_physreg_to_num(entry->src.reg & ~1u,
230 if (entry->src.reg % 2 == 0) {
231 /* cov.u32u16 dst, src */
240 /* shr.b dst, src, (16) */
252 unsigned src_num = ra_physreg_to_num(entry->src.reg, entry->flags);
260 ir3_src_create(mov, src_num, entry->flags | entry->src.flags);
263 if (entry->src.flags & IR3_REG_IMMED)
264 mov->srcs[0]->uim_val = entry->src.imm;
265 else if (entry->src.flags & IR3_REG_CONST)
266 mov->srcs[0]->num = entry->src.const_num;
299 assert(!(entry->src.flags & (IR3_REG_IMMED | IR3_REG_CONST)));
304 new_entry->src.flags = entry->src.flags;
305 new_entry->src.reg = entry->src.reg + 1;
323 if (!entry->src.flags)
324 ctx->physreg_use_count[entry->src.reg + j]++;
341 * TODO: We should note that src is also available in dst to unblock
342 * cycles that src is involved in.
352 if (!entry->src.flags)
353 ctx->physreg_use_count[entry->src.reg + j]--;
379 !(entry->src.flags & (IR3_REG_IMMED | IR3_REG_CONST))) {
427 assert(!entry->src.flags);
430 if (entry->dst == entry->src.reg) {
447 if (blocking->src.reg <= entry->dst &&
448 blocking->src.reg + 1 >= entry->dst &&
462 if (blocking->src.reg >= entry->dst &&
463 blocking->src.reg < entry->dst + copy_entry_size(entry)) {
464 blocking->src.reg =
465 entry->src.reg + (blocking->src.reg - entry->dst);
530 struct ir3_register *src = instr->srcs[i];
531 unsigned flags = src->flags & (IR3_REG_HALF | IR3_REG_SHARED);
538 .src = get_copy_src(src, j * reg_elem_size(dst)),
550 struct ir3_register *src = instr->srcs[i];
554 .src = get_copy_src(src, 0),
563 struct ir3_register *src = instr->srcs[0];
564 unsigned flags = src->flags & (IR3_REG_HALF | IR3_REG_SHARED);
568 .src = get_copy_src(
569 src, instr->split.off * reg_elem_size(dst)),