freedreno/ir3: CSE the up/downconversion of SEL's cond's size.
authorEric Anholt <eric@anholt.net>
Fri, 10 Apr 2020 23:10:14 +0000 (16:10 -0700)
committerMarge Bot <eric+marge@anholt.net>
Mon, 13 Apr 2020 19:24:52 +0000 (19:24 +0000)
commit95d4a956c08acafe0167ff8ba4dcd9b912962a70
tree8d208e0898cd73152c508a2455f37c368cdc7389
parent82375ccaa461c759d4a588a68ed20bcee92edf8e
freedreno/ir3: CSE the up/downconversion of SEL's cond's size.

Not many programs hit this, but if you were, say, selecting between vec4s,
you'd convert the cond 4 times.

instructions in affected programs: 2957 -> 2717 (-8.12%)
nops in affected programs: 989 -> 899 (-9.10%)
non-nops in affected programs: 1968 -> 1818 (-7.62%)
dwords in affected programs: 3232 -> 2752 (-14.85%)
last-baryf in affected programs: 102 -> 90 (-11.76%)
full in affected programs: 5 -> 4 (-20.00%)
sstall in affected programs: 329 -> 329 (0.00%)
(ss) in affected programs: 86 -> 105 (22.09%)
(sy) in affected programs: 14 -> 12 (-14.29%)

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4516>
src/freedreno/ir3/ir3_compiler_nir.c
src/freedreno/ir3/ir3_context.c
src/freedreno/ir3/ir3_context.h