LLVM 22.0.0git
llvm::sandboxir::Type Class Reference

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"

Inheritance diagram for llvm::sandboxir::Type:
[legend]

Public Member Functions

void print (raw_ostream &OS, bool IsForDebug=false, bool NoDetails=false) const
 Print the current type.
ContextgetContext () 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 fltSemanticsgetFltSemantics () 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 TypegetScalarType () 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 TypegetInt64Ty (Context &Ctx)
static LLVM_ABI TypegetInt32Ty (Context &Ctx)
static LLVM_ABI TypegetInt16Ty (Context &Ctx)
static LLVM_ABI TypegetInt8Ty (Context &Ctx)
static LLVM_ABI TypegetInt1Ty (Context &Ctx)
static LLVM_ABI TypegetDoubleTy (Context &Ctx)
static LLVM_ABI TypegetFloatTy (Context &Ctx)
static LLVM_ABI TypegetHalfTy (Context &Ctx)

Protected Member Functions

 Type (llvm::Type *LLVMTy, Context &Ctx)
 ~Type ()=default

Protected Attributes

llvm::TypeLLVMTy
ContextCtx

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

Detailed Description

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.

Constructor & Destructor Documentation

◆ Type()

◆ ~Type()

llvm::sandboxir::Type::~Type ( )
protecteddefault

Member Function Documentation

◆ 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()

void Type::dump ( )

Definition at line 45 of file Type.cpp.

References llvm::dbgs(), and llvm::sandboxir::dumpOS().

◆ dumpOS()

void Type::dumpOS ( raw_ostream & OS)

Definition at line 44 of file Type.cpp.

References dumpOS(), and LLVMTy.

Referenced by dumpOS().

◆ getContext()

◆ getDoubleTy()

Type * Type::getDoubleTy ( Context & Ctx)
static

Definition at line 33 of file Type.cpp.

References Context, Ctx, llvm::Type::getDoubleTy(), and Type().

◆ getFloatTy()

Type * Type::getFloatTy ( Context & Ctx)
static

Definition at line 36 of file Type.cpp.

References Context, Ctx, llvm::Type::getFloatTy(), and Type().

◆ getFltSemantics()

const fltSemantics & llvm::sandboxir::Type::getFltSemantics ( ) const
inline

Definition at line 137 of file Type.h.

References LLVMTy.

◆ 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()

Type * Type::getHalfTy ( Context & Ctx)
static

Definition at line 39 of file Type.cpp.

References Context, Ctx, llvm::Type::getHalfTy(), and Type().

◆ getInt16Ty()

Type * Type::getInt16Ty ( Context & Ctx)
static

Definition at line 24 of file Type.cpp.

References Context, Ctx, llvm::Type::getInt16Ty(), and Type().

◆ getInt1Ty()

Type * Type::getInt1Ty ( Context & Ctx)
static

Definition at line 30 of file Type.cpp.

References Context, Ctx, llvm::Type::getInt1Ty(), and Type().

Referenced by llvm::sandboxir::CmpInst::makeCmpResultType().

◆ getInt32Ty()

Type * Type::getInt32Ty ( Context & Ctx)
static

Definition at line 21 of file Type.cpp.

References Context, Ctx, llvm::Type::getInt32Ty(), and Type().

◆ getInt64Ty()

Type * Type::getInt64Ty ( Context & Ctx)
static

Definition at line 18 of file Type.cpp.

References Context, Ctx, llvm::Type::getInt64Ty(), and Type().

◆ getInt8Ty()

Type * Type::getInt8Ty ( Context & Ctx)
static

Definition at line 27 of file Type.cpp.

References Context, Ctx, llvm::Type::getInt8Ty(), and Type().

◆ getPointerAddressSpace()

unsigned llvm::sandboxir::Type::getPointerAddressSpace ( ) const
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().

◆ 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

True if this is an instance of ArrayType.

Definition at line 192 of file Type.h.

References LLVMTy.

◆ 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

True if this is an instance of FunctionType.

Definition at line 186 of file Type.h.

References LLVMTy.

◆ 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

True if this is an instance of IntegerType.

Definition at line 166 of file Type.h.

