diff options
author | Caio Marcelo de Oliveira Filho <[email protected]> | 2018-04-10 23:13:38 -0700 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2018-04-11 11:05:05 -0700 |
commit | 1c9bccdeb8acf1a531b49bbb6c69ea96879e79de (patch) | |
tree | ea2f5961ed5ea74843872be7b788fa0d4c4f934f /src/compiler/nir | |
parent | bc2b170d6849d31fc88df4ece635ff789e4ad0c2 (diff) |
nir/vars_to_ssa: Rework register_variable_uses()
The return value was needed to make use of the old nir_foreach_block
helper, but not needed anymore with the macro version. Then go one
step further and move the foreach directly into the register variable
uses function.
v2: Move foreach to register_variable_uses(). (Jason)
Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src/compiler/nir')
-rw-r--r-- | src/compiler/nir/nir_lower_vars_to_ssa.c | 51 |
1 files changed, 23 insertions, 28 deletions
diff --git a/src/compiler/nir/nir_lower_vars_to_ssa.c b/src/compiler/nir/nir_lower_vars_to_ssa.c index 0cc65143e76..f327a14d9b3 100644 --- a/src/compiler/nir/nir_lower_vars_to_ssa.c +++ b/src/compiler/nir/nir_lower_vars_to_ssa.c @@ -406,36 +406,35 @@ register_copy_instr(nir_intrinsic_instr *copy_instr, } } -/* Registers all variable uses in the given block. */ -static bool -register_variable_uses_block(nir_block *block, - struct lower_variables_state *state) +static void +register_variable_uses(nir_function_impl *impl, + struct lower_variables_state *state) { - nir_foreach_instr_safe(instr, block) { - if (instr->type != nir_instr_type_intrinsic) - continue; + nir_foreach_block(block, impl) { + nir_foreach_instr_safe(instr, block) { + if (instr->type != nir_instr_type_intrinsic) + continue; - nir_intrinsic_instr *intrin = nir_instr_as_intrinsic(instr); + nir_intrinsic_instr *intrin = nir_instr_as_intrinsic(instr); - switch (intrin->intrinsic) { - case nir_intrinsic_load_var: - register_load_instr(intrin, state); - break; + switch (intrin->intrinsic) { + case nir_intrinsic_load_var: + register_load_instr(intrin, state); + break; - case nir_intrinsic_store_var: - register_store_instr(intrin, state); - break; + case nir_intrinsic_store_var: + register_store_instr(intrin, state); + break; - case nir_intrinsic_copy_var: - register_copy_instr(intrin, state); - break; + case nir_intrinsic_copy_var: + register_copy_instr(intrin, state); + break; - default: - continue; + default: + continue; + } } } - - return true; } /* Walks over all of the copy instructions to or from the given deref_node @@ -654,9 +653,7 @@ nir_lower_vars_to_ssa_impl(nir_function_impl *impl) /* Build the initial deref structures and direct_deref_nodes table */ state.add_to_direct_deref_nodes = true; - nir_foreach_block(block, impl) { - register_variable_uses_block(block, &state); - } + register_variable_uses(impl, &state); bool progress = false; @@ -696,9 +693,7 @@ nir_lower_vars_to_ssa_impl(nir_function_impl *impl) * added load/store instructions are registered. We need this * information for phi node insertion below. */ - nir_foreach_block(block, impl) { - register_variable_uses_block(block, &state); - } + register_variable_uses(impl, &state); state.phi_builder = nir_phi_builder_create(state.impl); |