diff options
author | Clement Courbet <courbet@google.com> | 2019-06-26 07:06:49 +0000 |
---|---|---|
committer | Clement Courbet <courbet@google.com> | 2019-06-26 07:06:49 +0000 |
commit | be98e0ab7895c02c0076ea43936a1e8fc8268f58 (patch) | |
tree | 2f1a97dd3d5a16bb6a2db502f8e46d306c18a148 /llvm/lib/Target/X86/X86TargetTransformInfo.cpp | |
parent | d6a8bc7a1258f1a938164e354601ee59618fbe1a (diff) | |
download | bcm5719-llvm-be98e0ab7895c02c0076ea43936a1e8fc8268f58.tar.gz bcm5719-llvm-be98e0ab7895c02c0076ea43936a1e8fc8268f58.zip |
[ExpandMemCmp] Honor prefer-vector-width.
Reviewers: gchatelet, echristo, spatel, atdt
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D63769
llvm-svn: 364384
Diffstat (limited to 'llvm/lib/Target/X86/X86TargetTransformInfo.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86TargetTransformInfo.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86TargetTransformInfo.cpp b/llvm/lib/Target/X86/X86TargetTransformInfo.cpp index 843d6cf839d..3dc59aeb263 100644 --- a/llvm/lib/Target/X86/X86TargetTransformInfo.cpp +++ b/llvm/lib/Target/X86/X86TargetTransformInfo.cpp @@ -3301,8 +3301,9 @@ X86TTIImpl::enableMemCmpExpansion(bool OptSize, bool IsZeroCmp) const { // version is not as fast for three way compare (see #33329). // TODO: enable AVX512 when the DAG is ready. // if (ST->hasAVX512()) Options.LoadSizes.push_back(64); - if (ST->hasAVX2()) Options.LoadSizes.push_back(32); - if (ST->hasSSE2()) Options.LoadSizes.push_back(16); + const unsigned PreferredWidth = ST->getPreferVectorWidth(); + if (PreferredWidth >= 256 && ST->hasAVX2()) Options.LoadSizes.push_back(32); + if (PreferredWidth >= 128 && ST->hasSSE2()) Options.LoadSizes.push_back(16); // All GPR and vector loads can be unaligned. SIMD compare requires integer // vectors (SSE2/AVX2). Options.AllowOverlappingLoads = true; |