gk104/ir: fix conditions for adding a texbar

Sometimes a register source can actually be double- or even quad-wide.
We must make sure that the inserted texbars take that width into
account.

Based on an earlier patch by Samuel Pitoiset.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Cc: "12.0 11.2" <mesa-stable@lists.freedesktop.org>
This commit is contained in:
Ilia Mirkin 2016-06-06 21:25:05 -04:00
parent 8239da28e8
commit 71ad8a173f

View file

@ -227,18 +227,20 @@ NVC0LegalizePostRA::findFirstUsesBB(
continue; continue;
for (int d = 0; insn->defExists(d); ++d) { for (int d = 0; insn->defExists(d); ++d) {
const Value *def = insn->def(d).rep();
if (insn->def(d).getFile() != FILE_GPR || if (insn->def(d).getFile() != FILE_GPR ||
insn->def(d).rep()->reg.data.id < minGPR || def->reg.data.id + def->reg.size / 4 - 1 < minGPR ||
insn->def(d).rep()->reg.data.id > maxGPR) def->reg.data.id > maxGPR)
continue; continue;
addTexUse(uses, insn, texi); addTexUse(uses, insn, texi);
return; return;
} }
for (int s = 0; insn->srcExists(s); ++s) { for (int s = 0; insn->srcExists(s); ++s) {
const Value *src = insn->src(s).rep();
if (insn->src(s).getFile() != FILE_GPR || if (insn->src(s).getFile() != FILE_GPR ||
insn->src(s).rep()->reg.data.id < minGPR || src->reg.data.id + src->reg.size / 4 - 1 < minGPR ||
insn->src(s).rep()->reg.data.id > maxGPR) src->reg.data.id > maxGPR)
continue; continue;
addTexUse(uses, insn, texi); addTexUse(uses, insn, texi);
return; return;