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:
@@ -290,17 +290,6 @@ initialize_ssa_def(nir_ssa_def *def, void *void_state)
|
|||||||
return true;
|
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
|
static bool
|
||||||
find_loop_terminators(loop_info_state *state)
|
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_then = nir_if_last_then_block(nif);
|
||||||
nir_block *last_else = nir_if_last_else_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;
|
break_blk = last_then;
|
||||||
continue_from_blk = last_else;
|
continue_from_blk = last_else;
|
||||||
continue_from_then = false;
|
continue_from_then = false;
|
||||||
} else if (ends_in_break(last_else)) {
|
} else if (nir_block_ends_in_break(last_else)) {
|
||||||
break_blk = last_else;
|
break_blk = last_else;
|
||||||
continue_from_blk = last_then;
|
continue_from_blk = last_then;
|
||||||
}
|
}
|
||||||
|
@@ -92,4 +92,15 @@ nir_is_trivial_loop_if(nir_if *nif, nir_block *break_block)
|
|||||||
return true;
|
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 */
|
#endif /* NIR_LOOP_ANALYZE_H */
|
||||||
|
Reference in New Issue
Block a user