From fb2169040aa056220469a620cd24fa4cef145baf Mon Sep 17 00:00:00 2001 From: Eduardo Lima Mitev Date: Mon, 10 Jun 2019 21:38:39 +0200 Subject: [PATCH] nir/opt_algebraic: Fix rules for imadsh_mix16 The rules added in patch 3addd7c are inverted: It should be: (al * bh) << 16 + c instead of: (ah * bl) << 16 + c Fixes a number of regressions under dEQP-GLES31.functional.draw_indirect.compute_interop.large.* on Freedreno. Reviewed-by: Rob Clark --- src/compiler/nir/nir_opt_algebraic.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index e4cdce48..f1b5893 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -1110,8 +1110,8 @@ optimizations += [ # 'al * bl': If either 'al' or 'bl' is zero, return zero. (('umul_low', '#a(is_lower_half_zero)', 'b'), (0)), # '(ah * bl) << 16 + c': If either 'ah' or 'bl' is zero, return 'c'. - (('imadsh_mix16', '#a@32(is_upper_half_zero)', 'b@32', 'c@32'), ('c')), - (('imadsh_mix16', 'a@32', '#b@32(is_lower_half_zero)', 'c@32'), ('c')), + (('imadsh_mix16', '#a@32(is_lower_half_zero)', 'b@32', 'c@32'), ('c')), + (('imadsh_mix16', 'a@32', '#b@32(is_upper_half_zero)', 'c@32'), ('c')), ] # This section contains "late" optimizations that should be run before -- 2.7.4