From 2c050b49b3d776f054f1265d5523cabb61f22fc3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Daniel=20Sch=C3=BCrmann?= Date: Thu, 19 Sep 2019 18:48:01 +0200 Subject: [PATCH] aco: only emit waitcnt on loop continues if we there was some load or export Reviewed-by: Rhys Perry --- src/amd/compiler/aco_insert_waitcnt.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/amd/compiler/aco_insert_waitcnt.cpp b/src/amd/compiler/aco_insert_waitcnt.cpp index d19fdadadea..9bd9f06e6c2 100644 --- a/src/amd/compiler/aco_insert_waitcnt.cpp +++ b/src/amd/compiler/aco_insert_waitcnt.cpp @@ -648,7 +648,7 @@ void handle_block(Program *program, Block& block, wait_ctx& ctx) /* check if this block is at the end of a loop */ for (unsigned succ_idx : block.linear_succs) { /* eliminate any remaining counters */ - if (succ_idx <= block.index && (ctx.vm_cnt || ctx.exp_cnt || ctx.lgkm_cnt || ctx.vs_cnt)) { + if (succ_idx <= block.index && (ctx.vm_cnt || ctx.exp_cnt || ctx.lgkm_cnt || ctx.vs_cnt) && !ctx.gpr_map.empty()) { // TODO: we could do better if we only wait if the regs between the block and other predecessors differ aco_ptr branch = std::move(new_instructions.back()); -- 2.30.2