llvm-project/llvm/lib
Craig Topper f4b13927e7 [X86] Don't use zero_extend_vector_inreg for mulhu lowering with sse 4.1
Summary: With sse4.1 we use two zero_extend_vector_inreg and a pshufd to expand the v16i8 input into two v8i16 vectors for the multiply. That's 3 shuffles to extend one operand. The other operand is usually constant as this is mostly used by division by constant optimization. Pre sse4.1 we use a punpckhbw and a punpcklbw with a zero vector. That's two shuffles and an xor and a copy due to tied register constraints. That seems maybe better than the 3 shuffles. With AVX we avoid the copy so that's obviously better.

Reviewers: spatel, RKSimon

Reviewed By: RKSimon

Subscribers: llvm-commits

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

llvm-svn: 348079
2018-12-01 19:26:31 +00:00
..
Analysis [ThinLTO] Allow importing of functions with var args 2018-12-01 05:11:46 +00:00
AsmParser [DebugInfo] IR/Bitcode changes for DISubprogram flags. 2018-11-28 21:14:32 +00:00
BinaryFormat Use RequireNullTerminator=false in identify_magic. 2018-12-01 00:22:39 +00:00
Bitcode [DebugInfo] IR/Bitcode changes for DISubprogram flags. 2018-11-28 21:14:32 +00:00
CodeGen [SelectionDAG] Improve SimplifyDemandedBits to SimplifyDemandedVectorElts simplification 2018-12-01 12:08:55 +00:00
DebugInfo Add missing error checking code intended for r347687 2018-11-27 19:14:11 +00:00
Demangle [Demangle] remove itaniumFindTypesInMangledName 2018-11-27 16:11:24 +00:00
ExecutionEngine [ExecutionEngine][Interpreter] Fix out-of-bounds array access. 2018-11-20 01:01:26 +00:00
FuzzMutate [New PM] Introducing PassInstrumentation framework 2018-09-20 17:08:45 +00:00
Fuzzer
IR [InstCombine] Support ssub.sat canonicalization for non-splats 2018-12-01 10:58:34 +00:00
IRReader
LTO [ThinLTO] Import local variables from the same module as caller 2018-11-29 17:02:42 +00:00
LineEditor
Linker [ThinLTO] Internalize readonly globals 2018-11-16 07:08:00 +00:00
MC Revert "[BTF] Add BTF DebugInfo" 2018-11-30 16:54:43 +00:00
Object Use llvm::copy. NFC 2018-11-17 01:44:25 +00:00
ObjectYAML [Hexagon] Add missing flags to ELF YAMLIO 2018-11-28 16:25:47 +00:00
OptRemarks Reland: [OptRemarks] Add library for parsing optimization remarks 2018-10-10 18:43:42 +00:00
Option [opt] Change the parameter of OptTable::PrintHelp from Name to Usage and don't append "[options] <inputs>" 2018-10-10 00:15:31 +00:00
Passes [stack-safety] Empty local passes for Stack Safety Global Analysis 2018-11-26 23:05:48 +00:00
ProfileData Support for remapping profile data when symbols change, for sample-based 2018-10-10 21:31:01 +00:00
Support Add Hurd target to LLVMSupport (1/2) 2018-11-29 03:23:01 +00:00
TableGen [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
Target [X86] Don't use zero_extend_vector_inreg for mulhu lowering with sse 4.1 2018-12-01 19:26:31 +00:00
Testing Fix error with SmallString implicit conversion. 2018-09-06 22:47:32 +00:00
ToolDrivers [opt] Change the parameter of OptTable::PrintHelp from Name to Usage and don't append "[options] <inputs>" 2018-10-10 00:15:31 +00:00
Transforms [InstCombine] Support ssub.sat canonicalization for non-splats 2018-12-01 10:58:34 +00:00
WindowsManifest Convert line endings of lib/WindowsManifest/CMakeLists.txt to unix. 2018-04-07 04:28:08 +00:00
XRay [XRay] Improve FDR trace handling and error messaging 2018-11-09 06:26:48 +00:00
CMakeLists.txt Revert r347823 "[TextAPI] Switch back to a custom Platform enum." 2018-11-29 15:47:24 +00:00
LLVMBuild.txt Revert r347823 "[TextAPI] Switch back to a custom Platform enum." 2018-11-29 15:47:24 +00:00