From: Vasily Khoruzhick Date: Wed, 4 Sep 2019 05:55:48 +0000 (-0700) Subject: lima: run opt_algebraic between int_to_float and boot_to_float for vs X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=576341324d056fab8c548acea0689f53591e312d;p=mesa.git lima: run opt_algebraic between int_to_float and boot_to_float for vs int_to_float emits ftrunc and ftrunc lowering generates bool ops. Reviewed-by: Connor Abbott Reviewed-by: Erico Nunes Reviewed-by: Andreas Baierl Signed-off-by: Vasily Khoruzhick --- diff --git a/src/gallium/drivers/lima/lima_program.c b/src/gallium/drivers/lima/lima_program.c index f92c64a300d..e3863feb80e 100644 --- a/src/gallium/drivers/lima/lima_program.c +++ b/src/gallium/drivers/lima/lima_program.c @@ -129,15 +129,16 @@ lima_program_optimize_vs_nir(struct nir_shader *s) } while (progress); NIR_PASS_V(s, nir_lower_int_to_float); - NIR_PASS_V(s, nir_lower_bool_to_float); - - /* Some ops must be lowered after being converted from int ops, - * so re-run nir_opt_algebraic after int lowering. */ + /* Run opt_algebraic between int_to_float and bool_to_float because + * int_to_float emits ftrunc, and ftrunc lowering generates bool ops + */ do { progress = false; NIR_PASS(progress, s, nir_opt_algebraic); } while (progress); + NIR_PASS_V(s, nir_lower_bool_to_float); + NIR_PASS_V(s, nir_copy_prop); NIR_PASS_V(s, nir_opt_dce); NIR_PASS_V(s, nir_lower_locals_to_regs);