Skip to content
  1. Dec 11, 2010
  2. Dec 09, 2010
  3. 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
  4. Dec 07, 2010
  5. Dec 01, 2010
  6. Nov 25, 2010
  7. Nov 20, 2010
  8. Nov 11, 2010
  9. Nov 10, 2010
  10. Nov 09, 2010
  11. Nov 08, 2010
  12. Nov 03, 2010
  13. Oct 26, 2010
  14. 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
Loading