LLVM  7.0.0svn
Namespaces | Typedefs | Enumerations | Functions
UnrollLoop.h File Reference
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/Transforms/Utils/ValueMapper.h"
Include dependency graph for UnrollLoop.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.


 Compute iterated dominance frontiers using a linear time algorithm.


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


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


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. More...
LoopUnrollResult llvm::UnrollLoop (Loop *L, unsigned Count, unsigned TripCount, bool Force, bool AllowRuntime, bool AllowExpensiveTripCount, bool PreserveCondBr, bool PreserveOnlyFirst, unsigned TripMultiple, unsigned PeelCount, bool UnrollRemainder, LoopInfo *LI, ScalarEvolution *SE, DominatorTree *DT, AssumptionCache *AC, OptimizationRemarkEmitter *ORE, bool PreserveLCSSA)
 Unroll the given loop by Count. More...
bool llvm::UnrollRuntimeLoopRemainder (Loop *L, unsigned Count, bool AllowExpensiveTripCount, bool UseEpilogRemainder, bool UnrollRemainder, LoopInfo *LI, ScalarEvolution *SE, DominatorTree *DT, AssumptionCache *AC, bool PreserveLCSSA)
 Insert code in the prolog/epilog code when unrolling a loop with a run-time trip-count. More...
void llvm::computePeelCount (Loop *L, unsigned LoopSize, TargetTransformInfo::UnrollingPreferences &UP, unsigned &TripCount, ScalarEvolution &SE)
bool llvm::canPeel (Loop *L)
bool llvm::peelLoop (Loop *L, unsigned PeelCount, LoopInfo *LI, ScalarEvolution *SE, DominatorTree *DT, AssumptionCache *AC, bool PreserveLCSSA)
 Peel off the first PeelCount iterations of loop L. More...
LoopUnrollResult llvm::UnrollAndJamLoop (Loop *L, unsigned Count, unsigned TripCount, unsigned TripMultiple, bool UnrollRemainder, LoopInfo *LI, ScalarEvolution *SE, DominatorTree *DT, AssumptionCache *AC, OptimizationRemarkEmitter *ORE)
bool llvm::isSafeToUnrollAndJam (Loop *L, ScalarEvolution &SE, DominatorTree &DT, DependenceInfo &DI)
bool llvm::computeUnrollCount (Loop *L, const TargetTransformInfo &TTI, DominatorTree &DT, LoopInfo *LI, ScalarEvolution &SE, const SmallPtrSetImpl< const Value *> &EphValues, OptimizationRemarkEmitter *ORE, unsigned &TripCount, unsigned MaxTripCount, unsigned &TripMultiple, unsigned LoopSize, TargetTransformInfo::UnrollingPreferences &UP, bool &UseUpperBound)
BasicBlockllvm::foldBlockIntoPredecessor (BasicBlock *BB, LoopInfo *LI, ScalarEvolution *SE, DominatorTree *DT)
 Folds a basic block into its predecessor if it only has one predecessor, and that predecessor only has one successor. More...
void llvm::remapInstruction (Instruction *I, ValueToValueMapTy &VMap)
 Convert the instruction operands from referencing the current values into those specified by VMap. More...
void llvm::simplifyLoopAfterUnroll (Loop *L, bool SimplifyIVs, LoopInfo *LI, ScalarEvolution *SE, DominatorTree *DT, AssumptionCache *AC)
 Perform some cleanup and simplifications on loops after unrolling. More...
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"). More...
TargetTransformInfo::UnrollingPreferences llvm::gatherUnrollingPreferences (Loop *L, ScalarEvolution &SE, const TargetTransformInfo &TTI, int OptLevel, Optional< unsigned > UserThreshold, Optional< unsigned > UserCount, Optional< bool > UserAllowPartial, Optional< bool > UserRuntime, Optional< bool > UserUpperBound, Optional< bool > UserAllowPeeling)
 Gather the various unrolling parameters based on the defaults, compiler flags, TTI overrides and user specified parameters. More...
unsigned llvm::ApproximateLoopSize (const Loop *L, unsigned &NumCalls, bool &NotDuplicatable, bool &Convergent, const TargetTransformInfo &TTI, const SmallPtrSetImpl< const Value *> &EphValues, unsigned BEInsns)
 ApproximateLoopSize - Approximate the size of the loop. More...