aboutsummaryrefslogtreecommitdiffstats
path: root/src/amd
diff options
context:
space:
mode:
authorDaniel Schürmann <[email protected]>2020-04-15 12:05:55 +0100
committerMarge Bot <[email protected]>2020-04-22 18:23:23 +0000
commit6792e134f37323d8b56a60b4620e782fc0d673dd (patch)
tree1cc323a757abf9b1b331305d891db439b55c3771 /src/amd
parentedc2b57ac14c6f9f3dadd3d7282e9d6ac1bc4304 (diff)
aco: don't create vector affinities for operands which are not killed or are duplicates
Totals from affected shaders: SGPRS: 825184 -> 825184 (0.00 %) VGPRS: 697640 -> 697240 (-0.06 %) Code Size: 79244104 -> 79201072 (-0.05 %) bytes Max Waves: 42388 -> 42386 (-0.00 %) Reviewed-by: Rhys Perry <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4573>
Diffstat (limited to 'src/amd')
-rw-r--r--src/amd/compiler/aco_register_allocation.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/amd/compiler/aco_register_allocation.cpp b/src/amd/compiler/aco_register_allocation.cpp
index a6792679da1..a3e01b11c68 100644
--- a/src/amd/compiler/aco_register_allocation.cpp
+++ b/src/amd/compiler/aco_register_allocation.cpp
@@ -1410,7 +1410,7 @@ void register_allocation(Program *program, std::vector<TempSet>& live_out_per_bl
/* add vector affinities */
if (instr->opcode == aco_opcode::p_create_vector) {
for (const Operand& op : instr->operands) {
- if (op.isTemp() && op.getTemp().type() == instr->definitions[0].getTemp().type())
+ if (op.isTemp() && op.isFirstKill() && op.getTemp().type() == instr->definitions[0].getTemp().type())
ctx.vectors[op.tempId()] = instr.get();
}
}