summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers
diff options
context:
space:
mode:
authorJonathan Marek <[email protected]>2019-09-04 15:18:09 -0400
committerJonathan Marek <[email protected]>2019-09-06 02:24:29 +0000
commit3516a90ab4842a6610dc31514809d490bc4add87 (patch)
tree3d6be56b022c70ec895751dc3df918175c2ba951 /src/gallium/drivers
parent517b60dc13f1d3fcffee2564b7ad7aed34b83068 (diff)
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 <[email protected]> Reviewed-by: Rob Clark <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r--src/gallium/drivers/freedreno/a2xx/ir2_nir.c5
1 files 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);