Skip to content
  1. Dec 20, 2011
  2. Dec 12, 2011
  3. Dec 07, 2011
    • Evan Cheng's avatar
      Add bundle aware API for querying instruction properties and switch the code · 7f8e563a
      Evan Cheng authored
      generator to it. For non-bundle instructions, these behave exactly the same
      as the MC layer API.
      
      For properties like mayLoad / mayStore, look into the bundle and if any of the
      bundled instructions has the property it would return true.
      For properties like isPredicable, only return true if *all* of the bundled
      instructions have the property.
      For properties like canFoldAsLoad, isCompare, conservatively return false for
      bundles.
      
      llvm-svn: 146026
      7f8e563a
  4. Nov 13, 2011
    • Jakob Stoklund Olesen's avatar
      Rename SlotIndexes to match how they are used. · 90b5e565
      Jakob Stoklund Olesen authored
      The old naming scheme (load/use/def/store) can be traced back to an old
      linear scan article, but the names don't match how slots are actually
      used.
      
      The load and store slots are not needed after the deferred spill code
      insertion framework was deleted.
      
      The use and def slots don't make any sense because we are using
      half-open intervals as is customary in C code, but the names suggest
      closed intervals.  In reality, these slots were used to distinguish
      early-clobber defs from normal defs.
      
      The new naming scheme also has 4 slots, but the names match how the
      slots are really used.  This is a purely mechanical renaming, but some
      of the code makes a lot more sense now.
      
      llvm-svn: 144503
      90b5e565
  5. Aug 09, 2011
  6. Jul 05, 2011
    • Jakob Stoklund Olesen's avatar
      Fix PR10277. · bbad3bce
      Jakob Stoklund Olesen authored
      Remat during spilling triggers dead code elimination. If a phi-def
      becomes unused, that may also cause live ranges to split into separate
      connected components.
      
      This type of splitting is different from normal live range splitting. In
      particular, there may not be a common original interval.
      
      When the split range is its own original, make sure that the new
      siblings are also their own originals. The range being split cannot be
      used as an original since it doesn't cover the new siblings.
      
      llvm-svn: 134413
      bbad3bce
  7. May 05, 2011
  8. May 02, 2011
    • Jakob Stoklund Olesen's avatar
      Minimize the slot indexes spanned by register ranges created when splitting. · 7d406793
      Jakob Stoklund Olesen authored
      When an interfering live range ends at a dead slot index between two
      instructions, make sure that the inserted copy instruction gets a slot index
      after the dead ones. This makes it possible to avoid the interference.
      
      Ideally, there shouldn't be interference ending at a deleted instruction, but
      physical register coalescing can sometimes do that to sub-registers.
      
      This fixes PR9823.
      
      llvm-svn: 130687
      7d406793
  9. Apr 21, 2011
  10. Apr 15, 2011
  11. Apr 11, 2011
  12. Apr 05, 2011
  13. Mar 30, 2011
    • Jakob Stoklund Olesen's avatar
      Treat clones the same as their origin. · dd9a2ece
      Jakob Stoklund Olesen authored
      When DCE clones a live range because it separates into connected components,
      make sure that the clones enter the same register allocator stage as the
      register they were cloned from.
      
      For instance, clones may be split even when they where created during spilling.
      Other registers created during spilling are not candidates for splitting or even
      (re-)spilling.
      
      llvm-svn: 128524
      dd9a2ece
  14. Mar 29, 2011
  15. Mar 23, 2011
  16. Mar 17, 2011
  17. Mar 16, 2011
  18. Mar 13, 2011
  19. Mar 09, 2011
  20. Mar 08, 2011
    • Jakob Stoklund Olesen's avatar
      Delete dead code after rematerializing. · ea5ebfed
      Jakob Stoklund Olesen authored
      LiveRangeEdit::eliminateDeadDefs() will eventually be used by coalescing,
      splitting, and spilling for dead code elimination. It can delete chains of dead
      instructions as long as there are no dependency loops.
      
      llvm-svn: 127287
      ea5ebfed
  21. Mar 07, 2011
  22. Feb 19, 2011
  23. Feb 18, 2011
  24. Nov 10, 2010
  25. Nov 01, 2010
  26. Oct 21, 2010
  27. Oct 15, 2010
Loading