diff options
author | Elena Demikhovsky <elena.demikhovsky@intel.com> | 2015-11-19 07:17:16 +0000 |
---|---|---|
committer | Elena Demikhovsky <elena.demikhovsky@intel.com> | 2015-11-19 07:17:16 +0000 |
commit | 1ca72e1846fca95dcb4182c2672ff90c71511965 (patch) | |
tree | 634d1bb1c261a92ab5a1e488dac06bdf5b7d861f /llvm/lib/Target/X86/X86TargetTransformInfo.cpp | |
parent | 67cf9a723ba5cf0a711efcb317b241104b558779 (diff) | |
download | bcm5719-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.cpp | 12 |
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(); |