LLVM: llvm::sandboxir::Type Class Reference (original) (raw)
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](SandboxIR%5F2Type%5F8h%5Fsource.html)"
| 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) |
| 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.
Definition at line 47 of file Type.h.
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::StructType::get(), llvm::sandboxir::VectorType::get(), llvm::sandboxir::VectorType::get(), getDoubleTy(), llvm::sandboxir::VectorType::getElementType(), getFloatTy(), getHalfTy(), getInt16Ty(), getInt1Ty(), getInt32Ty(), getInt64Ty(), getInt8Ty(), getScalarType(), and isSized().
◆ ~Type()
| llvm::sandboxir::Type::~Type ( ) | protecteddefault |
|---|
◆ canLosslesslyBitCastTo()
| bool llvm::sandboxir::Type::canLosslesslyBitCastTo ( Type * Ty) const | inline |
|---|
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
Definition at line 207 of file Type.h.
References LLVMTy, and Type().
◆ dump()
◆ dumpOS()
◆ getContext()
| Context & llvm::sandboxir::Type::getContext ( ) const | inline |
|---|
◆ getDoubleTy()
◆ getFloatTy()
◆ getFltSemantics()
◆ getFPMantissaWidth()
| int llvm::sandboxir::Type::getFPMantissaWidth ( ) const | inline |
|---|
Return the width of the mantissa of this type.
This is only valid on floating-point types. If the FP type does not have a stable mantissa (e.g. ppc long double), this method returns -1.
Definition at line 264 of file Type.h.
References LLVMTy.
◆ getHalfTy()
◆ getInt16Ty()
◆ getInt1Ty()
◆ getInt32Ty()
◆ getInt64Ty()
◆ getInt8Ty()
◆ getPointerAddressSpace()
| unsigned llvm::sandboxir::Type::getPointerAddressSpace ( ) const | inline |
|---|
◆ getPrimitiveSizeInBits()
| TypeSize llvm::sandboxir::Type::getPrimitiveSizeInBits ( ) const | 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.
◆ getScalarSizeInBits()
| unsigned llvm::sandboxir::Type::getScalarSizeInBits ( ) const | inline |
|---|
If this is a vector type, return the getPrimitiveSizeInBits value for the element type.
Otherwise return the getPrimitiveSizeInBits value for this type.
Definition at line 259 of file Type.h.
References LLVMTy.
◆ getScalarType()
| LLVM_ABI Type * llvm::sandboxir::Type::getScalarType | ( | ) | const |
|---|
If this is a vector type, return the element type, otherwise return 'this'.
References Context, Ctx, LLVM_ABI, and Type().
◆ is16bitFPTy()
| bool llvm::sandboxir::Type::is16bitFPTy ( ) const | inline |
|---|
Return true if this is a 16-bit float type.
Definition at line 106 of file Type.h.
References LLVMTy.
◆ isAggregateType()
| bool llvm::sandboxir::Type::isAggregateType ( ) const | inline |
|---|
Return true if the type is an aggregate type.
This means it is valid as the first operand of an insertvalue or extractvalue instruction. This includes struct and array types, but does not include vector types.
Definition at line 226 of file Type.h.
References LLVMTy.
◆ isArrayTy()
| bool llvm::sandboxir::Type::isArrayTy ( ) const | inline |
|---|
◆ isBFloatTy()
| bool llvm::sandboxir::Type::isBFloatTy ( ) const | inline |
|---|
Return true if this is 'bfloat', a 16-bit bfloat type.
Definition at line 103 of file Type.h.
References LLVMTy.
◆ isDoubleTy()
| bool llvm::sandboxir::Type::isDoubleTy ( ) const | inline |
|---|
Return true if this is 'double', a 64-bit IEEE fp type.
Definition at line 112 of file Type.h.
References LLVMTy.
◆ isEmptyTy()
| bool llvm::sandboxir::Type::isEmptyTy ( ) const | inline |
|---|
Return true if this type is empty, that is, it has no elements or all of its elements are empty.
Definition at line 213 of file Type.h.
References LLVMTy.
◆ isFirstClassType()
| bool llvm::sandboxir::Type::isFirstClassType ( ) const | inline |
|---|
Return true if the type is "first class", meaning it is a valid type for a Value.
Definition at line 217 of file Type.h.
References LLVMTy.
◆ isFloatingPointTy()
| bool llvm::sandboxir::Type::isFloatingPointTy ( ) const | inline |
|---|
Return true if this is one of the floating-point types.
Definition at line 129 of file Type.h.
References LLVMTy.
◆ isFloatTy()
| bool llvm::sandboxir::Type::isFloatTy ( ) const | inline |
|---|
Return true if this is 'float', a 32-bit IEEE fp type.
Definition at line 109 of file Type.h.
References LLVMTy.
◆ isFP128Ty()
| bool llvm::sandboxir::Type::isFP128Ty ( ) const | inline |
|---|
Return true if this is 'fp128'.
Definition at line 118 of file Type.h.
References LLVMTy.
◆ isFPOrFPVectorTy()
| bool llvm::sandboxir::Type::isFPOrFPVectorTy ( ) const | inline |
|---|
Return true if this is a FP type or a vector of FP.
Definition at line 154 of file Type.h.
References LLVMTy.
◆ isFunctionTy()
| bool llvm::sandboxir::Type::isFunctionTy ( ) const | inline |
|---|
◆ isHalfTy()
| bool llvm::sandboxir::Type::isHalfTy ( ) const | inline |
|---|
Return true if this is 'half', a 16-bit IEEE fp type.
Definition at line 100 of file Type.h.
References LLVMTy.
◆ isIEEELikeFPTy()
| bool llvm::sandboxir::Type::isIEEELikeFPTy ( ) const | inline |
|---|
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.
Definition at line 126 of file Type.h.
References LLVMTy.
◆ isIntegerTy() [1/2]
| bool llvm::sandboxir::Type::isIntegerTy ( ) const | inline |
|---|
◆ isIntegerTy() [2/2]
| bool llvm::sandboxir::Type::isIntegerTy ( unsigned Bitwidth) const | inline |
|---|
◆ isIntOrIntVectorTy() [1/2]
| bool llvm::sandboxir::Type::isIntOrIntVectorTy ( ) const | inline |
|---|
Return true if this is an integer type or a vector of integer types.
Definition at line 174 of file Type.h.
References LLVMTy.
◆ isIntOrIntVectorTy() [2/2]
| bool llvm::sandboxir::Type::isIntOrIntVectorTy ( unsigned BitWidth) const | 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.
◆ isIntOrPtrTy()
| bool llvm::sandboxir::Type::isIntOrPtrTy ( ) const | inline |
|---|
Return true if this is an integer type or a pointer type.
Definition at line 183 of file Type.h.
References LLVMTy.
◆ isLabelTy()
| bool llvm::sandboxir::Type::isLabelTy ( ) const | inline |
|---|
Return true if this is 'label'.
Definition at line 157 of file Type.h.
References LLVMTy.
◆ isMetadataTy()
| bool llvm::sandboxir::Type::isMetadataTy ( ) const | inline |
|---|
Return true if this is 'metadata'.
Definition at line 160 of file Type.h.
References LLVMTy.
◆ isMultiUnitFPType()
| bool llvm::sandboxir::Type::isMultiUnitFPType ( ) const | inline |
|---|
Returns true if this is a floating-point type that is an unevaluated sum of multiple floating-point units.
An example of such a type is ppc_fp128, also known as double-double, which consists of two IEEE 754 doubles.
Definition at line 135 of file Type.h.
References LLVMTy.
◆ isPointerTy()
| bool llvm::sandboxir::Type::isPointerTy ( ) const | inline |
|---|
◆ isPPC_FP128Ty()
| bool llvm::sandboxir::Type::isPPC_FP128Ty ( ) const | inline |
|---|
Return true if this is powerpc long double.
Definition at line 121 of file Type.h.
References LLVMTy.
◆ isPtrOrPtrVectorTy()
| bool llvm::sandboxir::Type::isPtrOrPtrVectorTy ( ) const | inline |
|---|
Return true if this is a pointer type or a vector of pointer types.
Definition at line 198 of file Type.h.
References LLVMTy.
◆ isScalableTargetExtTy()
| bool llvm::sandboxir::Type::isScalableTargetExtTy ( ) const | inline |
|---|
Return true if this is a target extension type with a scalable layout.
Definition at line 148 of file Type.h.
References LLVMTy.
◆ isScalableTy()
| bool llvm::sandboxir::Type::isScalableTy ( ) const | inline |
|---|
Return true if this is a type whose size is a known multiple of vscale.
Definition at line 151 of file Type.h.
References LLVMTy.
◆ isSingleValueType()
| bool llvm::sandboxir::Type::isSingleValueType ( ) const | inline |
|---|
Return true if the type is a valid type for a register in codegen.
This includes all first-class types except struct and array types.
Definition at line 221 of file Type.h.
References LLVMTy.
◆ isSized()
◆ isStructTy()
| bool llvm::sandboxir::Type::isStructTy ( ) const | inline |
|---|
◆ isTargetExtTy()
| bool llvm::sandboxir::Type::isTargetExtTy ( ) const | inline |
|---|
Return true if this is a target extension type.
Definition at line 145 of file Type.h.
References LLVMTy.
◆ isTokenTy()
| bool llvm::sandboxir::Type::isTokenTy ( ) const | inline |
|---|
Return true if this is 'token'.
Definition at line 163 of file Type.h.
References LLVMTy.
◆ isVectorTy()
| bool llvm::sandboxir::Type::isVectorTy ( ) const | inline |
|---|
◆ isVoidTy()
| bool llvm::sandboxir::Type::isVoidTy ( ) const | inline |
|---|
Return true if this is 'void'.
Definition at line 97 of file Type.h.
References LLVMTy.
◆ isX86_AMXTy()
| bool llvm::sandboxir::Type::isX86_AMXTy ( ) const | inline |
|---|
◆ isX86_FP80Ty()
| bool llvm::sandboxir::Type::isX86_FP80Ty ( ) const | inline |
|---|
Return true if this is x86 long double.
Definition at line 115 of file Type.h.
References LLVMTy.
◆ print()
| void llvm::sandboxir::Type::print ( raw_ostream & OS, bool IsForDebug = false, bool NoDetails = false ) const | 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.
◆ ArrayType
◆ CallBase
◆ CmpInst
◆ ConstantArray
◆ ConstantDataSequential
◆ ConstantInt
◆ ConstantStruct
◆ ConstantVector
◆ Context
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().
◆ FixedVectorType
◆ FPMathOperator
◆ Function
◆ FunctionType
◆ IntegerType
◆ Module
◆ PointerType
◆ ScalableVectorType
◆ StructType
◆ TargetExtType
◆ Utils
◆ VectorType
◆ Ctx
| Context& llvm::sandboxir::Type::Ctx | 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().
◆ LLVMTy
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::CastInst::create(), llvm::Instruction::dropPoisonGeneratingReturnAttributes(), 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().
The documentation for this class was generated from the following files: