diff options
Diffstat (limited to 'lib/Target/Hexagon/HexagonTargetTransformInfo.cpp')
| -rw-r--r-- | lib/Target/Hexagon/HexagonTargetTransformInfo.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/Target/Hexagon/HexagonTargetTransformInfo.cpp b/lib/Target/Hexagon/HexagonTargetTransformInfo.cpp index a496a17788d56..c942f645aa887 100644 --- a/lib/Target/Hexagon/HexagonTargetTransformInfo.cpp +++ b/lib/Target/Hexagon/HexagonTargetTransformInfo.cpp @@ -54,7 +54,7 @@ bool HexagonTTIImpl::isTypeForHVX(Type *VecTy) const { return false; if (ST.isHVXVectorType(VecVT.getSimpleVT())) return true; - auto Action = TLI.getPreferredVectorAction(VecVT); + auto Action = TLI.getPreferredVectorAction(VecVT.getSimpleVT()); return Action == TargetLoweringBase::TypeWidenVector; } @@ -206,9 +206,13 @@ unsigned HexagonTTIImpl::getGatherScatterOpCost(unsigned Opcode, Type *DataTy, unsigned HexagonTTIImpl::getInterleavedMemoryOpCost(unsigned Opcode, Type *VecTy, unsigned Factor, ArrayRef<unsigned> Indices, - unsigned Alignment, unsigned AddressSpace) { - return BaseT::getInterleavedMemoryOpCost(Opcode, VecTy, Factor, Indices, - Alignment, AddressSpace); + unsigned Alignment, unsigned AddressSpace, bool UseMaskForCond, + bool UseMaskForGaps) { + if (Indices.size() != Factor || UseMaskForCond || UseMaskForGaps) + return BaseT::getInterleavedMemoryOpCost(Opcode, VecTy, Factor, Indices, + Alignment, AddressSpace, + UseMaskForCond, UseMaskForGaps); + return getMemoryOpCost(Opcode, VecTy, Alignment, AddressSpace, nullptr); } unsigned HexagonTTIImpl::getCmpSelInstrCost(unsigned Opcode, Type *ValTy, |
