From a1ed83fddd7518cc92b609d60129426bd9b4158d Mon Sep 17 00:00:00 2001 From: Jesse Natalie Date: Thu, 21 May 2020 15:05:08 -0700 Subject: [PATCH] nir: Optimize mask+downcast to just downcast Reviewed-by: Jason Ekstrand Reviewed-by: Karol Herbst Part-of: --- src/compiler/nir/nir_opt_algebraic.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index 423fd06b879..1762591bd12 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -1604,6 +1604,16 @@ for t in ['int', 'uint', 'float']: ('ior', (xge, a, xN_max), (xge, (x2xN, a), b))), cond), ] +# Convert masking followed by signed downcast to just unsigned downcast +optimizations += [ + (('i2i32', ('iand', 'a@64', 0xffffffff)), ('u2u32', a)), + (('i2i16', ('iand', 'a@32', 0xffff)), ('u2u16', a)), + (('i2i16', ('iand', 'a@64', 0xffff)), ('u2u16', a)), + (('i2i8', ('iand', 'a@16', 0xff)), ('u2u8', a)), + (('i2i8', ('iand', 'a@32', 0xff)), ('u2u8', a)), + (('i2i8', ('iand', 'a@64', 0xff)), ('u2u8', a)), +] + def fexp2i(exp, bits): # Generate an expression which constructs value 2.0^exp or 0.0. # -- 2.30.2