Skip to content

Commit 1a2bd22

Browse files
kychendevigcbot
authored andcommitted
Bug fix in split aligned scalar optimization
Fix sub-reg alignment for temp var created to replace the original decl by taking into account both the number of elements and the elemnt type size.
1 parent 11d1e56 commit 1a2bd22

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

visa/SplitAlignedScalars.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -332,8 +332,13 @@ void SplitAlignedScalars::run() {
332332
auto getNewDcl = [&](G4_Declare *oldDcl) {
333333
auto newTopDcl = oldNewDcls[oldDcl];
334334
if (newTopDcl == nullptr) {
335-
newTopDcl = kernel.fg.builder->createTempVar(
336-
oldDcl->getNumElems(), oldDcl->getElemType(), G4_SubReg_Align::Any);
335+
auto builder = kernel.fg.builder;
336+
auto numElems = oldDcl->getNumElems();
337+
auto elemType = oldDcl->getElemType();
338+
auto subAlign = Get_G4_SubRegAlign_From_Size(
339+
numElems * TypeSize(elemType), builder->getPlatform(),
340+
builder->getGRFAlign());
341+
newTopDcl = builder->createTempVar(numElems, elemType, subAlign);
337342
oldNewDcls[oldDcl] = newTopDcl;
338343
}
339344
return newTopDcl;

0 commit comments

Comments
 (0)