Mesa (master): aco/ra: fix phi operand renaming
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Dec 17 15:13:17 UTC 2020
Module: Mesa
Branch: master
Commit: b50d3e5760ca8af775357b4176aaac5991f93cf0
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b50d3e5760ca8af775357b4176aaac5991f93cf0
Author: Daniel Schürmann <daniel at schuermann.dev>
Date: Tue Dec 15 16:21:12 2020 +0100
aco/ra: fix phi operand renaming
In case one operand was renamed and another operand came
from an incomplete phi, it could happen, that the original
name was not restored.
This has no impact on the code, but ensures correct SSA
is maintained during RA.
Cc: mesa-stable
Reviewed-by: Rhys Perry <pendingchaos02 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8109>
---
src/amd/compiler/aco_register_allocation.cpp | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/amd/compiler/aco_register_allocation.cpp b/src/amd/compiler/aco_register_allocation.cpp
index 7b535c658b3..c672e4d81b7 100644
--- a/src/amd/compiler/aco_register_allocation.cpp
+++ b/src/amd/compiler/aco_register_allocation.cpp
@@ -1615,6 +1615,11 @@ Temp handle_live_in(ra_ctx& ctx, Temp val, Block* block)
phi->operands[i].setFixed(ctx.assignments[ops[i].id()].reg);
if (ops[i].regClass() == new_val.regClass())
ctx.affinities[new_val.id()] = ops[i].id();
+ /* make sure the operand gets it's original name in case
+ * it comes from an incomplete phi */
+ std::unordered_map<unsigned, phi_info>::iterator it = ctx.phi_map.find(ops[i].id());
+ if (it != ctx.phi_map.end())
+ it->second.uses.emplace(phi.get());
}
ctx.assignments.emplace_back();
assert(ctx.assignments.size() == ctx.program->peekAllocationId());
More information about the mesa-commit
mailing list