mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-20 17:48:15 +02:00
Eliminate unnecessary copies when the operand registers of a p_split_vector instruction are not clobbered between the p_split_vector and the user of its definitions. This happens when p_split_vector doesn't kill its operand and its definitions have a shorter lifespan that the operand. It affects every NGG culling shader among other things. This optimization exists because it's too difficult to solve it in RA, and should be removed after we solved this in RA. v2 by Daniel Schürmann: - Rearrange and simplify conditions for the new optimization - Fix a few bugs v3 by Daniel Schürmann: - Check number of encoded ALU operands Fossil DB stats on Rembrandt (RDNA2): Totals from 64896 (48.10% of 134906) affected shaders: CodeSize: 175693348 -> 175434944 (-0.15%) Instrs: 33333912 -> 33269388 (-0.19%) Latency: 183766084 -> 183763432 (-0.00%); split: -0.00%, +0.00% InvThroughput: 28589651 -> 28589340 (-0.00%); split: -0.00%, +0.00% Copies: 2806550 -> 2742038 (-2.30%) Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16161> |
||
|---|---|---|
| .. | ||
| addrlib | ||
| ci | ||
| common | ||
| compiler | ||
| drm-shim | ||
| llvm | ||
| registers | ||
| vulkan | ||
| .clang-format | ||
| meson.build | ||