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: