aco/optimizer: optimize s_and(exec, s_and(x, y)) more aggressively
authorDaniel Schürmann <daniel@schuermann.dev>
Wed, 24 Aug 2022 13:12:40 +0000 (15:12 +0200)
committerMarge Bot <emma+marge@anholt.net>
Thu, 22 Sep 2022 12:35:11 +0000 (12:35 +0000)
commitcf5f9854bcb414b07cf1a6318cf6066a228b0a07
treee43225f33a8040a6d80f7ceb866d3e0acd000e31
parent79a8e8b5b26d98f4969a906172e3ce95d3726398
aco/optimizer: optimize s_and(exec, s_and(x, y)) more aggressively

It is enough if either of the two operands is respecting the
current exec mask.

Totals from 1680 (1.25% of 134913) affected shaders: (GFX10.3)
CodeSize: 3929436 -> 3922372 (-0.18%); split: -0.18%, +0.00%
Instrs: 730305 -> 728536 (-0.24%); split: -0.24%, +0.00%
Latency: 6839314 -> 6835154 (-0.06%); split: -0.07%, +0.01%
InvThroughput: 1371351 -> 1371267 (-0.01%); split: -0.01%, +0.00%
SClause: 32819 -> 32802 (-0.05%); split: -0.09%, +0.04%
Copies: 33264 -> 33271 (+0.02%); split: -0.01%, +0.03%

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18253>
src/amd/compiler/aco_optimizer.cpp