Skip to content
  1. Sep 02, 2009
  2. Aug 27, 2009
  3. Aug 13, 2009
  4. Aug 11, 2009
  5. Aug 05, 2009
  6. Jul 31, 2009
  7. Jul 22, 2009
  8. Jul 14, 2009
  9. Jul 13, 2009
    • Owen Anderson's avatar
      Begin the painful process of tearing apart the rat'ss nest that is... · 53a52215
      Owen Anderson authored
      Begin the painful process of tearing apart the rat'ss nest that is Constants.cpp and ConstantFold.cpp.
      This involves temporarily hard wiring some parts to use the global context.  This isn't ideal, but it's
      the only way I could figure out to make this process vaguely incremental.
      
      llvm-svn: 75445
      53a52215
  10. Jul 11, 2009
    • Torok Edwin's avatar
      assert(0) -> LLVM_UNREACHABLE. · 56d06597
      Torok Edwin authored
      Make llvm_unreachable take an optional string, thus moving the cerr<< out of
      line.
      LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for
      NDEBUG builds.
      
      llvm-svn: 75379
      56d06597
  11. Jul 10, 2009
  12. Jul 09, 2009
  13. Jul 02, 2009
  14. Jul 01, 2009
  15. Jun 27, 2009
    • Chris Lattner's avatar
      cce1589e
    • Chris Lattner's avatar
      d17366ae
    • Chris Lattner's avatar
      Reimplement rip-relative addressing in the X86-64 backend. The new · fea81da4
      Chris Lattner authored
      implementation primarily differs from the former in that the asmprinter
      doesn't make a zillion decisions about whether or not something will be
      RIP relative or not.  Instead, those decisions are made by isel lowering
      and propagated through to the asm printer.  To achieve this, we:
      
      1. Represent RIP relative addresses by setting the base of the X86 addr
         mode to X86::RIP.
      2. When ISel Lowering decides that it is safe to use RIP, it lowers to
         X86ISD::WrapperRIP.  When it is unsafe to use RIP, it lowers to
         X86ISD::Wrapper as before.
      3. This removes isRIPRel from X86ISelAddressMode, representing it with
         a basereg of RIP instead.
      4. The addressing mode matching logic in isel is greatly simplified.
      5. The asmprinter is greatly simplified, notably the "NotRIPRel" predicate
         passed through various printoperand routines is gone now.
      6. The various symbol printing routines in asmprinter now no longer infer
         when to emit (%rip), they just print the symbol.
      
      I think this is a big improvement over the previous situation.  It does have
      two small caveats though: 1. I implemented a horrible "no-rip" modifier for
      the inline asm "P" constraint modifier.  This is a short term hack, there is
      a much better, but more involved, solution.  2. I had to xfail an 
      -aggressive-remat testcase because it isn't handling the use of RIP in the
      constant-pool reading instruction.  This specific test is easy to fix without
      -aggressive-remat, which I intend to do next.
      
      llvm-svn: 74372
      fea81da4
    • Chris Lattner's avatar
      Fix PR4466 by making fastisel set operand flags correctly. · a3260c0b
      Chris Lattner authored
      llvm-svn: 74366
      a3260c0b
  16. Jun 12, 2009
    • Arnold Schwaighofer's avatar
      Fix Bug 4278: X86-64 with -tailcallopt calling convention · e3a018d7
      Arnold Schwaighofer authored
      out of sync with regular cc.
      
      The only difference between the tail call cc and the normal
      cc was that one parameter register - R9 - was reserved for
      calling functions through a function pointer. After time the
      tail call cc has gotten out of sync with the regular cc. 
      
      We can use R11 which is also caller saved but not used as
      parameter register for potential function pointers and
      remove the special tail call cc on x86-64.
      
      llvm-svn: 73233
      e3a018d7
  17. Jun 03, 2009
  18. May 09, 2009
  19. May 04, 2009
  20. Apr 27, 2009
  21. Apr 13, 2009
    • Dan Gohman's avatar
      Implement x86 h-register extract support. · 57d6bd36
      Dan Gohman authored
       - Add patterns for h-register extract, which avoids a shift and mask,
         and in some cases a temporary register.
       - Add address-mode matching for turning (X>>(8-n))&(255<<n), where
         n is a valid address-mode scale value, into an h-register extract
         and a scaled-offset address.
       - Replace X86's MOV32to32_ and related instructions with the new
         target-independent COPY_TO_SUBREG instruction.
      
      On x86-64 there are complicated constraints on h registers, and
      CodeGen doesn't currently provide a high-level way to express all of them,
      so they are handled with a bunch of special code. This code currently only
      supports extracts where the result is used by a zero-extend or a store,
      though these are fairly common.
      
      These transformations are not always beneficial; since there are only
      4 h registers, they sometimes require extra move instructions, and
      this sometimes increases register pressure because it can force out
      values that would otherwise be in one of those registers. However,
      this appears to be relatively uncommon.
      
      llvm-svn: 68962
      57d6bd36
  22. Apr 12, 2009
Loading