LLVM API Documentation

LoopIndexSplit.cpp File Reference

#include "llvm/Transforms/Scalar.h"
#include "llvm/Analysis/LoopPass.h"
#include "llvm/Analysis/ScalarEvolutionExpander.h"
#include "llvm/Analysis/Dominators.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include "llvm/Transforms/Utils/Cloning.h"
#include "llvm/Support/Compiler.h"
#include "llvm/ADT/DepthFirstIterator.h"
#include "llvm/ADT/Statistic.h"

Include dependency graph for LoopIndexSplit.cpp:

Go to the source code of this file.

Defines

#define DEBUG_TYPE   "loop-index-split"

Functions

 STATISTIC (NumIndexSplit,"Number of loop index split")
 STATISTIC (NumIndexSplitRemoved,"Number of loops eliminated by loop index split")
 STATISTIC (NumRestrictBounds,"Number of loop iteration space restricted")
Pass * llvm::createLoopIndexSplitPass ()
static bool isUsedOutsideLoop (Value *V, Loop *L)
static Value * getPlusOne (Value *V, bool Sign, Instruction *InsertPt)
static Value * getMinusOne (Value *V, bool Sign, Instruction *InsertPt)
static Value * getMin (Value *V1, Value *V2, bool Sign, Instruction *InsertPt)
static Value * getMax (Value *V1, Value *V2, bool Sign, Instruction *InsertPt)

Variables

static RegisterPass
< LoopIndexSplit > 
X ("loop-index-split","Index Split Loops")


Define Documentation

#define DEBUG_TYPE   "loop-index-split"

Definition at line 42 of file LoopIndexSplit.cpp.


Function Documentation

static Value* getMax ( Value *  V1,
Value *  V2,
bool  Sign,
Instruction *  InsertPt 
) [static]

static Value* getMin ( Value *  V1,
Value *  V2,
bool  Sign,
Instruction *  InsertPt 
) [static]

static Value* getMinusOne ( Value *  V,
bool  Sign,
Instruction *  InsertPt 
) [static]

Definition at line 289 of file LoopIndexSplit.cpp.

References llvm::ConstantInt::get(), and llvm::Value::getType().

static Value* getPlusOne ( Value *  V,
bool  Sign,
Instruction *  InsertPt 
) [static]

Definition at line 283 of file LoopIndexSplit.cpp.

References llvm::ConstantInt::get(), and llvm::Value::getType().

static bool isUsedOutsideLoop ( Value *  V,
Loop *  L 
) [static]

STATISTIC ( NumRestrictBounds  ,
"Number of loop iteration space restricted"   
)

STATISTIC ( NumIndexSplitRemoved  ,
"Number of loops eliminated by loop index split"   
)

STATISTIC ( NumIndexSplit  ,
"Number of loop index split"   
)


Variable Documentation

Definition at line 178 of file LoopIndexSplit.cpp.

Definition at line 177 of file LoopIndexSplit.cpp.

Definition at line 181 of file LoopIndexSplit.cpp.

char ID [static]

Definition at line 65 of file LoopIndexSplit.cpp.

Definition at line 180 of file LoopIndexSplit.cpp.

Definition at line 186 of file LoopIndexSplit.cpp.

Definition at line 184 of file LoopIndexSplit.cpp.

Definition at line 185 of file LoopIndexSplit.cpp.

Definition at line 183 of file LoopIndexSplit.cpp.

Loop* L

Definition at line 173 of file LoopIndexSplit.cpp.

Referenced by llvm::LoopBase< BlockT >::addBasicBlockToLoop(), llvm::BitsToDouble(), llvm::LoopInfoBase< llvm::MachineBasicBlock >::Calculate(), llvm::CloneLoop(), llvm::ComputeMaskedBits(), llvm::ImmutableListFactory< T >::Concat(), llvm::LoopInfoBase< llvm::MachineBasicBlock >::ConsiderForLoop(), llvm::DoubleToBits(), llvm::SparseBitVectorElement< ElementSize >::find_next(), llvm::BitVector::find_next(), llvm::BitVector::flip(), llvm::ImutAVLTree< ImutInfo >::foreach(), llvm::DebugLoc::get(), llvm::DenseMapInfo< unsigned long >::getEmptyKey(), llvm::DenseMapInfo< unsigned long >::getHashValue(), llvm::ELFRelocation::getInfo(), llvm::SCEVAddRecExpr::getLoop(), llvm::LoopInfoBase< llvm::MachineBasicBlock >::getLoopDepth(), llvm::TargetData::getStructLayout(), llvm::DenseMapInfo< unsigned long >::getTombstoneKey(), llvm::DebugLoc::getUnknownLoc(), llvm::SCEVAddRecExpr::hasComputableLoopEvolution(), llvm::PMTopLevelManager::initializeAllAnalysisInfo(), llvm::ConstantRange::intersectWith(), llvm::LoopInfoBase< llvm::MachineBasicBlock >::isLoopHeader(), llvm::SCEVAddRecExpr::isLoopInvariant(), llvm::isPowerOf2_64(), LoopIsOuterMostWithPreheader(), llvm::AliasSet::mergeSetIn(), llvm::BitVector::reference::operator bool(), llvm::BitVector::reference::operator=(), llvm::BitVector::operator[](), llvm::SCEVAddRecExpr::print(), llvm::cl::generic_parser_base::printOptionInfo(), llvm::LoopInfoBase< llvm::MachineBasicBlock >::removeBlock(), llvm::LoopInfoBase< llvm::MachineBasicBlock >::removeLoop(), llvm::SCEVUDivExpr::replaceSymbolicValuesWithConcrete(), llvm::SCEVAddRecExpr::replaceSymbolicValuesWithConcrete(), llvm::SparseBitVectorElement< ElementSize >::reset(), llvm::BitVector::reset(), llvm::LPPassManager::runOnFunction(), llvm::SparseBitVectorElement< ElementSize >::set(), llvm::BitVector::set(), llvm::ConstantRange::signExtend(), llvm::ImutAVLTree< ImutInfo >::size(), llvm::SplitBlock(), llvm::SparseBitVectorElement< ElementSize >::test(), llvm::ConstantRange::truncate(), llvm::ConstantRange::unionWith(), llvm::SCEVExpander::visitAddRecExpr(), and llvm::ConstantRange::zeroExtend().

Definition at line 175 of file LoopIndexSplit.cpp.

Definition at line 174 of file LoopIndexSplit.cpp.

Definition at line 176 of file LoopIndexSplit.cpp.

Definition at line 182 of file LoopIndexSplit.cpp.

RegisterPass<LoopIndexSplit> X("loop-index-split","Index Split Loops") [static]