Skip to content
  1. Nov 10, 2010
    • Jakob Stoklund Olesen's avatar
      Basic rematerialization during splitting. · 6ee7d9aa
      Jakob Stoklund Olesen authored
      Whenever splitting wants to insert a copy, it checks if the value can be
      rematerialized cheaply instead.
      
      Missing features:
      - Delete instructions when all uses have been rematerialized.
      - Truncate live ranges to the remaining uses after rematerialization.
      
      llvm-svn: 118702
      6ee7d9aa
  2. Nov 02, 2010
  3. Oct 28, 2010
  4. Oct 27, 2010
  5. Oct 23, 2010
    • Andrew Trick's avatar
      This is a prototype of an experimental register allocation · 1c24605a
      Andrew Trick authored
      framework. It's purpose is not to improve register allocation per se,
      but to make it easier to develop powerful live range splitting. I call
      it the basic allocator because it is as simple as a global allocator
      can be but provides the building blocks for sophisticated register
      allocation with live range splitting. 
      
      A minimal implementation is provided that trivially spills whenever it
      runs out of registers. I'm checking in now to get high-level design
      and style feedback. I've only done minimal testing. The next step is
      implementing a "greedy" allocation algorithm that does some register
      reassignment and makes better splitting decisions.
      
      llvm-svn: 117174
      1c24605a
  6. Oct 22, 2010
  7. Oct 15, 2010
  8. Oct 09, 2010
  9. Oct 06, 2010
  10. Oct 05, 2010
  11. Sep 22, 2010
    • Jakob Stoklund Olesen's avatar
      Build the complement interval dupli after the split intervals instead of · 6f8bd42e
      Jakob Stoklund Olesen authored
      creating it before and subtracting split ranges.
      
      This way, the SSA update code in LiveIntervalMap can properly create and use new
      phi values in dupli. Now it is possible to create split regions where a value
      escapes along two different CFG edges, creating phi values outside the split
      region.
      
      This is a work in progress and probably quite broken.
      
      llvm-svn: 114492
      6f8bd42e
  12. Sep 16, 2010
    • Jakob Stoklund Olesen's avatar
      Use the value mapping provided by LiveIntervalMap. This simplifies the code a · 9855109b
      Jakob Stoklund Olesen authored
      great deal because we don't have to worry about maintaining SSA form.
      
      Unconditionally copy back to dupli when the register is live out of the split
      range, even if the live-out value was defined outside the range. Skipping the
      back-copy only makes sense when the live range is going to spill outside the
      split range, and we don't know that it will. Besides, this was a hack to avoid
      SSA update issues.
      
      Clear up some confusion about the end point of a half-open LiveRange. Methinks
      LiveRanges need to be closed so both start and end are included in the range.
      The low bits of a SlotIndex are symbolic, so a half-open range doesn't really
      make sense. This would be a pervasive change, though.
      
      llvm-svn: 114043
      9855109b
  13. Sep 14, 2010
  14. Aug 18, 2010
  15. Aug 14, 2010
    • Jakob Stoklund Olesen's avatar
      Clean up the Spiller.h interface. · 27e1f265
      Jakob Stoklund Olesen authored
      The earliestStart argument is entirely specific to linear scan allocation, and
      can be easily calculated by RegAllocLinearScan.
      
      Replace std::vector with SmallVector.
      
      llvm-svn: 111055
      27e1f265
  16. Aug 13, 2010
  17. Aug 12, 2010
    • Jakob Stoklund Olesen's avatar
      Implement single block splitting. · 622848b2
      Jakob Stoklund Olesen authored
      Before spilling a live range, we split it into a separate range for each basic
      block where it is used. That way we only get one reload per basic block if the
      new smaller ranges can allocate to a register.
      
      This type of splitting is already present in the standard spiller.
      
      llvm-svn: 110934
      622848b2
  18. Aug 10, 2010
  19. Aug 07, 2010
  20. Aug 05, 2010
  21. Jul 27, 2010
  22. Jul 21, 2010
  23. Jul 20, 2010
Loading