Skip to content
  1. Mar 11, 2009
  2. Mar 10, 2009
    • Dan Gohman's avatar
      Fix a post-RA scheduling liveness bug. When a basic block is being · 64613ace
      Dan Gohman authored
      scheduled in multiple regions, liveness data used by the
      anti-dependence breaker is carried from one region to the next, however
      the information reflects the state of the instructions before scheduling.
      After scheduling, there may be new live range overlaps. Handle this by
      pessimizing the liveness data carried between regions to the point where
      it will be conservatively correct now matter how the earlier region is
      scheduled. This fixes a miscompilation in 176.gcc with the post-RA
      scheduler enabled.
      
      llvm-svn: 66558
      64613ace
  3. Feb 11, 2009
    • Dan Gohman's avatar
      When scheduling a block in parts, keep track of the overall · dfaf646c
      Dan Gohman authored
      instruction index across each part. Instruction indices are used
      to make live range queries, and live ranges can extend beyond
      scheduling region boundaries.
      
      Refactor the ScheduleDAGSDNodes class some more so that it
      doesn't have to worry about this additional information.
      
      llvm-svn: 64288
      dfaf646c
    • Dan Gohman's avatar
      Consider any instruction that modifies the stack pointer to be · b3dbb21d
      Dan Gohman authored
      a scheduling region boundary.  This isn't necessary for
      correctness; it helps with compile time, as it avoids the need
      for data- and anti-dependencies from all spills and reloads on
      the stack-pointer modification.
      
      llvm-svn: 64255
      b3dbb21d
    • Dan Gohman's avatar
      Factor out more code for computing register live-range informationfor · b9543435
      Dan Gohman authored
      scheduling, and generalize is so that preserves state across
      scheduling regions. This fixes incorrect live-range information around
      terminators and labels, which are effective region boundaries.
      
      In place of looking for terminators to anchor inter-block dependencies,
      introduce special entry and exit scheduling units for this purpose.
      
      llvm-svn: 64254
      b9543435
  4. Feb 06, 2009
  5. Feb 03, 2009
  6. Jan 16, 2009
  7. Jan 15, 2009
    • Dan Gohman's avatar
      Move a few containers out of ScheduleDAGInstrs::BuildSchedGraph · 619ef48a
      Dan Gohman authored
      and into the ScheduleDAGInstrs class, so that they don't get
      destructed and re-constructed for each block. This fixes a
      compile-time hot spot in the post-pass scheduler.
      
      To help facilitate this, tidy and do some minor reorganization
      in the scheduler constructor functions.
      
      llvm-svn: 62275
      619ef48a
  8. Jan 05, 2009
  9. Dec 23, 2008
  10. Dec 19, 2008
  11. Dec 16, 2008
  12. 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
  13. Dec 05, 2008
  14. Dec 04, 2008
  15. Dec 03, 2008
  16. Nov 27, 2008
    • Nick Lewycky's avatar
      Silence a warning. · 2c96bdd8
      Nick Lewycky authored
      Despite changing the order of evaluation, this doesn't actually change the
      meaning of the statement.
      
      llvm-svn: 60177
      2c96bdd8
  17. Nov 25, 2008
  18. Nov 20, 2008
    • Dan Gohman's avatar
      Factor out the code for verifying the work of the scheduler, · 4ce15e12
      Dan Gohman authored
      extend it a bit, and make use of it in all schedulers, to
      ensure consistent checking.
      
      llvm-svn: 59689
      4ce15e12
    • 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
  19. Sep 04, 2008
  20. Jan 14, 2008
  21. Dec 29, 2007
  22. Jul 13, 2007
Loading