From: Rhys Perry Date: Tue, 15 Oct 2019 16:27:07 +0000 (+0100) Subject: Revert "aco: only emit waitcnt on loop continues if we there was some load or export" X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=118a32e5baa739f25c0a1f02790314915a2d9f29;p=mesa.git Revert "aco: only emit waitcnt on loop continues if we there was some load or export" We don't properly pass on ctx.lgkm_cnt/ctx.barrier_imm/etc, so this waitcnt was necessary for barriers and correctly waiting for SMEM before s_dcache_wb on GFX10. Totals from affected shaders: SGPRS: 33200 -> 33200 (0.00 %) VGPRS: 31376 -> 31376 (0.00 %) Spilled SGPRs: 0 -> 0 (0.00 %) Spilled VGPRs: 0 -> 0 (0.00 %) Private memory VGPRs: 0 -> 0 (0.00 %) Scratch size: 0 -> 0 (0.00 %) dwords per thread Code Size: 2431804 -> 2433956 (0.09 %) bytes LDS: 316 -> 316 (0.00 %) blocks Max Waves: 1609 -> 1609 (0.00 %) This reverts commit 2c050b49b3d776f054f1265d5523cabb61f22fc3. Signed-off-by: Rhys Perry Reviewed-by: Daniel Schürmann --- diff --git a/src/amd/compiler/aco_insert_waitcnt.cpp b/src/amd/compiler/aco_insert_waitcnt.cpp index af609132dee..1f4733ed356 100644 --- a/src/amd/compiler/aco_insert_waitcnt.cpp +++ b/src/amd/compiler/aco_insert_waitcnt.cpp @@ -680,7 +680,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) && !ctx.gpr_map.empty()) { + if (succ_idx <= block.index && (ctx.vm_cnt || ctx.exp_cnt || ctx.lgkm_cnt || ctx.vs_cnt)) { // 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());