Skip to content
  1. Jul 09, 2013
  2. Jun 27, 2013
  3. Jun 19, 2013
  4. Jun 10, 2013
    • Tim Northover's avatar
      X86: Stop LEA64_32r doing unspeakable things to its arguments. · 6833e3fd
      Tim Northover authored
      Previously LEA64_32r went through virtually the entire backend thinking it was
      using 32-bit registers until its blissful illusions were cruelly snatched away
      by MCInstLower and 64-bit equivalents were substituted at the last minute.
      
      This patch makes it behave normally, and take 64-bit registers as sources all
      the way through. Previous uses (for 32-bit arithmetic) are accommodated via
      SUBREG_TO_REG instructions which make the types and classes agree properly.
      
      llvm-svn: 183693
      6833e3fd
  5. Jun 06, 2013
  6. Jun 05, 2013
  7. Jun 01, 2013
  8. May 31, 2013
    • Tim Northover's avatar
      X86: change MOV64ri64i32 into MOV32ri64 · d4736d67
      Tim Northover authored
      The MOV64ri64i32 instruction required hacky MCInst lowering because it was
      allocated as setting a GR64, but the eventual instruction ("movl") only set a
      GR32. This converts it into a so-called "MOV32ri64" which still accepts a
      (appropriate) 64-bit immediate but defines a GR32. This is then converted to
      the full GR64 by a SUBREG_TO_REG operation, thus keeping everyone happy.
      
      llvm-svn: 182991
      d4736d67
  9. May 30, 2013
    • Tim Northover's avatar
      X86: use sub-register sequences for MOV*r0 operations · 64ec0ff4
      Tim Northover authored
      Instead of having a bunch of separate MOV8r0, MOV16r0, ... pseudo-instructions,
      it's better to use a single MOV32r0 (which will expand to "xorl %reg, %reg")
      and obtain other sizes with EXTRACT_SUBREG and SUBREG_TO_REG. The encoding is
      smaller and partial register updates can sometimes be avoided.
      
      Until recently, this sequence was a barrier to rematerialization though. That
      should now be fixed so it's an appropriate time to make the change.
      
      llvm-svn: 182928
      64ec0ff4
  10. May 25, 2013
  11. Apr 20, 2013
  12. Apr 13, 2013
  13. Mar 29, 2013
    • Michael Liao's avatar
      Skip moving call address loading into callseq when targets prefer register indirect call. · 96b42608
      Michael Liao authored
      To enable a load of a call address to be folded with that call, this
      load is moved from outside of callseq into callseq. Such a moving
      adds a non-glued node (that load) into a glued sequence. This non-glue
      load is only removed when DAG selection folds them into a memory form
      call instruction. When such instruction selection is disabled, it breaks
      DAG schedule.
      
      To prevent that, such moving is disabled when target favors register
      indirect call.
      
      Previous workaround disabling CALL32m/CALL64m insn selection is removed.
      
      llvm-svn: 178308
      96b42608
  14. Feb 19, 2013
  15. Jan 13, 2013
  16. Jan 06, 2013
  17. Jan 05, 2013
  18. Jan 02, 2013
    • Chandler Carruth's avatar
      Move all of the header files which are involved in modelling the LLVM IR · 9fb823bb
      Chandler Carruth authored
      into their new header subdirectory: include/llvm/IR. This matches the
      directory structure of lib, and begins to correct a long standing point
      of file layout clutter in LLVM.
      
      There are still more header files to move here, but I wanted to handle
      them in separate commits to make tracking what files make sense at each
      layer easier.
      
      The only really questionable files here are the target intrinsic
      tablegen files. But that's a battle I'd rather not fight today.
      
      I've updated both CMake and Makefile build systems (I think, and my
      tests think, but I may have missed something).
      
      I've also re-sorted the includes throughout the project. I'll be
      committing updates to Clang, DragonEgg, and Polly momentarily.
      
      llvm-svn: 171366
      9fb823bb
  19. Dec 30, 2012
  20. Dec 19, 2012
  21. Dec 03, 2012
    • Chandler Carruth's avatar
      Use the new script to sort the includes of every file under lib. · ed0881b2
      Chandler Carruth authored
      Sooooo many of these had incorrect or strange main module includes.
      I have manually inspected all of these, and fixed the main module
      include to be the nearest plausible thing I could find. If you own or
      care about any of these source files, I encourage you to take some time
      and check that these edits were sensible. I can't have broken anything
      (I strictly added headers, and reordered them, never removed), but they
      may not be the headers you'd really like to identify as containing the
      API being implemented.
      
      Many forward declarations and missing includes were added to a header
      files to allow them to parse cleanly when included first. The main
      module rule does in fact have its merits. =]
      
      llvm-svn: 169131
      ed0881b2
  22. Nov 15, 2012
  23. Nov 10, 2012
  24. Oct 16, 2012
    • Michael Liao's avatar
      Add __builtin_setjmp/_longjmp supprt in X86 backend · 97bf363a
      Michael Liao authored
      - Besides used in SjLj exception handling, __builtin_setjmp/__longjmp is also
        used as a light-weight replacement of setjmp/longjmp which are used to
        implementation continuation, user-level threading, and etc. The support added
        in this patch ONLY addresses this usage and is NOT intended to support SjLj
        exception handling as zero-cost DWARF exception handling is used by default
        in X86.
      
      llvm-svn: 165989
      97bf363a
  25. Oct 09, 2012
  26. Oct 05, 2012
  27. Oct 03, 2012
    • Evan Cheng's avatar
      Fix a serious X86 instruction selection bug. In · 214156c4
      Evan Cheng authored
      X86DAGToDAGISel::PreprocessISelDAG(), isel is moving load inside
      callseq_start / callseq_end so it can be folded into a call. This can
      create a cycle in the DAG when the call is glued to a copytoreg. We
      have been lucky this hasn't caused too many issues because the pre-ra
      scheduler has special handling of call sequences. However, it has
      caused a crash in a specific tailcall case.
      
      rdar://12393897
      
      llvm-svn: 165072
      214156c4
  28. Sep 28, 2012
  29. Sep 27, 2012
  30. Sep 26, 2012
  31. Sep 25, 2012
  32. 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
  33. Sep 13, 2012
Loading