Skip to content
  1. Apr 02, 2012
  2. 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
  3. Mar 31, 2012
  4. Mar 30, 2012
  5. Mar 29, 2012
  6. Mar 27, 2012
  7. Mar 21, 2012
  8. Mar 20, 2012
  9. Mar 19, 2012
  10. Mar 18, 2012
  11. Mar 17, 2012
  12. Mar 15, 2012
  13. Mar 13, 2012
  14. Mar 12, 2012
  15. Mar 11, 2012
  16. Mar 10, 2012
  17. Mar 09, 2012
Loading