llvm-6502/lib
Chandler Carruth 04402a6c13 [x86] Undo a flawed transform I added to form UNPCK instructions when
AVX is available, and generally tidy up things surrounding UNPCK
formation.

Originally, I was thinking that the only advantage of PSHUFD over UNPCK
instruction variants was its free copy, and otherwise we should use the
shorter encoding UNPCK instructions. This isn't right though, there is
a larger advantage of being able to fold a load into the operand of
a PSHUFD. For UNPCK, the operand *must* be in a register so it can be
the second input.

This removes the UNPCK formation in the target-specific DAG combine for
v4i32 shuffles. It also lifts the v8 and v16 cases out of the
AVX-specific check as they are potentially replacing multiple
instructions with a single instruction and so should always be valuable.
The floating point checks are simplified accordingly.

This also adjusts the formation of PSHUFD instructions to attempt to
match the shuffle mask to one which would fit an UNPCK instruction
variant. This was originally motivated to allow it to match the UNPCK
instructions in the combiner, but clearly won't now.

Eventually, we should add a MachineCombiner pass that can form UNPCK
instructions post-RA when the operand is known to be in a register and
thus there is no loss.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217755 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-15 10:35:41 +00:00
..
Analysis InstSimplify: Simplify trivial and/or of icmps 2014-09-15 08:15:28 +00:00
AsmParser Make CallingConv::ID an alias of "unsigned". 2014-09-10 18:00:17 +00:00
Bitcode Pass a && to getLazyBitcodeModule. 2014-09-03 17:31:46 +00:00
CodeGen In DwarfEHPrepare, after all passes are run, RewindFunction may be a dangling 2014-09-14 20:36:28 +00:00
DebugInfo Fix ambiguous typedef introduced in r217747. 2014-09-15 08:23:07 +00:00
ExecutionEngine [MCJIT] Improve the "stub not found" diagnostic in RuntimeDyldChecker. 2014-09-11 23:09:22 +00:00
IR Fix DebugInfo replaceAllUsesWith. 2014-09-15 07:50:42 +00:00
IRReader Pass a && to getLazyBitcodeModule. 2014-09-03 17:31:46 +00:00
LineEditor
Linker Merge alignment of common GlobalValue. 2014-09-09 17:48:18 +00:00
LTO Add doInitialization/doFinalization to DataLayoutPass. 2014-09-10 21:27:43 +00:00
MC Object: Add support for bigobj 2014-09-10 12:51:52 +00:00
Object [llvm-objdump] support -rebase option for mach-o to dump rebasing info 2014-09-12 21:34:15 +00:00
Option Add an overload of getLastArgNoClaim taking two OptSpecifiers. 2014-09-12 19:42:53 +00:00
ProfileData llvm-profdata: Avoid undefined behaviour when reading raw profiles 2014-09-12 21:22:55 +00:00
Support Add support for le64. 2014-09-12 17:54:17 +00:00
TableGen Comment only: Annotate loop as per mailing list discussion 2014-08-29 22:43:30 +00:00
Target [x86] Undo a flawed transform I added to form UNPCK instructions when 2014-09-15 10:35:41 +00:00
Transforms Add control of function merging to the PMBuilder. 2014-09-13 21:46:00 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile