Home
last modified time | relevance | path

Searched refs:LI (Results 1 – 25 of 535) sorted by relevance

12345678910>>...22

/freebsd/contrib/llvm-project/llvm/lib/CodeGen/
H A DLiveIntervalCalc.cpp41 void LiveIntervalCalc::calculate(LiveInterval &LI, bool TrackSubRegs) { in calculate() argument
52 Register Reg = LI.reg(); in calculate()
58 if (LI.hasSubRanges() || (SubReg != 0 && TrackSubRegs)) { in calculate()
63 if (!LI.hasSubRanges() && !LI.empty()) { in calculate()
65 LI.createSubRangeFrom(*Alloc, ClassMask, LI); in calculate()
68 LI.refineSubRanges( in calculate()
79 if (MO.isDef() && !LI.hasSubRanges()) in calculate()
80 createDeadDef(*Indexes, *Alloc, LI, MO); in calculate()
85 LI.removeEmptySubRanges(); in calculate()
91 if (LI.hasSubRanges()) { in calculate()
[all …]
H A DCalcSpillWeights.cpp81 bool VirtRegAuxInfo::isRematerializable(const LiveInterval &LI, in isRematerializable() argument
85 Register Reg = LI.reg(); in isRematerializable()
87 for (LiveInterval::const_vni_iterator I = LI.vni_begin(), E = LI.vni_end(); in isRematerializable()
131 bool VirtRegAuxInfo::isLiveAtStatepointVarArg(LiveInterval &LI) { in isLiveAtStatepointVarArg() argument
132 return any_of(VRM.getRegInfo().reg_operands(LI.reg()), in isLiveAtStatepointVarArg()
141 void VirtRegAuxInfo::calculateSpillWeightAndHint(LiveInterval &LI) { in calculateSpillWeightAndHint() argument
142 float Weight = weightCalcHelper(LI); in calculateSpillWeightAndHint()
146 LI.setWeight(Weight); in calculateSpillWeightAndHint()
149 static bool canMemFoldInlineAsm(LiveInterval &LI, in canMemFoldInlineAsm() argument
151 for (const MachineOperand &MO : MRI.reg_operands(LI.reg())) { in canMemFoldInlineAsm()
[all …]
H A DLiveRangeEdit.cpp40 LiveInterval &LI = LIS.createEmptyInterval(VReg); in createEmptyIntervalFrom() local
42 LI.markNotSpillable(); in createEmptyIntervalFrom()
50 LI.createSubRange(Alloc, S.LaneMask); in createEmptyIntervalFrom()
52 return LI; in createEmptyIntervalFrom()
203 bool LiveRangeEdit::foldAsLoad(LiveInterval *LI, in foldAsLoad() argument
208 for (MachineOperand &MO : MRI.reg_nodbg_operands(LI->reg())) { in foldAsLoad()
244 if (UseMI->readsWritesVirtualRegister(LI->reg(), &Ops).second) in foldAsLoad()
256 DefMI->addRegisterDead(LI->reg(), nullptr); in foldAsLoad()
262 bool LiveRangeEdit::useIsKill(const LiveInterval &LI, in useIsKill() argument
266 if (LI.Query(Idx).isKill()) in useIsKill()
[all …]
H A DRenameIndependentSubregs.cpp65 bool renameComponents(LiveInterval &LI) const;
72 LiveInterval &LI) const;
128 bool RenameIndependentSubregs::renameComponents(LiveInterval &LI) const { in INITIALIZE_PASS_DEPENDENCY()
130 if (LI.valnos.size() < 2) in INITIALIZE_PASS_DEPENDENCY()
135 if (!findComponents(Classes, SubRangeInfos, LI)) in INITIALIZE_PASS_DEPENDENCY()
139 Register Reg = LI.reg(); in INITIALIZE_PASS_DEPENDENCY()
142 Intervals.push_back(&LI); in INITIALIZE_PASS_DEPENDENCY()
163 LiveInterval &LI) const { in findComponents()
167 for (LiveInterval::SubRange &SR : LI.subranges()) { in findComponents()
184 Register Reg = LI.reg(); in findComponents()
[all …]
H A DLiveIntervals.cpp229 bool LiveIntervals::computeVirtRegInterval(LiveInterval &LI) { in computeVirtRegInterval() argument
231 assert(LI.empty() && "Should only compute empty intervals."); in computeVirtRegInterval()
233 LICalc->calculate(LI, MRI->shouldTrackSubRegLiveness(LI.reg())); in computeVirtRegInterval()
234 return computeDeadValues(LI, nullptr); in computeVirtRegInterval()
242 LiveInterval &LI = createEmptyInterval(Reg); in computeVirtRegs() local
243 bool NeedSplit = computeVirtRegInterval(LI); in computeVirtRegs()
246 splitSeparateComponents(LI, SplitLIs); in computeVirtRegs()
372 for (const auto &LI : MBB.liveins()) { in computeLiveInRegUnits() local
373 for (MCRegUnit Unit : TRI->regunits(LI.PhysReg)) { in computeLiveInRegUnits()
425 const LiveInterval &LI = getInterval(Reg); in extendSegmentsToUses() local
[all …]
/freebsd/contrib/llvm-project/llvm/lib/Target/DirectX/
H A DDXILForwardHandleAccesses.cpp37 static void diagnoseHandleNotFound(LoadInst *LI) { in diagnoseHandleNotFound() argument
38 Function *F = LI->getFunction(); in diagnoseHandleNotFound()
41 LI, Twine("Load of \"") + LI->getPointerOperand()->getName() + in diagnoseHandleNotFound()
45 static void diagnoseUndominatedLoad(LoadInst *LI, IntrinsicInst *Handle) { in diagnoseUndominatedLoad() argument
46 Function *F = LI->getFunction(); in diagnoseUndominatedLoad()
49 LI, Twine("Load at \"") + LI->getName() + in diagnoseUndominatedLoad()
84 } else if (auto *LI = dyn_cast<LoadInst>(&Inst)) in forwardHandleAccesses() local
85 if (isa<dxil::AnyResourceExtType>(LI->getType())) in forwardHandleAccesses()
86 LoadsToProcess.push_back(LI); in forwardHandleAccesses()
88 for (LoadInst *LI : LoadsToProcess) { in forwardHandleAccesses()
[all …]
/freebsd/contrib/llvm-project/llvm/lib/Target/SPIRV/Analysis/
H A DSPIRVConvergenceRegionAnalysis.cpp112 ConvergenceRegion::ConvergenceRegion(DominatorTree &DT, LoopInfo &LI, in ConvergenceRegion() argument
114 : DT(DT), LI(LI), Parent(nullptr) { in ConvergenceRegion()
125 DominatorTree &DT, LoopInfo &LI, in ConvergenceRegion() argument
128 : DT(DT), LI(LI), ConvergenceToken(ConvergenceToken), Entry(Entry), in ConvergenceRegion()
190 ConvergenceRegionAnalyzer(Function &F, DominatorTree &DT, LoopInfo &LI) in ConvergenceRegionAnalyzer() argument
191 : DT(DT), LI(LI), F(F) {} in ConvergenceRegionAnalyzer()
202 if (!LI.isLoopHeader(To)) in isBackEdge()
205 auto *L = LI.getLoopFor(To); in isBackEdge()
213 findPathsToMatch(LoopInfo &LI, BasicBlock *From, in findPathsToMatch() argument
227 auto ChildSet = findPathsToMatch(LI, To, isMatch); in findPathsToMatch()
[all …]
/freebsd/contrib/llvm-project/llvm/tools/llvm-diff/lib/
H A DDifferenceEngine.cpp304 BasicBlock::const_iterator LI = L->begin(), LE = L->end(); in diff() local
308 assert(LI != LE && RI != R->end()); in diff()
309 const Instruction *LeftI = &*LI, *RightI = &*RI; in diff()
327 ++LI; in diff()
329 } while (LI != LE); // This is sufficient: we can't get equality of in diff()
334 for (LI = L->begin(), RI = R->begin(); LI != LE; ++LI, ++RI) in diff()
335 unify(&*LI, &*RI); in diff()
339 void runBlockDiff(BasicBlock::const_iterator LI,
389 const PHINode &LI = cast<PHINode>(*L); in diff() local
393 if (LI.getType() != RI.getType()) { in diff()
[all …]
/freebsd/contrib/llvm-project/llvm/lib/Transforms/Utils/
H A DFixIrreducible.cpp132 static void reconnectChildLoops(LoopInfo &LI, Loop *ParentLoop, Loop *NewLoop, in INITIALIZE_PASS_DEPENDENCY()
135 : LI.getTopLevelLoopsVector(); in INITIALIZE_PASS_DEPENDENCY()
151 if (LI.getLoopFor(BB) != Child) in INITIALIZE_PASS_DEPENDENCY()
153 LI.changeLoopFor(BB, NewLoop); in INITIALIZE_PASS_DEPENDENCY()
163 LI.destroy(Child); in INITIALIZE_PASS_DEPENDENCY()
174 static void updateLoopInfo(LoopInfo &LI, Cycle &C, in updateLoopInfo() argument
180 Loop *ParentLoop = LI.getLoopFor(CycleHeader); in updateLoopInfo()
185 auto *NewLoop = LI.AllocateLoop(); in updateLoopInfo()
189 LI.addTopLevelLoop(NewLoop); in updateLoopInfo()
199 NewLoop->addBasicBlockToLoop(G, LI); in updateLoopInfo()
[all …]
H A DLCSSA.cpp84 const DominatorTree &DT, const LoopInfo &LI, in formLCSSAForInstructionsImpl() argument
100 Loop *L = LI.getLoopFor(InstBB); in formLCSSAForInstructionsImpl()
202 if (auto *OtherLoop = LI.getLoopFor(ExitBB)) in formLCSSAForInstructionsImpl()
282 if (auto *OtherLoop = LI.getLoopFor(InsertedPN->getParent())) in formLCSSAForInstructionsImpl()
326 const DominatorTree &DT, const LoopInfo &LI, in formLCSSAForInstructions() argument
332 return formLCSSAForInstructionsImpl(Worklist, DT, LI, SE, PHIsToRemove, in formLCSSAForInstructions()
379 static bool formLCSSAImpl(Loop &L, const DominatorTree &DT, const LoopInfo *LI, in formLCSSAImpl() argument
388 assert(SubLoop->isRecursivelyLCSSAForm(DT, *LI) && "Subloop not in LCSSA!"); in formLCSSAImpl()
415 if (LI->getLoopFor(BB) != &L) in formLCSSAImpl()
436 Changed = formLCSSAForInstructionsImpl(Worklist, DT, *LI, SE, nullptr, in formLCSSAImpl()
[all …]
H A DMatrixUtils.cpp26 LoopInfo &LI) { in CreateLoop() argument
60 L->addBasicBlockToLoop(Header, LI); in CreateLoop()
61 L->addBasicBlockToLoop(Body, LI); in CreateLoop()
62 L->addBasicBlockToLoop(Latch, LI); in CreateLoop()
72 LoopInfo &LI) { in CreateTiledLoops() argument
73 Loop *ColumnLoopInfo = LI.AllocateLoop(); in CreateTiledLoops()
74 Loop *RowLoopInfo = LI.AllocateLoop(); in CreateTiledLoops()
75 Loop *KLoopInfo = LI.AllocateLoop(); in CreateTiledLoops()
78 if (Loop *ParentL = LI.getLoopFor(Start)) in CreateTiledLoops()
81 LI.addTopLevelLoop(ColumnLoopInfo); in CreateTiledLoops()
[all …]
H A DBasicBlockUtils.cpp178 LoopInfo *LI, MemorySSAUpdater *MSSAU, in MergeBlockIntoPredecessor() argument
315 if (LI) in MergeBlockIntoPredecessor()
316 LI->removeBlock(BB); in MergeBlockIntoPredecessor()
338 LoopInfo *LI) { in MergeBlockSuccessorsIntoGivenBlocks() argument
348 if (MergeBlockIntoPredecessor(Dest, DTU, LI)) { in MergeBlockSuccessorsIntoGivenBlocks()
627 LoopInfo *LI, MemorySSAUpdater *MSSAU, in SplitEdge() argument
634 CriticalEdgeSplittingOptions(DT, LI, MSSAU).setPreserveLCSSA(); in SplitEdge()
648 return SplitBlock(Succ, &Succ->front(), DT, LI, MSSAU, BBName, in SplitEdge()
656 return SplitBlock(BB, BB->getTerminator(), DT, LI, MSSAU, BBName); in SplitEdge()
700 return SplitEdge(BB, Succ, Options.DT, Options.LI, Options.MSSAU, BBName); in ehAwareSplitEdge()
[all …]
H A DLoopSimplify.cpp116 LoopInfo *LI, MemorySSAUpdater *MSSAU, in InsertPreheaderForLoop() argument
138 LI, MSSAU, PreserveLCSSA); in InsertPreheaderForLoop()
213 DominatorTree *DT, LoopInfo *LI, in separateNestedLoop() argument
270 DT, LI, MSSAU, PreserveLCSSA); in separateNestedLoop()
277 Loop *NewOuter = LI->AllocateLoop(); in separateNestedLoop()
283 LI->changeTopLevelLoop(L, NewOuter); in separateNestedLoop()
321 if ((*LI)[BB] == L) { in separateNestedLoop()
322 LI->changeLoopFor(BB, NewOuter); in separateNestedLoop()
331 formDedicatedExitBlocks(L, DT, LI, MSSAU, PreserveLCSSA); in separateNestedLoop()
340 formLCSSA(*L, *DT, LI, SE); in separateNestedLoop()
[all …]
H A DPromoteMemoryToRegister.cpp69 if (const LoadInst *LI = dyn_cast<LoadInst>(U)) { in isAllocaPromotable() local
72 if (LI->isVolatile() || LI->getType() != AI->getAllocatedType()) in isAllocaPromotable()
257 LoadInst *LI = cast<LoadInst>(User); in AnalyzeAlloca() local
260 UsingBlocks.push_back(LI->getParent()); in AnalyzeAlloca()
495 static void addAssumeNonNull(AssumptionCache *AC, LoadInst *LI) { in addAssumeNonNull() argument
497 Intrinsic::getOrInsertDeclaration(LI->getModule(), Intrinsic::assume); in addAssumeNonNull()
498 ICmpInst *LoadNotNull = new ICmpInst(ICmpInst::ICMP_NE, LI, in addAssumeNonNull()
499 Constant::getNullValue(LI->getType())); in addAssumeNonNull()
500 LoadNotNull->insertAfter(LI->getIterator()); in addAssumeNonNull()
506 static void convertMetadataToAssumes(LoadInst *LI, Value *Val, in convertMetadataToAssumes() argument
[all …]
/freebsd/contrib/llvm-project/llvm/include/llvm/Transforms/Utils/
H A DBasicBlockUtils.h102 BasicBlock *BB, DomTreeUpdater *DTU = nullptr, LoopInfo *LI = nullptr,
116 DomTreeUpdater *DTU = nullptr, LoopInfo *LI = nullptr);
152 LoopInfo *LI; member
164 LoopInfo *LI = nullptr,
167 : DT(DT), PDT(PDT), LI(LI), MSSAU(MSSAU) {} in DT()
260 LoopInfo *LI = nullptr,
293 DominatorTree *DT, LoopInfo *LI = nullptr,
297 LoopInfo *LI = nullptr,
300 return SplitBlock(Old, SplitPt->getIterator(), DT, LI, MSSAU, BBName, Before);
313 LoopInfo *LI = nullptr,
[all …]
/freebsd/contrib/llvm-project/llvm/lib/Target/NVPTX/
H A DNVPTXLowerAggrCopies.cpp70 if (LoadInst *LI = dyn_cast<LoadInst>(&I)) { in runOnFunction() local
71 if (!LI->hasOneUse()) in runOnFunction()
74 if (DL.getTypeStoreSize(LI->getType()) < MaxAggrCopySize) in runOnFunction()
77 if (StoreInst *SI = dyn_cast<StoreInst>(LI->user_back())) { in runOnFunction()
78 if (SI->getOperand(0) != LI) in runOnFunction()
80 AggrLoads.push_back(LI); in runOnFunction()
103 for (LoadInst *LI : AggrLoads) { in runOnFunction()
104 auto *SI = cast<StoreInst>(*LI->user_begin()); in runOnFunction()
105 Value *SrcAddr = LI->getOperand(0); in runOnFunction()
107 unsigned NumLoads = DL.getTypeStoreSize(LI->getType()); in runOnFunction()
[all …]
H A DNVPTXTagInvariantLoads.cpp30 static bool isInvariantLoad(const LoadInst *LI, const bool IsKernelFn) { in isInvariantLoad() argument
32 if (LI->getPointerAddressSpace() != NVPTXAS::ADDRESS_SPACE_GLOBAL) in isInvariantLoad()
36 if (LI->getMetadata(LLVMContext::MD_invariant_load)) in isInvariantLoad()
44 getUnderlyingObjects(LI->getPointerOperand(), Objs); in isInvariantLoad()
56 static void markLoadsAsInvariant(LoadInst *LI) { in markLoadsAsInvariant() argument
57 LI->setMetadata(LLVMContext::MD_invariant_load, in markLoadsAsInvariant()
58 MDNode::get(LI->getContext(), {})); in markLoadsAsInvariant()
66 if (auto *LI = dyn_cast<LoadInst>(&I)) { in tagInvariantLoads() local
67 if (isInvariantLoad(LI, IsKernelFn)) { in tagInvariantLoads()
68 markLoadsAsInvariant(LI); in tagInvariantLoads()
/freebsd/contrib/llvm-project/llvm/lib/Transforms/Scalar/
H A DLoopSimplifyCFG.cpp90 Loop &L, LoopInfo &LI) { in getInnermostLoopFor() argument
93 Loop *BBL = LI.getLoopFor(BB); in getInnermostLoopFor()
112 LoopInfo &LI; member in __anona0e87c8a0111::ConstantTerminatorFoldingImpl
194 if (L.contains(Succ) && !LI.isLoopHeader(Succ) && RPO[BB] > RPO[Succ]) in hasIrreducibleCFG()
206 DFS.perform(&LI); in analyze()
251 bool TakeFoldCandidate = TheOnlySucc && LI.getLoopFor(BB) == &L; in analyze()
289 return !TheOnlySucc || TheOnlySucc == To || LI.getLoopFor(From) != &L; in analyze()
368 Preheader, Preheader->getTerminator(), &DT, &LI, MSSAU); in handleDeadExits()
398 if (Loop *OuterLoop = LI.getLoopFor(Preheader)) { in handleDeadExits()
403 Loop *StillReachable = getInnermostLoopFor(LiveExitBlocks, L, LI); in handleDeadExits()
[all …]
H A DSink.cpp72 DominatorTree &DT, LoopInfo &LI) { in IsAcceptableTarget() argument
92 Loop *succ = LI.getLoopFor(SuccToSinkTo); in IsAcceptableTarget()
93 Loop *cur = LI.getLoopFor(Inst->getParent()); in IsAcceptableTarget()
105 DominatorTree &DT, LoopInfo &LI, AAResults &AA) { in SinkInstruction() argument
148 !IsAcceptableTarget(Inst, SuccToSinkTo, DT, LI)) in SinkInstruction()
173 static bool ProcessBlock(BasicBlock &BB, DominatorTree &DT, LoopInfo &LI, in ProcessBlock() argument
199 if (SinkInstruction(Inst, Stores, DT, LI, AA)) { in ProcessBlock()
211 LoopInfo &LI, AAResults &AA) { in iterativelySinkInstructions() argument
219 MadeChange |= ProcessBlock(I, DT, LI, AA); in iterativelySinkInstructions()
229 auto &LI = AM.getResult<LoopAnalysis>(F); in run() local
[all …]
H A DSimpleLoopUnswitch.cpp194 const LoopInfo &LI) { in collectHomogenousInstGraphLoopInvariants() argument
416 DominatorTree &DT, LoopInfo &LI, in hoistLoopToNewParent() argument
427 if (Loop *ExitL = LI.getLoopFor(ExitBB)) in hoistLoopToNewParent()
441 assert(OldParentL == LI.getLoopFor(&Preheader) && in hoistLoopToNewParent()
443 LI.changeLoopFor(&Preheader, NewParentL); in hoistLoopToNewParent()
452 LI.addTopLevelLoop(&L); in hoistLoopToNewParent()
471 formLCSSA(*OldContainingL, DT, &LI, SE); in hoistLoopToNewParent()
478 formDedicatedExitBlocks(OldContainingL, &DT, &LI, MSSAU, in hoistLoopToNewParent()
487 const LoopInfo &LI) { in getTopMostExitingLoop() argument
488 Loop *TopMost = LI.getLoopFor(ExitBB); in getTopMostExitingLoop()
[all …]
/freebsd/contrib/llvm-project/llvm/lib/Analysis/
H A DCFG.cpp129 static const Loop *getOutermostLoop(const LoopInfo *LI, const BasicBlock *BB) { in getOutermostLoop() argument
130 const Loop *L = LI->getLoopFor(BB); in getOutermostLoop()
138 const DominatorTree *DT, const LoopInfo *LI) { in isReachableImpl() argument
159 if (LI && ExclusionSet) { in isReachableImpl()
161 if (const Loop *L = getOutermostLoop(LI, BB)) in isReachableImpl()
167 if (LI) { in isReachableImpl()
169 if (const Loop *L = getOutermostLoop(LI, StopSetBB)) in isReachableImpl()
192 if (LI) { in isReachableImpl()
193 Outer = getOutermostLoop(LI, BB); in isReachableImpl()
243 const LoopInfo *LI) { in isPotentiallyReachableFromMany() argument
[all …]
H A DMemDerefPrinter.cpp28 if (LoadInst *LI = dyn_cast<LoadInst>(&I)) { in run() local
29 Value *PO = LI->getPointerOperand(); in run()
30 if (isDereferenceablePointer(PO, LI->getType(), DL, LI)) in run()
32 if (isDereferenceableAndAlignedPointer(PO, LI->getType(), LI->getAlign(), in run()
33 DL, LI)) in run()
/freebsd/contrib/llvm-project/llvm/lib/Transforms/InstCombine/
H A DInstCombineLoadStoreAlloca.cpp69 if (auto *LI = dyn_cast<LoadInst>(I)) { in isOnlyCopiedFromConstantMemory() local
71 if (!LI->isSimple()) return false; in isOnlyCopiedFromConstantMemory()
577 LoadInst *InstCombinerImpl::combineLoadToNewType(LoadInst &LI, Type *NewTy, in combineLoadToNewType() argument
579 assert((!LI.isAtomic() || isSupportedAtomicType(NewTy)) && in combineLoadToNewType()
583 Builder.CreateAlignedLoad(NewTy, LI.getPointerOperand(), LI.getAlign(), in combineLoadToNewType()
584 LI.isVolatile(), LI.getName() + Suffix); in combineLoadToNewType()
585 NewLoad->setAtomic(LI.getOrdering(), LI.getSyncScopeID()); in combineLoadToNewType()
586 copyMetadataForLoad(*NewLoad, LI); in combineLoadToNewType()
708 static Instruction *unpackLoadToAggregate(InstCombinerImpl &IC, LoadInst &LI) { in unpackLoadToAggregate() argument
711 if (!LI.isSimple()) in unpackLoadToAggregate()
[all …]
/freebsd/contrib/llvm-project/llvm/lib/Transforms/IPO/
H A DLoopExtractor.cpp79 bool extractLoops(Loop::iterator From, Loop::iterator To, LoopInfo &LI,
81 bool extractLoop(Loop *L, LoopInfo &LI, DominatorTree &DT);
170 LoopInfo &LI = LookupLoopInfo(F); in runOnFunction() local
173 if (LI.empty()) in runOnFunction()
180 if (std::next(LI.begin()) != LI.end()) in runOnFunction()
181 return Changed | extractLoops(LI.begin(), LI.end(), LI, DT); in runOnFunction()
184 Loop *TLL = *LI.begin(); in runOnFunction()
210 return Changed | extractLoop(TLL, LI, DT); in runOnFunction()
217 return Changed | extractLoops(TLL->begin(), TLL->end(), LI, DT); in runOnFunction()
221 LoopInfo &LI, DominatorTree &DT) { in extractLoops() argument
[all …]
/freebsd/contrib/llvm-project/llvm/include/llvm/Analysis/
H A DLoopAnalysisManager.h58 LoopInfo &LI; member
92 explicit Result(LoopAnalysisManager &InnerAM, LoopInfo &LI) in Result() argument
93 : InnerAM(&InnerAM), LI(&LI) {} in Result()
95 : InnerAM(std::move(Arg.InnerAM)), LI(Arg.LI), MSSAUsed(Arg.MSSAUsed) { in Result()
103 LI = RHS.LI;
141 LoopInfo *LI; variable

12345678910>>...22