32 static int mlirTypeIsAIntegerOrFloat(MlirType type) {
40 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
42 static constexpr
const char *pyClassName =
"IntegerType";
45 static void bindDerived(ClassTy &c) {
50 return PyIntegerType(context->getRef(), t);
52 nb::arg(
"width"), nb::arg(
"context") = nb::none(),
53 "Create a signless integer type");
58 return PyIntegerType(context->getRef(), t);
60 nb::arg(
"width"), nb::arg(
"context") = nb::none(),
61 "Create a signed integer type");
66 return PyIntegerType(context->getRef(), t);
68 nb::arg(
"width"), nb::arg(
"context") = nb::none(),
69 "Create an unsigned integer type");
73 "Returns the width of the integer type");
76 [](PyIntegerType &
self) ->
bool {
79 "Returns whether this is a signless integer");
82 [](PyIntegerType &
self) ->
bool {
85 "Returns whether this is a signed integer");
88 [](PyIntegerType &
self) ->
bool {
91 "Returns whether this is an unsigned integer");
99 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
101 static constexpr
const char *pyClassName =
"IndexType";
104 static void bindDerived(ClassTy &c) {
109 return PyIndexType(context->getRef(), t);
111 nb::arg(
"context") = nb::none(),
"Create a index type.");
118 static constexpr
const char *pyClassName =
"FloatType";
121 static void bindDerived(ClassTy &c) {
124 "Returns the width of the floating-point type");
129 class PyFloat4E2M1FNType
133 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
135 static constexpr
const char *pyClassName =
"Float4E2M1FNType";
138 static void bindDerived(ClassTy &c) {
143 return PyFloat4E2M1FNType(context->getRef(), t);
145 nb::arg(
"context") = nb::none(),
"Create a float4_e2m1fn type.");
150 class PyFloat6E2M3FNType
154 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
156 static constexpr
const char *pyClassName =
"Float6E2M3FNType";
159 static void bindDerived(ClassTy &c) {
164 return PyFloat6E2M3FNType(context->getRef(), t);
166 nb::arg(
"context") = nb::none(),
"Create a float6_e2m3fn type.");
171 class PyFloat6E3M2FNType
175 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
177 static constexpr
const char *pyClassName =
"Float6E3M2FNType";
180 static void bindDerived(ClassTy &c) {
185 return PyFloat6E3M2FNType(context->getRef(), t);
187 nb::arg(
"context") = nb::none(),
"Create a float6_e3m2fn type.");
192 class PyFloat8E4M3FNType
196 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
198 static constexpr
const char *pyClassName =
"Float8E4M3FNType";
201 static void bindDerived(ClassTy &c) {
206 return PyFloat8E4M3FNType(context->getRef(), t);
208 nb::arg(
"context") = nb::none(),
"Create a float8_e4m3fn type.");
213 class PyFloat8E5M2Type :
public PyConcreteType<PyFloat8E5M2Type, PyFloatType> {
216 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
218 static constexpr
const char *pyClassName =
"Float8E5M2Type";
221 static void bindDerived(ClassTy &c) {
226 return PyFloat8E5M2Type(context->getRef(), t);
228 nb::arg(
"context") = nb::none(),
"Create a float8_e5m2 type.");
233 class PyFloat8E4M3Type :
public PyConcreteType<PyFloat8E4M3Type, PyFloatType> {
236 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
238 static constexpr
const char *pyClassName =
"Float8E4M3Type";
241 static void bindDerived(ClassTy &c) {
246 return PyFloat8E4M3Type(context->getRef(), t);
248 nb::arg(
"context") = nb::none(),
"Create a float8_e4m3 type.");
253 class PyFloat8E4M3FNUZType
257 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
259 static constexpr
const char *pyClassName =
"Float8E4M3FNUZType";
262 static void bindDerived(ClassTy &c) {
267 return PyFloat8E4M3FNUZType(context->getRef(), t);
269 nb::arg(
"context") = nb::none(),
"Create a float8_e4m3fnuz type.");
274 class PyFloat8E4M3B11FNUZType
278 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
280 static constexpr
const char *pyClassName =
"Float8E4M3B11FNUZType";
283 static void bindDerived(ClassTy &c) {
288 return PyFloat8E4M3B11FNUZType(context->getRef(), t);
290 nb::arg(
"context") = nb::none(),
"Create a float8_e4m3b11fnuz type.");
295 class PyFloat8E5M2FNUZType
299 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
301 static constexpr
const char *pyClassName =
"Float8E5M2FNUZType";
304 static void bindDerived(ClassTy &c) {
309 return PyFloat8E5M2FNUZType(context->getRef(), t);
311 nb::arg(
"context") = nb::none(),
"Create a float8_e5m2fnuz type.");
316 class PyFloat8E3M4Type :
public PyConcreteType<PyFloat8E3M4Type, PyFloatType> {
319 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
321 static constexpr
const char *pyClassName =
"Float8E3M4Type";
324 static void bindDerived(ClassTy &c) {
329 return PyFloat8E3M4Type(context->getRef(), t);
331 nb::arg(
"context") = nb::none(),
"Create a float8_e3m4 type.");
336 class PyFloat8E8M0FNUType
340 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
342 static constexpr
const char *pyClassName =
"Float8E8M0FNUType";
345 static void bindDerived(ClassTy &c) {
350 return PyFloat8E8M0FNUType(context->getRef(), t);
352 nb::arg(
"context") = nb::none(),
"Create a float8_e8m0fnu type.");
357 class PyBF16Type :
public PyConcreteType<PyBF16Type, PyFloatType> {
360 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
362 static constexpr
const char *pyClassName =
"BF16Type";
365 static void bindDerived(ClassTy &c) {
370 return PyBF16Type(context->getRef(), t);
372 nb::arg(
"context") = nb::none(),
"Create a bf16 type.");
380 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
382 static constexpr
const char *pyClassName =
"F16Type";
385 static void bindDerived(ClassTy &c) {
390 return PyF16Type(context->getRef(), t);
392 nb::arg(
"context") = nb::none(),
"Create a f16 type.");
397 class PyTF32Type :
public PyConcreteType<PyTF32Type, PyFloatType> {
400 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
402 static constexpr
const char *pyClassName =
"FloatTF32Type";
405 static void bindDerived(ClassTy &c) {
410 return PyTF32Type(context->getRef(), t);
412 nb::arg(
"context") = nb::none(),
"Create a tf32 type.");
420 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
422 static constexpr
const char *pyClassName =
"F32Type";
425 static void bindDerived(ClassTy &c) {
430 return PyF32Type(context->getRef(), t);
432 nb::arg(
"context") = nb::none(),
"Create a f32 type.");
440 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
442 static constexpr
const char *pyClassName =
"F64Type";
445 static void bindDerived(ClassTy &c) {
450 return PyF64Type(context->getRef(), t);
452 nb::arg(
"context") = nb::none(),
"Create a f64 type.");
460 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
462 static constexpr
const char *pyClassName =
"NoneType";
465 static void bindDerived(ClassTy &c) {
470 return PyNoneType(context->getRef(), t);
472 nb::arg(
"context") = nb::none(),
"Create a none type.");
480 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
482 static constexpr
const char *pyClassName =
"ComplexType";
485 static void bindDerived(ClassTy &c) {
490 if (mlirTypeIsAIntegerOrFloat(elementType)) {
492 return PyComplexType(elementType.
getContext(), t);
494 throw nb::value_error(
495 (Twine(
"invalid '") +
496 nb::cast<std::string>(nb::repr(nb::cast(elementType))) +
497 "' and expected floating point or integer type.")
501 "Create a complex type");
504 [](PyComplexType &
self) {
508 "Returns element type.");
522 "Returns the element type of the shaped type.");
526 "Returns whether the given shaped type is ranked.");
530 self.requireHasRank();
533 "Returns the rank of the given ranked shaped type.");
539 "Returns whether the given shaped type has a static shape.");
543 self.requireHasRank();
547 "Returns whether the dim-th dimension of the given shaped type is "
552 self.requireHasRank();
556 "Returns whether the dim-th dimension of the given shaped type is "
561 self.requireHasRank();
565 "Returns the dim-th dimension of the given ranked shaped type.");
570 "Returns whether the given dimension size indicates a dynamic "
576 "Returns whether the given dimension size indicates a static "
579 "is_dynamic_stride_or_offset",
581 self.requireHasRank();
585 "Returns whether the given value is used as a placeholder for dynamic "
586 "strides and offsets in shaped types.");
588 "is_static_stride_or_offset",
590 self.requireHasRank();
594 "Returns whether the given shaped type stride or offset value is "
595 "statically-sized.");
599 self.requireHasRank();
601 std::vector<int64_t> shape;
604 for (int64_t i = 0; i < rank; ++i)
608 "Returns the shape of the ranked shaped type as a list of integers.");
611 "Returns the value used to indicate dynamic dimensions in shaped "
614 "get_dynamic_stride_or_offset",
616 "Returns the value used to indicate dynamic strides or offsets in "
620 void mlir::PyShapedType::requireHasRank() {
622 throw nb::value_error(
623 "calling this method requires that the type has a rank.");
633 class PyVectorType :
public PyConcreteType<PyVectorType, PyShapedType> {
636 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
638 static constexpr
const char *pyClassName =
"VectorType";
641 static void bindDerived(ClassTy &c) {
643 nb::arg(
"element_type"), nb::kw_only(),
644 nb::arg(
"scalable") = nb::none(),
645 nb::arg(
"scalable_dims") = nb::none(),
646 nb::arg(
"loc") = nb::none(),
"Create a vector type")
650 .def_prop_ro(
"scalable_dims", [](MlirType
self) {
651 std::vector<bool> scalableDims;
653 scalableDims.reserve(rank);
654 for (
size_t i = 0; i < rank; ++i)
661 static PyVectorType
get(std::vector<int64_t> shape,
PyType &elementType,
662 std::optional<nb::list> scalable,
663 std::optional<std::vector<int64_t>> scalableDims,
665 if (scalable && scalableDims) {
666 throw nb::value_error(
"'scalable' and 'scalable_dims' kwargs "
667 "are mutually exclusive.");
673 if (scalable->size() != shape.size())
674 throw nb::value_error(
"Expected len(scalable) == len(shape).");
677 *scalable, [](
const nb::handle &h) {
return nb::cast<bool>(h); }));
679 scalableDimFlags.data(),
681 }
else if (scalableDims) {
683 for (int64_t dim : *scalableDims) {
684 if (
static_cast<size_t>(dim) >= scalableDimFlags.size() || dim < 0)
685 throw nb::value_error(
"Scalable dimension index out of bounds.");
686 scalableDimFlags[dim] =
true;
689 scalableDimFlags.data(),
696 throw MLIRError(
"Invalid type", errors.take());
697 return PyVectorType(elementType.
getContext(), type);
702 class PyRankedTensorType
706 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
708 static constexpr
const char *pyClassName =
"RankedTensorType";
711 static void bindDerived(ClassTy &c) {
714 [](std::vector<int64_t> shape,
PyType &elementType,
718 loc, shape.size(), shape.data(), elementType,
721 throw MLIRError(
"Invalid type", errors.take());
722 return PyRankedTensorType(elementType.
getContext(), t);
724 nb::arg(
"shape"), nb::arg(
"element_type"),
725 nb::arg(
"encoding") = nb::none(), nb::arg(
"loc") = nb::none(),
726 "Create a ranked tensor type");
729 [](PyRankedTensorType &
self)
730 -> std::optional<nb::typed<nb::object, PyAttribute>> {
734 return nb::cast<nb::typed<nb::object, PyAttribute>>(
741 class PyUnrankedTensorType
745 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
747 static constexpr
const char *pyClassName =
"UnrankedTensorType";
750 static void bindDerived(ClassTy &c) {
757 throw MLIRError(
"Invalid type", errors.take());
758 return PyUnrankedTensorType(elementType.
getContext(), t);
760 nb::arg(
"element_type"), nb::arg(
"loc") = nb::none(),
761 "Create a unranked tensor type");
766 class PyMemRefType :
public PyConcreteType<PyMemRefType, PyShapedType> {
769 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
771 static constexpr
const char *pyClassName =
"MemRefType";
774 static void bindDerived(ClassTy &c) {
777 [](std::vector<int64_t> shape,
PyType &elementType,
782 MlirAttribute memSpaceAttr =
786 shape.data(), layoutAttr, memSpaceAttr);
788 throw MLIRError(
"Invalid type", errors.take());
789 return PyMemRefType(elementType.
getContext(), t);
791 nb::arg(
"shape"), nb::arg(
"element_type"),
792 nb::arg(
"layout") = nb::none(), nb::arg(
"memory_space") = nb::none(),
793 nb::arg(
"loc") = nb::none(),
"Create a memref type")
796 [](PyMemRefType &
self) -> nb::typed<nb::object, PyAttribute> {
797 return nb::cast<nb::typed<nb::object, PyAttribute>>(
801 "The layout of the MemRef type.")
803 "get_strides_and_offset",
804 [](PyMemRefType &
self) -> std::pair<std::vector<int64_t>, int64_t> {
808 self, strides.data(), &offset)))
809 throw std::runtime_error(
810 "Failed to extract strides and offset from memref.");
811 return {strides, offset};
813 "The strides and offset of the MemRef type.")
820 "The layout of the MemRef type as an affine map.")
823 [](PyMemRefType &
self)
824 -> std::optional<nb::typed<nb::object, PyAttribute>> {
828 return nb::cast<nb::typed<nb::object, PyAttribute>>(
831 "Returns the memory space of the given MemRef type.");
836 class PyUnrankedMemRefType
840 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
842 static constexpr
const char *pyClassName =
"UnrankedMemRefType";
845 static void bindDerived(ClassTy &c) {
851 MlirAttribute memSpaceAttr = {};
853 memSpaceAttr = *memorySpace;
858 throw MLIRError(
"Invalid type", errors.take());
859 return PyUnrankedMemRefType(elementType.
getContext(), t);
861 nb::arg(
"element_type"), nb::arg(
"memory_space").none(),
862 nb::arg(
"loc") = nb::none(),
"Create a unranked memref type")
865 [](PyUnrankedMemRefType &
self)
866 -> std::optional<nb::typed<nb::object, PyAttribute>> {
870 return nb::cast<nb::typed<nb::object, PyAttribute>>(
873 "Returns the memory space of the given Unranked MemRef type.");
881 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
883 static constexpr
const char *pyClassName =
"TupleType";
886 static void bindDerived(ClassTy &c) {
889 [](
const std::vector<PyType> &elements,
891 std::vector<MlirType> mlirElements;
892 mlirElements.reserve(elements.size());
893 for (
const auto &element : elements)
894 mlirElements.push_back(element.get());
896 mlirElements.data());
897 return PyTupleType(context->getRef(), t);
899 nb::arg(
"elements"), nb::arg(
"context") = nb::none(),
900 "Create a tuple type");
903 [](PyTupleType &
self, intptr_t pos) {
907 nb::arg(
"pos"),
"Returns the pos-th type in the tuple type.");
910 [](PyTupleType &
self) -> intptr_t {
913 "Returns the number of types contained in a tuple.");
921 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
923 static constexpr
const char *pyClassName =
"FunctionType";
926 static void bindDerived(ClassTy &c) {
929 [](std::vector<PyType> inputs, std::vector<PyType> results,
931 std::vector<MlirType> mlirInputs;
932 mlirInputs.reserve(inputs.size());
933 for (
const auto &input : inputs)
934 mlirInputs.push_back(input.get());
935 std::vector<MlirType> mlirResults;
936 mlirResults.reserve(results.size());
937 for (
const auto &result : results)
938 mlirResults.push_back(result.get());
941 mlirInputs.data(), results.size(),
943 return PyFunctionType(context->getRef(), t);
945 nb::arg(
"inputs"), nb::arg(
"results"), nb::arg(
"context") = nb::none(),
946 "Gets a FunctionType from a list of input and result types");
949 [](PyFunctionType &
self) {
958 "Returns the list of input types in the FunctionType.");
961 [](PyFunctionType &
self) {
969 "Returns the list of result types in the FunctionType.");
981 static constexpr GetTypeIDFunctionTy getTypeIdFunction =
983 static constexpr
const char *pyClassName =
"OpaqueType";
986 static void bindDerived(ClassTy &c) {
989 [](
const std::string &dialectNamespace,
const std::string &typeData,
994 return PyOpaqueType(context->getRef(), type);
996 nb::arg(
"dialect_namespace"), nb::arg(
"buffer"),
997 nb::arg(
"context") = nb::none(),
998 "Create an unregistered (opaque) dialect type.");
1000 "dialect_namespace",
1001 [](PyOpaqueType &
self) {
1003 return nb::str(stringRef.
data, stringRef.
length);
1005 "Returns the dialect namespace for the Opaque type as a string.");
1008 [](PyOpaqueType &
self) {
1010 return nb::str(stringRef.
data, stringRef.
length);
1012 "Returns the data for the Opaque type as a string.");
1019 PyIntegerType::bind(m);
1020 PyFloatType::bind(m);
1021 PyIndexType::bind(m);
1022 PyFloat4E2M1FNType::bind(m);
1023 PyFloat6E2M3FNType::bind(m);
1024 PyFloat6E3M2FNType::bind(m);
1025 PyFloat8E4M3FNType::bind(m);
1026 PyFloat8E5M2Type::bind(m);
1027 PyFloat8E4M3Type::bind(m);
1028 PyFloat8E4M3FNUZType::bind(m);
1029 PyFloat8E4M3B11FNUZType::bind(m);
1030 PyFloat8E5M2FNUZType::bind(m);
1031 PyFloat8E3M4Type::bind(m);
1032 PyFloat8E8M0FNUType::bind(m);
1033 PyBF16Type::bind(m);
1035 PyTF32Type::bind(m);
1038 PyNoneType::bind(m);
1039 PyComplexType::bind(m);
1041 PyVectorType::bind(m);
1042 PyRankedTensorType::bind(m);
1043 PyUnrankedTensorType::bind(m);
1044 PyMemRefType::bind(m);
1045 PyUnrankedMemRefType::bind(m);
1046 PyTupleType::bind(m);
1047 PyFunctionType::bind(m);
1048 PyOpaqueType::bind(m);
static MlirStringRef toMlirStringRef(const std::string &s)
static MLIRContext * getContext(OpFoldResult val)
Shaped Type Interface - ShapedType.
static const IsAFunctionTy isaFunction
static void bindDerived(ClassTy &c)
PyMlirContextRef & getContext()
Accesses the context reference.
Used in function arguments when None should resolve to the current context manager set instance.
Used in function arguments when None should resolve to the current context manager set instance.
ReferrentTy * get() const
Wrapper around the generic MlirAttribute.
nanobind::object maybeDownCast()
CRTP base classes for Python types that subclass Type and should be castable from it (i....
static void bind(nanobind::module_ &m)
bool(*)(MlirType) IsAFunctionTy
Wrapper around the generic MlirType.
nanobind::object maybeDownCast()
MLIR_CAPI_EXPORTED MlirAttribute mlirAttributeGetNull(void)
Returns an empty attribute.
MLIR_CAPI_EXPORTED MlirTypeID mlirFloat8E8M0FNUTypeGetTypeID(void)
Returns the typeID of an Float8E8M0FNU type.
MLIR_CAPI_EXPORTED bool mlirIntegerTypeIsSignless(MlirType type)
Checks whether the given integer type is signless.
MLIR_CAPI_EXPORTED bool mlirTypeIsAMemRef(MlirType type)
Checks whether the given type is a MemRef type.
MLIR_CAPI_EXPORTED MlirAttribute mlirRankedTensorTypeGetEncoding(MlirType type)
Gets the 'encoding' attribute from the ranked tensor type, returning a null attribute if none.
MLIR_CAPI_EXPORTED MlirTypeID mlirFloat16TypeGetTypeID(void)
Returns the typeID of an Float16 type.
MLIR_CAPI_EXPORTED bool mlirTypeIsAInteger(MlirType type)
Checks whether the given type is an integer type.
MLIR_CAPI_EXPORTED MlirAffineMap mlirMemRefTypeGetAffineMap(MlirType type)
Returns the affine map of the given MemRef type.
MLIR_CAPI_EXPORTED unsigned mlirFloatTypeGetWidth(MlirType type)
Returns the bitwidth of a floating-point type.
MLIR_CAPI_EXPORTED MlirTypeID mlirFloat4E2M1FNTypeGetTypeID(void)
Returns the typeID of an Float4E2M1FN type.
MLIR_CAPI_EXPORTED MlirTypeID mlirFloatTF32TypeGetTypeID(void)
Returns the typeID of a TF32 type.
MLIR_CAPI_EXPORTED int64_t mlirShapedTypeGetDimSize(MlirType type, intptr_t dim)
Returns the dim-th dimension of the given ranked shaped type.
MLIR_CAPI_EXPORTED bool mlirTypeIsAFloat8E8M0FNU(MlirType type)
Checks whether the given type is an f8E8M0FNU type.
MLIR_CAPI_EXPORTED MlirTypeID mlirNoneTypeGetTypeID(void)
Returns the typeID of an None type.
MLIR_CAPI_EXPORTED MlirTypeID mlirFloat8E4M3FNUZTypeGetTypeID(void)
Returns the typeID of an Float8E4M3FNUZ type.
MLIR_CAPI_EXPORTED MlirType mlirIntegerTypeGet(MlirContext ctx, unsigned bitwidth)
Creates a signless integer type of the given bitwidth in the context.
MLIR_CAPI_EXPORTED MlirStringRef mlirOpaqueTypeGetData(MlirType type)
Returns the raw data as a string reference.
MLIR_CAPI_EXPORTED bool mlirTypeIsAVector(MlirType type)
Checks whether the given type is a Vector type.
MLIR_CAPI_EXPORTED MlirType mlirFunctionTypeGetInput(MlirType type, intptr_t pos)
Returns the pos-th input type.
MLIR_CAPI_EXPORTED MlirType mlirIndexTypeGet(MlirContext ctx)
Creates an index type in the given context.
MLIR_CAPI_EXPORTED MlirTypeID mlirVectorTypeGetTypeID(void)
Returns the typeID of an Vector type.
MLIR_CAPI_EXPORTED bool mlirTypeIsAFloat6E3M2FN(MlirType type)
Checks whether the given type is an f6E3M2FN type.
MLIR_CAPI_EXPORTED bool mlirShapedTypeIsStaticDim(MlirType type, intptr_t dim)
Checks whether the dim-th dimension of the given shaped type is static.
MLIR_CAPI_EXPORTED bool mlirTypeIsAFunction(MlirType type)
Checks whether the given type is a function type.
MLIR_CAPI_EXPORTED MlirType mlirFloat8E3M4TypeGet(MlirContext ctx)
Creates an f8E3M4 type in the given context.
MLIR_CAPI_EXPORTED bool mlirTypeIsAFloat8E3M4(MlirType type)
Checks whether the given type is an f8E3M4 type.
MLIR_CAPI_EXPORTED bool mlirShapedTypeIsStaticStrideOrOffset(int64_t val)
Checks whether the given dimension value of a stride or an offset is statically-sized.
MLIR_CAPI_EXPORTED MlirType mlirFloat8E5M2FNUZTypeGet(MlirContext ctx)
Creates an f8E5M2FNUZ type in the given context.
MLIR_CAPI_EXPORTED MlirTypeID mlirUnrankedTensorTypeGetTypeID(void)
Returns the typeID of an UnrankedTensor type.
MLIR_CAPI_EXPORTED MlirType mlirFloat8E8M0FNUTypeGet(MlirContext ctx)
Creates an f8E8M0FNU type in the given context.
MLIR_CAPI_EXPORTED bool mlirIntegerTypeIsUnsigned(MlirType type)
Checks whether the given integer type is unsigned.
MLIR_CAPI_EXPORTED MlirTypeID mlirMemRefTypeGetTypeID(void)
Returns the typeID of an MemRef type.
MLIR_CAPI_EXPORTED unsigned mlirIntegerTypeGetWidth(MlirType type)
Returns the bitwidth of an integer type.
MLIR_CAPI_EXPORTED MlirType mlirFloat8E5M2TypeGet(MlirContext ctx)
Creates an f8E5M2 type in the given context.
MLIR_CAPI_EXPORTED int64_t mlirShapedTypeGetRank(MlirType type)
Returns the rank of the given ranked shaped type.
MLIR_CAPI_EXPORTED MlirType mlirF64TypeGet(MlirContext ctx)
Creates a f64 type in the given context.
MLIR_CAPI_EXPORTED MlirType mlirIntegerTypeSignedGet(MlirContext ctx, unsigned bitwidth)
Creates a signed integer type of the given bitwidth in the context.
MLIR_CAPI_EXPORTED MlirType mlirUnrankedTensorTypeGetChecked(MlirLocation loc, MlirType elementType)
Same as "mlirUnrankedTensorTypeGet" but returns a nullptr wrapping MlirType on illegal arguments,...
MLIR_CAPI_EXPORTED bool mlirTypeIsAFloat8E4M3(MlirType type)
Checks whether the given type is an f8E4M3 type.
MLIR_CAPI_EXPORTED MlirType mlirVectorTypeGetScalableChecked(MlirLocation loc, intptr_t rank, const int64_t *shape, const bool *scalable, MlirType elementType)
Same as "mlirVectorTypeGetScalable" but returns a nullptr wrapping MlirType on illegal arguments,...
MLIR_CAPI_EXPORTED MlirType mlirF16TypeGet(MlirContext ctx)
Creates an f16 type in the given context.
MLIR_CAPI_EXPORTED bool mlirTypeIsAFloat8E5M2(MlirType type)
Checks whether the given type is an f8E5M2 type.
MLIR_CAPI_EXPORTED MlirAttribute mlirMemRefTypeGetMemorySpace(MlirType type)
Returns the memory space of the given MemRef type.
MLIR_CAPI_EXPORTED bool mlirTypeIsAF64(MlirType type)
Checks whether the given type is an f64 type.
MLIR_CAPI_EXPORTED MlirType mlirFloat6E2M3FNTypeGet(MlirContext ctx)
Creates an f6E2M3FN type in the given context.
MLIR_CAPI_EXPORTED bool mlirTypeIsAF16(MlirType type)
Checks whether the given type is an f16 type.
MLIR_CAPI_EXPORTED bool mlirIntegerTypeIsSigned(MlirType type)
Checks whether the given integer type is signed.
MLIR_CAPI_EXPORTED MlirType mlirRankedTensorTypeGetChecked(MlirLocation loc, intptr_t rank, const int64_t *shape, MlirType elementType, MlirAttribute encoding)
Same as "mlirRankedTensorTypeGet" but returns a nullptr wrapping MlirType on illegal arguments,...
MLIR_CAPI_EXPORTED MlirTypeID mlirFloat8E5M2FNUZTypeGetTypeID(void)
Returns the typeID of an Float8E5M2FNUZ type.
MLIR_CAPI_EXPORTED MlirType mlirShapedTypeGetElementType(MlirType type)
Returns the element type of the shaped type.
MLIR_CAPI_EXPORTED MlirTypeID mlirFloat64TypeGetTypeID(void)
Returns the typeID of an Float64 type.
MLIR_CAPI_EXPORTED bool mlirTypeIsATuple(MlirType type)
Checks whether the given type is a tuple type.
MLIR_CAPI_EXPORTED intptr_t mlirFunctionTypeGetNumInputs(MlirType type)
Returns the number of input types.
MLIR_CAPI_EXPORTED MlirTypeID mlirFloat8E5M2TypeGetTypeID(void)
Returns the typeID of an Float8E5M2 type.
MLIR_CAPI_EXPORTED MlirType mlirVectorTypeGetChecked(MlirLocation loc, intptr_t rank, const int64_t *shape, MlirType elementType)
Same as "mlirVectorTypeGet" but returns a nullptr wrapping MlirType on illegal arguments,...
MLIR_CAPI_EXPORTED MlirType mlirNoneTypeGet(MlirContext ctx)
Creates a None type in the given context.
MLIR_CAPI_EXPORTED MlirType mlirComplexTypeGet(MlirType elementType)
Creates a complex type with the given element type in the same context as the element type.
MLIR_CAPI_EXPORTED MlirStringRef mlirOpaqueTypeGetDialectNamespace(MlirType type)
Returns the namespace of the dialect with which the given opaque type is associated.
MLIR_CAPI_EXPORTED MlirTypeID mlirTupleTypeGetTypeID(void)
Returns the typeID of an Tuple type.
MLIR_CAPI_EXPORTED bool mlirShapedTypeHasStaticShape(MlirType type)
Checks whether the given shaped type has a static shape.
MLIR_CAPI_EXPORTED MlirType mlirFloat8E4M3TypeGet(MlirContext ctx)
Creates an f8E4M3 type in the given context.
MLIR_CAPI_EXPORTED bool mlirTypeIsAFloat8E4M3FN(MlirType type)
Checks whether the given type is an f8E4M3FN type.
MLIR_CAPI_EXPORTED MlirTypeID mlirFloat8E4M3FNTypeGetTypeID(void)
Returns the typeID of an Float8E4M3FN type.
MLIR_CAPI_EXPORTED bool mlirTypeIsAOpaque(MlirType type)
Checks whether the given type is an opaque type.
MLIR_CAPI_EXPORTED MlirTypeID mlirFloat6E2M3FNTypeGetTypeID(void)
Returns the typeID of an Float6E2M3FN type.
MLIR_CAPI_EXPORTED MlirType mlirBF16TypeGet(MlirContext ctx)
Creates a bf16 type in the given context.
MLIR_CAPI_EXPORTED MlirType mlirF32TypeGet(MlirContext ctx)
Creates an f32 type in the given context.
MLIR_CAPI_EXPORTED bool mlirShapedTypeHasRank(MlirType type)
Checks whether the given shaped type is ranked.
MLIR_CAPI_EXPORTED bool mlirTypeIsAFloat6E2M3FN(MlirType type)
Checks whether the given type is an f6E2M3FN type.
MLIR_CAPI_EXPORTED MlirLogicalResult mlirMemRefTypeGetStridesAndOffset(MlirType type, int64_t *strides, int64_t *offset)
Returns the strides of the MemRef if the layout map is in strided form.
MLIR_CAPI_EXPORTED MlirTypeID mlirFloat8E3M4TypeGetTypeID(void)
Returns the typeID of an Float8E3M4 type.
MLIR_CAPI_EXPORTED bool mlirTypeIsAShaped(MlirType type)
Checks whether the given type is a Shaped type.
MLIR_CAPI_EXPORTED intptr_t mlirTupleTypeGetNumTypes(MlirType type)
Returns the number of types contained in a tuple.
MLIR_CAPI_EXPORTED bool mlirTypeIsAFloat(MlirType type)
Checks whether the given type is a floating-point type.
MLIR_CAPI_EXPORTED MlirType mlirIntegerTypeUnsignedGet(MlirContext ctx, unsigned bitwidth)
Creates an unsigned integer type of the given bitwidth in the context.
MLIR_CAPI_EXPORTED bool mlirTypeIsAFloat8E4M3FNUZ(MlirType type)
Checks whether the given type is an f8E4M3FNUZ type.
MLIR_CAPI_EXPORTED MlirTypeID mlirBFloat16TypeGetTypeID(void)
Returns the typeID of an BFloat16 type.
MLIR_CAPI_EXPORTED MlirType mlirFloat8E4M3FNTypeGet(MlirContext ctx)
Creates an f8E4M3FN type in the given context.
MLIR_CAPI_EXPORTED bool mlirTypeIsAF32(MlirType type)
Checks whether the given type is an f32 type.
MLIR_CAPI_EXPORTED MlirTypeID mlirRankedTensorTypeGetTypeID(void)
Returns the typeID of an RankedTensor type.
MLIR_CAPI_EXPORTED MlirType mlirFunctionTypeGet(MlirContext ctx, intptr_t numInputs, MlirType const *inputs, intptr_t numResults, MlirType const *results)
Creates a function type, mapping a list of input types to result types.
MLIR_CAPI_EXPORTED bool mlirShapedTypeIsDynamicStrideOrOffset(int64_t val)
Checks whether the given value is used as a placeholder for dynamic strides and offsets in shaped typ...
MLIR_CAPI_EXPORTED MlirType mlirTupleTypeGetType(MlirType type, intptr_t pos)
Returns the pos-th type in the tuple type.
MLIR_CAPI_EXPORTED bool mlirTypeIsARankedTensor(MlirType type)
Checks whether the given type is a ranked tensor type.
MLIR_CAPI_EXPORTED bool mlirVectorTypeIsDimScalable(MlirType type, intptr_t dim)
Checks whether the "dim"-th dimension of the given vector is scalable.
MLIR_CAPI_EXPORTED bool mlirShapedTypeIsDynamicDim(MlirType type, intptr_t dim)
Checks whether the dim-th dimension of the given shaped type is dynamic.
MLIR_CAPI_EXPORTED bool mlirTypeIsATF32(MlirType type)
Checks whether the given type is an TF32 type.
MLIR_CAPI_EXPORTED MlirTypeID mlirComplexTypeGetTypeID(void)
Returns the typeID of an Complex type.
MLIR_CAPI_EXPORTED MlirTypeID mlirIntegerTypeGetTypeID(void)
Returns the typeID of an Integer type.
MLIR_CAPI_EXPORTED MlirType mlirFloat6E3M2FNTypeGet(MlirContext ctx)
Creates an f6E3M2FN type in the given context.
MLIR_CAPI_EXPORTED MlirTypeID mlirOpaqueTypeGetTypeID(void)
Returns the typeID of an Opaque type.
MLIR_CAPI_EXPORTED MlirTypeID mlirIndexTypeGetTypeID(void)
Returns the typeID of an Index type.
MLIR_CAPI_EXPORTED bool mlirTypeIsAComplex(MlirType type)
Checks whether the given type is a Complex type.
MLIR_CAPI_EXPORTED MlirTypeID mlirUnrankedMemRefTypeGetTypeID(void)
Returns the typeID of an UnrankedMemRef type.
MLIR_CAPI_EXPORTED MlirType mlirMemRefTypeGetChecked(MlirLocation loc, MlirType elementType, intptr_t rank, const int64_t *shape, MlirAttribute layout, MlirAttribute memorySpace)
Same as "mlirMemRefTypeGet" but returns a nullptr-wrapping MlirType o illegal arguments,...
MLIR_CAPI_EXPORTED bool mlirTypeIsABF16(MlirType type)
Checks whether the given type is a bf16 type.
MLIR_CAPI_EXPORTED bool mlirTypeIsAIndex(MlirType type)
Checks whether the given type is an index type.
MLIR_CAPI_EXPORTED bool mlirTypeIsAFloat8E4M3B11FNUZ(MlirType type)
Checks whether the given type is an f8E4M3B11FNUZ type.
MLIR_CAPI_EXPORTED MlirType mlirOpaqueTypeGet(MlirContext ctx, MlirStringRef dialectNamespace, MlirStringRef typeData)
Creates an opaque type in the given context associated with the dialect identified by its namespace.
MLIR_CAPI_EXPORTED intptr_t mlirFunctionTypeGetNumResults(MlirType type)
Returns the number of result types.
MLIR_CAPI_EXPORTED bool mlirShapedTypeIsDynamicSize(int64_t size)
Checks whether the given value is used as a placeholder for dynamic sizes in shaped types.
MLIR_CAPI_EXPORTED bool mlirTypeIsAUnrankedMemRef(MlirType type)
Checks whether the given type is an UnrankedMemRef type.
MLIR_CAPI_EXPORTED bool mlirTypeIsAFloat8E5M2FNUZ(MlirType type)
Checks whether the given type is an f8E5M2FNUZ type.
MLIR_CAPI_EXPORTED bool mlirTypeIsAUnrankedTensor(MlirType type)
Checks whether the given type is an unranked tensor type.
MLIR_CAPI_EXPORTED MlirTypeID mlirFloat32TypeGetTypeID(void)
Returns the typeID of an Float32 type.
MLIR_CAPI_EXPORTED MlirTypeID mlirFloat8E4M3TypeGetTypeID(void)
Returns the typeID of an Float8E4M3 type.
MLIR_CAPI_EXPORTED MlirType mlirUnrankedMemRefTypeGetChecked(MlirLocation loc, MlirType elementType, MlirAttribute memorySpace)
Same as "mlirUnrankedMemRefTypeGet" but returns a nullptr wrapping MlirType on illegal arguments,...
MLIR_CAPI_EXPORTED bool mlirShapedTypeIsStaticSize(int64_t size)
Checks whether the given shaped type dimension value is statically-sized.
MLIR_CAPI_EXPORTED bool mlirVectorTypeIsScalable(MlirType type)
Checks whether the given vector type is scalable, i.e., has at least one scalable dimension.
MLIR_CAPI_EXPORTED bool mlirTypeIsAFloat4E2M1FN(MlirType type)
Checks whether the given type is an f4E2M1FN type.
MLIR_CAPI_EXPORTED MlirType mlirComplexTypeGetElementType(MlirType type)
Returns the element type of the given complex type.
MLIR_CAPI_EXPORTED MlirAttribute mlirUnrankedMemrefGetMemorySpace(MlirType type)
Returns the memory spcae of the given Unranked MemRef type.
MLIR_CAPI_EXPORTED bool mlirTypeIsANone(MlirType type)
Checks whether the given type is a None type.
MLIR_CAPI_EXPORTED int64_t mlirShapedTypeGetDynamicStrideOrOffset(void)
Returns the value indicating a dynamic stride or offset in a shaped type.
MLIR_CAPI_EXPORTED MlirTypeID mlirFunctionTypeGetTypeID(void)
Returns the typeID of an Function type.
MLIR_CAPI_EXPORTED int64_t mlirShapedTypeGetDynamicSize(void)
Returns the value indicating a dynamic size in a shaped type.
MLIR_CAPI_EXPORTED MlirAttribute mlirMemRefTypeGetLayout(MlirType type)
Returns the layout of the given MemRef type.
MLIR_CAPI_EXPORTED MlirType mlirFloat8E4M3B11FNUZTypeGet(MlirContext ctx)
Creates an f8E4M3B11FNUZ type in the given context.
MLIR_CAPI_EXPORTED MlirTypeID mlirFloat6E3M2FNTypeGetTypeID(void)
Returns the typeID of an Float6E3M2FN type.
MLIR_CAPI_EXPORTED MlirType mlirTupleTypeGet(MlirContext ctx, intptr_t numElements, MlirType const *elements)
Creates a tuple type that consists of the given list of elemental types.
MLIR_CAPI_EXPORTED MlirTypeID mlirFloat8E4M3B11FNUZTypeGetTypeID(void)
Returns the typeID of an Float8E4M3B11FNUZ type.
MLIR_CAPI_EXPORTED MlirType mlirFloat8E4M3FNUZTypeGet(MlirContext ctx)
Creates an f8E4M3FNUZ type in the given context.
MLIR_CAPI_EXPORTED MlirType mlirFunctionTypeGetResult(MlirType type, intptr_t pos)
Returns the pos-th result type.
MLIR_CAPI_EXPORTED MlirType mlirTF32TypeGet(MlirContext ctx)
Creates a TF32 type in the given context.
MLIR_CAPI_EXPORTED MlirType mlirFloat4E2M1FNTypeGet(MlirContext ctx)
Creates an f4E2M1FN type in the given context.
static bool mlirAttributeIsNull(MlirAttribute attr)
Checks whether an attribute is null.
static bool mlirTypeIsNull(MlirType type)
Checks whether a type is null.
static MlirStringRef mlirStringRefCreate(const char *str, size_t length)
Constructs a string reference from the pointer and length.
static bool mlirLogicalResultIsFailure(MlirLogicalResult res)
Checks if the given logical result represents a failure.
void populateIRTypes(nanobind::module_ &m)
Include the generated interface declarations.
auto get(MLIRContext *context, Ts &&...params)
Helper method that injects context only if needed, this helps unify some of the attribute constructio...
A pointer to a sized fragment of a string, not necessarily null-terminated.
const char * data
Pointer to the first symbol.
size_t length
Length of the fragment.
Custom exception that allows access to error diagnostic information.
RAII object that captures any error diagnostics emitted to the provided context.