llvm-6502/test
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
..
Analysis
Archive
Assembler Move "atomic" and "volatile" designations on instructions after the opcode 2011-08-12 22:50:01 +00:00
Bindings/Ocaml
Bitcode
BugPoint
CodeGen Instead of always leaving the work to the generic legalizer when 2011-08-16 18:21:54 +00:00
DebugInfo
ExecutionEngine
Feature
FrontendC++ Fix test. 2011-08-13 17:06:34 +00:00
FrontendObjC
FrontendObjC++
Integer
lib
Linker
LLVMC
MC ARM .align NOP padding uses different encoding pre-ARMv6. 2011-08-16 17:06:20 +00:00
Object
Other
Scripts
TableGen
Transforms Fix test. 2011-08-16 01:42:56 +00:00
Unit
Verifier
CMakeLists.txt
lit.cfg
lit.site.cfg.in
Makefile
Makefile.tests
site.exp.in
TestRunner.sh