From d4684a294baf636d1bf71b51537bf229c31ec085 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Tue, 29 Oct 2019 11:19:39 +0000 Subject: [PATCH] aco: a couple loop handling fixes for GFX10 hazard pass MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit It was joining from the wrong blocks and block.kind is a bitmask instead of an enum. Reviewed-By: Timur Kristóf --- src/amd/compiler/aco_insert_NOPs.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/amd/compiler/aco_insert_NOPs.cpp b/src/amd/compiler/aco_insert_NOPs.cpp index 5296f6ac045..2c69407b808 100644 --- a/src/amd/compiler/aco_insert_NOPs.cpp +++ b/src/amd/compiler/aco_insert_NOPs.cpp @@ -560,13 +560,13 @@ void mitigate_hazards_gfx10(Program *program) Block& block = program->blocks[i]; NOP_ctx_gfx10 &ctx = all_ctx[i]; - if (block.kind == block_kind_loop_header) { + if (block.kind & block_kind_loop_header) { loop_header_indices.push(i); - } else if (block.kind == block_kind_loop_exit) { + } else if (block.kind & block_kind_loop_exit) { /* Go through the whole loop again */ for (unsigned idx = loop_header_indices.top(); idx < i; idx++) { NOP_ctx_gfx10 loop_block_ctx; - for (unsigned b : block.linear_preds) + for (unsigned b : program->blocks[idx].linear_preds) loop_block_ctx.join(all_ctx[b]); handle_block_gfx10(loop_block_ctx, program->blocks[idx]); -- 2.30.2