Mesa (master): aco: improve RA for uneven p_split_vector

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Apr 28 23:29:08 UTC 2020


Module: Mesa
Branch: master
Commit: 99ca96fbf58975d49e4ad131f907c5b01e12db85
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=99ca96fbf58975d49e4ad131f907c5b01e12db85

Author: Rhys Perry <pendingchaos02 at gmail.com>
Date:   Mon Apr 27 20:28:41 2020 +0100

aco: improve RA for uneven p_split_vector

Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Reviewed-by: Daniel Schürmann <daniel at schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4772>

---

 src/amd/compiler/aco_register_allocation.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/amd/compiler/aco_register_allocation.cpp b/src/amd/compiler/aco_register_allocation.cpp
index 42a4dcbcebf..e702e09059d 100644
--- a/src/amd/compiler/aco_register_allocation.cpp
+++ b/src/amd/compiler/aco_register_allocation.cpp
@@ -1832,7 +1832,8 @@ void register_allocation(Program *program, std::vector<TempSet>& live_out_per_bl
                definition.setFixed(definition.physReg());
             else if (instr->opcode == aco_opcode::p_split_vector) {
                PhysReg reg = instr->operands[0].physReg();
-               reg.reg_b += i * definition.bytes();
+               for (unsigned j = 0; j < i; j++)
+                  reg.reg_b += instr->definitions[j].bytes();
                if (get_reg_specified(ctx, register_file, definition.regClass(), parallelcopy, instr, reg))
                   definition.setFixed(reg);
             } else if (instr->opcode == aco_opcode::p_wqm) {



More information about the mesa-commit mailing list