summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/Analysis/TargetTransformInfo.h14
-rw-r--r--lib/Analysis/TargetTransformInfo.cpp9
-rw-r--r--lib/CodeGen/BasicTargetTransformInfo.cpp5
-rw-r--r--lib/Transforms/Scalar/LoopUnrollPass.cpp22
4 files changed, 5 insertions, 45 deletions
diff --git a/include/llvm/Analysis/TargetTransformInfo.h b/include/llvm/Analysis/TargetTransformInfo.h
index 908612c6fa..06810a7de0 100644
--- a/include/llvm/Analysis/TargetTransformInfo.h
+++ b/include/llvm/Analysis/TargetTransformInfo.h
@@ -191,20 +191,6 @@ public:
/// incurs significant execution cost.
virtual bool isLoweredToCall(const Function *F) const;
- /// Parameters that control the generic loop unrolling transformation.
- struct UnrollingPreferences {
- unsigned Threshold; ///< The cost threshold for the unrolled loop.
- unsigned OptSizeThreshold; ///< The cost threshold for the unrolled loop
- ///< when optimizing for size.
- bool Partial; ///< Allow partial loop unrolling.
- bool Runtime; ///< Perform runtime unrolling.
- };
-
- /// \brief Get target-customized preferences for the generic loop unrolling
- /// transformation. Returns true if the UnrollingPreferences struct has been
- /// initialized.
- virtual bool getUnrollingPreferences(UnrollingPreferences &UP) const;
-
/// @}
/// \name Scalar Target Information
diff --git a/lib/Analysis/TargetTransformInfo.cpp b/lib/Analysis/TargetTransformInfo.cpp
index b587ff27ea..8c6005b31c 100644
--- a/lib/Analysis/TargetTransformInfo.cpp
+++ b/lib/Analysis/TargetTransformInfo.cpp
@@ -96,11 +96,6 @@ bool TargetTransformInfo::isLoweredToCall(const Function *F) const {
return PrevTTI->isLoweredToCall(F);
}
-bool TargetTransformInfo::getUnrollingPreferences(
- UnrollingPreferences &UP) const {
- return PrevTTI->getUnrollingPreferences(UP);
-}
-
bool TargetTransformInfo::isLegalAddImmediate(int64_t Imm) const {
return PrevTTI->isLegalAddImmediate(Imm);
}
@@ -474,10 +469,6 @@ struct NoTTI : ImmutablePass, TargetTransformInfo {
return true;
}
- virtual bool getUnrollingPreferences(UnrollingPreferences &) const {
- return false;
- }
-
bool isLegalAddImmediate(int64_t Imm) const {
return false;
}
diff --git a/lib/CodeGen/BasicTargetTransformInfo.cpp b/lib/CodeGen/BasicTargetTransformInfo.cpp
index e1380b73e9..d5340e6023 100644
--- a/lib/CodeGen/BasicTargetTransformInfo.cpp
+++ b/lib/CodeGen/BasicTargetTransformInfo.cpp
@@ -84,7 +84,6 @@ public:
virtual unsigned getJumpBufSize() const;
virtual bool shouldBuildLookupTables() const;
virtual bool haveFastSqrt(Type *Ty) const;
- virtual bool getUnrollingPreferences(UnrollingPreferences &UP) const;
/// @}
@@ -190,10 +189,6 @@ bool BasicTTI::haveFastSqrt(Type *Ty) const {
return TLI->isTypeLegal(VT) && TLI->isOperationLegalOrCustom(ISD::FSQRT, VT);
}
-bool BasicTTI::getUnrollingPreferences(UnrollingPreferences &) const {
- return false;
-}
-
//===----------------------------------------------------------------------===//
//
// Calls used by the vectorizers.
diff --git a/lib/Transforms/Scalar/LoopUnrollPass.cpp b/lib/Transforms/Scalar/LoopUnrollPass.cpp
index f8ff275e96..80d060b926 100644
--- a/lib/Transforms/Scalar/LoopUnrollPass.cpp
+++ b/lib/Transforms/Scalar/LoopUnrollPass.cpp
@@ -55,8 +55,6 @@ namespace {
CurrentAllowPartial = (P == -1) ? UnrollAllowPartial : (bool)P;
UserThreshold = (T != -1) || (UnrollThreshold.getNumOccurrences() > 0);
- UserAllowPartial = (P != -1) ||
- (UnrollAllowPartial.getNumOccurrences() > 0);
initializeLoopUnrollPass(*PassRegistry::getPassRegistry());
}
@@ -78,7 +76,6 @@ namespace {
unsigned CurrentThreshold;
bool CurrentAllowPartial;
bool UserThreshold; // CurrentThreshold is user-specified.
- bool UserAllowPartial; // CurrentAllowPartial is user-specified.
bool runOnLoop(Loop *L, LPPassManager &LPM);
@@ -148,20 +145,16 @@ bool LoopUnroll::runOnLoop(Loop *L, LPPassManager &LPM) {
<< "] Loop %" << Header->getName() << "\n");
(void)Header;
- TargetTransformInfo::UnrollingPreferences UP;
- bool HasUP = TTI.getUnrollingPreferences(UP);
-
// Determine the current unrolling threshold. While this is normally set
// from UnrollThreshold, it is overridden to a smaller value if the current
// function is marked as optimize-for-size, and the unroll threshold was
// not user specified.
- unsigned Threshold = (HasUP && !UserThreshold) ? UP.Threshold :
- CurrentThreshold;
+ unsigned Threshold = CurrentThreshold;
if (!UserThreshold &&
Header->getParent()->getAttributes().
hasAttribute(AttributeSet::FunctionIndex,
Attribute::OptimizeForSize))
- Threshold = HasUP ? UP.OptSizeThreshold : OptSizeUnrollThreshold;
+ Threshold = OptSizeUnrollThreshold;
// Find trip count and trip multiple if count is not available
unsigned TripCount = 0;
@@ -191,9 +184,6 @@ bool LoopUnroll::runOnLoop(Loop *L, LPPassManager &LPM) {
Count = TripCount;
}
- bool Runtime = (HasUP && UnrollRuntime.getNumOccurrences() == 0) ?
- UP.Runtime : UnrollRuntime;
-
// Enforce the threshold.
if (Threshold != NoThreshold) {
unsigned NumInlineCandidates;
@@ -214,9 +204,7 @@ bool LoopUnroll::runOnLoop(Loop *L, LPPassManager &LPM) {
if (TripCount != 1 && Size > Threshold) {
DEBUG(dbgs() << " Too large to fully unroll with count: " << Count
<< " because size: " << Size << ">" << Threshold << "\n");
- bool AllowPartial = (HasUP && !UserAllowPartial) ? UP.Partial :
- CurrentAllowPartial;
- if (!AllowPartial && !(Runtime && TripCount == 0)) {
+ if (!CurrentAllowPartial && !(UnrollRuntime && TripCount == 0)) {
DEBUG(dbgs() << " will not try to unroll partially because "
<< "-unroll-allow-partial not given\n");
return false;
@@ -227,7 +215,7 @@ bool LoopUnroll::runOnLoop(Loop *L, LPPassManager &LPM) {
while (Count != 0 && TripCount%Count != 0)
Count--;
}
- else if (Runtime) {
+ else if (UnrollRuntime) {
// Reduce unroll count to be a lower power-of-two value
while (Count != 0 && Size > Threshold) {
Count >>= 1;
@@ -243,7 +231,7 @@ bool LoopUnroll::runOnLoop(Loop *L, LPPassManager &LPM) {
}
// Unroll the loop.
- if (!UnrollLoop(L, Count, TripCount, Runtime, TripMultiple, LI, &LPM))
+ if (!UnrollLoop(L, Count, TripCount, UnrollRuntime, TripMultiple, LI, &LPM))
return false;
return true;