Skip to content
  1. Jun 01, 2013
    • Tim Northover's avatar
      X86: change MOV64ri64i32 into MOV32ri64 · 3a1fd4c0
      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.
      
      This fixes a typo in the opcode field of the original patch, which
      should make the legact JIT work again (& adds test for that problem).
      
      llvm-svn: 183068
      3a1fd4c0
    • Eric Christopher's avatar
      Temporarily Revert "X86: change MOV64ri64i32 into MOV32ri64" as it · e1e57e5e
      Eric Christopher authored
      seems to have caused PR16192 and other JIT related failures.
      
      llvm-svn: 183059
      e1e57e5e
  2. 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
  3. 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
    • Tim Northover's avatar
      X86: change zext moves to use sub-register infrastructure. · 04eb4234
      Tim Northover authored
      32-bit writes on amd64 zero out the high bits of the corresponding 64-bit
      register. LLVM makes use of this for zero-extension, but until now relied on
      custom MCLowering and other code to fixup instructions. Now we have proper
      handling of sub-registers, this can be done by creating SUBREG_TO_REG
      instructions at selection-time.
      
      Should be no change in functionality.
      
      llvm-svn: 182921
      04eb4234
  4. Mar 16, 2013
  5. Mar 14, 2013
    • Craig Topper's avatar
      Teach X86 MC instruction lowering that VMOVAPSrr and other VEX-encoded... · a66d81d5
      Craig Topper authored
      Teach X86 MC instruction lowering that VMOVAPSrr and other VEX-encoded register to register moves should be switched from using the MRMSrcReg form to the MRMDestReg form if the source register is a 64-bit extended register and the destination register is not. This allows the instruction to be encoded using the 2-byte VEX form instead of the 3-byte VEX form. The GNU assembler has similar behavior.
      
      llvm-svn: 177011
      a66d81d5
  6. Feb 01, 2013
    • David Sehr's avatar
      Two changes relevant to LEA and x32: · 8114a7a6
      David Sehr authored
      1) allows the use of RIP-relative addressing in 32-bit LEA instructions under
         x86-64 (ILP32 and LP64)
      2) separates the size of address registers in 64-bit LEA instructions from
         control by ILP32/LP64.
      
      llvm-svn: 174208
      8114a7a6
  7. 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
  8. 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
  9. Nov 26, 2012
  10. Oct 17, 2012
  11. Oct 16, 2012
  12. Oct 05, 2012
  13. Aug 28, 2012
  14. Aug 01, 2012
  15. Jun 07, 2012
  16. Jun 01, 2012
    • Hans Wennborg's avatar
      Implement the local-dynamic TLS model for x86 (PR3985) · 789acfb6
      Hans Wennborg authored
      This implements codegen support for accesses to thread-local variables
      using the local-dynamic model, and adds a clean-up pass so that the base
      address for the TLS block can be re-used between local-dynamic access on
      an execution path.
      
      llvm-svn: 157818
      789acfb6
  17. May 18, 2012
    • Jim Grosbach's avatar
      Refactor data-in-code annotations. · 4b63d2ae
      Jim Grosbach authored
      Use a dedicated MachO load command to annotate data-in-code regions.
      This is the same format the linker produces for final executable images,
      allowing consistency of representation and use of introspection tools
      for both object and executable files.
      
      Data-in-code regions are annotated via ".data_region"/".end_data_region"
      directive pairs, with an optional region type.
      
      data_region_directive := ".data_region" { region_type }
      region_type := "jt8" | "jt16" | "jt32" | "jta32"
      end_data_region_directive := ".end_data_region"
      
      The previous handling of ARM-style "$d.*" labels was broken and has
      been removed. Specifically, it didn't handle ARM vs. Thumb mode when
      marking the end of the section.
      
      rdar://11459456
      
      llvm-svn: 157062
      4b63d2ae
  18. May 11, 2012
  19. Mar 17, 2012
  20. Feb 16, 2012
  21. Feb 11, 2012
  22. Feb 05, 2012
  23. Jan 19, 2012
  24. Jan 13, 2012
  25. Nov 29, 2011
  26. Nov 19, 2011
  27. Oct 26, 2011
    • Rafael Espindola's avatar
      This commit introduces two fake instructions MORESTACK_RET and · 66393c12
      Rafael Espindola authored
      MORESTACK_RET_RESTORE_R10; which are lowered to a RET and a RET
      followed by a MOV respectively.  Having a fake instruction prevents
      the verifier from seeing a MachineBasicBlock end with a
      non-terminator (MOV).  It also prevents the rather eccentric case of a
      MachineBasicBlock ending with RET but having successors nevertheless.
      
      Patch by Sanjoy Das.
      
      llvm-svn: 143062
      66393c12
  28. Oct 05, 2011
  29. Sep 29, 2011
  30. Sep 07, 2011
  31. Jul 26, 2011
  32. Jul 15, 2011
  33. May 20, 2011
  34. May 19, 2011
  35. Dec 09, 2010
Loading