From f538cae743b556d8c3875d9ffbfb8c3fa4f1b565 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Tue, 11 Mar 2025 14:51:34 +0000 Subject: [PATCH] nir/algebraic: optimize ior(unpack_4x8, unpack_4x8<<8) to unpack_32_2x16 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit No fossil-db changes. Signed-off-by: Rhys Perry Reviewed-by: Marek Olšák Reviewed-by: Georg Lehmann Part-of: --- src/compiler/nir/nir_opt_algebraic.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index 9d1c0ce30eb..636846830a1 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -2039,6 +2039,12 @@ optimizations.extend([ (('ior', ('ishl', ('u2u32', 'a@8'), 24), ('ior', ('ishl', ('u2u32', 'b@8'), 16), ('ior', ('ishl', ('u2u32', 'c@8'), 8), ('u2u32', 'd@8')))), ('pack_32_4x8', ('vec4', d, c, b, a)), 'options->has_pack_32_4x8'), + # Mixed 16-bit/8-bit loads vectorized to 8-bit vector load and then lowered to 32-bit + (('ior', ('u2u16', ('unpack_32_4x8', a)), ('ishl', ('u2u16', ('unpack_32_4x8.y', a)), 8)), + ('unpack_32_2x16_split_x', a), '!options->lower_unpack_32_2x16_split'), + (('ior', ('u2u16', ('unpack_32_4x8.z', a)), ('ishl', ('u2u16', ('unpack_32_4x8.w', a)), 8)), + ('unpack_32_2x16_split_y', a), '!options->lower_unpack_32_2x16_split'), + (('extract_u16', ('extract_i16', a, b), 0), ('extract_u16', a, b)), (('extract_u16', ('extract_u16', a, b), 0), ('extract_u16', a, b)),