aco: optimize add/sub(a, cndmask(b, 0, 1, cond)) -> addc/subbrev_co(0, a, b)
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 2 Apr 2020 15:41:36 +0000 (17:41 +0200)
committerMarge Bot <eric+marge@anholt.net>
Tue, 12 May 2020 16:15:17 +0000 (16:15 +0000)
commit4235624b6a1f1858a8f200c03b6492ed1b9f21ec
treea75f1be3fe44c999dd8e83f2b30503244e7ceaee
parenta5fc96b533418dc2d68f17f3f19ac5f82d59b978
aco: optimize add/sub(a, cndmask(b, 0, 1, cond)) -> addc/subbrev_co(0, a, b)

v2: outline into a separate function and also optimize additions (by Daniel Schürmann)

Totals from affected shaders: (VEGA)
SGPRS: 938888 -> 941496 (0.28 %)
VGPRS: 832068 -> 831532 (-0.06 %)
Spilled SGPRs: 618 -> 618 (0.00 %)
Spilled VGPRs: 0 -> 0 (0.00 %)
Private memory VGPRs: 0 -> 0 (0.00 %)
Scratch size: 3696 -> 3696 (0.00 %) dwords per thread
Code Size: 72893900 -> 72558928 (-0.46 %) bytes
LDS: 18201 -> 18201 (0.00 %) blocks
Max Waves: 64256 -> 64268 (0.02 %)

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Co-authored-by: Daniel Schürmann <daniel@schuermann.dev>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4419>
src/amd/compiler/aco_optimizer.cpp