Skip to content
  1. Jun 21, 2012
    • Jakob Stoklund Olesen's avatar
      Convert RAGreedy to LiveRegMatrix interference checking. · 96eebf0b
      Jakob Stoklund Olesen authored
      Stop depending on the LiveIntervalUnions in RegAllocBase, they are about
      to be removed.
      
      The changes are mostly replacing register alias iterators with regunit
      iterators, and querying LiveRegMatrix instrad of RegAllocBase.
      
      InterferenceCache is converted to work with per-regunit
      LiveIntervalUnions, and it checks fixed regunit interference separately,
      using the fixed live intervals provided by LiveIntervalAnalysis.
      
      The local splitting helper calcGapWeights() is also considering fixed
      regunit interference which is kept on the side now.
      
      llvm-svn: 158867
      96eebf0b
  2. Jun 02, 2012
    • Jakob Stoklund Olesen's avatar
      Switch all register list clients to the new MC*Iterator interface. · 54038d79
      Jakob Stoklund Olesen authored
      No functional change intended.
      
      Sorry for the churn. The iterator classes are supposed to help avoid
      giant commits like this one in the future. The TableGen-produced
      register lists are getting quite large, and it may be necessary to
      change the table representation.
      
      This makes it possible to do so without changing all clients (again).
      
      llvm-svn: 157854
      54038d79
  3. Mar 04, 2012
  4. Feb 15, 2012
  5. Feb 10, 2012
    • Jakob Stoklund Olesen's avatar
      Add a static MachineOperand::clobbersPhysReg(). · 024d7ae1
      Jakob Stoklund Olesen authored
      It can be necessary to detach a register mask pointer from its
      MachineOperand. This method is convenient for checking clobbered
      physregs on a detached bitmask pointer.
      
      llvm-svn: 150261
      024d7ae1
    • Jakob Stoklund Olesen's avatar
      Add register mask support to InterferenceCache. · a16ae597
      Jakob Stoklund Olesen authored
      This makes global live range splitting behave identically with and
      without register mask operands.
      
      This is not necessarily the best way of using register masks for live
      range splitting.  It would be more efficient to first split global live
      ranges around calls (i.e., register masks), and reserve the fine grained
      per-physreg interference guidance for global live ranges that do not
      cross calls.
      
      For now the goal is to produce identical assembly when enabling register
      masks.
      
      llvm-svn: 150259
      a16ae597
  6. Jan 13, 2012
  7. Jul 23, 2011
  8. Jul 14, 2011
    • Jakob Stoklund Olesen's avatar
      Reapply r135121 with a fixed copy constructor. · a153ca58
      Jakob Stoklund Olesen authored
      Original commit message:
      
      Count references to interference cache entries.
      
      Each InterferenceCache::Cursor instance references a cache entry. A
      non-zero reference count guarantees that the entry won't be reused for a
      new register.
      
      This makes it possible to have multiple live cursors examining
      interference for different physregs.
      
      The total number of live cursors into a cache must be kept below
      InterferenceCache::getMaxCursors().
      
      Code generation should be unaffected by this change, and it doesn't seem
      to affect the cache replacement strategy either.
      
      llvm-svn: 135130
      a153ca58
    • Jakob Stoklund Olesen's avatar
      Revert r135121 which broke a gcc-4.2 builder. · 1d4badae
      Jakob Stoklund Olesen authored
      llvm-svn: 135122
      1d4badae
    • Jakob Stoklund Olesen's avatar
      Count references to interference cache entries. · c270cb6e
      Jakob Stoklund Olesen authored
      Each InterferenceCache::Cursor instance references a cache entry. A
      non-zero reference count guarantees that the entry won't be reused for a
      new register.
      
      This makes it possible to have multiple live cursors examining
      interference for different physregs.
      
      The total number of live cursors into a cache must be kept below
      InterferenceCache::getMaxCursors().
      
      Code generation should be unaffected by this change, and it doesn't seem
      to affect the cache replacement strategy either.
      
      llvm-svn: 135121
      c270cb6e
  9. Apr 09, 2011
  10. Apr 07, 2011
  11. Apr 02, 2011
Loading