From 3516a90ab4842a6610dc31514809d490bc4add87 Mon Sep 17 00:00:00 2001 From: Jonathan Marek Date: Wed, 4 Sep 2019 15:18:09 -0400 Subject: [PATCH] freedreno/a2xx: ir2: fix lowering of instructions after float lowering Some instructions generated by int/bool float lowering need to be lowered by opt_algebraic. Fixes: 43dbd7d6 Signed-off-by: Jonathan Marek Reviewed-by: Rob Clark Reviewed-by: Eric Anholt --- src/gallium/drivers/freedreno/a2xx/ir2_nir.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/freedreno/a2xx/ir2_nir.c b/src/gallium/drivers/freedreno/a2xx/ir2_nir.c index 6915194234d..bb3ca9c9c0c 100644 --- a/src/gallium/drivers/freedreno/a2xx/ir2_nir.c +++ b/src/gallium/drivers/freedreno/a2xx/ir2_nir.c @@ -1097,15 +1097,14 @@ ir2_nir_compile(struct ir2_context *ctx, bool binning) if (binning) cleanup_binning(ctx); - /* postprocess */ - OPT_V(ctx->nir, nir_opt_algebraic_late); - OPT_V(ctx->nir, nir_copy_prop); OPT_V(ctx->nir, nir_opt_dce); OPT_V(ctx->nir, nir_opt_move, nir_move_comparisons); OPT_V(ctx->nir, nir_lower_int_to_float); OPT_V(ctx->nir, nir_lower_bool_to_float); + while(OPT(ctx->nir, nir_opt_algebraic)); + OPT_V(ctx->nir, nir_opt_algebraic_late); OPT_V(ctx->nir, nir_lower_to_source_mods, nir_lower_all_source_mods); OPT_V(ctx->nir, nir_lower_alu_to_scalar, ir2_alu_to_scalar_filter_cb, NULL); -- 2.30.2