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 |
|
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
Definition at line 207 of file Type.h.
References llvm::Type::canLosslesslyBitCastTo(), and LLVMTy.
LLVM_DUMP_METHOD void llvm::sandboxir::Type::dump | ( | ) |
void llvm::sandboxir::Type::dumpOS | ( | raw_ostream & | OS | ) |
|
inline |
Definition at line 94 of file Type.h.
References Ctx.
Referenced by llvm::sandboxir::ShuffleVectorInst::convertShuffleMaskForBitcode(), llvm::sandboxir::ConstantPointerNull::get(), llvm::sandboxir::ConstantAggregateZero::get(), llvm::sandboxir::ConstantFP::get(), llvm::sandboxir::ConstantInt::get(), llvm::sandboxir::ConstantInt::getBool(), llvm::sandboxir::VectorType::getDoubleElementsVectorType(), llvm::sandboxir::VectorType::getExtendedElementVectorType(), llvm::sandboxir::ConstantInt::getFalse(), llvm::sandboxir::VectorType::getHalfElementsVectorType(), llvm::sandboxir::ExtractValueInst::getIndexedType(), llvm::sandboxir::ConstantFP::getInfinity(), llvm::sandboxir::VectorType::getInteger(), llvm::sandboxir::ConstantFP::getNaN(), llvm::sandboxir::ConstantFP::getNegativeZero(), llvm::sandboxir::ConstantFP::getQNaN(), llvm::sandboxir::ConstantDataArray::getRaw(), llvm::sandboxir::ConstantDataVector::getRaw(), llvm::sandboxir::ConstantInt::getSigned(), llvm::sandboxir::ConstantFP::getSNaN(), llvm::sandboxir::VectorType::getSubdividedVectorType(), llvm::sandboxir::ConstantInt::getTrue(), llvm::sandboxir::VectorType::getTruncatedElementVectorType(), llvm::sandboxir::ConstantFP::getZero(), and llvm::sandboxir::CmpInst::makeCmpResultType().
|
inline |
Definition at line 137 of file Type.h.
References llvm::Type::getFltSemantics(), and LLVMTy.
|
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 llvm::Type::getFPMantissaWidth(), and LLVMTy.
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 llvm::Type::getPointerAddressSpace(), and 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 llvm::Type::getPrimitiveSizeInBits(), and LLVMTy.
|
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 llvm::Type::getScalarSizeInBits(), and LLVMTy.
If this is a vector type, return the element type, otherwise return 'this'.
|
inline |
Return true if this is a 16-bit float type.
Definition at line 106 of file Type.h.
References llvm::Type::is16bitFPTy(), and LLVMTy.
|
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 llvm::Type::isAggregateType(), and LLVMTy.
|
inline |
True if this is an instance of ArrayType.
Definition at line 192 of file Type.h.
References llvm::Type::isArrayTy(), and LLVMTy.
|
inline |
Return true if this is 'bfloat', a 16-bit bfloat type.
Definition at line 103 of file Type.h.
References llvm::Type::isBFloatTy(), and LLVMTy.
|
inline |
Return true if this is 'double', a 64-bit IEEE fp type.
Definition at line 112 of file Type.h.
References llvm::Type::isDoubleTy(), and LLVMTy.
|
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 llvm::Type::isEmptyTy(), and LLVMTy.
|
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 llvm::Type::isFirstClassType(), and LLVMTy.
|
inline |
Return true if this is one of the floating-point types.
Definition at line 129 of file Type.h.
References llvm::Type::isFloatingPointTy(), and LLVMTy.
|
inline |
Return true if this is 'float', a 32-bit IEEE fp type.
Definition at line 109 of file Type.h.
References llvm::Type::isFloatTy(), and LLVMTy.
|
inline |
Return true if this is 'fp128'.
Definition at line 118 of file Type.h.
References llvm::Type::isFP128Ty(), and LLVMTy.
|
inline |
Return true if this is a FP type or a vector of FP.
Definition at line 154 of file Type.h.
References llvm::Type::isFPOrFPVectorTy(), and LLVMTy.
|
inline |
True if this is an instance of FunctionType.
Definition at line 186 of file Type.h.
References llvm::Type::isFunctionTy(), and LLVMTy.
|
inline |
Return true if this is 'half', a 16-bit IEEE fp type.
Definition at line 100 of file Type.h.
References llvm::Type::isHalfTy(), and LLVMTy.
|
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 llvm::Type::isIEEELikeFPTy(), and LLVMTy.
|
inline |
True if this is an instance of IntegerType.
Definition at line 166 of file Type.h.
References llvm::Type::isIntegerTy(), and LLVMTy.
Return true if this is an IntegerType of the given width.
Definition at line 169 of file Type.h.
References llvm::Type::isIntegerTy(), and LLVMTy.
|
inline |
Return true if this is an integer type or a vector of integer types.
Definition at line 174 of file Type.h.
References llvm::Type::isIntOrIntVectorTy(), and LLVMTy.
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, llvm::Type::isIntOrIntVectorTy(), and LLVMTy.
|
inline |
Return true if this is an integer type or a pointer type.
Definition at line 183 of file Type.h.
References llvm::Type::isIntOrPtrTy(), and LLVMTy.
|
inline |
Return true if this is 'label'.
Definition at line 157 of file Type.h.
References llvm::Type::isLabelTy(), and LLVMTy.
|
inline |
Return true if this is 'metadata'.
Definition at line 160 of file Type.h.
References llvm::Type::isMetadataTy(), and LLVMTy.
|
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 llvm::Type::isMultiUnitFPType(), and LLVMTy.
|
inline |
True if this is an instance of PointerType.
Definition at line 195 of file Type.h.
References llvm::Type::isPointerTy(), and LLVMTy.
|
inline |
Return true if this is powerpc long double.
Definition at line 121 of file Type.h.
References llvm::Type::isPPC_FP128Ty(), and LLVMTy.
Referenced by llvm::sandboxir::isValidMemSeed().
|
inline |
Return true if this is a pointer type or a vector of pointer types.
Definition at line 198 of file Type.h.
References llvm::Type::isPtrOrPtrVectorTy(), and LLVMTy.
|
inline |
Return true if this is a target extension type with a scalable layout.
Definition at line 148 of file Type.h.
References llvm::Type::isScalableTargetExtTy(), and LLVMTy.
|
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 llvm::Type::isScalableTy(), and LLVMTy.
|
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 llvm::Type::isSingleValueType(), and LLVMTy.
|
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(), llvm::Type::isSized(), LLVMTy, and llvm::SmallPtrSetImplBase::reserve().
|
inline |
True if this is an instance of StructType.
Definition at line 189 of file Type.h.
References llvm::Type::isStructTy(), and LLVMTy.
|
inline |
Return true if this is a target extension type.
Definition at line 145 of file Type.h.
References llvm::Type::isTargetExtTy(), and LLVMTy.
|
inline |
Return true if this is 'token'.
Definition at line 163 of file Type.h.
References llvm::Type::isTokenTy(), and LLVMTy.
|
inline |
True if this is an instance of VectorType.
Definition at line 201 of file Type.h.
References llvm::Type::isVectorTy(), and LLVMTy.
Referenced by llvm::sandboxir::VecUtils::getElementType(), llvm::sandboxir::VecUtils::getNumElements(), and llvm::sandboxir::VecUtils::getWideType().
|
inline |
Return true if this is 'void'.
Definition at line 97 of file Type.h.
References llvm::Type::isVoidTy(), and LLVMTy.
|
inline |
Return true if this is X86 AMX.
Definition at line 142 of file Type.h.
References llvm::Type::isX86_AMXTy(), and LLVMTy.
|
inline |
Return true if this is x86 long double.
Definition at line 115 of file Type.h.
References llvm::Type::isX86_FP80Ty(), and LLVMTy.
Referenced by llvm::sandboxir::isValidMemSeed().
|
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, OS, and llvm::Type::print().
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
protected |
Definition at line 76 of file Type.h.
Referenced by getContext().
|
protected |
Definition at line 49 of file Type.h.
Referenced by canLosslesslyBitCastTo(), llvm::sandboxir::ShuffleVectorInst::convertShuffleMaskForBitcode(), llvm::sandboxir::CallInst::create(), llvm::sandboxir::CastInst::create(), llvm::sandboxir::AllocaInst::create(), llvm::sandboxir::PHINode::create(), llvm::sandboxir::GetElementPtrInst::create(), llvm::sandboxir::ConstantPointerNull::get(), llvm::sandboxir::ConstantAggregateZero::get(), llvm::sandboxir::ConstantFP::get(), llvm::sandboxir::ConstantInt::get(), llvm::sandboxir::ConstantInt::getBool(), llvm::sandboxir::VectorType::getDoubleElementsVectorType(), llvm::sandboxir::VectorType::getElementCount(), llvm::sandboxir::VectorType::getExtendedElementVectorType(), llvm::sandboxir::ConstantInt::getFalse(), getFltSemantics(), getFPMantissaWidth(), llvm::sandboxir::VectorType::getHalfElementsVectorType(), llvm::sandboxir::ExtractValueInst::getIndexedType(), llvm::sandboxir::ConstantFP::getInfinity(), llvm::sandboxir::VectorType::getInteger(), llvm::sandboxir::ScalableVectorType::getMinNumElements(), llvm::sandboxir::ConstantFP::getNaN(), llvm::sandboxir::ConstantFP::getNegativeZero(), llvm::sandboxir::Utils::getNumBits(), llvm::sandboxir::FixedVectorType::getNumElements(), getPointerAddressSpace(), getPrimitiveSizeInBits(), llvm::sandboxir::ConstantFP::getQNaN(), llvm::sandboxir::ConstantDataArray::getRaw(), llvm::sandboxir::ConstantDataVector::getRaw(), getScalarSizeInBits(), llvm::sandboxir::ConstantInt::getSigned(), llvm::sandboxir::ConstantFP::getSNaN(), llvm::sandboxir::VectorType::getSubdividedVectorType(), llvm::sandboxir::ConstantInt::getTrue(), llvm::sandboxir::VectorType::getTruncatedElementVectorType(), llvm::sandboxir::ConstantFP::getZero(), is16bitFPTy(), isAggregateType(), isArrayTy(), isBFloatTy(), isDoubleTy(), llvm::sandboxir::ConstantDataSequential::isElementTypeCompatible(), isEmptyTy(), isFirstClassType(), isFloatingPointTy(), isFloatTy(), isFP128Ty(), isFPOrFPVectorTy(), isFunctionTy(), isHalfTy(), isIEEELikeFPTy(), isIntegerTy(), isIntOrIntVectorTy(), isIntOrPtrTy(), isLabelTy(), isMetadataTy(), isMultiUnitFPType(), llvm::sandboxir::StructType::isPacked(), isPointerTy(), isPPC_FP128Ty(), isPtrOrPtrVectorTy(), isScalableTargetExtTy(), isScalableTy(), isSingleValueType(), isSized(), isStructTy(), llvm::sandboxir::FPMathOperator::isSupportedFloatingPointType(), isTargetExtTy(), isTokenTy(), llvm::sandboxir::ConstantFP::isValueValidForType(), llvm::sandboxir::ConstantInt::isValueValidForType(), isVectorTy(), isVoidTy(), isX86_AMXTy(), isX86_FP80Ty(), llvm::sandboxir::IntegerType::operator llvm::IntegerType &(), print(), llvm::sandboxir::AllocaInst::setAllocatedType(), and llvm::Instruction::setNonNeg().