Skip to content
  1. 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
  2. Jun 15, 2007
  3. Jun 14, 2007
  4. Jun 13, 2007
  5. Jun 08, 2007
  6. May 21, 2007
  7. May 18, 2007
  8. Apr 25, 2007
  9. Apr 24, 2007
  10. Apr 04, 2007
  11. Apr 03, 2007
  12. Mar 28, 2007
  13. Mar 20, 2007
    • Chris Lattner's avatar
      Two changes: · 3e1d917e
      Chris Lattner authored
      1) codegen a shift of a register as a shift, not an LEA.
      2) teach the RA to convert a shift to an LEA instruction if it wants something
         in three-address form.
      
      This gives us asm diffs like:
      
      -       leal (,%eax,4), %eax
      +       shll $2, %eax
      
      which is faster on some processors and smaller on all of them.
      
      and, more interestingly:
      
      -       movl 24(%esi), %eax
      -       leal (,%eax,4), %edi
      +       movl 24(%esi), %edi
      +       shll $2, %edi
      
      Without #2, #1 was a significant pessimization in some cases.
      
      This implements CodeGen/X86/shift-codegen.ll
      
      llvm-svn: 35204
      3e1d917e
  14. Mar 08, 2007
  15. Jan 26, 2007
  16. Dec 01, 2006
  17. Nov 28, 2006
  18. Nov 17, 2006
  19. Nov 15, 2006
  20. Nov 14, 2006
  21. Oct 30, 2006
  22. Oct 28, 2006
  23. Oct 21, 2006
  24. Oct 20, 2006
  25. Oct 18, 2006
  26. Oct 13, 2006
  27. Sep 29, 2006
  28. Sep 08, 2006
  29. 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
  30. Jul 25, 2006
  31. May 31, 2006
  32. May 30, 2006
Loading