OSDN Git Service

[X86] Prefer reduced width multiplication over pmulld on Silvermont
authorZvi Rackover <zvi.rackover@intel.com>
Tue, 6 Dec 2016 19:35:20 +0000 (19:35 +0000)
committerZvi Rackover <zvi.rackover@intel.com>
Tue, 6 Dec 2016 19:35:20 +0000 (19:35 +0000)
commit42694a3a7e75f7249e830ae344d15fa2ce48e874
tree35600e42721d799c23e714b59a2919e3406f1187
parent6e9255f2d059c0fe09358627b68b13fa05706ab6
[X86] Prefer reduced width multiplication over pmulld on Silvermont

Summary:
Prefer expansions such as: pmullw,pmulhw,unpacklwd,unpackhwd over pmulld.
On Silvermont [source: Optimization Reference Manual]:
PMULLD has a throughput of 1/11 [instruction/cycles].
PMULHUW/PMULHW/PMULLW have a throughput of 1/2 [instruction/cycles].

Fixes pr31202.

Analysis of this issue was done by Fahana Aleen.

Reviewers: wmi, delena, mkuper

Subscribers: RKSimon, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@288844 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86.td
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86Subtarget.cpp
lib/Target/X86/X86Subtarget.h
test/CodeGen/X86/slow-pmulld.ll [new file with mode: 0644]