nir: Add nir_foreach_block_in_cf_node_safe() iterators

Reviewed-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29591>
This commit is contained in:
Faith Ekstrand 2024-05-25 08:09:43 -05:00 committed by Marge Bot
parent 7b5856ebe9
commit e05cb967e7

View file

@ -4939,11 +4939,23 @@ nir_block *nir_cf_node_cf_tree_prev(nir_cf_node *node);
block != nir_cf_node_cf_tree_next(node); \
block = nir_block_cf_tree_next(block))
#define nir_foreach_block_in_cf_node_safe(block, node) \
for (nir_block *block = nir_cf_node_cf_tree_first(node), \
*next = nir_block_cf_tree_next(block); \
block != nir_cf_node_cf_tree_next(node); \
block = next, next = nir_block_cf_tree_next(block))
#define nir_foreach_block_in_cf_node_reverse(block, node) \
for (nir_block *block = nir_cf_node_cf_tree_last(node); \
block != nir_cf_node_cf_tree_prev(node); \
block = nir_block_cf_tree_prev(block))
#define nir_foreach_block_in_cf_node_reverse_safe(block, node) \
for (nir_block *block = nir_cf_node_cf_tree_last(node), \
*prev = nir_block_cf_tree_prev(block); \
block != nir_cf_node_cf_tree_prev(node); \
block = prev, prev = nir_block_cf_tree_prev(block))
/* If the following CF node is an if, this function returns that if.
* Otherwise, it returns NULL.
*/