35template <
typename PtrType>
class SmallPtrSetImpl;
86 unsigned SubclassData : 24;
123 bool NoDetails =
false)
const;
322 return isSizedDerivedType(Visited);
355 return const_cast<Type *
>(
this);
462 int noOfBits =
sizeof(ScalarTy) * CHAR_BIT;
463 if (std::is_integral<ScalarTy>::value) {
465 }
else if (std::is_floating_point<ScalarTy>::value) {
507 return Ty.
getTypeID() == Type::PointerTyID;
517 return reinterpret_cast<Type**
>(Tys);
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
#define DEFINE_ISA_CONVERSION_FUNCTIONS(ty, ref)
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Class to represent integer types.
This is an important class for using LLVM in a threaded context.
Class to represent pointers.
A templated base class for SmallPtrSet which provides the typesafe interface that is common across al...
StringRef - Represent a constant reference to a string, i.e.
The instances of the Type class are immutable: once they are created, they are never changed.
static LLVM_ABI Type * getFloatTy(LLVMContext &C)
LLVM_ABI TypeSize getPrimitiveSizeInBits() const LLVM_READONLY
Return the basic size of this type if it is a primitive type.
LLVM_ABI bool isFunctionVarArg() const
static LLVM_ABI Type * getPrimitiveType(LLVMContext &C, TypeID IDNumber)
Return a type based on an identifier.
LLVM_ABI bool isIntegerTy(unsigned Bitwidth) const
Return true if this is an IntegerType of the given width.
bool isIntOrIntVectorTy(unsigned BitWidth) const
Return true if this is an integer type or a vector of integer types of the given width.
static LLVM_ABI Type * getFP128Ty(LLVMContext &C)
bool isVectorTy() const
True if this is an instance of VectorType.
static LLVM_ABI Type * getPPC_FP128Ty(LLVMContext &C)
static LLVM_ABI Type * getDoubleTy(LLVMContext &C)
bool isX86_FP80Ty() const
Return true if this is x86 long double.
LLVM_ABI int getFPMantissaWidth() const
Return the width of the mantissa of this type.
LLVM_ABI bool canLosslesslyBitCastTo(Type *Ty) const
Return true if this type could be converted with a lossless BitCast to type 'Ty'.
LLVM_ABI Type * getExtendedType() const
Given scalar/vector integer type, returns a type with elements twice as wide as in the original type.
bool isArrayTy() const
True if this is an instance of ArrayType.
static LLVM_ABI Type * getLabelTy(LLVMContext &C)
bool isLabelTy() const
Return true if this is 'label'.
bool isIntOrIntVectorTy() const
Return true if this is an integer type or a vector of integer types.
LLVM_ABI bool isEmptyTy() const
Return true if this type is empty, that is, it has no elements or all of its elements are empty.
LLVM_ABI void dump() const
LLVM_ABI bool containsNonLocalTargetExtType() const
static LLVM_ABI IntegerType * getInt8Ty(LLVMContext &C)
bool isPointerTy() const
True if this is an instance of PointerType.
static LLVM_ABI IntegerType * getInt32Ty(LLVMContext &C)
Type * getArrayElementType() const
bool isFloatTy() const
Return true if this is 'float', a 32-bit IEEE fp type.
static LLVM_ABI Type * getHalfTy(LLVMContext &C)
static LLVM_ABI IntegerType * getIntNTy(LLVMContext &C, unsigned N)
bool isBFloatTy() const
Return true if this is 'bfloat', a 16-bit bfloat type.
LLVM_ABI StringRef getTargetExtName() const
Type *const * subtype_iterator
LLVM_ABI bool isFirstClassType() const
Return true if the type is "first class", meaning it is a valid type for a Value.
static LLVM_ABI Type * getWasm_ExternrefTy(LLVMContext &C)
LLVM_ABI bool containsNonGlobalTargetExtType(SmallPtrSetImpl< const Type * > &Visited) const
Return true if this type is or contains a target extension type that disallows being used as a global...
LLVM_ABI bool isScalableTargetExtTy() const
Return true if this is a target extension type with a scalable layout.
TypeID
Definitions of all of the base types for the Type system.
@ X86_AMXTyID
AMX vectors (8192 bits, X86 specific)
@ TypedPointerTyID
Typed pointer used by some GPU targets.
@ HalfTyID
16-bit floating point type
@ TargetExtTyID
Target extension type.
@ VoidTyID
type with no size
@ ScalableVectorTyID
Scalable SIMD vector type.
@ FloatTyID
32-bit floating point type
@ IntegerTyID
Arbitrary bit width integers.
@ FixedVectorTyID
Fixed width SIMD vector type.
@ BFloatTyID
16-bit floating point type (7-bit significand)
@ DoubleTyID
64-bit floating point type
@ X86_FP80TyID
80-bit floating point type (X87)
@ PPC_FP128TyID
128-bit floating point type (two 64-bits, PowerPC)
@ FP128TyID
128-bit floating point type (112-bit significand)
ArrayRef< Type * > subtypes() const
bool isSingleValueType() const
Return true if the type is a valid type for a register in codegen.
static LLVM_ABI IntegerType * getInt1Ty(LLVMContext &C)
unsigned getNumContainedTypes() const
Return the number of types in the derived type.
bool isPPC_FP128Ty() const
Return true if this is powerpc long double.
unsigned NumContainedTys
Keeps track of how many Type*'s there are in the ContainedTys list.
static LLVM_ABI IntegerType * getInt64Ty(LLVMContext &C)
static LLVM_ABI Type * getX86_AMXTy(LLVMContext &C)
bool isFP128Ty() const
Return true if this is 'fp128'.
LLVM_ABI Type * getWithNewBitWidth(unsigned NewBitWidth) const
Given an integer or vector type, change the lane bitwidth to NewBitwidth, whilst keeping the old numb...
static LLVM_ABI Type * getBFloatTy(LLVMContext &C)
LLVM_ABI LLVM_DEPRECATED("Use PointerType::get instead", "PointerType::get") PointerType *getPointerTo(unsigned AddrSpace=0) const
Return a pointer to the current type.
bool is16bitFPTy() const
Return true if this is a 16-bit float type.
LLVM_ABI StringRef getStructName() const
static LLVM_ABI Type * getVoidTy(LLVMContext &C)
LLVM_ABI unsigned getPointerAddressSpace() const
Get the address space of this pointer or pointer vector type.
LLVM_ABI bool isScalableTy(SmallPtrSetImpl< const Type * > &Visited) const
Return true if this is a type whose size is a known multiple of vscale.
bool isMultiUnitFPType() const
Returns true if this is a floating-point type that is an unevaluated sum of multiple floating-point u...
Type(LLVMContext &C, TypeID tid)
bool isStructTy() const
True if this is an instance of StructType.
LLVM_ABI bool containsNonLocalTargetExtType(SmallPtrSetImpl< const Type * > &Visited) const
Return true if this type is or contains a target extension type that disallows being used as a local.
bool isTargetExtTy() const
Return true if this is a target extension type.
bool isSized(SmallPtrSetImpl< Type * > *Visited=nullptr) const
Return true if it makes sense to take the size of this type.
bool isAggregateType() const
Return true if the type is an aggregate type.
bool isHalfTy() const
Return true if this is 'half', a 16-bit IEEE fp type.
LLVMContext & getContext() const
Return the LLVMContext in which this type was uniqued.
Type *const * ContainedTys
A pointer to the array of Types contained by this Type.
unsigned getSubclassData() const
bool isTokenLikeTy() const
Returns true if this is 'token' or a token-like target type.s.
std::reverse_iterator< subtype_iterator > subtype_reverse_iterator
bool isDoubleTy() const
Return true if this is 'double', a 64-bit IEEE fp type.
void setSubclassData(unsigned val)
bool isFloatingPointTy() const
Return true if this is one of the floating-point types.
bool isPtrOrPtrVectorTy() const
Return true if this is a pointer type or a vector of pointer types.
subtype_iterator subtype_begin() const
LLVM_ABI Type * getFunctionParamType(unsigned i) const
bool isX86_AMXTy() const
Return true if this is X86 AMX.
static Type * getScalarTy(LLVMContext &C)
static LLVM_ABI Type * getX86_FP80Ty(LLVMContext &C)
bool isFunctionTy() const
True if this is an instance of FunctionType.
bool isIntOrPtrTy() const
Return true if this is an integer type or a pointer type.
static LLVM_ABI IntegerType * getInt16Ty(LLVMContext &C)
LLVM_ABI const fltSemantics & getFltSemantics() const
LLVM_ABI unsigned getScalarSizeInBits() const LLVM_READONLY
If this is a vector type, return the getPrimitiveSizeInBits value for the element type.
bool isIntegerTy() const
True if this is an instance of IntegerType.
LLVM_ABI bool containsNonGlobalTargetExtType() const
TypeID getTypeID() const
Return the type id for the type.
LLVM_ABI Type * getStructElementType(unsigned N) const
bool isTokenTy() const
Return true if this is 'token'.
subtype_reverse_iterator subtype_rend() const
static LLVM_ABI Type * getMetadataTy(LLVMContext &C)
static LLVM_ABI IntegerType * getInt128Ty(LLVMContext &C)
LLVM_ABI void print(raw_ostream &O, bool IsForDebug=false, bool NoDetails=false) const
Print the current type.
static LLVM_ABI Type * getFloatingPointTy(LLVMContext &C, const fltSemantics &S)
static LLVM_ABI Type * getWasm_FuncrefTy(LLVMContext &C)
bool isFPOrFPVectorTy() const
Return true if this is a FP type or a vector of FP.
subtype_reverse_iterator subtype_rbegin() const
Type * getContainedType(unsigned i) const
This method is used to implement the type iterator (defined at the end of the file).
subtype_iterator subtype_end() const
bool isIEEELikeFPTy() const
Return true if this is a well-behaved IEEE-like type, which has a IEEE compatible layout,...
LLVM_ABI bool isRISCVVectorTupleTy() const
LLVM_ABI bool isScalableTy() const
bool isVoidTy() const
Return true if this is 'void'.
LLVM_ABI unsigned getStructNumElements() const
LLVM_ABI unsigned getIntegerBitWidth() const
LLVM_ABI unsigned getFunctionNumParams() const
LLVM_ABI uint64_t getArrayNumElements() const
static LLVM_ABI Type * getTokenTy(LLVMContext &C)
Type * getScalarType() const
If this is a vector type, return the element type, otherwise return 'this'.
bool isMetadataTy() const
Return true if this is 'metadata'.
LLVM_ABI Type * getWithNewType(Type *EltTy) const
Given vector type, change the element type, whilst keeping the old number of elements.
This class implements an extremely fast bulk output stream that can only output to a stream.
struct LLVMOpaqueType * LLVMTypeRef
Each value in the LLVM IR has a type, an LLVMTypeRef.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
@ C
The default llvm calling convention, compatible with C.
This is an optimization pass for GlobalISel generic memory operations.
Attribute unwrap(LLVMAttributeRef Attr)
constexpr unsigned BitWidth
LLVMAttributeRef wrap(Attribute Attr)
static bool doit(const Type &Ty)