llvm-6502/lib
Chandler Carruth e328c5ea83 [x86] Tweak the rules surrounding 0,0 and 1,1 v2f64 shuffles and add
support for MOVDDUP which is really important for matrix multiply style
operations that do lots of non-vector-aligned load and splats.

The original motivation was to add support for MOVDDUP as the lack of it
regresses matmul_f64_4x4 by 5% or so. However, all of the rules here
were somewhat suspicious.

First, we should always be using the floating point domain shuffles,
regardless of how many copies we have to make as a movapd is *crazy*
faster than the domain switching cost on some chips. (Mostly because
movapd is crazy cheap.) Because SHUFPD can't do the copy-for-free trick
of the PSHUF instructions, there is no need to avoid canonicalizing on
UNPCK variants, so do that canonicalizing. This also ensures we have the
chance to form MOVDDUP. =]

Second, we assume SSE2 support when doing any vector lowering, and given
that we should just use UNPCKLPD and UNPCKHPD as they can operate on
registers or memory. If vectors get spilled or come from memory at all
this is going to allow the load to be folded into the operation. If we
want to optimize for encoding size (the only difference, and only
a 2 byte difference) it should be done *much* later, likely after RA.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217332 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-07 12:02:14 +00:00
..
Analysis Add override to overriden virtual methods, remove virtual keywords. 2014-09-03 11:41:21 +00:00
AsmParser Fix typos in comments, NFC 2014-08-29 21:53:01 +00:00
Bitcode Pass a && to getLazyBitcodeModule. 2014-09-03 17:31:46 +00:00
CodeGen Allow vector fsub ops with constants to get the same optimizations as scalars. 2014-09-05 22:26:22 +00:00
DebugInfo [DWARF parser] Fix nasty memory corruption in .dwo files handling. 2014-09-05 19:29:45 +00:00
ExecutionEngine [MCJIT] Revert partial RuntimeDyldELF cleanup that was prematurely committed in 2014-09-07 04:13:13 +00:00
IR [x86] Fix a pretty horrible bug and inconsistency in the x86 asm 2014-09-06 10:00:01 +00:00
IRReader Pass a && to getLazyBitcodeModule. 2014-09-03 17:31:46 +00:00
LineEditor
Linker Fix pr20078. 2014-09-05 21:27:52 +00:00
LTO unique_ptrify LTOCodeGenerator::NativeObjectFile 2014-09-02 18:21:06 +00:00
MC MC: correct DWARF line info for PE/COFF 2014-09-06 19:57:48 +00:00
Object Restore the ability to check if LLVMCreateObjectFile was successful 2014-09-05 21:22:09 +00:00
Option Fix PR17239 by changing the semantics of the RemainingArgsClass Option kind 2014-08-22 19:29:17 +00:00
ProfileData Make some helpers static or move into the llvm namespace. 2014-09-03 21:04:12 +00:00
Support Check whether the iterator p == the end iterator before trying to dereference it. This is a speculative fix for a failure found on the valgrind buildbot triggered by a clang test. 2014-09-06 01:16:42 +00:00
TableGen Comment only: Annotate loop as per mailing list discussion 2014-08-29 22:43:30 +00:00
Target [x86] Tweak the rules surrounding 0,0 and 1,1 v2f64 shuffles and add 2014-09-07 12:02:14 +00:00
Transforms InstCombine: Remove a special case pattern 2014-09-05 06:09:24 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile