Skip to content
  1. Aug 11, 2011
  2. Aug 09, 2011
  3. Jul 27, 2011
  4. Jul 02, 2011
  5. Jun 27, 2011
  6. Jun 26, 2011
  7. Jun 03, 2011
  8. May 10, 2011
  9. May 06, 2011
  10. Apr 20, 2011
    • Jakob Stoklund Olesen's avatar
      Prefer cheap registers for busy live ranges. · 0e34c1df
      Jakob Stoklund Olesen authored
      On the x86-64 and thumb2 targets, some registers are more expensive to encode
      than others in the same register class.
      
      Add a CostPerUse field to the TableGen register description, and make it
      available from TRI->getCostPerUse. This represents the cost of a REX prefix or a
      32-bit instruction encoding required by choosing a high register.
      
      Teach the greedy register allocator to prefer cheap registers for busy live
      ranges (as indicated by spill weight).
      
      llvm-svn: 129864
      0e34c1df
  11. Apr 12, 2011
  12. Apr 11, 2011
  13. Apr 05, 2011
  14. Apr 01, 2011
  15. Mar 23, 2011
  16. Mar 16, 2011
  17. Mar 12, 2011
    • Jakob Stoklund Olesen's avatar
      Spill multiple registers at once. · a86595e0
      Jakob Stoklund Olesen authored
      Live range splitting can create a number of small live ranges containing only a
      single real use. Spill these small live ranges along with the large range they
      are connected to with copies. This enables memory operand folding and maximizes
      the spill to fill distance.
      
      Work in progress with known bugs.
      
      llvm-svn: 127529
      a86595e0
  18. Mar 10, 2011
  19. Feb 23, 2011
  20. Feb 18, 2011
  21. Feb 17, 2011
  22. Feb 09, 2011
    • Jakob Stoklund Olesen's avatar
      Evict a lighter single interference before attempting to split a live range. · 1305bc0a
      Jakob Stoklund Olesen authored
      Registers are not allocated strictly in spill weight order when live range
      splitting and spilling has created new shorter intervals with higher spill
      weights.
      
      When one of the new heavy intervals conflicts with a single lighter interval,
      simply evict the old interval instead of trying to split the heavy one.
      
      The lighter interval is a better candidate for splitting, it has a smaller use
      density.
      
      llvm-svn: 125151
      1305bc0a
  23. Dec 18, 2010
  24. Dec 15, 2010
  25. Dec 14, 2010
  26. Dec 11, 2010
  27. Dec 09, 2010
  28. Dec 08, 2010
    • Jakob Stoklund Olesen's avatar
      Store (priority,regnum) pairs in the priority queue instead of providing an · e0df786c
      Jakob Stoklund Olesen authored
      abstract priority queue interface in subclasses that want to override the
      priority calculations.
      
      Subclasses must provide a getPriority() implementation instead.
      
      This approach requires less code as long as priorities are expressable as simple
      floats, and it avoids the dangers of defining potentially expensive priority
      comparison functions.
      
      It also should speed up priority_queue operations since they no longer have to
      chase pointers when comparing registers. This is not measurable, though.
      
      Preferably, we shouldn't use floats to guide code generation. The use of floats
      here is derived from the use of floats for spill weights. Spill weights have a
      dynamic range that doesn't lend itself easily to a fixpoint implementation.
      
      When someone invents a stable spill weight representation, it can be reused for
      allocation priorities.
      
      llvm-svn: 121294
      e0df786c
    • Jakob Stoklund Olesen's avatar
      Move RABasic::addMBBLiveIns to the base class, it is generally useful. · 5885e994
      Jakob Stoklund Olesen authored
      Minor optimization to the use of IntervalMap iterators. They are fairly
      heavyweight, so prefer SI.valid() over SI != end().
      
      llvm-svn: 121217
      5885e994
    • Jakob Stoklund Olesen's avatar
      Switch LiveIntervalUnion from std::set to IntervalMap. · db357d71
      Jakob Stoklund Olesen authored
      This speeds up RegAllocBasic by 20%, not counting releaseMemory which becomes
      way faster.
      
      llvm-svn: 121201
      db357d71
  29. Dec 07, 2010
  30. Dec 01, 2010
  31. Nov 25, 2010
  32. Nov 20, 2010
Loading