diff options
author | Rob Clark <[email protected]> | 2019-12-17 11:57:14 -0800 |
---|---|---|
committer | Marge Bot <[email protected]> | 2020-02-01 02:40:22 +0000 |
commit | c1194e10b2dc4d14ea21eb9bc8e607056ebaffcd (patch) | |
tree | f505971c3a7014f0b33672acaaaac14cacea5fa6 /src/freedreno/ir3 | |
parent | f0b792ea0602dd344b8a2dce4ab582b167f6fd35 (diff) |
freedreno/ir3: cleanup after lower_locals_to_regs
Signed-off-by: Rob Clark <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3569>
Diffstat (limited to 'src/freedreno/ir3')
-rw-r--r-- | src/freedreno/ir3/ir3_context.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/freedreno/ir3/ir3_context.c b/src/freedreno/ir3/ir3_context.c index 334b0ae0bab..33e73bcb216 100644 --- a/src/freedreno/ir3/ir3_context.c +++ b/src/freedreno/ir3/ir3_context.c @@ -79,21 +79,30 @@ ir3_context_init(struct ir3_compiler *compiler, * in ir3_optimize_nir(): */ NIR_PASS_V(ctx->s, nir_lower_bool_to_int32); - NIR_PASS_V(ctx->s, nir_lower_locals_to_regs); + bool progress = false; + NIR_PASS(progress, ctx->s, nir_lower_locals_to_regs); + + /* we could need cleanup after lower_locals_to_regs */ + while (progress) { + progress = false; + NIR_PASS(progress, ctx->s, nir_opt_algebraic); + NIR_PASS(progress, ctx->s, nir_opt_constant_folding); + } /* We want to lower nir_op_imul as late as possible, to catch also * those generated by earlier passes (e.g, nir_lower_locals_to_regs). * However, we want a final swing of a few passes to have a chance * at optimizing the result. */ - bool progress = false; + progress = false; NIR_PASS(progress, ctx->s, ir3_nir_lower_imul); - if (progress) { - NIR_PASS_V(ctx->s, nir_opt_algebraic); - NIR_PASS_V(ctx->s, nir_opt_copy_prop_vars); - NIR_PASS_V(ctx->s, nir_opt_dead_write_vars); - NIR_PASS_V(ctx->s, nir_opt_dce); - NIR_PASS_V(ctx->s, nir_opt_constant_folding); + while (progress) { + progress = false; + NIR_PASS(progress, ctx->s, nir_opt_algebraic); + NIR_PASS(progress, ctx->s, nir_opt_copy_prop_vars); + NIR_PASS(progress, ctx->s, nir_opt_dead_write_vars); + NIR_PASS(progress, ctx->s, nir_opt_dce); + NIR_PASS(progress, ctx->s, nir_opt_constant_folding); } /* Enable the texture pre-fetch feature only a4xx onwards. But |