LLVM 20.0.0git
|
The implementation for the loop nest analysis. More...
#include "llvm/Analysis/LoopNestAnalysis.h"
#include "llvm/ADT/BreadthFirstIterator.h"
#include "llvm/ADT/DepthFirstIterator.h"
#include "llvm/Analysis/ValueTracking.h"
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "loopnest" |
Functions | |
static bool | checkLoopsStructure (const Loop &OuterLoop, const Loop &InnerLoop, ScalarEvolution &SE) |
Determine whether the loops structure violates basic requirements for perfect nesting: | |
static CmpInst * | getOuterLoopLatchCmp (const Loop &OuterLoop) |
static CmpInst * | getInnerLoopGuardCmp (const Loop &InnerLoop) |
static bool | checkSafeInstruction (const Instruction &I, const CmpInst *InnerLoopGuardCmp, const CmpInst *OuterLoopLatchCmp, std::optional< Loop::LoopBounds > OuterLoopLB) |
Variables | |
static const char * | VerboseDebug = DEBUG_TYPE "-verbose" |
The implementation for the loop nest analysis.
Definition in file LoopNestAnalysis.cpp.
#define DEBUG_TYPE "loopnest" |
Definition at line 21 of file LoopNestAnalysis.cpp.
|
static |
Determine whether the loops structure violates basic requirements for perfect nesting:
Definition at line 315 of file LoopNestAnalysis.cpp.
References llvm::all_of(), llvm::any_of(), llvm::LoopBase< BlockT, LoopT >::getExitBlock(), llvm::LoopBase< BlockT, LoopT >::getExitingBlock(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::LoopBase< BlockT, LoopT >::getLoopLatch(), llvm::LoopBase< BlockT, LoopT >::getLoopPreheader(), llvm::LoopBase< BlockT, LoopT >::getParentLoop(), llvm::LoopBase< BlockT, LoopT >::getSubLoops(), and llvm::Loop::isLoopSimplifyForm().
|
static |
Definition at line 84 of file LoopNestAnalysis.cpp.
References I, and llvm::isSafeToSpeculativelyExecute().
Referenced by llvm::LoopNest::getInterveningInstructions().
Definition at line 70 of file LoopNestAnalysis.cpp.
References llvm::dbgs(), DEBUG_WITH_TYPE, llvm::BranchInst::getCondition(), llvm::Loop::getLoopGuardBranch(), and VerboseDebug.
Referenced by llvm::LoopNest::getInterveningInstructions().
Definition at line 52 of file LoopNestAnalysis.cpp.
References assert(), llvm::dbgs(), DEBUG_WITH_TYPE, llvm::BranchInst::getCondition(), llvm::LoopBase< BlockT, LoopT >::getLoopLatch(), llvm::BasicBlock::getTerminator(), llvm::BranchInst::isConditional(), and VerboseDebug.
Referenced by llvm::LoopNest::getInterveningInstructions().
|
static |
Definition at line 23 of file LoopNestAnalysis.cpp.
Referenced by getInnerLoopGuardCmp(), llvm::LoopNest::getInterveningInstructions(), getOuterLoopLatchCmp(), llvm::EpilogueVectorizerMainLoop::printDebugTracesAtEnd(), and llvm::EpilogueVectorizerEpilogueLoop::printDebugTracesAtEnd().