LLVM 22.0.0git
UnrollLoop.h File Reference

Go to the source code of this file.

Classes

struct  llvm::UnrollLoopOptions
class  llvm::UnrollCostEstimator
 Produce an estimate of the unrolled cost of the specified loop. More...

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.

Typedefs

using llvm::NewLoopsMap = SmallDenseMap<const Loop *, Loop *, 4>

Enumerations

enum class  llvm::LoopUnrollResult { llvm::Unmodified , llvm::PartiallyUnrolled , llvm::FullyUnrolled }
 Represents the result of a UnrollLoop invocation. More...

Functions

LLVM_ABI const Loopllvm::addClonedBlockToLoopInfo (BasicBlock *OriginalBB, BasicBlock *ClonedBB, LoopInfo *LI, NewLoopsMap &NewLoops)
 Adds ClonedBB to LoopInfo, creates a new loop for ClonedBB if necessary and adds a mapping from the original loop to the new loop to NewLoops.
LLVM_ABI LoopUnrollResult llvm::UnrollLoop (Loop *L, UnrollLoopOptions ULO, LoopInfo *LI, ScalarEvolution *SE, DominatorTree *DT, AssumptionCache *AC, const llvm::TargetTransformInfo *TTI, OptimizationRemarkEmitter *ORE, bool PreserveLCSSA, Loop **RemainderLoop=nullptr, AAResults *AA=nullptr)
 Unroll the given loop by Count.
LLVM_ABI bool llvm::UnrollRuntimeLoopRemainder (Loop *L, unsigned Count, bool AllowExpensiveTripCount, bool UseEpilogRemainder, bool UnrollRemainder, bool ForgetAllSCEV, LoopInfo *LI, ScalarEvolution *SE, DominatorTree *DT, AssumptionCache *AC, const TargetTransformInfo *TTI, bool PreserveLCSSA, unsigned SCEVExpansionBudget, bool RuntimeUnrollMultiExit, Loop **ResultLoop=nullptr)
 Insert code in the prolog/epilog code when unrolling a loop with a run-time trip-count.
LLVM_ABI LoopUnrollResult llvm::UnrollAndJamLoop (Loop *L, unsigned Count, unsigned TripCount, unsigned TripMultiple, bool UnrollRemainder, LoopInfo *LI, ScalarEvolution *SE, DominatorTree *DT, AssumptionCache *AC, const TargetTransformInfo *TTI, OptimizationRemarkEmitter *ORE, Loop **EpilogueLoop=nullptr)
LLVM_ABI bool llvm::isSafeToUnrollAndJam (Loop *L, ScalarEvolution &SE, DominatorTree &DT, DependenceInfo &DI, LoopInfo &LI)
LLVM_ABI void llvm::simplifyLoopAfterUnroll (Loop *L, bool SimplifyIVs, LoopInfo *LI, ScalarEvolution *SE, DominatorTree *DT, AssumptionCache *AC, const TargetTransformInfo *TTI, AAResults *AA=nullptr)
 Perform some cleanup and simplifications on loops after unrolling.
LLVM_ABI MDNodellvm::GetUnrollMetadata (MDNode *LoopID, StringRef Name)
 Given an llvm.loop loop id metadata node, returns the loop hint metadata node with the given name (for example, "llvm.loop.unroll.count").
LLVM_ABI TargetTransformInfo::UnrollingPreferences llvm::gatherUnrollingPreferences (Loop *L, ScalarEvolution &SE, const TargetTransformInfo &TTI, BlockFrequencyInfo *BFI, ProfileSummaryInfo *PSI, llvm::OptimizationRemarkEmitter &ORE, int OptLevel, std::optional< unsigned > UserThreshold, std::optional< unsigned > UserCount, std::optional< bool > UserAllowPartial, std::optional< bool > UserRuntime, std::optional< bool > UserUpperBound, std::optional< unsigned > UserFullUnrollMaxCount)
 Gather the various unrolling parameters based on the defaults, compiler flags, TTI overrides and user specified parameters.
LLVM_ABI bool llvm::computeUnrollCount (Loop *L, const TargetTransformInfo &TTI, DominatorTree &DT, LoopInfo *LI, AssumptionCache *AC, ScalarEvolution &SE, const SmallPtrSetImpl< const Value * > &EphValues, OptimizationRemarkEmitter *ORE, unsigned TripCount, unsigned MaxTripCount, bool MaxOrZero, unsigned TripMultiple, const UnrollCostEstimator &UCE, TargetTransformInfo::UnrollingPreferences &UP, TargetTransformInfo::PeelingPreferences &PP, bool &UseUpperBound)
LLVM_ABI std::optional< RecurrenceDescriptorllvm::canParallelizeReductionWhenUnrolling (PHINode &Phi, Loop *L, ScalarEvolution *SE)

Variables

const char *const llvm::LLVMLoopUnrollFollowupAll = "llvm.loop.unroll.followup_all"
const char *const llvm::LLVMLoopUnrollFollowupUnrolled
const char *const llvm::LLVMLoopUnrollFollowupRemainder