Skip to content
  1. Dec 02, 2007
  2. Nov 29, 2007
  3. Nov 28, 2007
  4. Nov 17, 2007
    • Evan Cheng's avatar
      Live interval splitting: · 8e223793
      Evan Cheng authored
      When a live interval is being spilled, rather than creating short, non-spillable
      intervals for every def / use, split the interval at BB boundaries. That is, for
      every BB where the live interval is defined or used, create a new interval that
      covers all the defs and uses in the BB.
      
      This is designed to eliminate one common problem: multiple reloads of the same
      value in a single basic block. Note, it does *not* decrease the number of spills
      since no copies are inserted so the split intervals are *connected* through
      spill and reloads (or rematerialization). The newly created intervals can be
      spilled again, in that case, since it does not span multiple basic blocks, it's
      spilled in the usual manner. However, it can reuse the same stack slot as the
      previously split interval.
      
      This is currently controlled by -split-intervals-at-bb.
      
      llvm-svn: 44198
      8e223793
  5. Nov 14, 2007
    • Evan Cheng's avatar
      Clean up sub-register implementation by moving subReg information back to · 7f02cfa5
      Evan Cheng authored
      MachineOperand auxInfo. Previous clunky implementation uses an external map
      to track sub-register uses. That works because register allocator uses
      a new virtual register for each spilled use. With interval splitting (coming
      soon), we may have multiple uses of the same register some of which are
      of using different sub-registers from others. It's too fragile to constantly
      update the information.
      
      llvm-svn: 44104
      7f02cfa5
  6. Nov 02, 2007
  7. Oct 22, 2007
  8. Oct 19, 2007
    • Evan Cheng's avatar
      Local spiller optimization: · 35ff7937
      Evan Cheng authored
      Turn a store folding instruction into a load folding instruction. e.g.
           xorl  %edi, %eax
           movl  %eax, -32(%ebp)
           movl  -36(%ebp), %eax
           orl   %eax, -32(%ebp)
      =>
           xorl  %edi, %eax
           orl   -36(%ebp), %eax
           mov   %eax, -32(%ebp)
      This enables the unfolding optimization for a subsequent instruction which will
      also eliminate the newly introduced store instruction.
      
      llvm-svn: 43192
      35ff7937
  9. Oct 13, 2007
    • Evan Cheng's avatar
      Local spiller optimization: · b6307650
      Evan Cheng authored
      Turn this:
      movswl  %ax, %eax
      movl    %eax, -36(%ebp)
      xorl    %edi, -36(%ebp)
      into
      movswl  %ax, %eax
      xorl    %edi, %eax
      movl    %eax, -36(%ebp)
      by unfolding the load / store xorl into an xorl and a store when we know the
      value in the spill slot is available in a register. This doesn't change the
      number of instructions but reduce the number of times memory is accessed.
      
      Also unfold some load folding instructions and reuse the value when similar
      situation presents itself.
      
      llvm-svn: 42947
      b6307650
  10. Oct 12, 2007
  11. Sep 26, 2007
  12. Sep 14, 2007
  13. Sep 06, 2007
    • David Greene's avatar
      · a6d5d2a6
      David Greene authored
      Add instruction dump output.  This helps find bugs.
      
      llvm-svn: 41744
      a6d5d2a6
  14. Aug 15, 2007
  15. Aug 14, 2007
  16. Jul 11, 2007
  17. Jun 19, 2007
    • Dan Gohman's avatar
      Replace M_REMATERIALIZIBLE and the newly-added isOtherReMaterializableLoad · 9e820649
      Dan Gohman authored
      with a general target hook to identify rematerializable instructions. Some
      instructions are only rematerializable with specific operands, such as loads
      from constant pools, while others are always rematerializable. This hook
      allows both to be identified as being rematerializable with the same
      mechanism.
      
      llvm-svn: 37644
      9e820649
  18. Jun 14, 2007
  19. Apr 26, 2007
  20. Apr 04, 2007
  21. Mar 30, 2007
  22. Mar 27, 2007
  23. Mar 20, 2007
  24. Mar 03, 2007
  25. Mar 02, 2007
  26. Mar 01, 2007
  27. Feb 25, 2007
  28. Feb 23, 2007
  29. Feb 21, 2007
  30. Feb 20, 2007
Loading