LLVM 24.0.0git
llvm::abi::VectorType Class Reference

#include "llvm/ABI/Types.h"

Inheritance diagram for llvm::abi::VectorType:
[legend]

Public Member Functions

 VectorType (const Type *ElementType, ElementCount NumElements, Align ABIAlign, VectorKind VecKind=VectorKind::Generic)
const Type * getElementType () const
ElementCount getNumElements () const
VectorKind getVectorKind () const
bool isScalable () const
bool isFixedLength () const
uint64_t getABISizeInBits () const
 Returns the size of this vector as Clang's ASTContext reports it: zero for a scalable vector, and otherwise at least one byte and rounded up to a power of two.
bool isSVEData () const
bool isSVEPredicate () const
bool isSVECount () const
bool isFixedLengthSVEData () const
bool isFixedLengthSVEPredicate () const
bool isSVEType () const
 Returns true for any of the AArch64 SVE flavors.
Public Member Functions inherited from llvm::abi::Type
TypeKind getKind () const
TypeSize getSizeInBits () const
uint64_t getFixedSizeInBitsOrZero () const
 Returns the size in bits if it is fixed, otherwise 0.
Align getAlignment () const
Align getUnadjustedAlignment () const
 Alignment before record-level adjustments such as aligned attributes.
TypeSize getTypeAllocSize () const
bool isVoid () const
bool isAtomic () const
bool isInteger () const
bool isFloat () const
bool isPointer () const
bool isArray () const
bool isVector () const
bool isTuple () const
bool isRecord () const
bool isMemberPointer () const
bool isComplex () const
bool isZeroSize () const
LLVM_ABI bool isSVESizelessType () const
LLVM_ABI bool isEmptyRecord () const
 True if this type is a record that is empty for ABI purposes.

Static Public Member Functions

static bool classof (const Type *T)

Additional Inherited Members

Protected Member Functions inherited from llvm::abi::Type
 Type (TypeKind K, TypeSize SizeInBits, Align ABIAlign)
 Type (TypeKind K, TypeSize SizeInBits, Align ABIAlign, Align UnadjustedAlign)
Protected Attributes inherited from llvm::abi::Type
TypeKind Kind
TypeSize SizeInBits
Align ABIAlignment
Align UnadjustedAlignment

Detailed Description

Definition at line 279 of file Types.h.

Constructor & Destructor Documentation

◆ VectorType()

llvm::abi::VectorType::VectorType ( const Type * ElementType,
ElementCount NumElements,
Align ABIAlign,
VectorKind VecKind = VectorKind::Generic )
inline

Definition at line 293 of file Types.h.

References llvm::abi::Generic, llvm::abi::Type::Type(), and llvm::abi::Vector.

Member Function Documentation

◆ classof()

bool llvm::abi::VectorType::classof ( const Type * T)
inlinestatic

Definition at line 343 of file Types.h.

References T, llvm::abi::Type::Type(), and llvm::abi::Vector.

◆ getABISizeInBits()

uint64_t llvm::abi::VectorType::getABISizeInBits ( ) const
inline

Returns the size of this vector as Clang's ASTContext reports it: zero for a scalable vector, and otherwise at least one byte and rounded up to a power of two.

For example, a 3 x float vector has 96 bits of payload but an ABI size of 128 bits. getSizeInBits() returns the payload width, so classification rules that compare against a Clang type size must use this instead.

Definition at line 313 of file Types.h.

References llvm::bit_ceil(), llvm::dyn_cast(), isScalable(), IT, and uint64_t.

◆ getElementType()

const Type * llvm::abi::VectorType::getElementType ( ) const
inline

Definition at line 299 of file Types.h.

References llvm::abi::Type::Type().

Referenced by llvm::abi::getClangVectorWidthInBits().

◆ getNumElements()

ElementCount llvm::abi::VectorType::getNumElements ( ) const
inline

Definition at line 300 of file Types.h.

Referenced by llvm::abi::getClangVectorWidthInBits().

◆ getVectorKind()

VectorKind llvm::abi::VectorType::getVectorKind ( ) const
inline

Definition at line 302 of file Types.h.

◆ isFixedLength()

bool llvm::abi::VectorType::isFixedLength ( ) const
inline

Definition at line 305 of file Types.h.

Referenced by isFixedLengthSVEData(), and isFixedLengthSVEPredicate().

◆ isFixedLengthSVEData()

bool llvm::abi::VectorType::isFixedLengthSVEData ( ) const
inline

Definition at line 335 of file Types.h.

References isFixedLength(), and isSVEData().

◆ isFixedLengthSVEPredicate()

bool llvm::abi::VectorType::isFixedLengthSVEPredicate ( ) const
inline

Definition at line 336 of file Types.h.

References isFixedLength(), and isSVEPredicate().

◆ isScalable()

bool llvm::abi::VectorType::isScalable ( ) const
inline

Definition at line 304 of file Types.h.

Referenced by getABISizeInBits(), and llvm::abi::Type::isSVESizelessType().

◆ isSVECount()

bool llvm::abi::VectorType::isSVECount ( ) const
inline

Definition at line 333 of file Types.h.

References llvm::abi::SVECount.

◆ isSVEData()

bool llvm::abi::VectorType::isSVEData ( ) const
inline

Definition at line 331 of file Types.h.

References llvm::abi::SVEData.

Referenced by isFixedLengthSVEData().

◆ isSVEPredicate()

bool llvm::abi::VectorType::isSVEPredicate ( ) const
inline

Definition at line 332 of file Types.h.

References llvm::abi::SVEPredicate.

Referenced by isFixedLengthSVEPredicate().

◆ isSVEType()

bool llvm::abi::VectorType::isSVEType ( ) const
inline

Returns true for any of the AArch64 SVE flavors.

Definition at line 341 of file Types.h.

References llvm::abi::Generic.

Referenced by llvm::abi::Type::isSVESizelessType().


The documentation for this class was generated from the following file: