summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@codeaurora.org>2016-09-14 17:07:13 +0000
committerChad Rosier <mcrosier@codeaurora.org>2016-09-14 17:07:13 +0000
commit72431890b19fb0a9ed8c1e46b01862ca6f1ee2c2 (patch)
treefd40f1af36a723d78a84e12bbf2f467233b00a45 /llvm/lib/Transforms
parentfbbb28ebb389132c35a986e8b2139043bae6b456 (diff)
downloadbcm5719-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.cpp9
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
OpenPOWER on IntegriCloud