nv50/ir: copy over value's register id when resolving merge of a phi

The offset needs to be properly copied over to the phi value, otherwise
it will get assigned to the base of the merge instead of the proper
location.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Cc: mesa-stable@lists.freedesktop.org
This commit is contained in:
Ilia Mirkin 2016-10-10 16:57:50 -04:00
parent 789119d212
commit 300b5ad023

View file

@ -1905,8 +1905,10 @@ GCRA::resolveSplitsAndMerges()
// their registers should be identical.
if (v->getInsn()->op == OP_PHI || v->getInsn()->op == OP_UNION) {
Instruction *phi = v->getInsn();
for (int phis = 0; phi->srcExists(phis); ++phis)
for (int phis = 0; phi->srcExists(phis); ++phis) {
phi->getSrc(phis)->join = v;
phi->getSrc(phis)->reg.data.id = v->reg.data.id;
}
}
reg += v->reg.size;
}