[llvm] r230608 - [LoopAccesses] Add command-line option for RuntimeMemoryCheckThreshold
Adam Nemet
anemet at apple.com
Wed Feb 25 20:39:09 PST 2015
Author: anemet
Date: Wed Feb 25 22:39:09 2015
New Revision: 230608
URL: http://llvm.org/viewvc/llvm-project?rev=230608&view=rev
Log:
[LoopAccesses] Add command-line option for RuntimeMemoryCheckThreshold
Also remove the somewhat misleading initializers from
VectorizationFactor and VectorizationInterleave. They will get
initialized with the default ctor since no cl::init is provided.
Modified:
llvm/trunk/include/llvm/Analysis/LoopAccessAnalysis.h
llvm/trunk/lib/Analysis/LoopAccessAnalysis.cpp
Modified: llvm/trunk/include/llvm/Analysis/LoopAccessAnalysis.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/LoopAccessAnalysis.h?rev=230608&r1=230607&r2=230608&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/LoopAccessAnalysis.h (original)
+++ llvm/trunk/include/llvm/Analysis/LoopAccessAnalysis.h Wed Feb 25 22:39:09 2015
@@ -83,7 +83,7 @@ struct VectorizerParams {
/// \\brief When performing memory disambiguation checks at runtime do not
/// make more than this number of comparisons.
- static const unsigned RuntimeMemoryCheckThreshold;
+ static unsigned RuntimeMemoryCheckThreshold;
};
/// \brief Drive the analysis of memory accesses in the loop
Modified: llvm/trunk/lib/Analysis/LoopAccessAnalysis.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/LoopAccessAnalysis.cpp?rev=230608&r1=230607&r2=230608&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/LoopAccessAnalysis.cpp (original)
+++ llvm/trunk/lib/Analysis/LoopAccessAnalysis.cpp Wed Feb 25 22:39:09 2015
@@ -29,7 +29,7 @@ static cl::opt<unsigned, true>
VectorizationFactor("force-vector-width", cl::Hidden,
cl::desc("Sets the SIMD width. Zero is autoselect."),
cl::location(VectorizerParams::VectorizationFactor));
-unsigned VectorizerParams::VectorizationFactor = 0;
+unsigned VectorizerParams::VectorizationFactor;
static cl::opt<unsigned, true>
VectorizationInterleave("force-vector-interleave", cl::Hidden,
@@ -37,11 +37,14 @@ VectorizationInterleave("force-vector-in
"Zero is autoselect."),
cl::location(
VectorizerParams::VectorizationInterleave));
-unsigned VectorizerParams::VectorizationInterleave = 0;
+unsigned VectorizerParams::VectorizationInterleave;
-/// When performing memory disambiguation checks at runtime do not make more
-/// than this number of comparisons.
-const unsigned VectorizerParams::RuntimeMemoryCheckThreshold = 8;
+static cl::opt<unsigned, true> RuntimeMemoryCheckThreshold(
+ "runtime-memory-check-threshold", cl::Hidden,
+ cl::desc("When performing memory disambiguation checks at runtime do not "
+ "generate more than this number of comparisons (default = 8)."),
+ cl::location(VectorizerParams::RuntimeMemoryCheckThreshold), cl::init(8));
+unsigned VectorizerParams::RuntimeMemoryCheckThreshold;
/// Maximum SIMD width.
const unsigned VectorizerParams::MaxVectorWidth = 64;
@@ -1112,8 +1115,7 @@ void LoopAccessInfo::analyzeLoop(const V
// Check that we did not collect too many pointers or found an unsizeable
// pointer.
- if (!CanDoRT ||
- NumComparisons > VectorizerParams::RuntimeMemoryCheckThreshold) {
+ if (!CanDoRT || NumComparisons > RuntimeMemoryCheckThreshold) {
PtrRtCheck.reset();
CanDoRT = false;
}
@@ -1154,15 +1156,14 @@ void LoopAccessInfo::analyzeLoop(const V
TheLoop, Strides, true);
// Check that we did not collect too many pointers or found an unsizeable
// pointer.
- if (!CanDoRT ||
- NumComparisons > VectorizerParams::RuntimeMemoryCheckThreshold) {
+ if (!CanDoRT || NumComparisons > RuntimeMemoryCheckThreshold) {
if (!CanDoRT && NumComparisons > 0)
emitAnalysis(LoopAccessReport()
<< "cannot check memory dependencies at runtime");
else
emitAnalysis(LoopAccessReport()
<< NumComparisons << " exceeds limit of "
- << VectorizerParams::RuntimeMemoryCheckThreshold
+ << RuntimeMemoryCheckThreshold
<< " dependent memory operations checked at runtime");
DEBUG(dbgs() << "LAA: Can't vectorize with memory checks\n");
PtrRtCheck.reset();
More information about the llvm-commits
mailing list