MachineScheduler: Add a way to disable the 'ReduceLatency' heuristic
authorMatthias Braun <matze@braunis.de>
Thu, 22 Oct 2015 18:07:31 +0000 (18:07 +0000)
committerMatthias Braun <matze@braunis.de>
Thu, 22 Oct 2015 18:07:31 +0000 (18:07 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251037 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/MachineScheduler.h
lib/CodeGen/MachineScheduler.cpp

index 081bf8f471f3403aaf70a6c6b043b0dd0cd64572..9d3212e3e9d1cdb6bf8419718bb6de4e7a78143b 100644 (file)
@@ -156,8 +156,12 @@ struct MachineSchedPolicy {
   bool OnlyTopDown;
   bool OnlyBottomUp;
 
+  // Disable heuristic that tries to fetch nodes from long dependency chains
+  // first.
+  bool DisableLatencyHeuristic;
+
   MachineSchedPolicy(): ShouldTrackPressure(false), OnlyTopDown(false),
-    OnlyBottomUp(false) {}
+    OnlyBottomUp(false), DisableLatencyHeuristic(false) {}
 };
 
 /// MachineSchedStrategy - Interface to the scheduling algorithm used by
index 7e5ae05781eafff033a998658586103aac1d3f95..ee2dbc86bf1f760d1a543abe71b5a9b51069dc99 100644 (file)
@@ -2722,8 +2722,8 @@ void GenericScheduler::tryCandidate(SchedCandidate &Cand,
 
   // Avoid serializing long latency dependence chains.
   // For acyclic path limited loops, latency was already checked above.
-  if (Cand.Policy.ReduceLatency && !Rem.IsAcyclicLatencyLimited
-      && tryLatency(TryCand, Cand, Zone)) {
+  if (!RegionPolicy.DisableLatencyHeuristic && Cand.Policy.ReduceLatency &&
+      !Rem.IsAcyclicLatencyLimited && tryLatency(TryCand, Cand, Zone)) {
     return;
   }