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 <pendingchaos02@gmail.com>
This commit is contained in:
Daniel Schürmann 2019-10-10 16:31:40 +02:00 committed by Rhys Perry
parent 636d45e46a
commit 8b5aee78cc

View file

@ -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)