Module: Mesa Branch: main Commit: 613eaac7b53bfbfcd6ef536412be6c9c63cdea4f URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=613eaac7b53bfbfcd6ef536412be6c9c63cdea4f
Author: Connor Abbott <[email protected]> Date: Fri Jul 23 13:12:30 2021 +0200 ir3: Initial support for spilling non-shared registers Support for spilling shared registers to normal registers is still TODO. There are also several improvements to be made, like rematerialization. Note, there is one behavior change to register pressure accounting: we now include half registers in the current full pressure directly in mergedregs mode, rather than adding the max half pressure to the max full pressure afterwards, which might result in lower calculated max pressure in some cases with half registers. This is needed for spilling, since we need to make sure the total pressure including half registers is below the maximum at each instruction. Because the entire pass is rewritten, including the register pressure calculating parts, it didn't seem worth it to separate out this change. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12033> --- src/freedreno/ci/deqp-freedreno-a630-fails.txt | 221 --- src/freedreno/ci/deqp-freedreno-a630-skips.txt | 5 + src/freedreno/ir3/disasm-a3xx.c | 3 + src/freedreno/ir3/instr-a3xx.h | 3 + src/freedreno/ir3/ir3.h | 14 + src/freedreno/ir3/ir3_compiler.c | 1 + src/freedreno/ir3/ir3_compiler.h | 1 + src/freedreno/ir3/ir3_lower_spill.c | 163 ++ src/freedreno/ir3/ir3_merge_regs.c | 20 +- src/freedreno/ir3/ir3_ra.c | 197 ++- src/freedreno/ir3/ir3_ra.h | 10 + src/freedreno/ir3/ir3_spill.c | 1807 +++++++++++++++++++- src/freedreno/ir3/ir3_validate.c | 3 +- src/freedreno/ir3/meson.build | 1 + .../freedreno/ci/piglit-freedreno-a630-fails.txt | 5 - 15 files changed, 2130 insertions(+), 324 deletions(-) Diff: http://cgit.freedesktop.org/mesa/mesa/diff/?id=613eaac7b53bfbfcd6ef536412be6c9c63cdea4f
