mesa/src/amd
Daniel Schürmann 18ba93e673 aco/cssa: rewrite lower_to_cssa pass
The previous pass was based on misconceptions and
rounded up with bug fixes. The new pass is entirely
rewritten and basically just one-to-one from the paper:
 "Revisiting Out-of-SSA Translation for Correctness, CodeQuality, and Efficiency"
 by B. Boissinot et al.
It also incorporates the value-equality testing.

The regressions are mainly due to creating parallelcopies for
exec phis at loop headers (mitigated in the next commit).

Totals from 4933 (3.61% of 136546) affected shaders (Raven):
SpillSGPRs: 16249 -> 16527 (+1.71%); split: -0.28%, +1.99%
SpillVGPRs: 1771 -> 1595 (-9.94%)
CodeSize: 57544436 -> 58280304 (+1.28%); split: -0.00%, +1.28%
Scratch: 176128 -> 179200 (+1.74%)
Instrs: 11265783 -> 11445884 (+1.60%); split: -0.00%, +1.60%
Latency: 552596156 -> 555880540 (+0.59%); split: -0.53%, +1.13%
InvThroughput: 271431862 -> 273097423 (+0.61%); split: -0.18%, +0.79%
VClause: 160240 -> 160241 (+0.00%); split: -0.02%, +0.02%
SClause: 386863 -> 386685 (-0.05%); split: -0.07%, +0.02%
Copies: 1180801 -> 1345633 (+13.96%); split: -0.02%, +13.98%
Branches: 379129 -> 393052 (+3.67%); split: -0.01%, +3.69%

Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9196>
2021-04-13 18:40:57 +00:00
..
addrlib amd/addrlib: expose DCC address equations to drivers 2021-04-13 03:17:42 +00:00
ci radv: change RADV_FORCE_FAMILY to use family name instead of LLVM processor name 2021-04-05 06:53:55 +00:00
common radeonsi: implement DCC MSAA 4x/8x fast clear using DCC equations on gfx9 2021-04-13 03:17:42 +00:00
compiler aco/cssa: rewrite lower_to_cssa pass 2021-04-13 18:40:57 +00:00
llvm nir: Extract shader_info->cs.shared_size out of union. 2021-04-08 14:39:28 +00:00
registers amd: fix parsing the last dword of DMA_DATA packets 2021-04-02 12:05:00 +00:00
vulkan radv: Re-enable retiling. 2021-04-13 12:08:24 +00:00
.clang-format radv: Add clang-format for AMD code. 2021-04-10 03:31:32 +02:00
Android.addrlib.mk android: amd/addrlib: define endianess to build 2021-03-27 01:54:49 +01:00
Android.common.mk android: amd/registers: switch to new generated register definitions 2020-09-06 20:20:34 +02:00
Android.compiler.mk android: aco/isel: Move context initialization code to a dedicated file 2020-09-14 21:26:53 +02:00
Android.mk android: aco: add support for libmesa_aco 2019-09-28 15:56:34 +02:00
Makefile.sources aco: add new reindex_ssa() pass 2021-04-13 18:40:57 +00:00
meson.build aco: add framework for unit testing 2020-07-30 16:13:08 +00:00