diff --git a/src/asahi/compiler/agx_compile.c b/src/asahi/compiler/agx_compile.c index 260896b30da..d11712efe18 100644 --- a/src/asahi/compiler/agx_compile.c +++ b/src/asahi/compiler/agx_compile.c @@ -49,6 +49,31 @@ int agx_debug = 0; fprintf(stderr, "%s:%d: "fmt, \ __FUNCTION__, __LINE__, ##__VA_ARGS__); } while (0) +static void +agx_block_add_successor(agx_block *block, agx_block *successor) +{ + assert(block != NULL && successor != NULL); + + /* Cull impossible edges */ + if (block->unconditional_jumps) + return; + + for (unsigned i = 0; i < ARRAY_SIZE(block->successors); ++i) { + if (block->successors[i]) { + if (block->successors[i] == successor) + return; + else + continue; + } + + block->successors[i] = successor; + _mesa_set_add(successor->predecessors, block); + return; + } + + unreachable("Too many successors"); +} + static void agx_emit_load_const(agx_builder *b, nir_load_const_instr *instr) {