Skip to content
  1. Mar 06, 2012
  2. Mar 05, 2012
  3. Mar 04, 2012
  4. Mar 02, 2012
    • Chad Rosier's avatar
      Prevent obscure and incorrect tail-call optimization. · f5e086f1
      Chad Rosier authored
      In this instance we are generating the tail-call during legalizeDAG.  The 2nd
      floor call can't be a tail call because it clobbers %xmm1, which is defined by
      the first floor call.  The first floor call can't be a tail-call because it's
      not in the tail position.  The only reasonable way I could think to fix this
      in a target-independent manner was to check for glue logic on the copy reg.
      
      rdar://10930395
      
      llvm-svn: 151877
      f5e086f1
  5. Mar 01, 2012
  6. Feb 29, 2012
  7. Feb 28, 2012
  8. Feb 27, 2012
  9. Feb 25, 2012
    • NAKAMURA Takumi's avatar
      Target/X86: Fix assertion failures and warnings caused by r151382 _ftol2... · bdf94879
      NAKAMURA Takumi authored
      Target/X86: Fix assertion failures and warnings caused by r151382 _ftol2 lowering for i386-*-win32 targets. Patch by Joe Groff.
      
      [Joe Groff] Hi everyone. My previous patch applied as r151382 had a few problems:
      Clang raised a warning, and X86 LowerOperation would assert out for
      fptoui f64 to i32 because it improperly lowered to an illegal
      BUILD_PAIR. Here's a patch that addresses these issues. Let me know if
      any other changes are necessary. Thanks.
      
      llvm-svn: 151432
      bdf94879
  10. Feb 24, 2012
  11. Feb 23, 2012
    • Kevin Enderby's avatar
      Updated the llvm-mc disassembler C API to support for the X86 target. · 6fbcd8d4
      Kevin Enderby authored
      rdar://10873652
      
      As part of this I updated the llvm-mc disassembler C API to always call the
      SymbolLookUp call back even if there is no getOpInfo call back.  If there is a
      getOpInfo call back that is tried first and then if that gets no information
      then the  SymbolLookUp is called.  I also made the code more robust by
      memset(3)'ing to zero the LLVMOpInfo1 struct before then setting
      SymbolicOp.Value before for the call to getOpInfo.  And also don't use any
      values from the  LLVMOpInfo1 struct if getOpInfo returns 0.  And also don't
      use any of the ReferenceType or ReferenceName values from SymbolLookUp if it
      returns NULL. rdar://10873563 and rdar://10873683
      
      For the X86 target also fixed bugs so the annotations get printed. 
      
      Also fixed a few places in the ARM target that was not producing symbolic
      operands for some instructions.  rdar://10878166
      
      llvm-svn: 151267
      6fbcd8d4
  12. Feb 22, 2012
  13. Feb 19, 2012
  14. Feb 18, 2012
  15. Feb 17, 2012
  16. Feb 16, 2012
    • Jakob Stoklund Olesen's avatar
      Remove the YMM_HI_6_15 hack. · bc6ba479
      Jakob Stoklund Olesen authored
      Call clobbers are now represented with register mask operands.  The
      regmask can easily represent the fact that xmm6 is call-preserved while
      ymm6 isn't.  This is automatically computed by TableGen from the
      CalleeSavedRegs containing xmm6.
      
      llvm-svn: 150709
      bc6ba479
    • Jakob Stoklund Olesen's avatar
      Use the same CALL instructions for Windows as for everything else. · 97e3115d
      Jakob Stoklund Olesen authored
      The different calling conventions and call-preserved registers are
      represented with regmask operands that are added dynamically.
      
      llvm-svn: 150708
      97e3115d
    • Jakob Stoklund Olesen's avatar
      Enable register mask operands for x86 calls. · 8a450cb2
      Jakob Stoklund Olesen authored
      Call instructions no longer have a list of 43 call-clobbered registers.
      Instead, they get a single register mask operand with a bit vector of
      call-preserved registers.
      
      This saves a lot of memory, 42 x 32 bytes = 1344 bytes per call
      instruction, and it speeds up building call instructions because those
      43 imp-def operands no longer need to be added to use-def lists. (And
      removed and shifted and re-added for every explicit call operand).
      
      Passes like LiveVariables, LiveIntervals, RAGreedy, PEI, and
      BranchFolding are significantly faster because they can deal with call
      clobbers in bulk.
      
      Overall, clang -O2 is between 0% and 8% faster, uniformly distributed
      depending on call density in the compiled code.  Debug builds using
      clang -O0 are 0% - 3% faster.
      
      I have verified that this patch doesn't change the assembly generated
      for the LLVM nightly test suite when building with -disable-copyprop
      and -disable-branch-fold.
      
      Branch folding behaves slightly differently in a few cases because call
      instructions have different hash values now.
      
      Copy propagation flushes its data structures when it crosses a register
      mask operand. This causes it to leave a few dead copies behind, on the
      order of 20 instruction across the entire nightly test suite, including
      SPEC. Fixing this properly would require the pass to use different data
      structures.
      
      llvm-svn: 150638
      8a450cb2
Loading