From 33e3418cfe2db9983b71eddd97d4d7da44e5ef76 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Wed, 21 Dec 2022 21:50:04 -0500 Subject: [PATCH] agx: Consider "stop" a control flow instruction ...and therefore it needs to be after a "logical end". This means that "after_block_logical" will do the right thing for the last block. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/asahi/compiler/agx_compile.c | 1 + src/asahi/compiler/agx_validate.c | 1 + 2 files changed, 2 insertions(+) diff --git a/src/asahi/compiler/agx_compile.c b/src/asahi/compiler/agx_compile.c index f6674d6320d..c23cb32dc26 100644 --- a/src/asahi/compiler/agx_compile.c +++ b/src/asahi/compiler/agx_compile.c @@ -1860,6 +1860,7 @@ agx_compile_function_nir(nir_shader *nir, nir_function_impl *impl, */ agx_block *last_block = list_last_entry(&ctx->blocks, agx_block, link); agx_builder _b = agx_init_builder(ctx, agx_after_block(last_block)); + agx_logical_end(&_b); agx_stop(&_b); /* Index blocks now that we're done emitting so the order is consistent */ diff --git a/src/asahi/compiler/agx_validate.c b/src/asahi/compiler/agx_validate.c index fc91ce84389..6a09f1f189c 100644 --- a/src/asahi/compiler/agx_validate.c +++ b/src/asahi/compiler/agx_validate.c @@ -83,6 +83,7 @@ agx_validate_block_form(agx_block *block) case AGX_OPCODE_IF_FCMP: case AGX_OPCODE_ELSE_FCMP: case AGX_OPCODE_WHILE_FCMP: + case AGX_OPCODE_STOP: agx_validate_assert(state == AGX_BLOCK_STATE_CF); break; }