llvm-6502/lib
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 A few places where we want to skip the landingpad instruction for insertion. 2011-08-16 04:52:55 +00:00
Archive Rewrite the CMake build to use explicit dependencies between libraries, 2011-07-29 00:14:25 +00:00
AsmParser Move "atomic" and "volatile" designations on instructions after the opcode 2011-08-12 22:50:01 +00:00
Bitcode Initial commit of the 'landingpad' instruction. 2011-08-12 20:24:12 +00:00
CodeGen Remove unnecessary version check. 2011-08-16 17:41:41 +00:00
CompilerDriver Build CompilerDriver library. 2011-03-12 22:01:42 +00:00
ExecutionEngine EE: Provide the symbol "lseek64" explicitly with <unistd.h> on Linux glibc. 2011-08-14 00:34:04 +00:00
Linker switch to the new struct api. 2011-08-12 18:07:26 +00:00
MC MachOWriter: Don't crash on fixups with arithmetic, emit a relocation instead. This matches what as does. 2011-08-12 01:51:29 +00:00
Object Rewrite the CMake build to use explicit dependencies between libraries, 2011-07-29 00:14:25 +00:00
Support Silence a bunch (but not all) "variable written but not read" warnings 2011-08-12 14:54:45 +00:00
Target Instead of always leaving the work to the generic legalizer when 2011-08-16 18:21:54 +00:00
Transforms Add a mechanism for optimisation plugins to register passes that all front ends can use without needing to be aware of the plugin (or the plugin be aware of the front end). 2011-08-16 13:58:41 +00:00
VMCore Duncan pointed out that the LandingPadInst might read memory. (It might also 2011-08-15 21:14:31 +00:00
CMakeLists.txt Build CompilerDriver library. 2011-03-12 22:01:42 +00:00
Makefile