| /llvm-project-15.0.7/llvm/lib/Transforms/Scalar/ |
| H A D | LoopLoadElimination.cpp | 166 : L(L), LI(LI), LAI(LAI), DT(DT), BFI(BFI), PSI(PSI), PSE(LAI.getPSE()) {} in LoadEliminationForLoop() 174 findStoreToLoadDependences(const LoopAccessInfo &LAI) { in findStoreToLoadDependences() argument 177 const auto *Deps = LAI.getDepChecker().getDependences(); in findStoreToLoadDependences() 188 Instruction *Source = Dep.getSource(LAI); in findStoreToLoadDependences() 189 Instruction *Destination = Dep.getDestination(LAI); in findStoreToLoadDependences() 471 auto StoreToLoadDependences = findStoreToLoadDependences(LAI); in processLoop() 477 InstOrder = LAI.getDepChecker().generateInstructionOrderMap(); in processLoop() 531 if (LAI.getPSE().getPredicate().getComplexity() > in processLoop() 543 if (LAI.hasConvergentOp()) { in processLoop() 564 LoopVersioning LV(LAI, Checks, L, LI, DT, PSE.getSE()); in processLoop() [all …]
|
| H A D | LoopDistribute.cpp | 505 computePartitionSetForPointers(const LoopAccessInfo &LAI) { in computePartitionSetForPointers() argument 682 LAI = &GetLAA(*L); in processLoop() 686 if (LAI->canVectorizeMemory()) in processLoop() 690 auto *Dependences = LAI->getDepChecker().getDependences(); in processLoop() 715 const MemoryDepChecker &DepChecker = LAI->getDepChecker(); in processLoop() 772 const SCEVPredicate &Pred = LAI->getPSE().getPredicate(); in processLoop() 773 if (LAI->hasConvergentOp() && !Pred.isAlwaysTrue()) { in processLoop() 794 const auto *RtPtrChecking = LAI->getRuntimePointerChecking(); in processLoop() 799 if (LAI->hasConvergentOp() && !Checks.empty()) { in processLoop() 817 LoopVersioning LVer(*LAI, Checks, L, LI, DT, SE); in processLoop() [all …]
|
| H A D | LoopVersioningLICM.cpp | 185 const LoopAccessInfo *LAI = nullptr; member 416 LAI = &GetLAI(CurLoop); in legalLoopInstructions() 418 if (LAI->getRuntimePointerChecking()->getChecks().empty()) { in legalLoopInstructions() 423 if (LAI->getNumRuntimePointerChecks() > in legalLoopInstructions() 432 << NV("RuntimeChecks", LAI->getNumRuntimePointerChecks()) in legalLoopInstructions() 537 << NV("RuntimeChecks", LAI->getNumRuntimePointerChecks()); in isLegalForVersioning() 623 LoopVersioning LVer(*LAI, LAI->getRuntimePointerChecking()->getChecks(), in runOnLoop()
|
| H A D | LoopAccessAnalysisPrinter.cpp | 20 auto &LAI = AM.getResult<LoopAccessAnalysis>(L, AR); in run() local 23 LAI.print(OS, 4); in run()
|
| /llvm-project-15.0.7/llvm/lib/Transforms/Utils/ |
| H A D | LoopVersioning.cpp | 40 LoopVersioning::LoopVersioning(const LoopAccessInfo &LAI, in LoopVersioning() argument 45 Preds(LAI.getPSE().getPredicate()), LAI(LAI), LI(LI), DT(DT), in LoopVersioning() 61 const auto &RtPtrChecking = *LAI.getRuntimePointerChecking(); in versionLoop() 182 const RuntimePointerChecking *RtPtrChecking = LAI.getRuntimePointerChecking(); in prepareNoAliasMetadata() 223 for (Instruction *I : LAI.getDepChecker().getMemoryInstructions()) { in annotateLoopWithNoAlias() 278 const LoopAccessInfo &LAI = GetLAA(*L); in runImpl() local 279 if (!LAI.hasConvergentOp() && in runImpl() 280 (LAI.getNumRuntimePointerChecks() || in runImpl() 281 !LAI.getPSE().getPredicate().isAlwaysTrue())) { in runImpl() 282 LoopVersioning LVer(LAI, LAI.getRuntimePointerChecking()->getChecks(), L, in runImpl()
|
| /llvm-project-15.0.7/llvm/include/llvm/Transforms/Vectorize/ |
| H A D | LoopVectorizationLegality.h | 372 return LAI->getRuntimePointerChecking(); in getRuntimePointerChecking() 375 const LoopAccessInfo *getLAI() const { return LAI; } in getLAI() 378 return LAI->getDepChecker().isSafeForAnyVectorWidth(); in isSafeForAnyVectorWidth() 381 unsigned getMaxSafeDepDistBytes() { return LAI->getMaxSafeDepDistBytes(); } in getMaxSafeDepDistBytes() 384 return LAI->getDepChecker().getMaxSafeVectorWidthInBits(); in getMaxSafeVectorWidthInBits() 387 bool hasStride(Value *V) { return LAI->hasStride(V); } in hasStride() 395 unsigned getNumStores() const { return LAI->getNumStores(); } in getNumStores() 396 unsigned getNumLoads() const { return LAI->getNumLoads(); } in getNumLoads() 472 return LAI ? &LAI->getSymbolicStrides() : nullptr; in getSymbolicStrides() 502 const LoopAccessInfo *LAI = nullptr; variable
|
| /llvm-project-15.0.7/llvm/include/llvm/Analysis/ |
| H A D | VectorUtils.h | 755 const LoopAccessInfo *LAI) in InterleavedAccessInfo() argument 756 : PSE(PSE), TheLoop(L), DT(DT), LI(LI), LAI(LAI) {} in InterleavedAccessInfo() 824 const LoopAccessInfo *LAI; variable 902 return LAI && LAI->getDepChecker().getDependences(); in areDependencesValid() 961 auto *Deps = LAI->getDepChecker().getDependences(); in collectDependences() 963 Dependences[Dep.getSource(*LAI)].insert(Dep.getDestination(*LAI)); in collectDependences()
|
| H A D | LoopAccessAnalysis.h | 150 Instruction *getSource(const LoopAccessInfo &LAI) const; 152 Instruction *getDestination(const LoopAccessInfo &LAI) const; 827 const LoopAccessInfo &LAI) const { in getSource() argument 828 return LAI.getDepChecker().getMemoryInstructions()[Source]; in getSource() 832 const LoopAccessInfo &LAI) const { in getDestination() argument 833 return LAI.getDepChecker().getMemoryInstructions()[Destination]; in getDestination()
|
| /llvm-project-15.0.7/llvm/include/llvm/Transforms/Utils/ |
| H A D | LoopVersioning.h | 47 LoopVersioning(const LoopAccessInfo &LAI, 141 const LoopAccessInfo &LAI; variable
|
| /llvm-project-15.0.7/llvm/lib/Transforms/Vectorize/ |
| H A D | LoopVectorizationLegality.cpp | 466 return LAI->isUniform(V); in isUniform() 908 LAI = &(*GetLAA)(*TheLoop); in canVectorizeMemory() 909 const OptimizationRemarkAnalysis *LAR = LAI->getReport(); in canVectorizeMemory() 917 if (!LAI->canVectorizeMemory()) in canVectorizeMemory() 924 if (!LAI->getStoresToInvariantAddresses().empty()) { in canVectorizeMemory() 926 for (StoreInst *SI : LAI->getStoresToInvariantAddresses()) { in canVectorizeMemory() 938 if (LAI->hasDependenceInvolvingLoopInvariantAddress()) { in canVectorizeMemory() 947 for (StoreInst *SI : LAI->getStoresToInvariantAddresses()) { in canVectorizeMemory() 982 PSE.addPredicate(LAI->getPSE().getPredicate()); in canVectorizeMemory() 1335 << (LAI->getRuntimePointerChecking()->Need in canVectorize()
|
| H A D | LoopVectorize.cpp | 1880 void Create(Loop *L, const LoopAccessInfo &LAI, in Create() argument 1888 LAI.getNumRuntimePointerChecks() > VectorizeMemoryCheckThreshold; in Create() 1907 const auto &RtPtrChecking = *LAI.getRuntimePointerChecking(); in Create() 7567 const LoopAccessInfo *LAI = ILV.Legal->getLAI(); in executePlan() local 7568 if (LAI && !LAI->getRuntimePointerChecking()->getChecks().empty() && in executePlan() 7569 !LAI->getRuntimePointerChecking()->getDiffChecks()) { in executePlan() 7576 *LAI, LAI->getRuntimePointerChecking()->getChecks(), OrigLoop, LI, DT, in executePlan()
|
| /llvm-project-15.0.7/llvm/unittests/Transforms/Vectorize/ |
| H A D | VPlanSlpTest.cpp | 29 std::unique_ptr<LoopAccessInfo> LAI; member in llvm::__anon034c6bf40111::VPlanSlpTest 47 LAI.reset(new LoopAccessInfo(L, &*SE, &TLI, &*AARes, &*DT, &*LI)); in getInterleavedAccessInfo() 48 IAI.reset(new InterleavedAccessInfo(*PSE, L, &*DT, &*LI, &*LAI)); in getInterleavedAccessInfo()
|
| /llvm-project-15.0.7/llvm/lib/Analysis/ |
| H A D | LoopAccessAnalysis.cpp | 2622 auto &LAI = LoopAccessInfoMap[L]; in getInfo() local 2624 if (!LAI) in getInfo() 2625 LAI = std::make_unique<LoopAccessInfo>(L, SE, TLI, AA, DT, LI); in getInfo() 2627 return *LAI; in getInfo() 2636 auto &LAI = LAA.getInfo(L); in print() local 2637 LAI.print(OS, 4); in print()
|
| H A D | VectorUtils.cpp | 1174 const ValueToValueMap &Strides = LAI->getSymbolicStrides(); in analyzeInterleaving()
|
| /llvm-project-15.0.7/llvm/lib/Target/ARM/ |
| H A D | ARMTargetTransformInfo.cpp | 2113 const LoopAccessInfo *LAI) { in canTailPredicateLoop() argument 2143 PredicatedScalarEvolution PSE = LAI->getPSE(); in canTailPredicateLoop()
|