From: Jonathan Marek Date: Wed, 4 Sep 2019 19:18:09 +0000 (-0400) Subject: freedreno/a2xx: ir2: fix lowering of instructions after float lowering X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3516a90ab4842a6610dc31514809d490bc4add87;p=mesa.git 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 --- 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);