|
LLVM
8.0.1
|
#include "llvm/ADT/SmallPtrSet.h"#include "llvm/ADT/Statistic.h"#include "llvm/Analysis/AssumptionCache.h"#include "llvm/Analysis/DependenceAnalysis.h"#include "llvm/Analysis/InstructionSimplify.h"#include "llvm/Analysis/LoopAnalysisManager.h"#include "llvm/Analysis/LoopIterator.h"#include "llvm/Analysis/LoopPass.h"#include "llvm/Analysis/OptimizationRemarkEmitter.h"#include "llvm/Analysis/ScalarEvolution.h"#include "llvm/Analysis/ScalarEvolutionExpander.h"#include "llvm/Analysis/Utils/Local.h"#include "llvm/IR/BasicBlock.h"#include "llvm/IR/DataLayout.h"#include "llvm/IR/DebugInfoMetadata.h"#include "llvm/IR/Dominators.h"#include "llvm/IR/IntrinsicInst.h"#include "llvm/IR/LLVMContext.h"#include "llvm/Support/Debug.h"#include "llvm/Support/raw_ostream.h"#include "llvm/Transforms/Utils/BasicBlockUtils.h"#include "llvm/Transforms/Utils/Cloning.h"#include "llvm/Transforms/Utils/LoopSimplify.h"#include "llvm/Transforms/Utils/LoopUtils.h"#include "llvm/Transforms/Utils/SimplifyIndVar.h"#include "llvm/Transforms/Utils/UnrollLoop.h"
Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "loop-unroll-and-jam" |
Typedefs | |
| typedef SmallPtrSet< BasicBlock *, 4 > | BasicBlockSet |
Functions | |
| STATISTIC (NumUnrolledAndJammed, "Number of loops unroll and jammed") | |
| STATISTIC (NumCompletelyUnrolledAndJammed, "Number of loops unroll and jammed") | |
| static bool | partitionOuterLoopBlocks (Loop *L, Loop *SubLoop, BasicBlockSet &ForeBlocks, BasicBlockSet &SubLoopBlocks, BasicBlockSet &AftBlocks, DominatorTree *DT) |
| template<typename T > | |
| static bool | processHeaderPhiOperands (BasicBlock *Header, BasicBlock *Latch, BasicBlockSet &AftBlocks, T Visit) |
| static void | moveHeaderPhiOperandsToForeBlocks (BasicBlock *Header, BasicBlock *Latch, Instruction *InsertLoc, BasicBlockSet &AftBlocks) |
| static bool | getLoadsAndStores (BasicBlockSet &Blocks, SmallVector< Value *, 4 > &MemInstr) |
| static bool | checkDependencies (SmallVector< Value *, 4 > &Earlier, SmallVector< Value *, 4 > &Later, unsigned LoopDepth, bool InnerLoop, DependenceInfo &DI) |
| static bool | checkDependencies (Loop *L, BasicBlockSet &ForeBlocks, BasicBlockSet &SubLoopBlocks, BasicBlockSet &AftBlocks, DependenceInfo &DI) |
| #define DEBUG_TYPE "loop-unroll-and-jam" |
Definition at line 43 of file LoopUnrollAndJam.cpp.
Referenced by llvm::UnrollAndJamLoop().
| typedef SmallPtrSet<BasicBlock *, 4> BasicBlockSet |
Definition at line 48 of file LoopUnrollAndJam.cpp.
|
static |
Definition at line 608 of file LoopUnrollAndJam.cpp.
References assert(), D, llvm::dbgs(), llvm::DependenceInfo::depends(), llvm::Dependence::DVEntry::GT, I, LLVM_DEBUG, and llvm::Dependence::DVEntry::LT.
Referenced by checkDependencies(), and llvm::isSafeToUnrollAndJam().
|
static |
Definition at line 661 of file LoopUnrollAndJam.cpp.
References checkDependencies(), getLoadsAndStores(), and llvm::LoopBase< BlockT, LoopT >::getLoopDepth().
|
static |
Definition at line 586 of file LoopUnrollAndJam.cpp.
References I, and llvm::SmallVectorTemplateBase< T >::push_back().
Referenced by checkDependencies().
|
static |
Definition at line 118 of file LoopUnrollAndJam.cpp.
References llvm::SmallPtrSetImpl< PtrType >::count(), llvm::Instruction::getParent(), I, llvm::Instruction::moveBefore(), processHeaderPhiOperands(), and llvm::reverse().
Referenced by llvm::UnrollAndJamLoop().
|
static |
Definition at line 52 of file LoopUnrollAndJam.cpp.
References llvm::LoopBase< BlockT, LoopT >::block_begin(), llvm::LoopBase< BlockT, LoopT >::block_end(), llvm::LoopBase< BlockT, LoopT >::blocks(), llvm::LoopBase< BlockT, LoopT >::contains(), llvm::DominatorTree::dominates(), llvm::LoopBase< BlockT, LoopT >::getLoopLatch(), llvm::LoopBase< BlockT, LoopT >::getLoopPreheader(), llvm::Instruction::getNumSuccessors(), llvm::Instruction::getSuccessor(), and llvm::SmallPtrSetImpl< PtrType >::insert().
Referenced by llvm::isSafeToUnrollAndJam(), and llvm::UnrollAndJamLoop().
|
static |
Definition at line 93 of file LoopUnrollAndJam.cpp.
References llvm::SmallVectorTemplateCommon< T >::back(), llvm::SmallPtrSetImpl< PtrType >::count(), llvm::SmallVectorBase::empty(), llvm::Instruction::getParent(), I, llvm::User::operands(), llvm::BasicBlock::phis(), llvm::SmallVectorTemplateBase< T >::pop_back(), and llvm::SmallVectorTemplateBase< T >::push_back().
Referenced by llvm::isSafeToUnrollAndJam(), and moveHeaderPhiOperandsToForeBlocks().
| STATISTIC | ( | NumUnrolledAndJammed | , |
| "Number of loops unroll and jammed" | |||
| ) |
| STATISTIC | ( | NumCompletelyUnrolledAndJammed | , |
| "Number of loops unroll and jammed" | |||
| ) |
1.8.13