Skip to content
  1. Jul 15, 2009
  2. Jul 14, 2009
  3. Jul 11, 2009
    • Chris Lattner's avatar
      Fix PR4533, which is about buggy codegen in x86-64 -static mode. · e9190009
      Chris Lattner authored
      Basically, using:
        lea symbol(%rip), %rax
      
      is not valid in -static mode, because the current RIP may not be
      within 32-bits of "symbol" when an app is built partially pic and
      partially static.  The fix for this is to compile it to:
      
        lea symbol, %rax
      
      It would be better to codegen this as:
      
        movq $symbol, %rax
      
      but that will come next.
      
      
      The hard part of fixing this bug was fixing abi-isel, which was actively
      testing for the wrong behavior.  Also, the RUN lines are completely impossible
      to understand what they are testing.  To help with this, convert the -static 
      x86-64 codegen tests to use filecheck.  This is much more stable and makes it
      more clear what the codegen is expected to be.
      
      llvm-svn: 75382
      e9190009
    • 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
  4. Jul 10, 2009
  5. Jul 09, 2009
  6. Jul 08, 2009
  7. Jul 07, 2009
  8. Jul 03, 2009
    • Tilmann Scheller's avatar
      Add NumFixedArgs attribute to CallSDNode which indicates the number of fixed... · aea6059e
      Tilmann Scheller authored
      Add NumFixedArgs attribute to CallSDNode which indicates the number of fixed arguments in a vararg call.
      
      With the SVR4 ABI on PowerPC, vector arguments for vararg calls are passed differently depending on whether they are a fixed or a variable argument. Variable vector arguments always go into memory, fixed vector arguments are put 
      into vector registers. If there are no free vector registers available, fixed vector arguments are put on the stack.
      
      The NumFixedArgs attribute allows to decide for an argument in a vararg call whether it belongs to the fixed or variable portion of the parameter list.
      
      llvm-svn: 74764
      aea6059e
  9. Jul 01, 2009
  10. Jun 30, 2009
    • David Greene's avatar
      · 8adf1fdc
      David Greene authored
      Add a 256-bit register class and YMM registers.
      
      llvm-svn: 74469
      8adf1fdc
  11. Jun 29, 2009
    • Owen Anderson's avatar
      Add a target-specific DAG combine on X86 to fold the common pattern of · 45c299ef
      Owen Anderson authored
      fence-atomic-fence down to just the atomic op.  This is possible thanks to
      X86's relatively strong memory model, which guarantees that locked instructions
      (which are used to implement atomics) are implicit fences.
      
      llvm-svn: 74435
      45c299ef
    • David Greene's avatar
      · f92ba97c
      David Greene authored
      Add more vector ValueTypes for AVX and other extended vector instruction
      sets.
      
      llvm-svn: 74427
      f92ba97c
  12. Jun 27, 2009
    • Chris Lattner's avatar
      ae0acfce
    • 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
Loading