Files
archived-llvm/test/CodeGen/X86
Bruno Cardoso Lopes 3b86598cfa Instead of always leaving the work to the generic legalizer when
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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137733 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-16 18:21:54 +00:00
..
2011-04-15 00:32:41 +00:00
2011-07-02 20:43:08 +00:00
2009-09-23 18:20:27 +00:00
2010-09-30 23:57:10 +00:00
2010-09-30 23:57:10 +00:00
2011-07-02 20:42:53 +00:00
2011-01-16 18:02:57 +00:00
2011-03-09 22:07:31 +00:00
2011-06-19 12:14:34 +00:00
2009-11-18 21:33:35 +00:00
2009-11-26 00:35:01 +00:00
2010-02-15 22:03:29 +00:00
2010-07-13 18:14:47 +00:00
2010-10-11 21:08:42 +00:00
2011-03-08 20:19:10 +00:00
2011-01-16 18:02:57 +00:00
2010-03-03 00:35:56 +00:00
2010-11-29 22:34:55 +00:00
2011-08-09 03:04:23 +00:00
2011-08-09 03:04:23 +00:00
2011-08-09 03:04:23 +00:00
2011-08-09 03:04:23 +00:00
2010-04-17 16:29:15 +00:00
2011-07-02 20:42:36 +00:00
2011-05-26 18:00:32 +00:00
2010-04-17 03:43:36 +00:00
2011-07-02 20:42:33 +00:00
2010-05-08 04:47:54 +00:00
2011-04-25 10:12:01 +00:00
2011-01-01 21:58:41 +00:00
2011-04-17 02:36:27 +00:00
2011-02-16 01:08:31 +00:00
2011-03-23 23:11:02 +00:00
2010-04-17 16:29:15 +00:00
2011-07-02 20:42:25 +00:00
2009-11-11 07:11:02 +00:00
2009-11-11 07:11:02 +00:00
2010-01-12 04:52:47 +00:00
2011-03-11 21:52:04 +00:00
2010-09-30 23:57:10 +00:00
2010-09-30 23:57:10 +00:00
2010-09-30 23:57:10 +00:00
2010-09-30 23:57:10 +00:00
2010-10-05 21:58:12 +00:00
2010-10-01 05:08:18 +00:00
2010-09-30 23:57:10 +00:00
2010-03-25 20:01:07 +00:00
2011-06-28 06:25:03 +00:00
2011-04-05 00:32:44 +00:00
2011-04-05 00:32:44 +00:00
2010-09-17 22:28:18 +00:00
2011-06-02 20:02:48 +00:00
2011-07-20 03:09:11 +00:00
2011-01-16 18:02:57 +00:00
2010-04-28 01:53:13 +00:00
2010-04-28 01:53:13 +00:00
2011-03-23 23:11:02 +00:00
2010-12-02 20:17:34 +00:00
2011-04-05 00:32:44 +00:00
2011-07-26 22:45:39 +00:00
2011-06-14 23:47:36 +00:00
2010-11-27 20:43:02 +00:00
2010-09-30 23:57:10 +00:00
2010-02-27 23:53:53 +00:00
2010-09-30 23:57:10 +00:00
2011-02-20 12:37:50 +00:00
2010-12-20 20:10:50 +00:00
2011-03-11 21:52:04 +00:00
2009-12-15 03:00:32 +00:00