LLVM 20.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 as defined by APFloat::isIEEE(), 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. | |
bool | isIEEE () const |
Return whether the type is IEEE compatible, as defined by the eponymous method in APFloat. | |
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 Type * | getInt64Ty (Context &Ctx) |
static Type * | getInt32Ty (Context &Ctx) |
static Type * | getInt16Ty (Context &Ctx) |
static Type * | getInt8Ty (Context &Ctx) |
static Type * | getInt1Ty (Context &Ctx) |
static Type * | getDoubleTy (Context &Ctx) |
static Type * | getFloatTy (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 | 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 202 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 89 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::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 132 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 259 of file Type.h.
References llvm::Type::getFPMantissaWidth(), and LLVMTy.
|
inline |
Get the address space of this pointer or pointer vector type.
Definition at line 281 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 247 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 254 of file Type.h.
References llvm::Type::getScalarSizeInBits(), and LLVMTy.
Type * llvm::sandboxir::Type::getScalarType | ( | ) | const |
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 101 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 221 of file Type.h.
References llvm::Type::isAggregateType(), and LLVMTy.
|
inline |
True if this is an instance of ArrayType.
Definition at line 187 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 98 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 107 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 208 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 212 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 124 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 104 of file Type.h.
References llvm::Type::isFloatTy(), and LLVMTy.
|
inline |
Return true if this is 'fp128'.
Definition at line 113 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 149 of file Type.h.
References llvm::Type::isFPOrFPVectorTy(), and LLVMTy.
|
inline |
True if this is an instance of FunctionType.
Definition at line 181 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 95 of file Type.h.
References llvm::Type::isHalfTy(), and LLVMTy.
|
inline |
Return whether the type is IEEE compatible, as defined by the eponymous method in APFloat.
Definition at line 263 of file Type.h.
References llvm::Type::isIEEE(), and LLVMTy.
|
inline |
Return true if this is a well-behaved IEEE-like type, which has a IEEE compatible layout as defined by APFloat::isIEEE(), and does not have non-IEEE values, such as x86_fp80's unnormal values.
Definition at line 121 of file Type.h.
References llvm::Type::isIEEELikeFPTy(), and LLVMTy.
|
inline |
True if this is an instance of IntegerType.
Definition at line 161 of file Type.h.
References llvm::Type::isIntegerTy(), and LLVMTy.
Return true if this is an IntegerType of the given width.
Definition at line 164 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 169 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 173 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 178 of file Type.h.
References llvm::Type::isIntOrPtrTy(), and LLVMTy.
|
inline |
Return true if this is 'label'.
Definition at line 152 of file Type.h.
References llvm::Type::isLabelTy(), and LLVMTy.
|
inline |
Return true if this is 'metadata'.
Definition at line 155 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 130 of file Type.h.
References llvm::Type::isMultiUnitFPType(), and LLVMTy.
|
inline |
True if this is an instance of PointerType.
Definition at line 190 of file Type.h.
References llvm::Type::isPointerTy(), and LLVMTy.
|
inline |
Return true if this is powerpc long double.
Definition at line 116 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 193 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 143 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 146 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 216 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 226 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 184 of file Type.h.
References llvm::Type::isStructTy(), and LLVMTy.
|
inline |
Return true if this is a target extension type.
Definition at line 140 of file Type.h.
References llvm::Type::isTargetExtTy(), and LLVMTy.
|
inline |
Return true if this is 'token'.
Definition at line 158 of file Type.h.
References llvm::Type::isTokenTy(), and LLVMTy.
|
inline |
True if this is an instance of VectorType.
Definition at line 196 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 92 of file Type.h.
References llvm::Type::isVoidTy(), and LLVMTy.
|
inline |
Return true if this is X86 AMX.
Definition at line 137 of file Type.h.
References llvm::Type::isX86_AMXTy(), and LLVMTy.
|
inline |
Return true if this is x86 long double.
Definition at line 110 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 84 of file Type.h.
References LLVMTy, OS, and llvm::Type::print().
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
protected |
Definition at line 71 of file Type.h.
Referenced by getContext().
|
protected |
Definition at line 45 of file Type.h.
Referenced by canLosslesslyBitCastTo(), llvm::sandboxir::ShuffleVectorInst::convertShuffleMaskForBitcode(), llvm::sandboxir::CastInst::create(), llvm::sandboxir::AllocaInst::create(), llvm::sandboxir::PHINode::create(), llvm::sandboxir::GetElementPtrInst::create(), llvm::sandboxir::VAArgInst::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(), 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(), isEmptyTy(), isFirstClassType(), isFloatingPointTy(), isFloatTy(), isFP128Ty(), isFPOrFPVectorTy(), isFunctionTy(), isHalfTy(), isIEEE(), 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(), and llvm::sandboxir::AllocaInst::setAllocatedType().