|
LLVM 24.0.0git
|
#include "llvm/Transforms/Scalar/LoopUnrollAndJamPass.h"#include "ScalarOptions.h"#include "llvm/ADT/ArrayRef.h"#include "llvm/ADT/PriorityWorklist.h"#include "llvm/ADT/SmallPtrSet.h"#include "llvm/ADT/StringRef.h"#include "llvm/Analysis/AssumptionCache.h"#include "llvm/Analysis/CodeMetrics.h"#include "llvm/Analysis/DependenceAnalysis.h"#include "llvm/Analysis/LoopAnalysisManager.h"#include "llvm/Analysis/LoopInfo.h"#include "llvm/Analysis/LoopNestAnalysis.h"#include "llvm/Analysis/LoopPass.h"#include "llvm/Analysis/OptimizationRemarkEmitter.h"#include "llvm/Analysis/ScalarEvolution.h"#include "llvm/Analysis/TargetTransformInfo.h"#include "llvm/IR/BasicBlock.h"#include "llvm/IR/Constants.h"#include "llvm/IR/Dominators.h"#include "llvm/IR/Function.h"#include "llvm/IR/Instructions.h"#include "llvm/IR/Metadata.h"#include "llvm/IR/PassManager.h"#include "llvm/Support/Casting.h"#include "llvm/Support/Debug.h"#include "llvm/Support/raw_ostream.h"#include "llvm/Transforms/Scalar/LoopPassManager.h"#include "llvm/Transforms/Utils/LoopPeel.h"#include "llvm/Transforms/Utils/LoopUtils.h"#include "llvm/Transforms/Utils/UnrollLoop.h"#include <cassert>#include <cstdint>Go to the source code of this file.
Namespaces | |
| namespace | llvm |
| This is an optimization pass for GlobalISel generic memory operations. | |
Macros | |
| #define | DEBUG_TYPE "loop-unroll-and-jam" |
Variables | |
| static const char *const | LLVMLoopUnrollAndJamFollowupAll |
| static const char *const | LLVMLoopUnrollAndJamFollowupInner |
| static const char *const | LLVMLoopUnrollAndJamFollowupOuter |
| static const char *const | LLVMLoopUnrollAndJamFollowupRemainderInner |
| static const char *const | LLVMLoopUnrollAndJamFollowupRemainderOuter |
| #define DEBUG_TYPE "loop-unroll-and-jam" |
Definition at line 53 of file LoopUnrollAndJamPass.cpp.
|
static |
Definition at line 124 of file LoopUnrollAndJamPass.cpp.
References llvm::TargetTransformInfo::UnrollingPreferences::AllowRemainder, llvm::computeUnrollCount(), llvm::Count, llvm::dbgs(), llvm::dyn_cast(), llvm::TargetTransformInfo::UnrollingPreferences::Force, llvm::LoopBase< BlockT, LoopT >::getBlocks(), llvm::UnrollCostEstimator::getRolledLoopSize(), llvm::ScalarEvolution::getSCEVAtScope(), getUnrollAndJammedLoopSize(), hasUnrollAndJamEnablePragma(), I, llvm::ScalarEvolution::isLoopInvariant(), LLVM_DEBUG, llvm::TargetTransformInfo::UnrollingPreferences::Runtime, llvm::TargetTransformInfo::UnrollingPreferences::Threshold, unrollAndJamCountPragmaValue(), and llvm::TargetTransformInfo::UnrollingPreferences::UnrollAndJamInnerLoopThreshold.
Referenced by tryToUnrollAndJamLoop().
|
static |
Definition at line 116 of file LoopUnrollAndJamPass.cpp.
References assert(), llvm::TargetTransformInfo::UnrollingPreferences::BEInsns, llvm::Count, and uint64_t.
Referenced by computeUnrollAndJamCount().
Definition at line 71 of file LoopUnrollAndJamPass.cpp.
References assert(), llvm::dyn_cast(), E(), llvm::MDNode::getOperand(), llvm::MDString::getString(), I, and llvm::StringRef::starts_with().
Referenced by tryToUnrollAndJamLoop().
Definition at line 94 of file LoopUnrollAndJamPass.cpp.
References llvm::getUnrollMetadataForLoop().
Referenced by computeUnrollAndJamCount().
|
static |
Definition at line 247 of file LoopUnrollAndJamPass.cpp.
References llvm::TargetTransformInfo::UnrollingPreferences::BEInsns, llvm::UnrollCostEstimator::canUnroll(), llvm::CodeMetrics::collectEphemeralValues(), computeUnrollAndJamCount(), llvm::UnrollCostEstimator::Convergence, llvm::Count, llvm::dbgs(), llvm::FullyUnrolled, llvm::gatherPeelingPreferences(), llvm::gatherUnrollingPreferences(), llvm::Loop::getLoopID(), llvm::LoopBase< BlockT, LoopT >::getLoopLatch(), llvm::UnrollCostEstimator::getRolledLoopSize(), llvm::ScalarEvolution::getSmallConstantTripCount(), llvm::ScalarEvolution::getSmallConstantTripMultiple(), hasAnyUnrollPragma(), llvm::hasUnrollAndJamTransformation(), llvm::isSafeToUnrollAndJam(), LLVM_DEBUG, LLVMLoopUnrollAndJamFollowupAll, LLVMLoopUnrollAndJamFollowupInner, LLVMLoopUnrollAndJamFollowupOuter, LLVMLoopUnrollAndJamFollowupRemainderInner, LLVMLoopUnrollAndJamFollowupRemainderOuter, llvm::makeFollowupLoopID(), llvm::None, llvm::UnrollCostEstimator::NumInlineCandidates, llvm::PartiallyUnrolled, llvm::Loop::setLoopID(), llvm::TM_Disable, llvm::TM_ForcedByUser, llvm::Unmodified, llvm::TargetTransformInfo::UnrollingPreferences::UnrollAndJam, llvm::TargetTransformInfo::UnrollingPreferences::UnrollAndJamInnerLoopThreshold, llvm::UnrollAndJamLoop(), llvm::TargetTransformInfo::UnrollingPreferences::UnrollRemainder, and llvm::valueOr().
Referenced by llvm::LoopUnrollAndJamPass::run(), and tryToUnrollAndJamLoop().
|
static |
Definition at line 394 of file LoopUnrollAndJamPass.cpp.
References llvm::appendLoopsToWorklist(), llvm::PriorityWorklist< T, VectorT, MapT >::empty(), llvm::FullyUnrolled, llvm::LoopNest::getLoops(), llvm::LoopNest::getOutermostLoop(), Loops, llvm::PriorityWorklist< T, VectorT, MapT >::pop_back_val(), tryToUnrollAndJamLoop(), and llvm::Unmodified.
Definition at line 100 of file LoopUnrollAndJamPass.cpp.
References assert(), llvm::Count, llvm::mdconst::extract(), llvm::MDNode::getNumOperands(), llvm::MDNode::getOperand(), and llvm::getUnrollMetadataForLoop().
Referenced by computeUnrollAndJamCount().
Metadata attribute names
Definition at line 57 of file LoopUnrollAndJamPass.cpp.
Referenced by tryToUnrollAndJamLoop().
Definition at line 59 of file LoopUnrollAndJamPass.cpp.
Referenced by tryToUnrollAndJamLoop().
Definition at line 61 of file LoopUnrollAndJamPass.cpp.
Referenced by tryToUnrollAndJamLoop().
Definition at line 63 of file LoopUnrollAndJamPass.cpp.
Referenced by tryToUnrollAndJamLoop().
Definition at line 65 of file LoopUnrollAndJamPass.cpp.
Referenced by tryToUnrollAndJamLoop().