23 return getTypeStoreSizeInBits().getFixedValue();
32 const Type *EltTy = VT->getElementType();
34 uint64_t EltWidth =
IT && !
IT->isBitInt() ?
IT->getFixedSizeInBitsOrZero()
36 uint64_t Width = EltWidth * VT->getNumElements().getFixedValue();
37 return bit_ceil(std::max<uint64_t>(Width, 8));
58 static_cast<const TupleType *
>(
this)->getVectorType();
66 return RT && RT->isEmpty();
69bool RecordType::isEmpty()
const {
82 if (!
Base.FieldType->isEmptyRecord())
94RecordType::getElementContainingOffset(
unsigned OffsetInBits)
const {
96 unsigned Start = Element.OffsetInBits;
97 unsigned Size = Element.FieldType->getSizeInBits().getFixedValue();
98 return OffsetInBits >= Start && OffsetInBits < Start +
Size;
106 if (!VBase.FieldType->isEmptyRecord() &&
Contains(VBase))
110 if (
Field.IsUnnamedBitfield)
124 bool WasArray =
false;
127 if (AT->getNumElements() == 0)
129 Ty = AT->getElementType();
142 return RT->isEmpty();
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static cl::opt< ITMode > IT(cl::desc("IT block support"), cl::Hidden, cl::init(DefaultIT), cl::values(clEnumValN(DefaultIT, "arm-default-it", "Generate any type of IT block"), clEnumValN(RestrictedIT, "arm-restrict-it", "Disallow complex IT blocks")))
OptimizedStructLayoutField Field
static bool Contains(directive::VersionRange V, int P)
This file implements the C++20 <bit> header.
bool canPassInRegisters() const
ArrayRef< FieldInfo > getBaseClasses() const
ArrayRef< FieldInfo > getFields() const
uint32_t getNumVirtualBaseClasses() const
bool hasFlexibleArrayMember() const
ArrayRef< FieldInfo > getVirtualBaseClasses() const
A homogeneous tuple of 2, 3, or 4 identical vectors, such as the AArch64 SVE types svint32x3_t and sv...
Represents the ABI-specific view of a type in LLVM.
TypeSize getTypeAllocSize() const
LLVM_ABI bool isSVESizelessType() const
LLVM_ABI bool isEmptyRecord() const
True if this type is a record that is empty for ABI purposes.
Type(TypeKind K, TypeSize SizeInBits, Align ABIAlign)
LLVM_ABI uint64_t getABISizeInBits() const
Returns the size in bits that the source language gives this type, including any padding.
uint64_t getFixedSizeInBitsOrZero() const
Returns the size in bits if it is fixed, otherwise 0.
bool isSVEType() const
Returns true for any of the AArch64 SVE flavors.
constexpr ScalarTy getFixedValue() const
This file defines the type system for the LLVMABI library, which mirrors ABI-relevant aspects of fron...
#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.
decltype(auto) dyn_cast(const From &Val)
dyn_cast<X> - Return the argument parameter cast to the specified type.
T bit_ceil(T Value)
Returns the smallest integral power of two no smaller than Value if Value is nonzero.
decltype(auto) cast(const From &Val)
cast<X> - Return the argument parameter cast to the specified type.
LLVM_ABI bool isEmpty() const