From: Daniel Schürmann Date: Thu, 10 Oct 2019 14:31:40 +0000 (+0200) Subject: aco: don't schedule instructions through depending VMEM instructions X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8b5aee78ccf84c69b7bd32672ed8cb2e1d7ffe91;p=mesa.git 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 --- 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)