Skip to content

Commit 2c0a8cf

Browse files
Anton Sidorenkoigcbot
authored andcommitted
Make baling cloning emit better code for predef.reg
Instead of creating a copy using wrregion that may lead to extremely wide mov, generate one more read.predef.reg. This eliminates the redundant move instruction.
1 parent d658ef1 commit 2c0a8cf

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

IGC/VectorCompiler/lib/GenXCodeGen/GenXBaling.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1829,14 +1829,13 @@ void GenXBaling::doClones()
18291829
GenXIntrinsic::GenXRegion::OldValueOperandNum))) {
18301830
auto *ReadPredef = cast<Instruction>(
18311831
Cloned->getOperand(GenXIntrinsic::GenXRegion::OldValueOperandNum));
1832-
Region R(ReadPredef);
1833-
auto Wrr =
1834-
R.createWrRegion(UndefValue::get(ReadPredef->getType()), ReadPredef,
1835-
"", ReadPredef->getNextNode(), DebugLoc());
1836-
ReadPredef->replaceAllUsesWith(Wrr);
1837-
Wrr->replaceUsesOfWith(Wrr, ReadPredef);
1838-
BaleInfo BI(BaleInfo::WRREGION);
1839-
setBaleInfo(Wrr, BI);
1832+
1833+
Instruction *ClonedReadPredef = ReadPredef->clone();
1834+
ClonedReadPredef->insertAfter(ReadPredef);
1835+
BaleInfo BI(BaleInfo::REGINTR);
1836+
setBaleInfo(ClonedReadPredef, BI);
1837+
Cloned->setOperand(GenXIntrinsic::GenXRegion::OldValueOperandNum,
1838+
ClonedReadPredef);
18401839
}
18411840
// Change the use.
18421841
NC.Inst->setOperand(NC.OperandNum, Cloned);

0 commit comments

Comments
 (0)