16#ifndef LLVM_LIB_TARGET_VE_VETARGETTRANSFORMINFO_H
17#define LLVM_LIB_TARGET_VE_VETARGETTRANSFORMINFO_H
25 return llvm::cast<llvm::FixedVectorType>(Ty)->getElementType();
30 if (!isa<VectorType>(Ty))
39 return ScaBits == 1 || ScaBits == 32 || ScaBits == 64;
62 bool enableVPU()
const {
return getST()->
enableVPU(); }
65#define VEC_VP_CASE(SUFFIX) \
66 case Intrinsic::vp_reduce_##SUFFIX: \
67 case Intrinsic::vector_reduce_##SUFFIX:
69 switch (ReductionID) {
86 TLI(ST->getTargetLowering()) {}
89 bool VectorRegs = (ClassID == 1);
153 return !isSupportedReduction(
II->getIntrinsicID());
This file provides a helper that implements much of the TTI interface in terms of the target-independ...
TargetTransformInfo::VPLegalization VPLegalization
uint64_t IntrinsicInst * II
Base class which can be used to help build a TTI implementation.
A wrapper class for inspecting calls to intrinsic functions.
static constexpr TypeSize getFixed(ScalarTy ExactSize)
static constexpr TypeSize getScalable(ScalarTy MinimumSize)
The instances of the Type class are immutable: once they are created, they are never changed.
bool isPointerTy() const
True if this is an instance of PointerType.
bool isFloatTy() const
Return true if this is 'float', a 32-bit IEEE fp type.
unsigned getScalarSizeInBits() const LLVM_READONLY
If this is a vector type, return the getPrimitiveSizeInBits value for the element type.
bool isDoubleTy() const
Return true if this is 'double', a 64-bit IEEE fp type.
bool isIntegerTy() const
True if this is an instance of IntegerType.
VETTIImpl(const VETargetMachine *TM, const Function &F)
TargetTransformInfo::VPLegalization getVPLegalizationStrategy(const VPIntrinsic &PI) const
bool isLegalMaskedStore(Type *DataType, MaybeAlign Alignment)
bool isLegalMaskedScatter(Type *DataType, MaybeAlign Alignment)
bool shouldExpandReduction(const IntrinsicInst *II) const
bool shouldBuildRelLookupTables() const
bool isLegalMaskedLoad(Type *DataType, MaybeAlign Alignment)
bool isLegalMaskedGather(Type *DataType, MaybeAlign Alignment)
unsigned getNumberOfRegisters(unsigned ClassID) const
TypeSize getRegisterBitWidth(TargetTransformInfo::RegisterKind K) const
unsigned getMinVectorRegisterBitWidth() const
This is the common base class for vector predication intrinsics.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
This is an optimization pass for GlobalISel generic memory operations.
This struct is a compact representation of a valid (power of two) or undefined (0) alignment.