Skip to content

Commit bcfe2e1

Browse files
bcheng0127igcbot
authored andcommitted
Fixed bug in point-to analysis
Fixed bug in point-to analysis
1 parent 970ef6c commit bcfe2e1

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

visa/RegAlloc.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,12 @@ void PointsToAnalysis::doPointsToAnalysis(FlowGraph& fg)
292292
{
293293
G4_Operand* src = inst->getSrc(i);
294294
G4_VarBase* srcPtr = (src && src->isSrcRegRegion()) ? src->asSrcRegRegion()->getBase() : nullptr;
295-
if (srcPtr != nullptr && srcPtr->isRegVar())
295+
//We don't support using "r[a0.0]" as address expression.
296+
//For instructions like following, it's not point-to propagation for simdShuffle and add64_i_i_i_i.
297+
//(W) mov (1) simdShuffle(0,0)<1>:d r[A0(0,0), 0]<0;1,0>:d
298+
// pseudo_mad (16) add64_i_i_i_i(0,0)<1>:d 0x6:w simdShuffle(0,0)<0;0>:d rem_i_i_i_i(0,0)<1;0>:d // $470:
299+
// shl (16) add64_i_i_i_i(0,0)<1>:d add64_i_i_i_i(0,0)<1;1,0>:d 0x2:w // $472:
300+
if (srcPtr != nullptr && srcPtr->isRegVar() && ptr != srcPtr && src->getRegAccess() != IndirGRF)
296301
{
297302
std::vector<G4_RegVar*>::iterator addrDst = std::find(addrTakenDsts.begin(), addrTakenDsts.end(), srcPtr->asRegVar());
298303
if (addrDst != addrTakenDsts.end())

0 commit comments

Comments
 (0)