nir: move ends_in_break() helper to nir_loop_analyze.h

We will use the helper while simplifying potential loop terminators
in the following patch.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
Timothy Arceri 2018-06-01 15:37:27 +10:00
parent 186988e28f
commit 1098bc5e85
2 changed files with 13 additions and 13 deletions

View File

@ -290,17 +290,6 @@ initialize_ssa_def(nir_ssa_def *def, void *void_state)
return true;
}
static inline bool
ends_in_break(nir_block *block)
{
if (exec_list_is_empty(&block->instr_list))
return false;
nir_instr *instr = nir_block_last_instr(block);
return instr->type == nir_instr_type_jump &&
nir_instr_as_jump(instr)->type == nir_jump_break;
}
static bool
find_loop_terminators(loop_info_state *state)
{
@ -315,11 +304,11 @@ find_loop_terminators(loop_info_state *state)
nir_block *last_then = nir_if_last_then_block(nif);
nir_block *last_else = nir_if_last_else_block(nif);
if (ends_in_break(last_then)) {
if (nir_block_ends_in_break(last_then)) {
break_blk = last_then;
continue_from_blk = last_else;
continue_from_then = false;
} else if (ends_in_break(last_else)) {
} else if (nir_block_ends_in_break(last_else)) {
break_blk = last_else;
continue_from_blk = last_then;
}

View File

@ -92,4 +92,15 @@ nir_is_trivial_loop_if(nir_if *nif, nir_block *break_block)
return true;
}
static inline bool
nir_block_ends_in_break(nir_block *block)
{
if (exec_list_is_empty(&block->instr_list))
return false;
nir_instr *instr = nir_block_last_instr(block);
return instr->type == nir_instr_type_jump &&
nir_instr_as_jump(instr)->type == nir_jump_break;
}
#endif /* NIR_LOOP_ANALYZE_H */