diff options
-rw-r--r-- | include/llvm/Analysis/TargetTransformInfo.h | 14 | ||||
-rw-r--r-- | lib/Analysis/TargetTransformInfo.cpp | 9 | ||||
-rw-r--r-- | lib/CodeGen/BasicTargetTransformInfo.cpp | 5 | ||||
-rw-r--r-- | lib/Transforms/Scalar/LoopUnrollPass.cpp | 22 |
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; |