Skip to content
  1. May 14, 2010
    • Jakob Stoklund Olesen's avatar
      Fix an embarrassing runtime regression for RegAllocFast. · 41f8dc89
      Jakob Stoklund Olesen authored
      This loop is quadratic in the capacity for a DenseMap:
      
        while(!map.empty())
          map.erase(map.begin());
      
      Instead we now do a normal begin() - end() iteration followed by map.clear().
      That also has the nice sideeffect of shrinking the map capacity on demand.
      
      llvm-svn: 103747
      41f8dc89
  2. May 13, 2010
  3. May 12, 2010
  4. May 11, 2010
    • Jakob Stoklund Olesen's avatar
      Simplify the tracking of used physregs to a bulk bitor followed by a transitive · 3f0241e0
      Jakob Stoklund Olesen authored
      closure after allocating all blocks.
      
      Add a few more test cases for -regalloc=fast.
      
      llvm-svn: 103500
      3f0241e0
    • Jakob Stoklund Olesen's avatar
      Mostly rewrite RegAllocFast. · f1b3029a
      Jakob Stoklund Olesen authored
      Sorry for the big change. The path leading up to this patch had some TableGen
      changes that I didn't want to commit before I knew they were useful. They
      weren't, and this version does not need them.
      
      The fast register allocator now does no liveness calculations. Instead it relies
      on kill flags provided by isel. (Currently those kill flags are also ignored due
      to isel bugs). The allocation algorithm is supposed to work with any subset of
      valid kill flags. More kill flags simply means fewer spills inserted.
      
      Registers are allocated from a working set that contains no aliases. That means
      most allocations can be done directly without expensive alias checks. When the
      working set runs out of registers we do the full alias check to find new free
      registers.
      
      llvm-svn: 103488
      f1b3029a
    • Evan Cheng's avatar
  5. May 06, 2010
  6. Apr 22, 2010
  7. Apr 21, 2010
    • Jakob Stoklund Olesen's avatar
      Add fast register allocator, enabled with -regalloc=fast. · 8a070a54
      Jakob Stoklund Olesen authored
      So far this is just a clone of -regalloc=local that has been lobotomized to run
      25% faster. It drops the least-recently-used calculations, and is just plain
      stupid when it runs out of registers.
      
      The plan is to make this go even faster for -O0 by taking advantage of the short
      live intervals in unoptimized code. It should not be necessary to calculate
      liveness when most virtual registers are killed 2-3 instructions after they are
      born.
      
      llvm-svn: 102006
      8a070a54
  8. Apr 17, 2010
  9. Apr 08, 2010
  10. Mar 31, 2010
  11. Mar 18, 2010
  12. Mar 16, 2010
  13. Feb 16, 2010
  14. Feb 15, 2010
  15. Feb 10, 2010
  16. Feb 09, 2010
  17. Feb 03, 2010
  18. Feb 02, 2010
  19. Jan 30, 2010
  20. Jan 05, 2010
  21. Dec 16, 2009
    • Dale Johannesen's avatar
      Do better with physical reg operands (typically, from inline asm) · 56f04140
      Dale Johannesen authored
      in local register allocator.  If a reg-reg copy has a phys reg
      input and a virt reg output, and this is the last use of the phys
      reg, assign the phys reg to the virt reg.  If a reg-reg copy has
      a phys reg output and we need to reload its spilled input, reload
      it directly into the phys reg than passing it through another reg.
      
      Following 76208, there is sometimes no dependency between the def of
      a phys reg and its use; this creates a window where that phys reg
      can be used for spilling (this is true in linear scan also).  This
      is bad and needs to be fixed a better way, although 76208 works too
      well in practice to be reverted.  However, there should normally be
      no spilling within inline asm blocks.  The patch here goes a long way
      towards making this actually be true.
      
      llvm-svn: 91485
      56f04140
  22. Nov 12, 2009
    • David Greene's avatar
      · 1fbe0544
      David Greene authored
      Add a bool flag to StackObjects telling whether they reference spill
      slots.  The AsmPrinter will use this information to determine whether to
      print a spill/reload comment.
      
      Remove default argument values.  It's too easy to pass a wrong argument
      value when multiple arguments have default values.  Make everything
      explicit to trap bugs early.
      
      Update all targets to adhere to the new interfaces..
      
      llvm-svn: 87022
      1fbe0544
  23. Oct 25, 2009
  24. Oct 17, 2009
  25. Aug 22, 2009
  26. Aug 01, 2009
Loading