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" | |||
) |