LLVM 20.0.0git
|
Class to represent fixed width SIMD vectors. More...
#include "llvm/IR/DerivedTypes.h"
Public Member Functions | |
unsigned | getNumElements () const |
Public Member Functions inherited from llvm::VectorType | |
VectorType (const VectorType &)=delete | |
VectorType & | operator= (const VectorType &)=delete |
Type * | getElementType () const |
ElementCount | getElementCount () const |
Return an ElementCount instance to represent the (possibly scalable) number of elements in the vector. | |
Public Member Functions inherited from llvm::Type | |
void | print (raw_ostream &O, bool IsForDebug=false, bool NoDetails=false) const |
Print the current type. | |
void | dump () const |
LLVMContext & | getContext () const |
Return the LLVMContext in which this type was uniqued. | |
TypeID | getTypeID () const |
Return the type id for the type. | |
bool | isVoidTy () const |
Return true if this is 'void'. | |
bool | isHalfTy () const |
Return true if this is 'half', a 16-bit IEEE fp type. | |
bool | isBFloatTy () const |
Return true if this is 'bfloat', a 16-bit bfloat type. | |
bool | is16bitFPTy () const |
Return true if this is a 16-bit float type. | |
bool | isFloatTy () const |
Return true if this is 'float', a 32-bit IEEE fp type. | |
bool | isDoubleTy () const |
Return true if this is 'double', a 64-bit IEEE fp type. | |
bool | isX86_FP80Ty () const |
Return true if this is x86 long double. | |
bool | isFP128Ty () const |
Return true if this is 'fp128'. | |
bool | isPPC_FP128Ty () const |
Return true if this is powerpc long double. | |
bool | isIEEELikeFPTy () const |
Return true if this is a well-behaved IEEE-like type, which has a IEEE compatible layout as defined by APFloat::isIEEE(), and does not have non-IEEE values, such as x86_fp80's unnormal values. | |
bool | isFloatingPointTy () const |
Return true if this is one of the floating-point types. | |
bool | isMultiUnitFPType () const |
Returns true if this is a floating-point type that is an unevaluated sum of multiple floating-point units. | |
const fltSemantics & | getFltSemantics () const |
bool | isX86_AMXTy () const |
Return true if this is X86 AMX. | |
bool | isTargetExtTy () const |
Return true if this is a target extension type. | |
bool | isScalableTargetExtTy () const |
Return true if this is a target extension type with a scalable layout. | |
bool | isScalableTy () const |
Return true if this is a type whose size is a known multiple of vscale. | |
bool | isFPOrFPVectorTy () const |
Return true if this is a FP type or a vector of FP. | |
bool | isLabelTy () const |
Return true if this is 'label'. | |
bool | isMetadataTy () const |
Return true if this is 'metadata'. | |
bool | isTokenTy () const |
Return true if this is 'token'. | |
bool | isIntegerTy () const |
True if this is an instance of IntegerType. | |
bool | isIntegerTy (unsigned Bitwidth) const |
Return true if this is an IntegerType of the given width. | |
bool | isIntOrIntVectorTy () const |
Return true if this is an integer type or a vector of integer types. | |
bool | isIntOrIntVectorTy (unsigned BitWidth) const |
Return true if this is an integer type or a vector of integer types of the given width. | |
bool | isIntOrPtrTy () const |
Return true if this is an integer type or a pointer type. | |
bool | isFunctionTy () const |
True if this is an instance of FunctionType. | |
bool | isStructTy () const |
True if this is an instance of StructType. | |
bool | isArrayTy () const |
True if this is an instance of ArrayType. | |
bool | isPointerTy () const |
True if this is an instance of PointerType. | |
bool | isOpaquePointerTy () const |
True if this is an instance of an opaque PointerType. | |
bool | isPtrOrPtrVectorTy () const |
Return true if this is a pointer type or a vector of pointer types. | |
bool | isVectorTy () const |
True if this is an instance of VectorType. | |
bool | canLosslesslyBitCastTo (Type *Ty) const |
Return true if this type could be converted with a lossless BitCast to type 'Ty'. | |
bool | isEmptyTy () const |
Return true if this type is empty, that is, it has no elements or all of its elements are empty. | |
bool | isFirstClassType () const |
Return true if the type is "first class", meaning it is a valid type for a Value. | |
bool | isSingleValueType () const |
Return true if the type is a valid type for a register in codegen. | |
bool | isAggregateType () const |
Return true if the type is an aggregate type. | |
bool | isSized (SmallPtrSetImpl< Type * > *Visited=nullptr) const |
Return true if it makes sense to take the size of this type. | |
TypeSize | getPrimitiveSizeInBits () const LLVM_READONLY |
Return the basic size of this type if it is a primitive type. | |
unsigned | getScalarSizeInBits () const LLVM_READONLY |
If this is a vector type, return the getPrimitiveSizeInBits value for the element type. | |
int | getFPMantissaWidth () const |
Return the width of the mantissa of this type. | |
bool | isIEEE () const |
Return whether the type is IEEE compatible, as defined by the eponymous method in APFloat. | |
Type * | getScalarType () const |
If this is a vector type, return the element type, otherwise return 'this'. | |
subtype_iterator | subtype_begin () const |
subtype_iterator | subtype_end () const |
ArrayRef< Type * > | subtypes () const |
subtype_reverse_iterator | subtype_rbegin () const |
subtype_reverse_iterator | subtype_rend () const |
Type * | getContainedType (unsigned i) const |
This method is used to implement the type iterator (defined at the end of the file). | |
unsigned | getNumContainedTypes () const |
Return the number of types in the derived type. | |
unsigned | getIntegerBitWidth () const |
Type * | getFunctionParamType (unsigned i) const |
unsigned | getFunctionNumParams () const |
bool | isFunctionVarArg () const |
StringRef | getStructName () const |
unsigned | getStructNumElements () const |
Type * | getStructElementType (unsigned N) const |
uint64_t | getArrayNumElements () const |
Type * | getArrayElementType () const |
StringRef | getTargetExtName () const |
Type * | getNonOpaquePointerElementType () const |
Only use this method in code that is not reachable with opaque pointers, or part of deprecated methods that will be removed as part of the opaque pointers transition. | |
Type * | getWithNewType (Type *EltTy) const |
Given vector type, change the element type, whilst keeping the old number of elements. | |
Type * | getWithNewBitWidth (unsigned NewBitWidth) const |
Given an integer or vector type, change the lane bitwidth to NewBitwidth, whilst keeping the old number of lanes. | |
Type * | getExtendedType () const |
Given scalar/vector integer type, returns a type with elements twice as wide as in the original type. | |
unsigned | getPointerAddressSpace () const |
Get the address space of this pointer or pointer vector type. | |
PointerType * | getPointerTo (unsigned AddrSpace=0) const |
Return a pointer to the current type. | |
Static Public Member Functions | |
static FixedVectorType * | get (Type *ElementType, unsigned NumElts) |
static FixedVectorType * | get (Type *ElementType, const FixedVectorType *FVTy) |
static FixedVectorType * | getInteger (FixedVectorType *VTy) |
static FixedVectorType * | getExtendedElementVectorType (FixedVectorType *VTy) |
static FixedVectorType * | getTruncatedElementVectorType (FixedVectorType *VTy) |
static FixedVectorType * | getSubdividedVectorType (FixedVectorType *VTy, int NumSubdivs) |
static FixedVectorType * | getHalfElementsVectorType (FixedVectorType *VTy) |
static FixedVectorType * | getDoubleElementsVectorType (FixedVectorType *VTy) |
static bool | classof (const Type *T) |
Static Public Member Functions inherited from llvm::VectorType | |
static VectorType * | get (Type *ElementType, ElementCount EC) |
This static method is the primary way to construct an VectorType. | |
static VectorType * | get (Type *ElementType, unsigned NumElements, bool Scalable) |
static VectorType * | get (Type *ElementType, const VectorType *Other) |
static VectorType * | getInteger (VectorType *VTy) |
This static method gets a VectorType with the same number of elements as the input type, and the element type is an integer type of the same width as the input element type. | |
static VectorType * | getExtendedElementVectorType (VectorType *VTy) |
This static method is like getInteger except that the element types are twice as wide as the elements in the input type. | |
static VectorType * | getTruncatedElementVectorType (VectorType *VTy) |
static VectorType * | getSubdividedVectorType (VectorType *VTy, int NumSubdivs) |
static VectorType * | getHalfElementsVectorType (VectorType *VTy) |
This static method returns a VectorType with half as many elements as the input type and the same element type. | |
static VectorType * | getDoubleElementsVectorType (VectorType *VTy) |
This static method returns a VectorType with twice as many elements as the input type and the same element type. | |
static bool | isValidElementType (Type *ElemTy) |
Return true if the specified type is valid as a element type. | |
static bool | classof (const Type *T) |
Methods for support type inquiry through isa, cast, and dyn_cast. | |
Static Public Member Functions inherited from llvm::Type | |
static Type * | getPrimitiveType (LLVMContext &C, TypeID IDNumber) |
Return a type based on an identifier. | |
static Type * | getVoidTy (LLVMContext &C) |
static Type * | getLabelTy (LLVMContext &C) |
static Type * | getHalfTy (LLVMContext &C) |
static Type * | getBFloatTy (LLVMContext &C) |
static Type * | getFloatTy (LLVMContext &C) |
static Type * | getDoubleTy (LLVMContext &C) |
static Type * | getMetadataTy (LLVMContext &C) |
static Type * | getX86_FP80Ty (LLVMContext &C) |
static Type * | getFP128Ty (LLVMContext &C) |
static Type * | getPPC_FP128Ty (LLVMContext &C) |
static Type * | getX86_AMXTy (LLVMContext &C) |
static Type * | getTokenTy (LLVMContext &C) |
static IntegerType * | getIntNTy (LLVMContext &C, unsigned N) |
static IntegerType * | getInt1Ty (LLVMContext &C) |
static IntegerType * | getInt8Ty (LLVMContext &C) |
static IntegerType * | getInt16Ty (LLVMContext &C) |
static IntegerType * | getInt32Ty (LLVMContext &C) |
static IntegerType * | getInt64Ty (LLVMContext &C) |
static IntegerType * | getInt128Ty (LLVMContext &C) |
template<typename ScalarTy > | |
static Type * | getScalarTy (LLVMContext &C) |
static Type * | getFloatingPointTy (LLVMContext &C, const fltSemantics &S) |
static Type * | getWasm_ExternrefTy (LLVMContext &C) |
static Type * | getWasm_FuncrefTy (LLVMContext &C) |
Protected Member Functions | |
FixedVectorType (Type *ElTy, unsigned NumElts) | |
Protected Member Functions inherited from llvm::VectorType | |
VectorType (Type *ElType, unsigned EQ, Type::TypeID TID) | |
Protected Member Functions inherited from llvm::Type | |
Type (LLVMContext &C, TypeID tid) | |
~Type ()=default | |
unsigned | getSubclassData () const |
void | setSubclassData (unsigned val) |
Additional Inherited Members | |
Public Types inherited from llvm::Type | |
enum | TypeID { HalfTyID = 0 , BFloatTyID , FloatTyID , DoubleTyID , X86_FP80TyID , FP128TyID , PPC_FP128TyID , VoidTyID , LabelTyID , MetadataTyID , X86_AMXTyID , TokenTyID , IntegerTyID , FunctionTyID , PointerTyID , StructTyID , ArrayTyID , FixedVectorTyID , ScalableVectorTyID , TypedPointerTyID , TargetExtTyID } |
Definitions of all of the base types for the Type system. More... | |
using | subtype_iterator = Type *const * |
using | subtype_reverse_iterator = std::reverse_iterator< subtype_iterator > |
Protected Attributes inherited from llvm::VectorType | |
const unsigned | ElementQuantity |
The element quantity of this vector. | |
Protected Attributes inherited from llvm::Type | |
unsigned | NumContainedTys = 0 |
Keeps track of how many Type*'s there are in the ContainedTys list. | |
Type *const * | ContainedTys = nullptr |
A pointer to the array of Types contained by this Type. | |
Class to represent fixed width SIMD vectors.
Definition at line 539 of file DerivedTypes.h.
Definition at line 541 of file DerivedTypes.h.
Definition at line 578 of file DerivedTypes.h.
References llvm::Type::FixedVectorTyID.
|
inlinestatic |
Definition at line 547 of file DerivedTypes.h.
References get(), and getNumElements().
|
static |
Definition at line 680 of file Type.cpp.
References llvm::LLVMContextImpl::Alloc, assert(), llvm::ElementCount::getFixed(), and llvm::VectorType::isValidElementType().
Referenced by llvm::MatrixBuilder::CreateColumnMajorLoad(), CreateGCRelocates(), llvm::MatrixBuilder::CreateMatrixMultiply(), llvm::MatrixBuilder::CreateMatrixTranspose(), createTblForTrunc(), DecodeFixedType(), emitX86ScalarSelect(), evaluateInDifferentElementOrder(), llvm::X86InstrInfo::foldMemoryOperandImpl(), foldTruncInsEltPair(), foldVecTruncToExtElt(), generateNewInstTree(), llvm::ConstantVector::get(), llvm::ConstantDataVector::get(), get(), llvm::VectorType::get(), llvm::AArch64TTIImpl::getArithmeticReductionCost(), llvm::X86TTIImpl::getArithmeticReductionCost(), llvm::ARMTTIImpl::getArithmeticReductionCost(), getCmpOpsType(), llvm::ConstantDataVector::getFP(), llvm::TargetTransformInfoImplCRTPBase< T >::getInstructionCost(), llvm::BasicTTIImplBase< T >::getInterleavedMemoryOpCost(), llvm::ARMTTIImpl::getInterleavedMemoryOpCost(), llvm::RISCVTTIImpl::getInterleavedMemoryOpCost(), llvm::X86TTIImpl::getInterleavedMemoryOpCost(), llvm::X86TTIImpl::getInterleavedMemoryOpCostAVX512(), getIntrinsicParamType(), llvm::X86TTIImpl::getMaskedMemoryOpCost(), getMemCmpLoad(), llvm::GCNTTIImpl::getMemcpyLoopLoweringType(), llvm::X86TTIImpl::getMemoryOpCost(), llvm::BasicTTIImplBase< T >::getMinMaxReductionCost(), llvm::ARMTTIImpl::getMinMaxReductionCost(), llvm::X86TTIImpl::getMinMaxReductionCost(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVVectorType(), llvm::BasicTTIImplBase< T >::getReplicationShuffleCost(), llvm::X86TTIImpl::getReplicationShuffleCost(), llvm::X86TTIImpl::getScalarizationOverhead(), llvm::RISCVTTIImpl::getShuffleCost(), llvm::X86TTIImpl::getShuffleCost(), llvm::BasicTTIImplBase< T >::getStoreMinimumVF(), llvm::BasicTTIImplBase< T >::getTreeReductionCost(), llvm::EVT::getTypeForEVT(), llvm::X86TTIImpl::getVectorInstrCost(), getWidenedType(), getX86MaskVec(), llvm::BasicTTIImplBase< T >::improveShuffleKindFromMask(), insertSinCosCall(), llvm::X86TTIImpl::instCombineIntrinsic(), isVectorPromotionViableForSlice(), LLVMVectorType(), LowerFSINCOS(), llvm::AArch64TargetLowering::lowerInterleavedLoad(), llvm::ARMTargetLowering::lowerInterleavedLoad(), llvm::AArch64TargetLowering::lowerInterleavedStore(), llvm::ARMTargetLowering::lowerInterleavedStore(), llvm::RISCVTargetLowering::lowerInterleavedStore(), lowerKernelArguments(), optimizeSection(), optimizeVectorResizeWithIntegerBitCasts(), promoteAllocaUserToVector(), shrinkFPConstantVector(), simplifyAMDGCNMemoryIntrinsicDemanded(), simplifyX86extrq(), simplifyX86insertq(), simplifyX86pmulh(), upgradeARMIntrinsicCall(), upgradeArmOrAarch64IntrinsicFunction(), llvm::UpgradeIntrinsicCall(), upgradeMaskedCompare(), upgradePTESTIntrinsic(), upgradeX86IntrinsicCall(), upgradeX86PSLLDQIntrinsics(), upgradeX86PSRLDQIntrinsics(), llvm::slpvectorizer::BoUpSLP::vectorizeTree(), and llvm::InstCombinerImpl::visitShuffleVectorInst().
|
inlinestatic |
Definition at line 574 of file DerivedTypes.h.
References llvm::VectorType::getDoubleElementsVectorType().
|
inlinestatic |
Definition at line 555 of file DerivedTypes.h.
References llvm::VectorType::getExtendedElementVectorType().
Referenced by simplifyX86pmulh().
|
inlinestatic |
Definition at line 570 of file DerivedTypes.h.
References llvm::VectorType::getHalfElementsVectorType().
|
inlinestatic |
Definition at line 551 of file DerivedTypes.h.
References llvm::VectorType::getInteger().
Referenced by llvm::AArch64TargetLowering::optimizeExtendOrTruncateConversion().
|
inline |
Definition at line 582 of file DerivedTypes.h.
References llvm::VectorType::ElementQuantity.
Referenced by CheckAndCreateOffsetAdd(), llvm::ARMTargetLowering::createComplexDeinterleavingIR(), emitGlobalConstantVector(), llvm::slpvectorizer::BoUpSLP::ShuffleCostEstimator::gather(), generateNewInstTree(), get(), llvm::ARMTTIImpl::getCmpSelInstrCost(), llvm::X86TTIImpl::getInterleavedMemoryOpCostAVX512(), llvm::ARMTTIImpl::getMemoryOpCost(), llvm::BasicTTIImplBase< T >::getOrderedReductionCost(), getVectorCallCosts(), llvm::ShuffleVectorInst::isInterleave(), llvm::ARMTargetLowering::isLegalInterleavedAccessType(), isV2BF16(), isV2F16(), lowerFunnelShifts(), matchIntrinsicType(), promoteAllocaUserToVector(), and llvm::slpvectorizer::BoUpSLP::vectorizeTree().
|
inlinestatic |
Definition at line 564 of file DerivedTypes.h.
References llvm::VectorType::getSubdividedVectorType().
|
inlinestatic |
Definition at line 559 of file DerivedTypes.h.
References llvm::VectorType::getTruncatedElementVectorType().