Skip to content
  1. 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
  2. Feb 06, 2009
  3. Jan 27, 2009
  4. Jan 16, 2009
    • Evan Cheng's avatar
      CreateVirtualRegisters does trivial copy coalescing. If a node def is used by... · 968e2e7b
      Evan Cheng authored
      CreateVirtualRegisters does trivial copy coalescing. If a node def is used by a single CopyToReg, it reuses the virtual register assigned to the CopyToReg. This won't work for SDNode that is a clone or is itself cloned. Disable this optimization for those nodes or it can end up with non-SSA machine instructions.
      
      llvm-svn: 62356
      968e2e7b
  5. Jan 15, 2009
  6. Jan 09, 2009
  7. Jan 03, 2009
    • Dan Gohman's avatar
      Remove the code from the scheduler that commuted two-address · 1be2e965
      Dan Gohman authored
      instructions to avoid copies, because TwoAddressInstructionPass
      also does this optimization.  The scheduler's version didn't
      account for live-out values, which resulted in spurious commutes
      and missed opportunities.
      
      Now, TwoAddressInstructionPass handles all the opportunities,
      instead of just those that the scheduler missed. The result is
      usually the same, though there are occasional trivial differences
      resulting from the avoidance of spurious commutes.
      
      llvm-svn: 61611
      1be2e965
  8. Jan 01, 2009
  9. Dec 23, 2008
  10. Dec 22, 2008
  11. 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
  12. Nov 24, 2008
  13. 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
Loading