Lines Matching refs:MSSA
158 static bool pointerInvalidatedByLoop(MemorySSA *MSSA, MemoryUse *MU,
161 static bool pointerInvalidatedByBlock(BasicBlock &BB, MemorySSA &MSSA,
174 static void foreachMemoryAccess(MemorySSA *MSSA, Loop *L,
177 collectPromotionCandidates(MemorySSA *MSSA, AliasAnalysis *AA, Loop *L);
183 TargetTransformInfo *TTI, ScalarEvolution *SE, MemorySSA *MSSA,
218 MemorySSA *MSSA = &getAnalysis<MemorySSAWrapperPass>().getMSSA(); in runOnLoop() local
235 SE ? &SE->getSE() : nullptr, MSSA, &ORE); in runOnLoop()
261 if (!AR.MSSA) in run()
272 &AR.SE, AR.MSSA, &ORE)) in run()
297 if (!AR.MSSA) in run()
310 &AR.TLI, &AR.TTI, &AR.SE, AR.MSSA, &ORE, true); in run()
354 MemorySSA *MSSA) in SinkAndHoistLICMFlags() argument
356 IsSink, L, MSSA) {} in SinkAndHoistLICMFlags()
360 Loop *L, MemorySSA *MSSA) in SinkAndHoistLICMFlags() argument
364 assert(((L != nullptr) == (MSSA != nullptr)) && in SinkAndHoistLICMFlags()
366 if (!MSSA) in SinkAndHoistLICMFlags()
371 if (const auto *Accesses = MSSA->getBlockAccesses(BB)) in SinkAndHoistLICMFlags()
388 ScalarEvolution *SE, MemorySSA *MSSA, OptimizationRemarkEmitter *ORE, in runOnLoop() argument
393 MSSA->ensureOptimizedUses(); in runOnLoop()
417 MemorySSAUpdater MSSAU(MSSA); in runOnLoop()
419 /*IsSink=*/true, L, MSSA); in runOnLoop()
487 collectPromotionCandidates(MSSA, AA, L)) { in runOnLoop()
516 MSSA->verifyMemorySSA(); in runOnLoop()
1146 MemorySSA *MSSA = MSSAU.getMemorySSA(); in canSinkOrHoistInst() local
1167 MSSA, cast<MemoryUse>(MSSA->getMemoryAccess(LI)), CurLoop, I, Flags); in canSinkOrHoistInst()
1217 MSSA, cast<MemoryUse>(MSSA->getMemoryAccess(CI)), CurLoop, I, in canSinkOrHoistInst()
1257 auto *SIMD = MSSA->getMemoryAccess(SI); in canSinkOrHoistInst()
1259 if (auto *Accesses = MSSA->getBlockAccesses(BB)) { in canSinkOrHoistInst()
1263 if (!MSSA->isLiveOnEntryDef(MD) && in canSinkOrHoistInst()
1270 if (!Flags.getIsSink() && !MSSA->dominates(SIMD, MU)) in canSinkOrHoistInst()
1289 auto *Source = MSSA->getSkipSelfWalker()->getClobberingMemoryAccess(SI); in canSinkOrHoistInst()
1292 return MSSA->isLiveOnEntryDef(Source) || in canSinkOrHoistInst()
2197 static void foreachMemoryAccess(MemorySSA *MSSA, Loop *L, in foreachMemoryAccess() argument
2200 if (const auto *Accesses = MSSA->getBlockAccesses(BB)) in foreachMemoryAccess()
2207 collectPromotionCandidates(MemorySSA *MSSA, AliasAnalysis *AA, Loop *L) { in collectPromotionCandidates() argument
2220 foreachMemoryAccess(MSSA, L, [&](Instruction *I) { in collectPromotionCandidates()
2237 foreachMemoryAccess(MSSA, L, [&](Instruction *I) { in collectPromotionCandidates()
2257 static bool pointerInvalidatedByLoop(MemorySSA *MSSA, MemoryUse *MU, in pointerInvalidatedByLoop() argument
2267 Source = MSSA->getSkipSelfWalker()->getClobberingMemoryAccess(MU); in pointerInvalidatedByLoop()
2270 return !MSSA->isLiveOnEntryDef(Source) && in pointerInvalidatedByLoop()
2294 if (pointerInvalidatedByBlock(*BB, *MSSA, *MU)) in pointerInvalidatedByLoop()
2298 return pointerInvalidatedByBlock(*I.getParent(), *MSSA, *MU); in pointerInvalidatedByLoop()
2303 bool pointerInvalidatedByBlock(BasicBlock &BB, MemorySSA &MSSA, MemoryUse &MU) { in pointerInvalidatedByBlock() argument
2304 if (const auto *Accesses = MSSA.getBlockDefs(&BB)) in pointerInvalidatedByBlock()
2307 if (MU.getBlock() != MD->getBlock() || !MSSA.locallyDominates(MD, &MU)) in pointerInvalidatedByBlock()