llvm-project/llvm/lib
Simon Pilgrim c701596e86 [X86][SSE] Match PSHUFLW/PSHUFHW + PSHUFD vXi16 shuffle patterns (PR34686)
As noted in PR34686, we are relying on a PSHUFD+PSHUFLW+PSHUFHW shuffle chain for most general vXi16 unary shuffles.

This patch checks for simpler PSHUFLW+PSHUFD and PSHUFHW+PSHUFD cases beforehand, building on some existing code that just handled splat shuffles.

By doing so we also prevent premature use of PSHUFB shuffles which can be slower and require the creation/loading of constant shuffle masks.

We now have the 'fast-variable-shuffle' option for hardware that prefers combining 2 or more shuffles to VPSHUFB etc.

Differential Revision: https://reviews.llvm.org/D38318

llvm-svn: 321553
2017-12-29 14:41:50 +00:00
..
Analysis [SCEV] Missing depth propagation in recursive call 2017-12-29 08:44:32 +00:00
AsmParser Hardware-assisted AddressSanitizer (llvm part). 2017-12-09 00:21:41 +00:00
BinaryFormat Simplify. 2017-10-19 01:32:18 +00:00
Bitcode Add hasProfileData() to check if a function has profile data. NFC. 2017-12-22 01:33:52 +00:00
CodeGen Avoid modifying DbgInfo while looping in salvageDebuginfo 2017-12-28 23:42:44 +00:00
DebugInfo Rewrite the cached map used for locating the most precise DIE among 2017-12-22 06:41:23 +00:00
Demangle Silence a bunch of implicit fallthrough warnings 2017-12-19 22:05:25 +00:00
ExecutionEngine Remove redundant includes from lib/ExecutionEngine. 2017-12-13 21:30:50 +00:00
FuzzMutate [FuzzMutate] Don't crash when mutator is unable to find operation 2017-12-19 08:52:51 +00:00
Fuzzer [libFuzzer] Delete llvm/lib/Fuzzer 2017-10-16 20:48:19 +00:00
IR [SafepointIRVerifier] Allow non-dereferencing uses of unrelocated or poisoned PHI nodes 2017-12-25 09:35:10 +00:00
IRReader Remove redundant includes from various places. 2017-12-13 21:31:03 +00:00
LTO [LTO] Simplify code. No functionality change intended. 2017-12-28 18:31:19 +00:00
LineEditor
Linker Linker: Create a function declaration when moving a non-prevailing alias of function type. 2017-08-10 01:07:44 +00:00
MC [MC] - Disallow invalid section groups declarations. 2017-12-25 09:41:00 +00:00
Object [WebAssembly] Remove unneeded sub-directory 2017-12-21 03:16:34 +00:00
ObjectYAML [WebAssembly] Remove unneeded sub-directory 2017-12-21 03:16:34 +00:00
Option Reverting r315590; it did not include changes for llvm-tblgen, which is causing link errors for several people. 2017-10-15 14:32:27 +00:00
Passes [PM] pass -debug-pass-manager flag into FunctionToLoopPassAdaptor's canonicalization PM 2017-12-29 08:16:06 +00:00
ProfileData Remove superfluous copies in sample profiling. 2017-12-28 18:10:41 +00:00
Support Avoid int to string conversion in Twine or raw_ostream contexts. 2017-12-28 16:58:54 +00:00
TableGen Avoid int to string conversion in Twine or raw_ostream contexts. 2017-12-28 16:58:54 +00:00
Target [X86][SSE] Match PSHUFLW/PSHUFHW + PSHUFD vXi16 shuffle patterns (PR34686) 2017-12-29 14:41:50 +00:00
Testing Force #define GTEST_LANG_CXX11. 2017-10-27 21:12:28 +00:00
ToolDrivers Remove redundant includes from various places. 2017-12-13 21:31:03 +00:00
Transforms Remove superfluous copies in sample profiling. 2017-12-28 18:10:41 +00:00
WindowsManifest Fix bug 34608 by moving private header out of public header. 2017-09-14 23:01:13 +00:00
XRay [XRay] Use optimistic logging model for FDR mode 2017-11-21 07:16:57 +00:00
CMakeLists.txt Moving libFuzzer from LLVM to compiler-rt. 2017-08-21 23:25:12 +00:00
LLVMBuild.txt Re-apply "Introduce FuzzMutate library" 2017-08-21 22:57:06 +00:00