nir/opt_algebraic: Fix rules for imadsh_mix16
authorEduardo Lima Mitev <elima@igalia.com>
Mon, 10 Jun 2019 19:38:39 +0000 (21:38 +0200)
committerEduardo Lima Mitev <elima@igalia.com>
Mon, 10 Jun 2019 20:27:46 +0000 (22:27 +0200)
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 <robdclark@gmail.com>
src/compiler/nir/nir_opt_algebraic.py

index e4cdce4865b8b83b4de3dba0958c4c8bfbce7ebc..f1b5893be88a18deeab191cdd49d5e535578d495 100644 (file)
@@ -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