llvm-6502/lib
Bruno Cardoso Lopes 807360ab08 [x86] Combine x86mmx/i64 to v2i64 conversion to use scalar_to_vector
Handle the poor codegen for i64/x86xmm->v2i64 (%mm -> %xmm) moves. Instead of
using stack store/load pair to do the job, use scalar_to_vector directly, which
in the MMX case can use movq2dq. This was the current behavior prior to
improvements for vector legalization of extloads in r213897.

This commit fixes the regression and as a side-effect also remove some
unnecessary shuffles.

In the new attached testcase, we go from:

pshufw  $-18, (%rdi), %mm0
movq    %mm0, -8(%rsp)
movq    -8(%rsp), %xmm0
pshufd  $-44, %xmm0, %xmm0
movd    %xmm0, %eax
...

To:

pshufw  $-18, (%rdi), %mm0
movq2dq %mm0, %xmm0
movd    %xmm0, %eax
...

Differential Revision: http://reviews.llvm.org/D7126
rdar://problem/19413324

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226953 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-23 22:44:16 +00:00
..
Analysis [PM] Actually add the new pass manager support for the assumption cache. 2015-01-22 21:53:09 +00:00
AsmParser AsmParser: PARSE_MD_FIELD() => ParseMDField(), NFC 2015-01-20 02:42:29 +00:00
Bitcode IR: DwarfNode => DebugNode, NFC 2015-01-22 22:47:44 +00:00
CodeGen Move the accessor functions from DIExpression::iterator into a wrapper 2015-01-23 21:24:41 +00:00
DebugInfo [cleanup] Re-sort all the #include lines in LLVM using 2015-01-14 11:23:27 +00:00
ExecutionEngine Fix the MSVC build with the new Orc JIT APIs 2015-01-23 22:25:47 +00:00
IR llvm-cov: clang-format the GCOV files (NFC) 2015-01-23 22:38:01 +00:00
IRReader Remove unused variable. NFC. 2014-11-06 23:16:57 +00:00
LineEditor
Linker [llvm link] Destroy ConstantArrays in LLVMContext if they are not used. 2015-01-20 19:24:59 +00:00
LTO [PM] Separate the InstCombiner from its pass. 2015-01-20 22:44:35 +00:00
MC Add STB_GNU_UNIQUE to the ELF writer. 2015-01-23 04:44:35 +00:00
Object [Object][ELF] Test unknown type. 2015-01-23 21:58:09 +00:00
Option [cleanup] Re-sort all the #include lines in LLVM using 2015-01-14 11:23:27 +00:00
ProfileData Replace size method call of containers to empty method where appropriate 2015-01-15 11:41:30 +00:00
Support [Object][ELF] Test unknown type. 2015-01-23 21:58:09 +00:00
TableGen Replace size method call of containers to empty method where appropriate 2015-01-15 11:41:30 +00:00
Target [x86] Combine x86mmx/i64 to v2i64 conversion to use scalar_to_vector 2015-01-23 22:44:16 +00:00
Transforms LowerSwitch: replace unreachable default with popular case destination 2015-01-23 20:43:51 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile