diff options
author | Chad Rosier <mcrosier@codeaurora.org> | 2016-09-14 17:07:13 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@codeaurora.org> | 2016-09-14 17:07:13 +0000 |
commit | 72431890b19fb0a9ed8c1e46b01862ca6f1ee2c2 (patch) | |
tree | fd40f1af36a723d78a84e12bbf2f467233b00a45 /llvm/lib/Transforms | |
parent | fbbb28ebb389132c35a986e8b2139043bae6b456 (diff) | |
download | bcm5719-llvm-72431890b19fb0a9ed8c1e46b01862ca6f1ee2c2.tar.gz bcm5719-llvm-72431890b19fb0a9ed8c1e46b01862ca6f1ee2c2.zip |
[LoopInterchange] Add CL option to override cost threshold.
Mostly useful for getting consistent lit testing.
llvm-svn: 281500
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r-- | llvm/lib/Transforms/Scalar/LoopInterchange.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/Scalar/LoopInterchange.cpp b/llvm/lib/Transforms/Scalar/LoopInterchange.cpp index 2f282e8ccf3..1e091bacd40 100644 --- a/llvm/lib/Transforms/Scalar/LoopInterchange.cpp +++ b/llvm/lib/Transforms/Scalar/LoopInterchange.cpp @@ -44,6 +44,10 @@ using namespace llvm; #define DEBUG_TYPE "loop-interchange" +static cl::opt<int> LoopInterchangeCostThreshold( + "loop-interchange-threshold", cl::init(0), cl::Hidden, + cl::desc("Interchange if you gain more than this number")); + namespace { typedef SmallVector<Loop *, 8> LoopVector; @@ -975,10 +979,9 @@ bool LoopInterchangeProfitability::isProfitable(unsigned InnerLoopId, // This is rough cost estimation algorithm. It counts the good and bad order // of induction variables in the instruction and allows reordering if number // of bad orders is more than good. - int Cost = 0; - Cost += getInstrOrderCost(); + int Cost = getInstrOrderCost(); DEBUG(dbgs() << "Cost = " << Cost << "\n"); - if (Cost < 0) + if (Cost < -LoopInterchangeCostThreshold) return true; // It is not profitable as per current cache profitability model. But check if |