References LLVMTy.

◆ isIntegerTy() [2/2]

bool llvm::sandboxir::Type::isIntegerTy ( unsigned Bitwidth) const
inline

Return true if this is an IntegerType of the given width.

Definition at line 169 of file Type.h.

References LLVMTy.

◆ 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

True if this is an instance of PointerType.

Definition at line 195 of file Type.h.

References LLVMTy.

◆ 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()

bool llvm::sandboxir::Type::isSized ( SmallPtrSetImpl< Type * > * Visited = nullptr) const
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().

◆ isStructTy()

bool llvm::sandboxir::Type::isStructTy ( ) const
inline

True if this is an instance of StructType.

Definition at line 189 of file Type.h.

References LLVMTy.

◆ 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

True if this is an instance of VectorType.

Definition at line 201 of file Type.h.

References LLVMTy.

Referenced by llvm::sandboxir::VecUtils::getElementType().

◆ 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

Return true if this is X86 AMX.

Definition at line 142 of file Type.h.

References LLVMTy.

◆ 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

friend class ArrayType
friend

Definition at line 50 of file Type.h.

References ArrayType.

Referenced by ArrayType.

◆ CallBase

friend class CallBase
friend

Definition at line 59 of file Type.h.

References CallBase.

Referenced by CallBase.

◆ CmpInst

friend class CmpInst
friend

Definition at line 64 of file Type.h.

References CmpInst.

Referenced by CmpInst.

◆ ConstantArray

friend class ConstantArray
friend

Definition at line 61 of file Type.h.

References ConstantArray.

Referenced by ConstantArray.

◆ ConstantDataSequential

friend class ConstantDataSequential
friend

Definition at line 70 of file Type.h.

References ConstantDataSequential.

Referenced by ConstantDataSequential.

◆ ConstantInt

friend class ConstantInt
friend

Definition at line 60 of file Type.h.

References ConstantInt.

Referenced by ConstantInt.

◆ ConstantStruct

friend class ConstantStruct
friend

Definition at line 62 of file Type.h.

References ConstantStruct.

Referenced by ConstantStruct.

◆ ConstantVector

friend class ConstantVector
friend

Definition at line 63 of file Type.h.

References ConstantVector.

Referenced by ConstantVector.

◆ Context

◆ FixedVectorType

friend class FixedVectorType
friend

Definition at line 53 of file Type.h.

References FixedVectorType.

Referenced by FixedVectorType.

◆ FPMathOperator

friend class FPMathOperator
friend

Definition at line 69 of file Type.h.

References FPMathOperator.

Referenced by FPMathOperator.

◆ Function

friend class Function
friend

Definition at line 58 of file Type.h.

References Function.

Referenced by Function.

◆ FunctionType

friend class FunctionType
friend

Definition at line 56 of file Type.h.

References FunctionType.

Referenced by FunctionType.

◆ IntegerType

friend class IntegerType
friend

Definition at line 57 of file Type.h.

References IntegerType.

Referenced by llvm::sandboxir::IntegerType::get(), and IntegerType.

◆ Module

friend class Module
friend

Definition at line 68 of file Type.h.

References Module.

Referenced by Module.

◆ PointerType

friend class PointerType
friend

Definition at line 55 of file Type.h.

References PointerType.

Referenced by llvm::sandboxir::PointerType::get(), and PointerType.

◆ ScalableVectorType

friend class ScalableVectorType
friend

Definition at line 54 of file Type.h.

References ScalableVectorType.

Referenced by ScalableVectorType.

◆ StructType

friend class StructType
friend

Definition at line 51 of file Type.h.

References StructType.

Referenced by llvm::sandboxir::StructType::get(), and StructType.

◆ TargetExtType

friend class TargetExtType
friend

Definition at line 67 of file Type.h.

References TargetExtType.

Referenced by TargetExtType.

◆ Utils

friend class Utils
friend

Definition at line 66 of file Type.h.

References Utils.

Referenced by Utils.

◆ VectorType

Member Data Documentation

◆ Ctx

◆ LLVMTy

llvm::Type* llvm::sandboxir::Type::LLVMTy
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().


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