Skip to content
  1. Dec 14, 2006
    • Evan Cheng's avatar
      Fix a long-standing spiller bug: · 4c306ae0
      Evan Cheng authored
      If a spillslot value is available in a register, and there is a noop copy that
      targets that register, the spiller correctly decide not to invalidate the
      spillslot register.
      
      However, even though the noop copy does not clobbers the value. It does start a
      new intersecting live range. That means the spillslot register is available for
      use but should not be reused for a two-address instruction modref operand which
      would clobber the new live range.
      
      When we remove the noop copy, update the available information by clearing the
      canClobber bit.
      
      llvm-svn: 32576
      4c306ae0
  2. Dec 08, 2006
  3. Dec 07, 2006
  4. Dec 06, 2006
  5. Dec 01, 2006
  6. Nov 17, 2006
  7. Nov 04, 2006
  8. Nov 02, 2006
  9. Oct 12, 2006
  10. Sep 05, 2006
    • Chris Lattner's avatar
      Fix a long-standing wart in the code generator: two-address instruction lowering · 13a5dcdd
      Chris Lattner authored
      actually *removes* one of the operands, instead of just assigning both operands
      the same register.  This make reasoning about instructions unnecessarily complex,
      because you need to know if you are before or after register allocation to match
      up operand #'s with the target description file.
      
      Changing this also gets rid of a bunch of hacky code in various places.
      
      This patch also includes changes to fold loads into cmp/test instructions in
      the X86 backend, along with a significant simplification to the X86 spill
      folding code.
      
      llvm-svn: 30108
      13a5dcdd
  11. Aug 27, 2006
  12. Aug 25, 2006
    • Chris Lattner's avatar
      Take advantage of the recent improvements to the liveintervals set (tracking · bdf12106
      Chris Lattner authored
      instructions which define each value#) to simplify and improve the coallescer.
      In particular, this patch:
      
      1. Implements iterative coallescing.
      2. Reverts an unsafe hack from handlePhysRegDef, superceeding it with a
         better solution.
      3. Implements PR865, "coallescing" away the second copy in code like:
      
         A = B
         ...
         B = A
      
      This also includes changes to symbolically print registers in intervals
      when possible.
      
      llvm-svn: 29862
      bdf12106
  13. Aug 21, 2006
  14. Jul 21, 2006
  15. Jul 20, 2006
  16. Jun 29, 2006
  17. May 04, 2006
  18. May 02, 2006
  19. May 01, 2006
  20. Apr 30, 2006
  21. Apr 28, 2006
    • Chris Lattner's avatar
      Mapping of physregs can make it so that the designated and input physregs are · 79c50d96
      Chris Lattner authored
      the same.  In this case, don't emit a noop copy.
      
      llvm-svn: 28008
      79c50d96
    • Chris Lattner's avatar
      When we have a two-address instruction where the input cannot be clobbered · 84e95d00
      Chris Lattner authored
      and is already available, instead of falling back to emitting a load, fall
      back to emitting a reg-reg copy.  This generates significantly better code
      for some SSE testcases, as SSE has lots of two-address instructions and
      none of them are read/modify/write.  As one example, this change does:
      
              pshufd %XMM5, XMMWORD PTR [%ESP + 84], 255
              xorps %XMM2, %XMM5
              cmpltps %XMM1, %XMM0
      -       movaps XMMWORD PTR [%ESP + 52], %XMM0
      -       movapd %XMM6, XMMWORD PTR [%ESP + 52]
      +       movaps %XMM6, %XMM0
              cmpltps %XMM6, XMMWORD PTR [%ESP + 68]
              movapd XMMWORD PTR [%ESP + 52], %XMM6
              movaps %XMM6, %XMM0
              cmpltps %XMM6, XMMWORD PTR [%ESP + 36]
              cmpltps %XMM3, %XMM0
      -       movaps XMMWORD PTR [%ESP + 20], %XMM0
      -       movapd %XMM7, XMMWORD PTR [%ESP + 20]
      +       movaps %XMM7, %XMM0
              cmpltps %XMM7, XMMWORD PTR [%ESP + 4]
              movapd XMMWORD PTR [%ESP + 20], %XMM7
              cmpltps %XMM4, %XMM0
      
      ... which is far better than a store followed by a load!
      
      llvm-svn: 28001
      84e95d00
  22. Feb 25, 2006
  23. Feb 04, 2006
  24. Feb 03, 2006
Loading