diff options
author | Sanjay Patel <spatel@rotateright.com> | 2017-03-28 17:23:49 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2017-03-28 17:23:49 +0000 |
commit | f01a1dad7f369399cbe21a94d5c33a9be2c9c512 (patch) | |
tree | ef169d078f91af052ac58af44af09b59442ead07 /llvm/lib/Target | |
parent | da4d12a8e563d3f50ca3ce3243720fe30f77523f (diff) | |
download | bcm5719-llvm-f01a1dad7f369399cbe21a94d5c33a9be2c9c512.tar.gz bcm5719-llvm-f01a1dad7f369399cbe21a94d5c33a9be2c9c512.zip |
[x86] use VPMOVMSK to replace memcmp libcalls for 32-byte equality
Follow-up to:
https://reviews.llvm.org/rL298775
llvm-svn: 298933
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 88e09cd56f8..eab398ac3bb 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -4646,8 +4646,12 @@ MVT X86TargetLowering::hasFastEqualityCompare(unsigned NumBits) const { if (NumBits == 128 && isTypeLegal(MVT::v16i8)) return MVT::v16i8; + // VPMOVMSKB can handle this. + if (NumBits == 256 && isTypeLegal(MVT::v32i8)) + return MVT::v32i8; + // TODO: Allow 64-bit type for 32-bit target. - // TODO: 256- and 512-bit types should be allowed, but make sure that those + // TODO: 512-bit types should be allowed, but make sure that those // cases are handled in combineVectorSizedSetCCEquality(). return MVT::INVALID_SIMPLE_VALUE_TYPE; |