summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86TargetTransformInfo.cpp
diff options
context:
space:
mode:
authorElena Demikhovsky <elena.demikhovsky@intel.com>2015-11-19 07:17:16 +0000
committerElena Demikhovsky <elena.demikhovsky@intel.com>2015-11-19 07:17:16 +0000
commit1ca72e1846fca95dcb4182c2672ff90c71511965 (patch)
tree634d1bb1c261a92ab5a1e488dac06bdf5b7d861f /llvm/lib/Target/X86/X86TargetTransformInfo.cpp
parent67cf9a723ba5cf0a711efcb317b241104b558779 (diff)
downloadbcm5719-llvm-1ca72e1846fca95dcb4182c2672ff90c71511965.tar.gz
bcm5719-llvm-1ca72e1846fca95dcb4182c2672ff90c71511965.zip
Pointers in Masked Load, Store, Gather, Scatter intrinsics
The masked intrinsics support all integer and floating point data types. I added the pointer type to this list. Added tests for CodeGen and for Loop Vectorizer. Updated the Language Reference. Differential Revision: http://reviews.llvm.org/D14150 llvm-svn: 253544
Diffstat (limited to 'llvm/lib/Target/X86/X86TargetTransformInfo.cpp')
-rw-r--r--llvm/lib/Target/X86/X86TargetTransformInfo.cpp12
1 files changed, 4 insertions, 8 deletions
diff --git a/llvm/lib/Target/X86/X86TargetTransformInfo.cpp b/llvm/lib/Target/X86/X86TargetTransformInfo.cpp
index 5a37f1bfba3..c648750b202 100644
--- a/llvm/lib/Target/X86/X86TargetTransformInfo.cpp
+++ b/llvm/lib/Target/X86/X86TargetTransformInfo.cpp
@@ -1160,10 +1160,8 @@ int X86TTIImpl::getIntImmCost(Intrinsic::ID IID, unsigned Idx, const APInt &Imm,
bool X86TTIImpl::isLegalMaskedLoad(Type *DataTy) {
Type *ScalarTy = DataTy->getScalarType();
- // TODO: Pointers should also be legal,
- // but it requires additional support in composing intrinsics name.
- // getPrimitiveSizeInBits() returns 0 for PointerType
- int DataWidth = ScalarTy->getPrimitiveSizeInBits();
+ int DataWidth = isa<PointerType>(ScalarTy) ?
+ DL.getPointerSizeInBits() : ScalarTy->getPrimitiveSizeInBits();
return (DataWidth >= 32 && ST->hasAVX2());
}
@@ -1186,10 +1184,8 @@ bool X86TTIImpl::isLegalMaskedGather(Type *DataTy) {
if (isa<VectorType>(DataTy) && !isPowerOf2_32(DataTy->getVectorNumElements()))
return false;
Type *ScalarTy = DataTy->getScalarType();
- // TODO: Pointers should also be legal,
- // but it requires additional support in composing intrinsics name.
- // getPrimitiveSizeInBits() returns 0 for PointerType
- int DataWidth = ScalarTy->getPrimitiveSizeInBits();
+ int DataWidth = isa<PointerType>(ScalarTy) ?
+ DL.getPointerSizeInBits() : ScalarTy->getPrimitiveSizeInBits();
// AVX-512 allows gather and scatter
return DataWidth >= 32 && ST->hasAVX512();
OpenPOWER on IntegriCloud