ir3/delay: Delete pre-RA repeat handling
authorConnor Abbott <cwabbott0@gmail.com>
Mon, 17 May 2021 14:16:55 +0000 (16:16 +0200)
committerEmma Anholt <emma@anholt.net>
Thu, 10 Jun 2021 19:20:38 +0000 (12:20 -0700)
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>

src/freedreno/ir3/ir3_delay.c

index 1d382b4..7a310f2 100644 (file)
@@ -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 {