From: Jesse Natalie Date: Thu, 21 May 2020 22:05:08 +0000 (-0700) Subject: nir: Optimize mask+downcast to just downcast X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a1ed83fddd7518cc92b609d60129426bd9b4158d;p=mesa.git nir: Optimize mask+downcast to just downcast Reviewed-by: Jason Ekstrand Reviewed-by: Karol Herbst Part-of: --- 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. #