aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <[email protected]>2019-08-05 10:53:41 -0700
committerAlyssa Rosenzweig <[email protected]>2019-08-05 10:58:39 -0700
commit28697583557e37e3dec95aa043411594e3c25623 (patch)
tree395843f95019ff1c28463420f8ba267a6bedb479 /src
parent04a995158084acbd1917b4c7e0f8d381e1c9222d (diff)
pan/midgard: Rewrite bidirectionally when eliminating moves
Symptom: the sky is black in SuperTuxKart (flashbacks to SMB/NES emulation intensify). Essentially, what happened is a fixed (special) move to r0 was eliminated but scheduling did not factor this in, so can_run_concurrent_ssa returned true even when there was a logical data dependency that needed to be resolved. Fixes: 20771ede1c0 ("pan/midgard: Add post-RA move elimination") Signed-off-by: Alyssa Rosenzweig <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/panfrost/midgard/midgard_opt_dce.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/panfrost/midgard/midgard_opt_dce.c b/src/panfrost/midgard/midgard_opt_dce.c
index 28f0886fe31..9964675763c 100644
--- a/src/panfrost/midgard/midgard_opt_dce.c
+++ b/src/panfrost/midgard/midgard_opt_dce.c
@@ -123,9 +123,8 @@ midgard_opt_post_move_eliminate(compiler_context *ctx, midgard_block *block, str
if (mir_nontrivial_outmod(ins)) continue;
if (ins->mask != 0xF) continue;
- /* We do want to rewrite to keep the graph sane for pipeline
- * register creation (TODO: is this the best approach?) */
- mir_rewrite_index_dst(ctx, ins->ssa_args.src[1], ins->ssa_args.dest);
+ /* We do need to rewrite to facilitate pipelining/scheduling */
+ mir_rewrite_index(ctx, ins->ssa_args.src[1], ins->ssa_args.dest);
/* We're good to go */
mir_remove_instruction(ins);