LLVM 22.0.0git
|
Just like llvm::Type these are immutable, unique, never get freed and can only be created via static factory methods. More...
#include "llvm/SandboxIR/Type.h"
Public Member Functions | |
void | print (raw_ostream &OS, bool IsForDebug=false, bool NoDetails=false) const |
Print the current type. | |
Context & | getContext () const |
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, 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 | 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 |
Return the basic size of this type if it is a primitive type. | |
unsigned | getScalarSizeInBits () const |
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. | |
LLVM_ABI Type * | getScalarType () const |
If this is a vector type, return the element type, otherwise return 'this'. | |
unsigned | getPointerAddressSpace () const |
Get the address space of this pointer or pointer vector type. | |
void | dumpOS (raw_ostream &OS) |
LLVM_DUMP_METHOD void | dump () |
Static Public Member Functions | |
static LLVM_ABI Type * | getInt64Ty (Context &Ctx) |
static LLVM_ABI Type * | getInt32Ty (Context &Ctx) |
static LLVM_ABI Type * | getInt16Ty (Context &Ctx) |
static LLVM_ABI Type * | getInt8Ty (Context &Ctx) |
static LLVM_ABI Type * | getInt1Ty (Context &Ctx) |
static LLVM_ABI Type * | getDoubleTy (Context &Ctx) |
static LLVM_ABI Type * | getFloatTy (Context &Ctx) |
static LLVM_ABI Type * | getHalfTy (Context &Ctx) |
Protected Member Functions | |
Type (llvm::Type *LLVMTy, Context &Ctx) | |
~Type ()=default |
Protected Attributes | |
llvm::Type * | LLVMTy |
Context & | Ctx |
Friends | |
class | ArrayType |
class | StructType |
class | VectorType |
class | FixedVectorType |
class | ScalableVectorType |
class | PointerType |
class | FunctionType |
class | IntegerType |
class | Function |
class | CallBase |
class | ConstantInt |
class | ConstantArray |
class | ConstantStruct |
class | ConstantVector |
class | CmpInst |
class | Utils |
class | TargetExtType |
class | Module |
class | FPMathOperator |
class | ConstantDataSequential |
class | Context |
Just like llvm::Type these are immutable, unique, never get freed and can only be created via static factory methods.
|
inlineprotected |
Definition at line 78 of file Type.h.
References Context, Ctx, and LLVMTy.
Referenced by canLosslesslyBitCastTo(), llvm::sandboxir::ArrayType::classof(), llvm::sandboxir::FunctionType::classof(), llvm::sandboxir::IntegerType::classof(), llvm::sandboxir::PointerType::classof(), llvm::sandboxir::StructType::classof(), llvm::sandboxir::VectorType::classof(), llvm::sandboxir::VectorType::get(), llvm::sandboxir::VectorType::get(), getDoubleTy(), llvm::sandboxir::VectorType::getElementType(), getFloatTy(), getHalfTy(), getInt16Ty(), getInt1Ty(), getInt32Ty(), getInt64Ty(), getInt8Ty(), getScalarType(), and isSized().
|
protecteddefault |
Return true if this type could be converted with a lossless BitCast to type 'Ty'.
For example, i8* to i32*. BitCasts are valid for types of the same size only where no re-interpretation of the bits is done. Determine if this type could be losslessly bitcast to Ty
void Type::dump | ( | ) |
Definition at line 45 of file Type.cpp.
References llvm::dbgs(), and llvm::sandboxir::dumpOS().
void Type::dumpOS | ( | raw_ostream & | OS | ) |
|
inline |
Definition at line 94 of file Type.h.
Referenced by llvm::sandboxir::ShuffleVectorInst::convertShuffleMaskForBitcode(), llvm::sandboxir::VectorType::getDoubleElementsVectorType(), llvm::sandboxir::VectorType::getExtendedElementVectorType(), llvm::sandboxir::VectorType::getHalfElementsVectorType(), llvm::sandboxir::ExtractValueInst::getIndexedType(), llvm::sandboxir::VectorType::getInteger(), llvm::sandboxir::ConstantDataArray::getRaw(), llvm::sandboxir::ConstantDataVector::getRaw(), llvm::sandboxir::VectorType::getSubdividedVectorType(), llvm::sandboxir::VectorType::getTruncatedElementVectorType(), and llvm::sandboxir::CmpInst::makeCmpResultType().
|
inline |
|
inline |
Definition at line 30 of file Type.cpp.
References Context, Ctx, llvm::Type::getInt1Ty(), and Type().
Referenced by llvm::sandboxir::CmpInst::makeCmpResultType().
|
inline |
Get the address space of this pointer or pointer vector type.
Definition at line 283 of file Type.h.
References LLVMTy.
Referenced by llvm::sandboxir::AddrSpaceCastInst::getDestAddressSpace(), and llvm::sandboxir::AddrSpaceCastInst::getSrcAddressSpace().
|
inline |
Return the basic size of this type if it is a primitive type.
These are fixed by LLVM and are not target-dependent. This will return zero if the type does not have a size or is not a primitive type.
If this is a scalable vector type, the scalable property will be set and the runtime size will be a positive integer multiple of the base size.
Note that this may not reflect the size of memory allocated for an instance of the type or the number of bytes that are written when an instance of the type is stored to memory. The DataLayout class provides additional query functions to provide this information.
Definition at line 252 of file Type.h.
References LLVMTy.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
True if this is an instance of FunctionType.
Definition at line 186 of file Type.h.
References LLVMTy.
|
inline |
|
inline |
|
inline |
True if this is an instance of IntegerType.
Definition at line 166 of file Type.h.
References LLVMTy.
Return true if this is an IntegerType of the given width.
Definition at line 169 of file Type.h.
References LLVMTy.
|
inline |
Return true if this is an integer type or a vector of integer types of the given width.
Definition at line 178 of file Type.h.
References llvm::BitWidth, and LLVMTy.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
True if this is an instance of PointerType.
Definition at line 195 of file Type.h.
References LLVMTy.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Return true if it makes sense to take the size of this type.
To get the actual size for a particular target, it is reasonable to use the DataLayout subsystem to do this.
Definition at line 231 of file Type.h.
References llvm::SmallPtrSetImpl< PtrType >::insert(), LLVMTy, llvm::SmallPtrSetImplBase::reserve(), and Type().
|
inline |
True if this is an instance of StructType.
Definition at line 189 of file Type.h.
References LLVMTy.
|
inline |
|
inline |
|
inline |
True if this is an instance of VectorType.
Definition at line 201 of file Type.h.
References LLVMTy.
Referenced by llvm::sandboxir::VecUtils::getElementType().
|
inline |
|
inline |
|
inline |
|
inline |
Print the current type.
Omit the type details if NoDetails
== true. E.g., let st = type { i32, i16 } When NoDetails
is true, we only print st. Put differently, NoDetails
prints the type as if inlined with the operands when printing an instruction.
Definition at line 89 of file Type.h.
References LLVMTy.
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
Definition at line 70 of file Type.h.
References ConstantDataSequential.
Referenced by ConstantDataSequential.
|
friend |
|
friend |
|
friend |
|
friend |
Definition at line 79 of file Type.h.
References Context.
Referenced by Context, llvm::sandboxir::IntegerType::get(), llvm::sandboxir::PointerType::get(), llvm::sandboxir::StructType::get(), getContext(), getDoubleTy(), getFloatTy(), getHalfTy(), getInt16Ty(), getInt1Ty(), getInt32Ty(), getInt64Ty(), getInt8Ty(), getScalarType(), and Type().
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
Definition at line 57 of file Type.h.
References IntegerType.
Referenced by llvm::sandboxir::IntegerType::get(), and IntegerType.
|
friend |
|
friend |
Definition at line 55 of file Type.h.
References PointerType.
Referenced by llvm::sandboxir::PointerType::get(), and PointerType.
|
friend |
Definition at line 54 of file Type.h.
References ScalableVectorType.
Referenced by ScalableVectorType.
|
friend |
Definition at line 51 of file Type.h.
References StructType.
Referenced by llvm::sandboxir::StructType::get(), and StructType.
|
friend |
|
friend |
|
friend |
Definition at line 52 of file Type.h.
References VectorType.
Referenced by llvm::sandboxir::VectorType::get(), llvm::sandboxir::VectorType::get(), llvm::sandboxir::VectorType::getDoubleElementsVectorType(), llvm::sandboxir::VectorType::getExtendedElementVectorType(), llvm::sandboxir::VectorType::getHalfElementsVectorType(), llvm::sandboxir::VectorType::getInteger(), llvm::sandboxir::VectorType::getSubdividedVectorType(), llvm::sandboxir::VectorType::getTruncatedElementVectorType(), and VectorType.
|
protected |
Definition at line 76 of file Type.h.
Referenced by llvm::sandboxir::PointerType::get(), llvm::sandboxir::StructType::get(), getContext(), getDoubleTy(), llvm::sandboxir::VectorType::getElementType(), getFloatTy(), getHalfTy(), getInt16Ty(), getInt1Ty(), getInt32Ty(), getInt64Ty(), getInt8Ty(), getScalarType(), and Type().
|
protected |
Definition at line 49 of file Type.h.
Referenced by canLosslesslyBitCastTo(), llvm::sandboxir::ArrayType::classof(), llvm::sandboxir::FunctionType::classof(), llvm::sandboxir::IntegerType::classof(), llvm::sandboxir::PointerType::classof(), llvm::sandboxir::StructType::classof(), llvm::sandboxir::VectorType::classof(), llvm::sandboxir::ShuffleVectorInst::convertShuffleMaskForBitcode(), llvm::sandboxir::CallInst::create(), llvm::sandboxir::CastInst::create(), dumpOS(), llvm::sandboxir::VectorType::getElementCount(), llvm::sandboxir::VectorType::getElementType(), getFltSemantics(), getFPMantissaWidth(), llvm::sandboxir::ExtractValueInst::getIndexedType(), llvm::sandboxir::VectorType::getInteger(), llvm::sandboxir::ScalableVectorType::getMinNumElements(), llvm::sandboxir::FixedVectorType::getNumElements(), getPointerAddressSpace(), getPrimitiveSizeInBits(), llvm::sandboxir::ConstantDataArray::getRaw(), llvm::sandboxir::ConstantDataVector::getRaw(), getScalarSizeInBits(), llvm::sandboxir::VectorType::getSubdividedVectorType(), is16bitFPTy(), isAggregateType(), isArrayTy(), isBFloatTy(), isDoubleTy(), isEmptyTy(), isFirstClassType(), isFloatingPointTy(), isFloatTy(), isFP128Ty(), isFPOrFPVectorTy(), isFunctionTy(), isHalfTy(), isIEEELikeFPTy(), isIntegerTy(), isIntegerTy(), isIntOrIntVectorTy(), isIntOrIntVectorTy(), isIntOrPtrTy(), isLabelTy(), isMetadataTy(), isMultiUnitFPType(), llvm::sandboxir::StructType::isPacked(), isPointerTy(), isPPC_FP128Ty(), isPtrOrPtrVectorTy(), isScalableTargetExtTy(), isScalableTy(), isSingleValueType(), isSized(), isStructTy(), isTargetExtTy(), isTokenTy(), isVectorTy(), isVoidTy(), isX86_AMXTy(), isX86_FP80Ty(), llvm::sandboxir::IntegerType::operator llvm::IntegerType &(), print(), and Type().