diff options
author | Jason Ekstrand <[email protected]> | 2015-08-28 17:17:39 -0700 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2015-09-09 12:28:51 -0700 |
commit | f5e08ab6b1351c41000fd2f1a16c1273d2f74d40 (patch) | |
tree | e2552024443a01567321f117db4e91cb23209919 /src | |
parent | 3e9df0e3af7a8a84147ae48f588e9c435bf65b98 (diff) |
nir/cursor: Add a constructor for the end of a block but before the jump
Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/glsl/nir/nir.h | 11 | ||||
-rw-r--r-- | src/glsl/nir/nir_from_ssa.c | 7 |
2 files changed, 12 insertions, 6 deletions
diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h index 3c375f30c53..2bcd18aabe5 100644 --- a/src/glsl/nir/nir.h +++ b/src/glsl/nir/nir.h @@ -1608,6 +1608,17 @@ nir_after_instr(nir_instr *instr) } static inline nir_cursor +nir_after_block_before_jump(nir_block *block) +{ + nir_instr *last_instr = nir_block_last_instr(block); + if (last_instr && last_instr->type == nir_instr_type_jump) { + return nir_before_instr(last_instr); + } else { + return nir_after_block(block); + } +} + +static inline nir_cursor nir_before_cf_node(nir_cf_node *node) { if (node->type == nir_cf_node_block) diff --git a/src/glsl/nir/nir_from_ssa.c b/src/glsl/nir/nir_from_ssa.c index 1fd8b24d33d..94002f18cd7 100644 --- a/src/glsl/nir/nir_from_ssa.c +++ b/src/glsl/nir/nir_from_ssa.c @@ -249,12 +249,7 @@ add_parallel_copy_to_end_of_block(nir_block *block, void *void_state) nir_parallel_copy_instr *pcopy = nir_parallel_copy_instr_create(state->dead_ctx); - nir_instr *last_instr = nir_block_last_instr(block); - if (last_instr && last_instr->type == nir_instr_type_jump) { - nir_instr_insert_before(last_instr, &pcopy->instr); - } else { - nir_instr_insert_after_block(block, &pcopy->instr); - } + nir_instr_insert(nir_after_block_before_jump(block), &pcopy->instr); } return true; |