Skip to content
  1. Dec 24, 2010
    • Andrew Trick's avatar
      Various bits of framework needed for precise machine-level selection · 10ffc2b6
      Andrew Trick authored
      DAG scheduling during isel. Most new functionality is currently
      guarded by -enable-sched-cycles and -enable-sched-hazard.
      
      Added InstrItineraryData::IssueWidth field, currently derived from
      ARM itineraries, but could be initialized differently on other targets.
      
      Added ScheduleHazardRecognizer::MaxLookAhead to indicate whether it is
      active, and if so how many cycles of state it holds.
      
      Added SchedulingPriorityQueue::HasReadyFilter to allowing gating entry
      into the scheduler's available queue.
      
      ScoreboardHazardRecognizer now accesses the ScheduleDAG in order to
      get information about it's SUnits, provides RecedeCycle for bottom-up
      scheduling, correctly computes scoreboard depth, tracks IssueCount, and
      considers potential stall cycles when checking for hazards.
      
      ScheduleDAGRRList now models machine cycles and hazards (under
      flags). It tracks MinAvailableCycle, drives the hazard recognizer and
      priority queue's ready filter, manages a new PendingQueue, properly
      accounts for stall cycles, etc.
      
      llvm-svn: 122541
      10ffc2b6
    • Andrew Trick's avatar
      whitespace · c416ba61
      Andrew Trick authored
      llvm-svn: 122539
      c416ba61
  2. May 30, 2010
  3. May 26, 2010
  4. Nov 20, 2009
  5. Nov 12, 2009
  6. Nov 03, 2009
  7. Dec 16, 2008
    • Dan Gohman's avatar
      Add initial support for back-scheduling address computations, · b9a01215
      Dan Gohman authored
      especially in the case of addresses computed from loop induction
      variables.
      
      llvm-svn: 61075
      b9a01215
    • Dan Gohman's avatar
      Fix some register-alias-related bugs in the post-RA scheduler liveness · dddc1ac7
      Dan Gohman authored
      computation code. Also, avoid adding output-depenency edges when both
      defs are dead, which frequently happens with EFLAGS defs.
      
      Compute Depth and Height lazily, and always in terms of edge latency
      values. For the schedulers that don't care about latency, edge latencies
      are set to 1.
      
      Eliminate Cycle and CycleBound, and LatencyPriorityQueue's Latencies array.
      These are all subsumed by the Depth and Height fields.
      
      llvm-svn: 61073
      dddc1ac7
  8. Dec 10, 2008
  9. Dec 09, 2008
    • Dan Gohman's avatar
      Rewrite the SDep class, and simplify some of the related code. · 2d170896
      Dan Gohman authored
      The Cost field is removed. It was only being used in a very limited way,
      to indicate when the scheduler should attempt to protect a live register,
      and it isn't really needed to do that. If we ever want the scheduler to
      start inserting copies in non-prohibitive situations, we'll have to
      rethink some things anyway.
      
      A Latency field is added. Instead of giving each node a single
      fixed latency, each edge can have its own latency. This will eventually
      be used to model various micro-architecture properties more accurately.
      
      The PointerIntPair class and an internal union are now used, which
      reduce the overall size.
      
      llvm-svn: 60806
      2d170896
    • Dan Gohman's avatar
      Don't charge full latency for an anti-dependence, in this simplistic · 37c49697
      Dan Gohman authored
      pipeline model.
      
      llvm-svn: 60733
      37c49697
  10. Nov 20, 2008
    • Dan Gohman's avatar
      Experimental post-pass scheduling support. Post-pass scheduling · 60cb69e6
      Dan Gohman authored
      is currently off by default, and can be enabled with
      -disable-post-RA-scheduler=false.
      
      This doesn't have a significant impact on most code yet because it doesn't
      yet do anything to address anti-dependencies and it doesn't attempt to
      disambiguate memory references. Also, several popular targets
      don't have pipeline descriptions yet.
      
      The majority of the changes here are splitting the SelectionDAG-specific
      code out of ScheduleDAG, so that ScheduleDAG can be moved to
      libLLVMCodeGen.a. The interface between ScheduleDAG-using code and
      the rest of the scheduling code is somewhat rough and will evolve.
      
      llvm-svn: 59676
      60cb69e6
  11. Nov 17, 2008
  12. Nov 15, 2008
Loading