Go to the documentation of this file.
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);
159 #endif // LLVM_LIB_TARGET_VE_VETARGETTRANSFORMINFO_H
bool isLegalMaskedLoad(Type *DataType, MaybeAlign Alignment)
This is an optimization pass for GlobalISel generic memory operations.
bool isPointerTy() const
True if this is an instance of PointerType.
bool isLegalMaskedGather(Type *DataType, MaybeAlign Alignment)
Intrinsic::ID getIntrinsicID() const
Return the intrinsic ID of this intrinsic.
TargetTransformInfo::VPLegalization getVPLegalizationStrategy(const VPIntrinsic &PI) const
unsigned getMinVectorRegisterBitWidth() const
The instances of the Type class are immutable: once they are created, they are never changed.
unsigned getNumberOfRegisters(unsigned ClassID) const
TypeSize getRegisterBitWidth(TargetTransformInfo::RegisterKind K) const
We currently generate a but we really shouldn eax ecx xorl edx divl ecx eax divl ecx movl eax ret A similar code sequence works for division We currently compile i32 v2 eax eax jo LBB1_2 and
This struct is a compact representation of a valid (power of two) or undefined (0) alignment.
unsigned getScalarSizeInBits() const LLVM_READONLY
If this is a vector type, return the getPrimitiveSizeInBits value for the element type.
static constexpr TypeSize getScalable(ScalarTy MinimunSize)
bool isIntegerTy() const
True if this is an instance of IntegerType.
static constexpr TypeSize getFixed(ScalarTy ExactSize)
Base class which can be used to help build a TTI implementation.
bool isLegalMaskedStore(Type *DataType, MaybeAlign Alignment)
bool shouldExpandReduction(const IntrinsicInst *II) const
VETTIImpl(const VETargetMachine *TM, const Function &F)
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
static const Function * getParent(const Value *V)
We currently generate a but we really shouldn eax ecx xorl edx divl ecx eax divl ecx movl eax ret A similar code sequence works for division We currently compile i32 v2 eax eax jo LBB1_2 xor
bool isFloatTy() const
Return true if this is 'float', a 32-bit IEEE fp type.
This is the common base class for vector predication intrinsics.
TargetTransformInfo::VPLegalization VPLegalization
bool isDoubleTy() const
Return true if this is 'double', a 64-bit IEEE fp type.
A wrapper class for inspecting calls to intrinsic functions.
const char LLVMTargetMachineRef TM
bool isLegalMaskedScatter(Type *DataType, MaybeAlign Alignment)
const APInt & smax(const APInt &A, const APInt &B)
Determine the larger of two APInts considered to be signed.
bool shouldBuildRelLookupTables() const