intel/fs/gen6: Constrain barycentric source of LINTERP during bank conflict mitigation.
This avoids regressions on SNB due to the bank conflict mitigation pass moving a VGRF-allocated barycentric vector to a misaligned location, which would prevent the PLN instruction from being used. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -567,6 +567,14 @@ namespace {
|
|||||||
constrained[p.atom_of_reg(reg_of(inst->src[i]))] = true;
|
constrained[p.atom_of_reg(reg_of(inst->src[i]))] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Preserve the original allocation of VGRFs used by the barycentric
|
||||||
|
* source of the LINTERP instruction on Gen6, since pair-aligned
|
||||||
|
* barycentrics allow the PLN instruction to be used.
|
||||||
|
*/
|
||||||
|
if (v->devinfo->has_pln && v->devinfo->gen <= 6 &&
|
||||||
|
inst->opcode == FS_OPCODE_LINTERP)
|
||||||
|
constrained[p.atom_of_reg(reg_of(inst->src[0]))] = true;
|
||||||
|
|
||||||
/* The location of the Gen7 MRF hack registers is hard-coded in the
|
/* The location of the Gen7 MRF hack registers is hard-coded in the
|
||||||
* rest of the compiler back-end. Don't attempt to move them around.
|
* rest of the compiler back-end. Don't attempt to move them around.
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user