9 #ifndef MLIR_IR_STANDARDTYPES_H 10 #define MLIR_IR_STANDARDTYPES_H 29 struct IntegerTypeStorage;
30 struct ShapedTypeStorage;
31 struct VectorTypeStorage;
32 struct RankedTensorTypeStorage;
33 struct UnrankedTensorTypeStorage;
34 struct MemRefTypeStorage;
35 struct UnrankedMemRefTypeStorage;
36 struct ComplexTypeStorage;
37 struct TupleTypeStorage;
41 namespace StandardTypes {
44 BF16 = Type::Kind::FIRST_STANDARD_TYPE,
83 :
public Type::TypeBase<IntegerType, Type, detail::IntegerTypeStorage> {
104 unsigned getWidth()
const;
110 static constexpr
unsigned kMaxWidth = 4096;
143 const llvm::fltSemantics &getFloatSemantics();
152 :
public Type::TypeBase<ComplexType, Type, detail::ComplexTypeStorage> {
169 Type getElementType();
186 static constexpr int64_t kDynamicSize = -1;
187 static constexpr int64_t kDynamicStrideOrOffset =
188 std::numeric_limits<int64_t>::min();
191 Type getElementType()
const;
195 unsigned getElementTypeBitWidth()
const;
198 int64_t getNumElements()
const;
201 int64_t getRank()
const;
205 bool hasRank()
const;
213 bool hasStaticShape()
const;
220 int64_t getNumDynamicDims()
const;
224 int64_t getDimSize(int64_t i)
const;
228 unsigned getDynamicDimIndex(
unsigned index)
const;
236 int64_t getSizeInBits()
const;
248 static constexpr
bool isDynamic(int64_t dSize) {
return dSize < 0; }
250 return dStrideOrOffset == kDynamicStrideOrOffset;
257 :
public Type::TypeBase<VectorType, ShapedType, detail::VectorTypeStorage> {
292 using ShapedType::ShapedType;
301 (type.
getKind() > Type::Kind::LAST_STANDARD_TYPE);
316 detail::RankedTensorTypeStorage> {
348 detail::UnrankedTensorTypeStorage> {
377 using ShapedType::ShapedType;
391 detail::MemRefTypeStorage> {
401 unsigned memorySpace = 0);
411 unsigned memorySpace,
Location location);
420 unsigned getMemorySpace()
const;
425 static constexpr int64_t kDynamicSize = -1;
427 return ShapedType::kDynamicStrideOrOffset;
446 detail::UnrankedMemRefTypeStorage> {
465 unsigned memorySpace);
470 unsigned getMemorySpace()
const;
482 :
public Type::TypeBase<TupleType, Type, detail::TupleTypeStorage> {
512 assert(index < size() &&
"invalid index for tuple type");
513 return getTypes()[index];
590 #endif // MLIR_IR_STANDARDTYPES_H Definition: InferTypeOpInterface.cpp:20
Definition: StandardTypes.h:61
Definition: PassRegistry.cpp:413
static bool kindof(unsigned kind)
Definition: StandardTypes.h:369
Integer types can have arbitrary bitwidth up to a large fixed limit.
Definition: StandardTypes.h:82
static bool kindof(unsigned kind)
Definition: StandardTypes.h:516
Definition: Attributes.h:139
Definition: StandardTypes.h:59
static bool kindof(unsigned kind)
Definition: StandardTypes.h:528
Definition: Attributes.h:129
Shaped Type Storage.
Definition: TypeDetail.h:112
static constexpr bool isDynamicStrideOrOffset(int64_t dStrideOrOffset)
Definition: StandardTypes.h:249
static bool kindof(unsigned kind)
Methods for support type inquiry through isa, cast, and dyn_cast.
Definition: StandardTypes.h:285
static FloatType getF64(MLIRContext *ctx)
Definition: StandardTypes.h:129
SmallVector< Type, 10 > getFlattenedTypes(TupleType t)
Definition: TypeUtilities.cpp:35
Definition: StandardTypes.h:113
Definition: StandardTypes.h:52
bool isIntOrFloat()
Return true of this is an integer or a float type.
Definition: StandardTypes.cpp:45
Definition: StandardTypes.h:314
Definition: StandardTypes.h:151
static FloatType getF32(MLIRContext *ctx)
Definition: StandardTypes.h:126
Definition: StandardTypes.h:46
Kind
Definition: StandardTypes.h:42
Definition: StandardTypes.h:47
static bool kindof(unsigned kind)
Methods for support type inquiry through isa, cast, and dyn_cast.
Definition: StandardTypes.h:134
Definition: StandardTypes.h:178
static bool isValidElementType(Type type)
Return true if the specified element type is ok in a tensor.
Definition: StandardTypes.h:295
Definition: Location.h:52
static bool kindof(unsigned kind)
Support method to enable LLVM-style type casting.
Definition: StandardTypes.h:78
static FloatType getBF16(MLIRContext *ctx)
Definition: StandardTypes.h:120
Definition: StandardTypes.h:49
static bool kindof(unsigned kind)
Definition: StandardTypes.h:171
Definition: LogicalResult.h:18
Definition: StandardTypes.h:56
unsigned getKind() const
Return the classification for this type.
Definition: Types.cpp:22
Definition: StandardTypes.h:48
bool isStrided(MemRefType t)
Return true if the layout for t is compatible with strided semantics.
Definition: StandardTypes.cpp:734
Definition: StandardTypes.h:58
Type getType(size_t index) const
Return the element type at index 'index'.
Definition: StandardTypes.h:511
Definition: StandardTypes.h:62
Definition: AffineExpr.h:66
Definition: StandardTypes.h:390
Definition: StandardTypes.h:45
Definition: StandardTypes.h:481
Definition: StandardTypes.h:44
static bool isValidElementType(Type t)
Definition: StandardTypes.h:280
Definition: AffineMap.h:37
ArrayRef< int64_t > getShape() const
Definition: StandardTypes.h:367
Definition: StandardTypes.h:60
static bool classof(Type type)
Methods for support type inquiry through isa, cast, and dyn_cast.
Definition: StandardTypes.h:380
Definition: StandardTypes.h:290
static bool kindof(unsigned kind)
Definition: StandardTypes.h:430
ArrayRef< int64_t > getShape() const
Definition: StandardTypes.h:467
static FloatType getF16(MLIRContext *ctx)
Definition: StandardTypes.h:123
Definition: StandardTypes.h:55
LogicalResult getStridesAndOffset(MemRefType t, SmallVectorImpl< AffineExpr > &strides, AffineExpr &offset)
Definition: StandardTypes.cpp:523
Definition: StandardTypes.h:256
Definition: StandardTypes.h:57
Base MemRef for Ranked and Unranked variants.
Definition: StandardTypes.h:375
Definition: StandardTypes.h:444
Definition: StorageUniquerSupport.h:30
static bool kindof(unsigned kind)
Definition: StandardTypes.h:471
Definition: MLIRContext.h:34
AffineMap makeStridedLinearLayoutMap(ArrayRef< int64_t > strides, int64_t offset, MLIRContext *context)
Definition: StandardTypes.cpp:666
static constexpr bool isDynamic(int64_t dSize)
Whether the given dimension size indicates a dynamic dimension.
Definition: StandardTypes.h:248
MemRefType canonicalizeStridedLayout(MemRefType t)
Definition: StandardTypes.cpp:707
static bool kindof(unsigned kind)
Definition: StandardTypes.h:339
Definition: StandardTypes.h:63
Definition: StandardTypes.h:346
iterator end() const
Definition: StandardTypes.h:508
static bool classof(Type type)
Methods for support type inquiry through isa, cast, and dyn_cast.
Definition: StandardTypes.h:239
bool isa() const
Definition: Types.h:254
Definition: StandardTypes.h:70
iterator begin() const
Definition: StandardTypes.h:507
static bool classof(Type type)
Methods for support type inquiry through isa, cast, and dyn_cast.
Definition: StandardTypes.h:305
static bool kindof(unsigned kind)
Methods for support type inquiry through isa, cast, and dyn_cast.
Definition: StandardTypes.h:107
ArrayRef< Type >::iterator iterator
Iterate over the held elements.
Definition: StandardTypes.h:506
static int64_t getDynamicStrideOrOffset()
Definition: StandardTypes.h:426
Definition: StandardTypes.h:521