Skip to content
  1. Sep 28, 2012
  2. Sep 27, 2012
  3. Sep 26, 2012
  4. Sep 25, 2012
  5. Sep 19, 2012
    • Michael Liao's avatar
      Unify the logic in SelectAtomicLoadAdd and SelectAtomicLoadArith · 83725395
      Michael Liao authored
      - Merge the processing of LOAD_ADD with other atomic load-arith
        operations
      - Separate the logic getting target constant for atomic-load-op and add
        an optimization for atomic-load-add on i16 with negative value
      - Optimize a minor case for atomic-fetch-add i16 with negative operand. Test
        case is revised.
      
      llvm-svn: 164243
      83725395
  6. Sep 13, 2012
  7. Sep 12, 2012
    • Michael Liao's avatar
      Fix PR11985 · abb87d48
      Michael Liao authored
          
      - BlockAddress has no support of BA + offset form and there is no way to
        propagate that offset into machine operand;
      - Add BA + offset support and a new interface 'getTargetBlockAddress' to
        simplify target block address forming;
      - All targets are modified to use new interface and X86 backend is enhanced to
        support BA + offset addressing.
      
      llvm-svn: 163743
      abb87d48
    • Manman Ren's avatar
      Release build: guard dump functions with · 19f49ac6
      Manman Ren authored
      "#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)"
      
      No functional change. Update r163339.
      
      llvm-svn: 163653
      19f49ac6
  8. Sep 06, 2012
  9. Aug 25, 2012
  10. Aug 11, 2012
  11. Aug 08, 2012
    • Manman Ren's avatar
      X86: enable CSE between CMP and SUB · 1be131ba
      Manman Ren authored
      We perform the following:
      1> Use SUB instead of CMP for i8,i16,i32 and i64 in ISel lowering.
      2> Modify MachineCSE to correctly handle implicit defs.
      3> Convert SUB back to CMP if possible at peephole.
      
      Removed pattern matching of (a>b) ? (a-b):0 and like, since they are handled
      by peephole now.
      
      rdar://11873276
      
      llvm-svn: 161462
      1be131ba
  12. Aug 06, 2012
  13. Aug 01, 2012
  14. Jul 24, 2012
  15. Jul 12, 2012
  16. Jul 01, 2012
  17. Jun 29, 2012
    • Manman Ren's avatar
      X86: add more GATHER intrinsics in LLVM · 98a5bf24
      Manman Ren authored
      Corrected type for index of llvm.x86.avx2.gather.d.pd.256
        from 256-bit to 128-bit.
      Corrected types for src|dst|mask of llvm.x86.avx2.gather.q.ps.256
        from 256-bit to 128-bit.
      
      Support the following intrinsics:
        llvm.x86.avx2.gather.d.q, llvm.x86.avx2.gather.q.q
        llvm.x86.avx2.gather.d.q.256, llvm.x86.avx2.gather.q.q.256
        llvm.x86.avx2.gather.d.d, llvm.x86.avx2.gather.q.d
        llvm.x86.avx2.gather.d.d.256, llvm.x86.avx2.gather.q.d.256
      
      llvm-svn: 159402
      98a5bf24
  18. Jun 26, 2012
    • Manman Ren's avatar
      X86: add GATHER intrinsics (AVX2) in LLVM · a0982041
      Manman Ren authored
      Support the following intrinsics:
      llvm.x86.avx2.gather.d.pd, llvm.x86.avx2.gather.q.pd
      llvm.x86.avx2.gather.d.pd.256, llvm.x86.avx2.gather.q.pd.256
      llvm.x86.avx2.gather.d.ps, llvm.x86.avx2.gather.q.ps
      llvm.x86.avx2.gather.d.ps.256, llvm.x86.avx2.gather.q.ps.256
      
      Modified Disassembler to handle VSIB addressing mode.
      
      llvm-svn: 159221
      a0982041
  19. May 23, 2012
  20. May 16, 2012
  21. Apr 12, 2012
  22. Apr 09, 2012
    • Chandler Carruth's avatar
      Cleanup and relax a restriction on the matching of global offsets into · 3779ac10
      Chandler Carruth authored
      x86 addressing modes. This allows PIE-based TLS offsets to fit directly
      into an addressing mode immediate offset, which is the last remaining
      code quality issue from PR12380. With this patch, that PR is completely
      fixed.
      
      To understand why this patch is correct to match these offsets into
      addressing mode immediates, break it down by cases:
      1) 32-bit is trivially correct, and unmodified here.
      2) 64-bit non-small mode is unchanged and never matches.
      3) 64-bit small PIC code which is RIP-relative is handled specially in
         the match to try to fit RIP into the base register. If it fails, it
         now early exits. This behavior is unchanged by the patch.
      4) 64-bit small non-PIC code which is not RIP-relative continues to work
         as it did before. The reason these immediates are safe is because the
         ABI ensures they fit in small mode. This behavior is unchanged.
      5) 64-bit small PIC code which is *not* using RIP-relative addressing.
         This is the only case changed by the patch, and the primary place you
         see it is in TLS, either the win64 section offset TLS or Linux
         local-exec TLS model in a PIC compilation. Here the ABI again ensures
         that the immediates fit because we are in small mode, and any other
         operations required due to the PIC relocation model have been handled
         externally to the Wrapper node (extra loads etc are made around the
         wrapper node in ISelLowering).
      
      I've tested this as much as I can comparing it with GCC's output, and
      everything appears safe. I discussed this with Anton and it made sense
      to him at least at face value. That said, if there are issues with PIC
      code after this patch, yell and we can revert it.
      
      llvm-svn: 154304
      3779ac10
  23. Apr 04, 2012
    • Rafael Espindola's avatar
      Always compute all the bits in ComputeMaskedBits. · ba0a6cab
      Rafael Espindola authored
      This allows us to keep passing reduced masks to SimplifyDemandedBits, but
      know about all the bits if SimplifyDemandedBits fails. This allows instcombine
      to simplify cases like the one in the included testcase.
      
      llvm-svn: 154011
      ba0a6cab
  24. Mar 29, 2012
    • Benjamin Kramer's avatar
      Replace assert(0) with llvm_unreachable to avoid warnings about dropping off... · 8619c37b
      Benjamin Kramer authored
      Replace assert(0) with llvm_unreachable to avoid warnings about dropping off the end of a non-void function in Release builds.
      
      llvm-svn: 153643
      8619c37b
    • Joel Jones's avatar
      For X86, change load/dec-or-inc/store into dec-or-inc, respectively. · 68d59e8a
      Joel Jones authored
      This is a code change to add support for changing instruction sequences of the form:
      
        load
        inc/dec of 8/16/32/64 bits
        store
      
      into the appropriate X86 inc/dec through memory instruction:
      
        inc[qlwb] / dec[qlwb]
      
      The checks that were in X86DAGToDAGISel::Select(SDNode *Node)>>ISD::STORE have been extracted to isLoadIncOrDecStore and reworked to use the better
      named wrappers for getOperand(unsigned) (e.g. getOffset()) and replaced Chain.getNode() with LoadNode.  The comments have also been expanded.
      
      llvm-svn: 153635
      68d59e8a
    • Joel Jones's avatar
      Reverted to revision 153616 to unblock build · b474099e
      Joel Jones authored
      llvm-svn: 153623
      b474099e
    • Joel Jones's avatar
      For X86, change load/dec-or-inc/store into dec-or-inc, respectively. · b88c81fe
      Joel Jones authored
      This is a code change to add support for changing instruction sequences of the form:
      
        load
        inc/dec of 8/16/32/64 bits
        store
      
      into the appropriate X86 inc/dec through memory instruction:
      
        inc[qlwb] / dec[qlwb]
      
      The checks that were in X86DAGToDAGISel::Select(SDNode *Node)>>ISD::STORE have been extracted to isLoadIncOrDecStore and reworked to use the better
      named wrappers for getOperand(unsigned) (e.g. getOffset()) and replaced Chain.getNode() with LoadNode.  The comments have also been expanded.
      
      llvm-svn: 153617
      b88c81fe
  25. Mar 27, 2012
  26. Mar 17, 2012
  27. Mar 09, 2012
  28. Feb 22, 2012
  29. Feb 16, 2012
Loading