Skip to content

Commit 01ee4ff

Browse files
pratikasharigcbot
authored andcommitted
Fix bug when removing redundant samplerHeader
definition. In a particular case, samplerHeader was used as src in a mov instruction. Originally, code was expecting to see a samplerHeader used only by sampler sends.
1 parent 2f350c0 commit 01ee4ff

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

visa/Rematerialization.cpp

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -308,12 +308,21 @@ namespace vISA
308308
{
309309
auto inst = (*instIt);
310310

311-
if (inst->isSplitSend() &&
312-
inst->getMsgDesc()->isSampler() &&
313-
inst->getMsgDescRaw() &&
314-
inst->getMsgDescRaw()->isHeaderPresent())
311+
if (toErase != bb->end())
315312
{
316-
toErase = bb->end();
313+
for (unsigned int i = 0; i != inst->getNumSrc(); ++i)
314+
{
315+
auto src = inst->getSrc(i);
316+
if (src && src->isSrcRegRegion())
317+
{
318+
auto topdcl = src->getTopDcl();
319+
if (topdcl == samplerHeader)
320+
{
321+
// samplerHeader is used, so can't erase it
322+
toErase = bb->end();
323+
}
324+
}
325+
}
317326
}
318327

319328
if (inst->isMov() && inst->getDst() && inst->getExecSize() == 1)
@@ -976,6 +985,7 @@ namespace vISA
976985
kernel.fg.builder->duplicateOperand(dstInst->getSrc(1))->asSrcRegRegion(),
977986
kernel.fg.builder->duplicateOperand(dstInst->asSendInst()->getMsgDescOperand()), dstInst->getOption(),
978987
newMsgDesc, kernel.fg.builder->duplicateOperand(dstInst->getSrc(3)), true);
988+
dupOp->setCISAOff(dstInst->getCISAOff());
979989
dupOp->inheritDIFrom(dstInst);
980990

981991
newInst.push_back(dupOp);

0 commit comments

Comments
 (0)