Selaa lähdekoodia

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>
tags/18.2-branchpoint
Timothy Arceri 7 vuotta sitten
vanhempi
commit
1098bc5e85
2 muutettua tiedostoa jossa 13 lisäystä ja 13 poistoa
  1. 2
    13
      src/compiler/nir/nir_loop_analyze.c
  2. 11
    0
      src/compiler/nir/nir_loop_analyze.h

+ 2
- 13
src/compiler/nir/nir_loop_analyze.c Näytä tiedosto

@@ -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;
}

+ 11
- 0
src/compiler/nir/nir_loop_analyze.h Näytä tiedosto

@@ -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 */

Loading…
Peruuta
Tallenna