[llvm-dev] mischeduler

Jonas Paulsson via llvm-dev llvm-dev at lists.llvm.org
Fri Oct 28 03:04:18 PDT 2016


Hi,

Regarding the mischeduler, I wonder

// For loops that are acyclic path limited, aggressively schedule for
// latency.  This can result in very long dependence chains scheduled in
// sequence, so once every cycle (when CurrMOps == 0), switch to normal
// heuristics.
if (Rem.IsAcyclicLatencyLimited && !Zone->getCurrMOps() &&
    tryLatency(TryCand, Cand, *Zone))
      return;

Is this an error in comment or code? The CurrMOps is 0 once per cycle, 
which means
this is actually done once per cycle, in contrast to what the comment 
suggests.

...

   // Schedule aggressively for latency in PostRA mode. We don't check for
   // acyclic latency during PostRA, and highly out-of-order processors will
   // skip PostRA scheduling.
   if (!OtherResLimited) {
     if (IsPostRA || (RemLatency + CurrZone.getCurrCycle() > 
Rem.CriticalPath)) {
       Policy.ReduceLatency |= true;


Why !OtherResLimited? tryCandidate() has already checked for resource 
balancing just
before this. To not do the latency check then only means falling back to 
original
order.

/Jonas



More information about the llvm-dev mailing list