Skip to content
  1. Dec 12, 2008
    • Bill Wendling's avatar
      Redo the arithmetic with overflow architecture. I was changing the semantics of · 1a317678
      Bill Wendling authored
      ISD::ADD to emit an implicit EFLAGS. This was horribly broken. Instead, replace
      the intrinsic with an ISD::SADDO node. Then custom lower that into an
      X86ISD::ADD node with a associated SETCC that checks the correct condition code
      (overflow or carry). Then that gets lowered into the correct X86::ADDOvf
      instruction.
      
      Similar for SUB and MUL instructions.
      
      llvm-svn: 60915
      1a317678
  2. Dec 09, 2008
  3. Dec 07, 2008
  4. Dec 03, 2008
  5. Dec 02, 2008
  6. Nov 26, 2008
  7. Nov 18, 2008
  8. Oct 25, 2008
  9. Oct 17, 2008
    • Evan Cheng's avatar
      Add implicit defs of XMM8 to XMM15 on 32-bit call instructions. While this is... · 0fcc89b5
      Evan Cheng authored
      Add implicit defs of XMM8 to XMM15 on 32-bit call instructions. While this is not technically true, it tells tblgen that these instructions "clobber" the entire XMM register file.
      
      llvm-svn: 57723
      0fcc89b5
    • Dan Gohman's avatar
      Fun x86 encoding tricks: when adding an immediate value of 128, · ca0546fa
      Dan Gohman authored
      use a SUB instruction instead of an ADD, because -128 can be
      encoded in an 8-bit signed immediate field, while +128 can't be.
      This avoids the need for a 32-bit immediate field in this case.
      
      A similar optimization applies to 64-bit adds with 0x80000000,
      with the 32-bit signed immediate field.
      
      To support this, teach tablegen how to handle 64-bit constants.
      
      llvm-svn: 57663
      ca0546fa
    • Dan Gohman's avatar
      Define patterns for shld and shrd that match immediate · a39b0a1f
      Dan Gohman authored
      shift counts, and patterns that match dynamic shift counts
      when the subtract is obscured by a truncate node.
      
      Add DAGCombiner support for recognizing rotate patterns
      when the shift counts are defined by truncate nodes.
      
      Fix and simplify the code for commuting shld and shrd
      instructions to work even when the given instruction doesn't
      have a parent, and when the caller needs a new instruction.
      
      These changes allow LLVM to use the shld, shrd, rol, and ror
      instructions on x86 to replace equivalent code using two
      shifts and an or in many more cases.
      
      llvm-svn: 57662
      a39b0a1f
  10. Oct 15, 2008
    • Dan Gohman's avatar
      Now that predicates can be composed, simplify several of · 29ad4397
      Dan Gohman authored
      the predicates by extending simple predicates to create
      more complex predicates instead of duplicating the logic
      for the simple predicates.
      
      This doesn't reduce much redundancy in DAGISelEmitter.cpp's
      generated source yet; that will require improvements to
      DAGISelEmitter.cpp's instruction sorting, to make it more
      effectively group nodes with similar predicates together.
      
      llvm-svn: 57565
      29ad4397
  11. Oct 12, 2008
  12. Oct 07, 2008
  13. Oct 04, 2008
  14. Oct 03, 2008
  15. Oct 02, 2008
  16. Oct 01, 2008
  17. Sep 29, 2008
  18. Sep 27, 2008
  19. Sep 25, 2008
  20. Sep 16, 2008
  21. Sep 12, 2008
  22. Aug 30, 2008
  23. Aug 28, 2008
    • Dale Johannesen's avatar
      Split the ATOMIC NodeType's to include the size, e.g. · 41be0d44
      Dale Johannesen authored
      ATOMIC_LOAD_ADD_{8,16,32,64} instead of ATOMIC_LOAD_ADD.
      Increased the Hardcoded Constant OpActionsCapacity to match.
      Large but boring; no functional change.
      
      This is to support partial-word atomics on ppc; i8 is
      not a valid type there, so by the time we get to lowering, the
      ATOMIC_LOAD nodes looks the same whether the type was i8 or i32.
      The information can be added to the AtomicSDNode, but that is the
      largest SDNode; I don't fully understand the SDNode allocation,
      but it is sensitive to the largest node size, so increasing
      that must be bad.  This is the alternative.
      
      llvm-svn: 55457
      41be0d44
  24. Aug 22, 2008
  25. Aug 20, 2008
  26. Aug 19, 2008
  27. Aug 06, 2008
  28. Jul 30, 2008
    • Dan Gohman's avatar
      Reapply r54147 with a constraint to only use the 8-bit · 86b06335
      Dan Gohman authored
      subreg form on x86-64, to avoid the problem with x86-32
      having GPRs that don't have 8-bit subregs.
      
      Also, change several 16-bit instructions to use 
      equivalent 32-bit instructions. These have a smaller
      encoding and avoid partial-register updates.
      
      llvm-svn: 54223
      86b06335
  29. Jul 29, 2008
Loading