From 65afc8bebf46efad07bccf676507e80aad08e307 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Tue, 26 Sep 2023 19:36:21 +0100 Subject: [PATCH] nir/algebraic: optimize u2u32(a >> 32) fossil-db (navi21): Totals from 352 (0.44% of 79330) affected shaders: Instrs: 271816 -> 271240 (-0.21%); split: -0.28%, +0.07% CodeSize: 1546520 -> 1544448 (-0.13%); split: -0.23%, +0.09% SpillVGPRs: 832 -> 827 (-0.60%); split: -1.08%, +0.48% Latency: 4037120 -> 4021748 (-0.38%); split: -0.41%, +0.03% InvThroughput: 1369540 -> 1362066 (-0.55%); split: -0.59%, +0.04% VClause: 6476 -> 6471 (-0.08%); split: -0.12%, +0.05% SClause: 6798 -> 6794 (-0.06%) Copies: 44828 -> 44630 (-0.44%); split: -0.89%, +0.45% Branches: 8845 -> 8844 (-0.01%); split: -0.05%, +0.03% PreSGPRs: 14684 -> 14659 (-0.17%) Signed-off-by: Rhys Perry Reviewed-by: Ian Romanick Part-of: --- src/compiler/nir/nir_opt_algebraic.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index 5177b3852e6..a30eae0e5c9 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -1702,6 +1702,9 @@ optimizations.extend([ (('unpack_32_2x16_split_x', a), ('u2u16', a), 'options->lower_unpack_32_2x16_split || options->lower_pack_split'), (('unpack_32_2x16_split_y', a), ('u2u16', ('ushr', a, 16)), 'options->lower_unpack_32_2x16_split || options->lower_pack_split'), + (('unpack_64_2x32_split_x', ('ushr', a, 32)), ('unpack_64_2x32_split_y', a), '!options->lower_unpack_64_2x32_split'), + (('u2u32', ('ushr', 'a@64', 32)), ('unpack_64_2x32_split_y', a), '!options->lower_unpack_64_2x32_split'), + # Useless masking before unpacking (('unpack_half_2x16_split_x', ('iand', a, 0xffff)), ('unpack_half_2x16_split_x', a)), (('unpack_32_2x16_split_x', ('iand', a, 0xffff)), ('unpack_32_2x16_split_x', a)),