mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 11:28:05 +02:00
nir: Do opt_algebraic in reverse order.
Walking the SSA definitions in order means that we consider the smallest algebraic optimizations before larger optimizations. So if a smaller rule is part of a larger rule, the smaller one will happen first, preventing the larger one from happening. instructions in affected programs: 32721 -> 32611 (-0.34%) helped: 106 In programs whose nir_optimize loop count changes (129 of them): before: 1164 optimization loops after: 1071 optimization loops Of the 129 affected, 16 programs' optimization loop counts increased. Prevents regressions and annoyances in the next commits. Reviewed-by: Eduardo Lima Mitev <elima@igalia.com> Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
This commit is contained in:
parent
a8f0960816
commit
7be8d07732
1 changed files with 2 additions and 2 deletions
|
|
@ -216,7 +216,7 @@ ${pass_name}_block(nir_block *block, void *void_state)
|
||||||
{
|
{
|
||||||
struct opt_state *state = void_state;
|
struct opt_state *state = void_state;
|
||||||
|
|
||||||
nir_foreach_instr_safe(block, instr) {
|
nir_foreach_instr_reverse_safe(block, instr) {
|
||||||
if (instr->type != nir_instr_type_alu)
|
if (instr->type != nir_instr_type_alu)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
@ -255,7 +255,7 @@ ${pass_name}_impl(nir_function_impl *impl, const bool *condition_flags)
|
||||||
state.progress = false;
|
state.progress = false;
|
||||||
state.condition_flags = condition_flags;
|
state.condition_flags = condition_flags;
|
||||||
|
|
||||||
nir_foreach_block(impl, ${pass_name}_block, &state);
|
nir_foreach_block_reverse(impl, ${pass_name}_block, &state);
|
||||||
|
|
||||||
if (state.progress)
|
if (state.progress)
|
||||||
nir_metadata_preserve(impl, nir_metadata_block_index |
|
nir_metadata_preserve(impl, nir_metadata_block_index |
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue