Lines Matching full:accesses
30 #define DEBUG_TYPE "loop-accesses"
71 /// accesses in code like the following.
288 // the accesses are safe. in groupChecks()
300 // accesses to the same underlying object. This cannot happen unless in groupChecks()
326 // and add them to the overall solution. We use the order in which accesses in groupChecks()
340 // Because DepCands is constructed by visiting accesses in the order in in groupChecks()
433 OS.indent(Depth) << "Grouped accesses:\n"; in print()
448 /// \brief Analyses memory accesses in a loop.
468 Accesses.insert(MemAccessInfo(Ptr, false)); in addLoad()
477 Accesses.insert(MemAccessInfo(Ptr, true)); in addStore()
489 /// \brief Goes over all memory accesses, checks whether a RT check is needed
490 /// and builds sets of dependent accesses.
495 /// \brief Initial processing of memory accesses determined that we need to
517 /// Set of all accesses.
518 PtrAccessSet Accesses; member in __anoncf29b68b0111::AccessAnalysis
522 /// Set of accesses that need a further dependence check.
534 /// Sets of potentially dependent accesses - members of one set share an
539 /// \brief Initial processing of memory accesses determined that we may need
545 /// while this remains set if we have potentially dependent accesses.
596 // Accesses between different groups doesn't need to be checked. in canCheckPtrAtRT()
603 // Accesses within the same set don't need a runtime check. in canCheckPtrAtRT()
609 bool IsWrite = Accesses.count(MemAccessInfo(Ptr, true)); in canCheckPtrAtRT()
706 DEBUG(dbgs() << "LAA: Processing memory accesses...\n"); in processMemAccesses()
708 DEBUG(dbgs() << "LAA: Accesses(" << Accesses.size() << "):\n"); in processMemAccesses()
710 for (auto A : Accesses) in processMemAccesses()
738 PtrAccessSet &S = UseDeferred ? DeferredAccesses : Accesses; in processMemAccesses()
743 // For a single memory access in AliasSetTracker, Accesses may contain in processMemAccesses()
1143 /// \brief Check the dependence for two accesses with the same stride \p Stride.
1165 // Two accesses in memory (scaled distance is 2, stride is 4): in areStridedAccessesIndependent()
1173 // Two accesses in memory (scaled distance is 4, stride is 3): in areStridedAccessesIndependent()
1222 // Need accesses with constant stride. We don't want to vectorize in isDependent()
1246 // Attempt to prove strided accesses independent. in isDependent()
1249 DEBUG(dbgs() << "LAA: Strided accesses are independent\n"); in isDependent()
1304 // Two accesses in memory (stride is 2): in isDependent()
1345 // analyze the two accesses on array B, the max safe dependence distance in isDependent()
1346 // is 2. Then we analyze the accesses on array A, the minimum distance needed in isDependent()
1376 // Check accesses within this set. in areDepsSafe()
1388 for (std::vector<unsigned>::iterator I1 = Accesses[*AI].begin(), in areDepsSafe()
1389 I1E = Accesses[*AI].end(); I1 != I1E; ++I1) in areDepsSafe()
1390 for (std::vector<unsigned>::iterator I2 = Accesses[*OI].begin(), in areDepsSafe()
1391 I2E = Accesses[*OI].end(); I2 != I2E; ++I2) { in areDepsSafe()
1433 auto &IndexVector = Accesses.find(Access)->second; in getInstructionsForAccess()
1517 // Holds all the different accesses in the loop. in analyzeLoop()
1600 AccessAnalysis Accesses(TheLoop->getHeader()->getModule()->getDataLayout(), in analyzeLoop() local
1626 Accesses.addStore(Loc); in analyzeLoop()
1662 Accesses.addLoad(Loc, IsReadOnlyPtr); in analyzeLoop()
1675 Accesses.buildDependenceSets(); in analyzeLoop()
1679 bool CanDoRTIfNeeded = Accesses.canCheckPtrAtRT(*PtrRtChecking, PSE->getSE(), in analyzeLoop()
1692 if (Accesses.isDependencyCheckNeeded()) { in analyzeLoop()
1695 DependentAccesses, Accesses.getDependenciesToCheck(), SymbolicStrides); in analyzeLoop()
1702 Accesses.resetDepChecks(*DepChecker); in analyzeLoop()
1708 CanDoRTIfNeeded = Accesses.canCheckPtrAtRT(*PtrRtChecking, SE, TheLoop, in analyzeLoop()
1955 // List the pair of accesses need run-time checks to prove independence. in print()
2014 #define LAA_NAME "loop-accesses"