diff options
author | Daniel Schürmann <[email protected]> | 2019-10-10 16:31:40 +0200 |
---|---|---|
committer | Rhys Perry <[email protected]> | 2019-10-30 16:12:10 +0000 |
commit | 8b5aee78ccf84c69b7bd32672ed8cb2e1d7ffe91 (patch) | |
tree | c6558ed1034c767df6d491b9991389789467506d | |
parent | 636d45e46a490667eac353b7d84d56053eafb5f9 (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.cpp | 3 |
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) |