aco: improve nir_op_vec with constant operands
authorRhys Perry <pendingchaos02@gmail.com>
Mon, 11 Jan 2021 17:11:05 +0000 (17:11 +0000)
committerMarge Bot <eric+marge@anholt.net>
Tue, 12 Jan 2021 15:50:54 +0000 (15:50 +0000)
commit04e3d7ad9309c4ce6fd992bf2ac735431b5e0687
treea752c8a91554bf91b53a4a9add42dbc200a04e5b
parenta2751080aad2b061d8a2954c9144ed86fe1bba8d
aco: improve nir_op_vec with constant operands

Could still be improved a little. For example, 8-bit pack without
constants could be:
(s_pack_ll(x, z) & 0x00ff00ff) | ((s_pack_ll(y, w) & 0x00ff00ff) << 8)

fossil-db (Sienna):
Totals from 136 (0.10% of 139391) affected shaders:
CodeSize: 279776 -> 278144 (-0.58%)
Instrs: 50742 -> 50470 (-0.54%)
Cycles: 211560 -> 210472 (-0.51%)
SMEM: 3607 -> 3557 (-1.39%)

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8421>
src/amd/compiler/aco_instruction_selection.cpp