Skip to content
  1. Aug 24, 2011
  2. Aug 23, 2011
  3. Aug 22, 2011
  4. Aug 18, 2011
  5. Aug 17, 2011
  6. Aug 16, 2011
    • Bruno Cardoso Lopes's avatar
      Instead of always leaving the work to the generic legalizer when · 2e99f1b3
      Bruno Cardoso Lopes authored
      there is no support for native 256-bit shuffles, be more smart in some
      cases, for example, when you can extract specific 128-bit parts and use
      regular 128-bit shuffles for them. Example:
      
      For this shuffle:
        shufflevector <4 x i64> %a, <4 x i64> %b, <4 x i32>
                      <i32 1, i32 0, i32 7, i32 6>
      
      This was expanded to:
        vextractf128  $1, %ymm1, %xmm2
        vpextrq $0, %xmm2, %rax
        vmovd %rax, %xmm1
        vpextrq $1, %xmm2, %rax
        vmovd %rax, %xmm2
        vpunpcklqdq %xmm1, %xmm2, %xmm1
        vpextrq $0, %xmm0, %rax
        vmovd %rax, %xmm2
        vpextrq $1, %xmm0, %rax
        vmovd %rax, %xmm0
        vpunpcklqdq %xmm2, %xmm0, %xmm0
        vinsertf128 $1, %xmm1, %ymm0, %ymm0
        ret
      
      Now we get:
        vshufpd $1, %xmm0, %xmm0, %xmm0
        vextractf128  $1, %ymm1, %xmm1
        vshufpd $1, %xmm1, %xmm1, %xmm1
        vinsertf128 $1, %xmm1, %ymm0, %ymm0
      
      llvm-svn: 137733
      2e99f1b3
  7. Aug 15, 2011
  8. Aug 12, 2011
  9. Aug 11, 2011
  10. Aug 10, 2011
  11. Aug 09, 2011
  12. Aug 08, 2011
  13. Aug 04, 2011
  14. Aug 03, 2011
  15. Aug 02, 2011
  16. Aug 01, 2011
  17. Jul 29, 2011
Loading