LLVM API Documentation
#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"
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 DEBUG_TYPE "loop-index-split" |
Definition at line 42 of file LoopIndexSplit.cpp.
| static Value* getMax | ( | Value * | V1, | |
| Value * | V2, | |||
| bool | Sign, | |||
| Instruction * | InsertPt | |||
| ) | [static] |
Definition at line 303 of file LoopIndexSplit.cpp.
References llvm::CallingConv::C, llvm::SelectInst::Create(), llvm::CmpInst::ICMP_SLT, and llvm::CmpInst::ICMP_ULT.
| static Value* getMin | ( | Value * | V1, | |
| Value * | V2, | |||
| bool | Sign, | |||
| Instruction * | InsertPt | |||
| ) | [static] |
Definition at line 295 of file LoopIndexSplit.cpp.
References llvm::CallingConv::C, llvm::SelectInst::Create(), llvm::CmpInst::ICMP_SLT, and llvm::CmpInst::ICMP_ULT.
| 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().
Definition at line 275 of file LoopIndexSplit.cpp.
References llvm::LoopBase< BlockT >::contains(), E, llvm::Value::use_begin(), and llvm::Value::use_end().
| 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" | ||||
| ) |
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.
| SmallPtrSet<Value *, 4> IVBasedValues |
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.
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] |