From 29b1c19e6c6ad4c71c4c21f779e36d7e5a984bf9 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Tue, 26 Apr 2022 08:53:31 -0500 Subject: [PATCH] nir/cf: Return a cursor from nir_cf_extract as well Reviewed-by: Lionel Landwerlin Part-of: (cherry picked from commit 25661ea028b4d904693b165cd43bb42a6d2d99a2) --- .pick_status.json | 2 +- src/compiler/nir/nir_control_flow.c | 10 +++++++--- src/compiler/nir/nir_control_flow.h | 3 ++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index f8a5b0b80b5..e35d2a5fa5a 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2128,7 +2128,7 @@ "description": "nir/cf: Return a cursor from nir_cf_extract as well", "nominated": false, "nomination_type": null, - "resolution": 4, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/compiler/nir/nir_control_flow.c b/src/compiler/nir/nir_control_flow.c index 3e2688f6fbf..842723ab049 100644 --- a/src/compiler/nir/nir_control_flow.c +++ b/src/compiler/nir/nir_control_flow.c @@ -678,7 +678,11 @@ cleanup_cf_node(nir_cf_node *node, nir_function_impl *impl) } } -void +/** + * Extracts everything between two cursors. Returns the cursor which is + * equivalent to the old begin/end curosors. + */ +nir_cursor nir_cf_extract(nir_cf_list *extracted, nir_cursor begin, nir_cursor end) { nir_block *block_begin, *block_end, *block_before, *block_after; @@ -686,7 +690,7 @@ nir_cf_extract(nir_cf_list *extracted, nir_cursor begin, nir_cursor end) if (nir_cursors_equal(begin, end)) { exec_list_make_empty(&extracted->list); extracted->impl = NULL; /* we shouldn't need this */ - return; + return begin; } split_block_cursor(begin, &block_before, &block_begin); @@ -737,7 +741,7 @@ nir_cf_extract(nir_cf_list *extracted, nir_cursor begin, nir_cursor end) cf_node = next; } - stitch_blocks(block_before, block_after); + return stitch_blocks(block_before, block_after); } static void diff --git a/src/compiler/nir/nir_control_flow.h b/src/compiler/nir/nir_control_flow.h index f5956ef16e0..34e79b7ad80 100644 --- a/src/compiler/nir/nir_control_flow.h +++ b/src/compiler/nir/nir_control_flow.h @@ -136,7 +136,8 @@ typedef struct { nir_function_impl *impl; /* for cleaning up if the list is deleted */ } nir_cf_list; -void nir_cf_extract(nir_cf_list *extracted, nir_cursor begin, nir_cursor end); +nir_cursor nir_cf_extract(nir_cf_list *extracted, nir_cursor begin, + nir_cursor end); nir_cursor nir_cf_reinsert(nir_cf_list *cf_list, nir_cursor cursor);