From af7f29a78ecdad1654b6295d851e77e4664ab2d2 Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Mon, 22 Feb 2021 15:42:12 +0100 Subject: [PATCH] ir3/sched: Use correct src index Part-of: --- src/freedreno/ir3/ir3_sched.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/freedreno/ir3/ir3_sched.c b/src/freedreno/ir3/ir3_sched.c index cec39bb..55f4c73 100644 --- a/src/freedreno/ir3/ir3_sched.c +++ b/src/freedreno/ir3/ir3_sched.c @@ -935,7 +935,17 @@ sched_node_add_dep(struct ir3_instruction *instr, struct ir3_instruction *src, i dag_add_edge(&sn->dag, &n->dag, NULL); - unsigned d = ir3_delayslots(src, instr, i, true); + + /* There's a mismatch between the indices foreach_ssa_src_n uses and the + * indices that ir3_delayslots expects, and additionally we don't want to + * call it and get bogus answers on false dependencies. + */ + unsigned d = 0; + if (i < instr->regs_count) + d = ir3_delayslots(src, instr, i + 1, true); + else if (src == instr->address) + d = ir3_delayslots(src, instr, 0, true); + n->delay = MAX2(n->delay, d); } -- 2.7.4