From 327e5465fca3275bac866729783d3f7c4ea11848 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Fri, 15 Nov 2024 15:11:39 +0000 Subject: [PATCH] nir/algebraic: check bit sizes in lowered unpack(pack()) optimization Signed-off-by: Rhys Perry Reviewed-by: Ian Romanick Fixes: 894f7f438745 ("nir_opt_algebraic: Add a couple optimizations for lowered unpack(pack())") Part-of: --- src/compiler/nir/nir_opt_algebraic.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index 5eb501dea5a..1cd4be8b478 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -1987,8 +1987,11 @@ optimizations.extend([ (('bcsel', a, ('b2i16', 'b@1'), ('b2i16', 'c@1')), ('b2i16', ('bcsel', a, b, c))), # Lowered pack followed by lowered unpack, for the high bits - (('u2u32', ('ushr', ('ior', ('ishl', a, 32), ('u2u64', b)), 32)), ('u2u32', a)), - (('u2u16', ('ushr', ('ior', ('ishl', a, 16), ('u2u32', b)), 16)), ('u2u16', a)), + (('u2u32', ('ushr', ('ior', ('ishl', a, 32), ('u2u64', 'b@8')), 32)), ('u2u32', a)), + (('u2u32', ('ushr', ('ior', ('ishl', a, 32), ('u2u64', 'b@16')), 32)), ('u2u32', a)), + (('u2u32', ('ushr', ('ior', ('ishl', a, 32), ('u2u64', 'b@32')), 32)), ('u2u32', a)), + (('u2u16', ('ushr', ('ior', ('ishl', a, 16), ('u2u32', 'b@8')), 16)), ('u2u16', a)), + (('u2u16', ('ushr', ('ior', ('ishl', a, 16), ('u2u32', 'b@16')), 16)), ('u2u16', a)), ]) # After the ('extract_u8', a, 0) pattern, above, triggers, there will be