ir3/delay: Delete pre-RA repeat handling
It looks likely that any implementation of (rptN) in ir3 will have to actually create (rptN) instructions after RA, which means that this can be dropped. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9842>
This commit is contained in:
committed by
Emma Anholt
parent
58d82add87
commit
c947475533
@@ -165,28 +165,6 @@ delay_calc_srcn_prera(struct ir3_block *block,
|
||||
continue;
|
||||
|
||||
d = delay_calc_srcn_prera(block, src->def->instr, consumer, srcn);
|
||||
|
||||
/* A (rptN) instruction executes in consecutive cycles so
|
||||
* it's outputs are written in successive cycles. And
|
||||
* likewise for it's (r)'d (incremented) inputs, they are
|
||||
* read on successive cycles.
|
||||
*
|
||||
* So we need to adjust the delay for (rptN)'s assigners
|
||||
* and consumers accordingly.
|
||||
*
|
||||
* Note that the dst of a (rptN) instruction is implicitly
|
||||
* (r) (the assigner case), although that is not the case
|
||||
* for src registers. There is exactly one case, bary.f,
|
||||
* which has a vecN (collect) src that is not (r)'d.
|
||||
*/
|
||||
if ((assigner->opc == OPC_META_SPLIT) && src->def->instr->repeat) {
|
||||
/* (rptN) assigner case: */
|
||||
d -= MIN2(d, src->def->instr->repeat - assigner->split.off);
|
||||
} else if ((assigner->opc == OPC_META_COLLECT) && consumer->repeat &&
|
||||
(consumer->regs[srcn]->flags & IR3_REG_R)) {
|
||||
d -= MIN2(d, n);
|
||||
}
|
||||
|
||||
delay = MAX2(delay, d);
|
||||
}
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user