Mesa (main): ir3: Initial support for spilling non-shared registers

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Aug 20 10:57:11 UTC 2021


Module: Mesa
Branch: main
Commit: 613eaac7b53bfbfcd6ef536412be6c9c63cdea4f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=613eaac7b53bfbfcd6ef536412be6c9c63cdea4f

Author: Connor Abbott <cwabbott0 at gmail.com>
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


More information about the mesa-commit mailing list