Skip to content
  1. Apr 08, 2012
    • Chandler Carruth's avatar
      Remove an over zealous assert. The assert was trying to catch places · bed1abf9
      Chandler Carruth authored
      where a chain outside of the loop block-set ended up in the worklist for
      scheduling as part of the contiguous loop. However, asserting the first
      block in the chain is in the loop-set isn't a valid check -- we may be
      forced to drag a chain into the worklist due to one block in the chain
      being part of the loop even though the first block is *not* in the loop.
      This occurs when we have been forced to form a chain early due to
      un-analyzable branches.
      
      No test case here as I have no idea how to even begin reducing one, and
      it will be hopelessly fragile. We have to somehow end up with a loop
      header of an inner loop which is a successor of a basic block with an
      unanalyzable pair of branch instructions. Ow. Self-host triggers it so
      it is unlikely it will regress.
      
      This at least gets block placement back to passing selfhost and the test
      suite. There are still a lot of slowdown that I don't like coming out of
      block placement, although there are now also a lot of speedups. =[ I'm
      seeing swings in both directions up to 10%. I'm going to try to find
      time to dig into this and see if we can turn this on for 3.1 as it does
      a really good job of cleaning up after some loops that degraded with the
      inliner changes.
      
      llvm-svn: 154287
      bed1abf9
    • Chandler Carruth's avatar
      Add a debug-only 'dump' method to the BlockChain structure to ease · 49158908
      Chandler Carruth authored
      debugging.
      
      llvm-svn: 154286
      49158908
    • Craig Topper's avatar
      Turn avx2 vinserti128 intrinsic calls into INSERT_SUBVECTOR DAG nodes and... · d024cef2
      Craig Topper authored
      Turn avx2 vinserti128 intrinsic calls into INSERT_SUBVECTOR DAG nodes and remove patterns for selecting the intrinsic. Similar was already done for avx1.
      
      llvm-svn: 154272
      d024cef2
  2. Apr 07, 2012
  3. Apr 05, 2012
  4. Apr 04, 2012
  5. Apr 03, 2012
  6. Apr 02, 2012
  7. Apr 01, 2012
    • Nadav Rotem's avatar
      This commit contains a few changes that had to go in together. · b0783508
      Nadav Rotem authored
      1. Simplify xor/and/or (bitcast(A), bitcast(B)) -> bitcast(op (A,B))
         (and also scalar_to_vector).
      
      2. Xor/and/or are indifferent to the swizzle operation (shuffle of one src).
         Simplify xor/and/or (shuff(A), shuff(B)) -> shuff(op (A, B))
      
      3. Optimize swizzles of shuffles:  shuff(shuff(x, y), undef) -> shuff(x, y).
      
      4. Fix an X86ISelLowering optimization which was very bitcast-sensitive.
      
      Code which was previously compiled to this:
      
      movd    (%rsi), %xmm0
      movdqa  .LCPI0_0(%rip), %xmm2
      pshufb  %xmm2, %xmm0
      movd    (%rdi), %xmm1
      pshufb  %xmm2, %xmm1
      pxor    %xmm0, %xmm1
      pshufb  .LCPI0_1(%rip), %xmm1
      movd    %xmm1, (%rdi)
      ret
      
      Now compiles to this:
      
      movl    (%rsi), %eax
      xorl    %eax, (%rdi)
      ret
      
      llvm-svn: 153848
      b0783508
    • Lang Hames's avatar
      Fix typo. · 652f2127
      Lang Hames authored
      llvm-svn: 153846
      652f2127
    • Andrew Trick's avatar
      misched: Add finalizeScheduler to complete the target interface. · 779b32a4
      Andrew Trick authored
      llvm-svn: 153827
      779b32a4
  8. Mar 31, 2012
  9. Mar 30, 2012
  10. Mar 29, 2012
  11. Mar 28, 2012
Loading