LLVM API Documentation
Integer representation type. More...
#include <DerivedTypes.h>
Public Types | |
enum | { MIN_INT_BITS = 1, MAX_INT_BITS = (1<<23)-1 } |
This enum is just used to hold constants we need for IntegerType. More... | |
![]() | |
enum | TypeID { VoidTyID = 0, HalfTyID, FloatTyID, DoubleTyID, X86_FP80TyID, FP128TyID, PPC_FP128TyID, LabelTyID, MetadataTyID, X86_MMXTyID, IntegerTyID, FunctionTyID, StructTyID, ArrayTyID, PointerTyID, VectorTyID, NumTypeIDs, LastPrimitiveTyID = X86_MMXTyID, FirstDerivedTyID = IntegerTyID } |
typedef Type *const * | subtype_iterator |
typedef std::reverse_iterator < subtype_iterator > | subtype_reverse_iterator |
Public Member Functions | |
unsigned | getBitWidth () const |
Get the number of bits in this IntegerType. More... | |
uint64_t | getBitMask () const |
uint64_t | getSignBit () const |
APInt | getMask () const |
Get a bit mask for this type. More... | |
bool | isPowerOf2ByteWidth () const |
Is this a power-of-2 byte-width IntegerType ? More... | |
![]() | |
void | print (raw_ostream &O) const |
void | dump () const |
LLVMContext & | getContext () const |
getContext - Return the LLVMContext in which this type was uniqued. More... | |
TypeID | getTypeID () const |
bool | isVoidTy () const |
isVoidTy - Return true if this is 'void'. More... | |
bool | isHalfTy () const |
isHalfTy - Return true if this is 'half', a 16-bit IEEE fp type. More... | |
bool | isFloatTy () const |
isFloatTy - Return true if this is 'float', a 32-bit IEEE fp type. More... | |
bool | isDoubleTy () const |
isDoubleTy - Return true if this is 'double', a 64-bit IEEE fp type. More... | |
bool | isX86_FP80Ty () const |
isX86_FP80Ty - Return true if this is x86 long double. More... | |
bool | isFP128Ty () const |
isFP128Ty - Return true if this is 'fp128'. More... | |
bool | isPPC_FP128Ty () const |
isPPC_FP128Ty - Return true if this is powerpc long double. More... | |
bool | isFloatingPointTy () const |
const fltSemantics & | getFltSemantics () const |
bool | isX86_MMXTy () const |
isX86_MMXTy - Return true if this is X86 MMX. More... | |
bool | isFPOrFPVectorTy () const |
bool | isLabelTy () const |
isLabelTy - Return true if this is 'label'. More... | |
bool | isMetadataTy () const |
isMetadataTy - Return true if this is 'metadata'. More... | |
bool | isIntegerTy () const |
bool | isIntegerTy (unsigned Bitwidth) const |
isIntegerTy - Return true if this is an IntegerType of the given width. More... | |
bool | isIntOrIntVectorTy () const |
bool | isFunctionTy () const |
bool | isStructTy () const |
bool | isArrayTy () const |
bool | isPointerTy () const |
bool | isPtrOrPtrVectorTy () const |
bool | isVectorTy () const |
bool | canLosslesslyBitCastTo (Type *Ty) const |
Determine if this type could be losslessly bitcast to Ty. More... | |
bool | isEmptyTy () const |
bool | isPrimitiveType () const |
bool | isDerivedType () const |
bool | isFirstClassType () const |
bool | isSingleValueType () const |
bool | isAggregateType () const |
bool | isSized () const |
unsigned | getPrimitiveSizeInBits () const |
unsigned | getScalarSizeInBits () |
int | getFPMantissaWidth () const |
const Type * | getScalarType () const |
Type * | getScalarType () |
subtype_iterator | subtype_begin () const |
subtype_iterator | subtype_end () const |
subtype_reverse_iterator | subtype_rbegin () const |
subtype_reverse_iterator | subtype_rend () const |
Type * | getContainedType (unsigned i) const |
unsigned | getNumContainedTypes () const |
unsigned | getIntegerBitWidth () const |
Type * | getFunctionParamType (unsigned i) const |
unsigned | getFunctionNumParams () const |
bool | isFunctionVarArg () const |
StringRef | getStructName () const |
unsigned | getStructNumElements () const |
Type * | getStructElementType (unsigned N) const |
Type * | getSequentialElementType () const |
uint64_t | getArrayNumElements () const |
Type * | getArrayElementType () const |
unsigned | getVectorNumElements () const |
Type * | getVectorElementType () const |
Type * | getPointerElementType () const |
unsigned | getPointerAddressSpace () const |
Get the address space of this pointer or pointer vector type. More... | |
PointerType * | getPointerTo (unsigned AddrSpace=0) |
Protected Member Functions | |
IntegerType (LLVMContext &C, unsigned NumBits) | |
![]() | |
Type (LLVMContext &C, TypeID tid) | |
~Type () | |
void | setTypeID (TypeID ID) |
unsigned | getSubclassData () const |
void | setSubclassData (unsigned val) |
Friends | |
class | LLVMContextImpl |
Additional Inherited Members | |
![]() | |
unsigned | NumContainedTys |
Type *const * | ContainedTys |
Integer representation type.
Class to represent integer types. Note that this class is also used to represent the built-in integer types: Int1Ty, Int8Ty, Int16Ty, Int32Ty and Int64Ty.
Definition at line 37 of file DerivedTypes.h.
anonymous enum |
This enum is just used to hold constants we need for IntegerType.
Enumerator | |
---|---|
MIN_INT_BITS |
Minimum number of bits that can be specified. |
MAX_INT_BITS |
Maximum number of bits that can be specified Note that bit width is stored in the Type classes SubclassData field which has 23 bits. This yields a maximum bit width of 8,388,607 bits. |
Definition at line 46 of file DerivedTypes.h.
|
inlineexplicitprotected |
Definition at line 41 of file DerivedTypes.h.
References llvm::Type::setSubclassData().
Referenced by get().
Methods for support type inquiry through isa, cast, and dyn_cast.
Definition at line 88 of file DerivedTypes.h.
References llvm::Type::getTypeID(), and llvm::Type::IntegerTyID.
|
static |
Get or create an IntegerType instance.
This static method is the primary way of constructing an IntegerType. If an IntegerType with the same NumBits value was previously instantiated, that instance will be returned. Otherwise a new one will be created. Only one instance with a given NumBits value is ever created.
Definition at line 305 of file Type.cpp.
References llvm::Type::getInt16Ty(), llvm::Type::getInt1Ty(), llvm::Type::getInt32Ty(), llvm::Type::getInt64Ty(), llvm::Type::getInt8Ty(), IntegerType(), llvm::LLVMContextImpl::IntegerTypes, MAX_INT_BITS, MIN_INT_BITS, llvm::LLVMContext::pImpl, and llvm::LLVMContextImpl::TypeAllocator.
Referenced by BinomialCoefficient(), BitCastConstantVector(), llvm::bypassSlowDivision(), CanShareConstantPoolEntry(), CoerceAvailableValueToLoadType(), CollectInsertionElements(), llvm::ConstantFoldBinaryInstruction(), llvm::ConstantFoldCastInstruction(), llvm::ConstantFoldCompareInstruction(), llvm::ConstantFoldInsertElementInstruction(), llvm::ConstantFoldSelectInstruction(), llvm::ConstantFoldShuffleVectorInstruction(), llvm::MDBuilder::createRange(), llvm::MDBuilder::createTBAAScalarTypeNode(), llvm::MDBuilder::createTBAAStructNode(), llvm::MDBuilder::createTBAAStructTagNode(), llvm::MDBuilder::createTBAAStructTypeNode(), DecodeFixedType(), ExtractConstantBytes(), llvm::FastISel::FastEmit_ri_(), FoldBitCast(), llvm::ConstantInt::get(), llvm::TypeBuilder< types::i< num_bits >, cross >::get(), getAccessType(), llvm::VectorType::getExtendedElementVectorType(), getFoldedAlignOf(), getFoldedSizeOf(), llvm::VectorType::getInteger(), llvm::Type::getIntNTy(), llvm::DataLayout::getIntPtrType(), GetLoadValueForLoad(), GetMemInstValueForLoad(), llvm::MDNode::getMostGenericTBAA(), getPreStartForSignExtend(), llvm::ScalarEvolution::getSignExtendExpr(), GetStoreValueForLoad(), llvm::VectorType::getTruncatedElementVectorType(), llvm::EVT::getTypeForEVT(), llvm::ScalarEvolution::getUDivExpr(), llvm::ScalarEvolution::getZeroExtendExpr(), isAddRecSExtable(), isAddSExtable(), isMulSExtable(), LLVMIntTypeInContext(), llvm::TargetLowering::ParseConstraints(), ProcessUGT_ADDCST_ADD(), stripAndComputeConstantOffsets(), and llvm::InstCombiner::visitICmpInstWithInstAndIntCst().
|
inline |
getBitMask - Return a bitmask with ones set for all of the bits that can be set by an unsigned version of this type. This is 0xFF for i8, 0xFFFF for i16, etc.
Definition at line 66 of file DerivedTypes.h.
References getBitWidth().
Referenced by insertFastDiv().
|
inline |
Get the number of bits in this IntegerType.
Definition at line 61 of file DerivedTypes.h.
References llvm::Type::getSubclassData().
Referenced by llvm::bypassSlowDivision(), llvm::ARMTargetLowering::ExpandInlineAsm(), llvm::X86TargetLowering::ExpandInlineAsm(), extractInteger(), llvm::InstCombiner::FoldAndOfICmps(), FoldReinterpretLoadFromConstPtr(), llvm::ConstantInt::get(), getBitMask(), getMask(), getSignBit(), insertInteger(), isPowerOf2ByteWidth(), isRunOfOnes(), LLVMConstIntOfArbitraryPrecision(), llvm::ObjectSizeOffsetVisitor::ObjectSizeOffsetVisitor(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitCallInst(), llvm::InstCombiner::visitICmpInstWithInstAndIntCst(), and llvm::InstCombiner::visitSelectInstWithICmp().
APInt IntegerType::getMask | ( | ) | const |
Get a bit mask for this type.
For example, this is 0xFF for an 8 bit integer, 0xFFFF for i16, etc.
Definition at line 333 of file Type.cpp.
References llvm::APInt::getAllOnesValue(), and getBitWidth().
|
inline |
getSignBit - Return a uint64_t with just the most significant bit set (the sign bit, if the value is treated as a signed number).
Definition at line 72 of file DerivedTypes.h.
References getBitWidth().
bool IntegerType::isPowerOf2ByteWidth | ( | ) | const |
Is this a power-of-2 byte-width IntegerType ?
This method determines if the width of this IntegerType is a power-of-2 in terms of 8 bit bytes.
Definition at line 328 of file Type.cpp.
References getBitWidth(), and llvm::isPowerOf2_32().
|
friend |
Definition at line 38 of file DerivedTypes.h.