From 70e497a2ac8eb8fbac5f372abfc5931b3ed0bb7b Mon Sep 17 00:00:00 2001 From: Konstantin Seurer Date: Wed, 20 Sep 2023 16:31:05 +0200 Subject: [PATCH] nir: Add nir_cf_node_cf_tree_prev Reviewed-by: Rhys Perry Part-of: --- src/compiler/nir/nir.c | 11 +++++++++++ src/compiler/nir/nir.h | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c index 31f9f990dcb..26dedff4e37 100644 --- a/src/compiler/nir/nir.c +++ b/src/compiler/nir/nir.c @@ -1821,6 +1821,17 @@ nir_cf_node_cf_tree_next(nir_cf_node *node) return nir_cf_node_as_block(nir_cf_node_next(node)); } +nir_block * +nir_cf_node_cf_tree_prev(nir_cf_node *node) +{ + if (node->type == nir_cf_node_block) + return nir_block_cf_tree_prev(nir_cf_node_as_block(node)); + else if (node->type == nir_cf_node_function) + return NULL; + else + return nir_cf_node_as_block(nir_cf_node_prev(node)); +} + nir_if * nir_block_get_following_if(nir_block *block) { diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index 119b9efc105..a3c8127d0da 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -4551,6 +4551,10 @@ nir_block *nir_cf_node_cf_tree_last(nir_cf_node *node); nir_block *nir_cf_node_cf_tree_next(nir_cf_node *node); +/* Gets the block before a CF node in source-code order */ + +nir_block *nir_cf_node_cf_tree_prev(nir_cf_node *node); + /* Macros for loops that visit blocks in source-code order */ #define nir_foreach_block(block, impl) \