aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Schürmann <[email protected]>2019-10-10 16:31:40 +0200
committerRhys Perry <[email protected]>2019-10-30 16:12:10 +0000
commit8b5aee78ccf84c69b7bd32672ed8cb2e1d7ffe91 (patch)
treec6558ed1034c767df6d491b9991389789467506d
parent636d45e46a490667eac353b7d84d56053eafb5f9 (diff)
aco: don't schedule instructions through depending VMEM instructions
Previously, the scheduler tried to move up instructions from below depending VMEM instructions only to move them down again when scheduling the VMEM instruction. Reviewed-by: Rhys Perry <[email protected]>
-rw-r--r--src/amd/compiler/aco_scheduler.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/amd/compiler/aco_scheduler.cpp b/src/amd/compiler/aco_scheduler.cpp
index 30a82e68ce8..14f0f71385a 100644
--- a/src/amd/compiler/aco_scheduler.cpp
+++ b/src/amd/compiler/aco_scheduler.cpp
@@ -336,6 +336,9 @@ void schedule_SMEM(sched_ctx& ctx, Block* block,
/* check if candidate depends on current */
bool is_dependency = std::any_of(candidate->operands.begin(), candidate->operands.end(),
[&ctx](const Operand& op) { return op.isTemp() && ctx.depends_on[op.tempId()];});
+ /* no need to steal from following VMEM instructions */
+ if (is_dependency && candidate->isVMEM())
+ break;
if (moving_spill && is_spill_reload(candidate))
is_dependency = true;
if ((moving_interaction & barrier_shared) && candidate->format == Format::DS)