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 | |
| 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
| -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  | 

