25 quantizedType.def_staticmethod(
26 "default_minimum_for_integer",
27 [](
bool isSigned,
unsigned integralWidth) {
31 "Default minimum value for the integer with the specified signedness and "
33 py::arg(
"is_signed"), py::arg(
"integral_width"));
34 quantizedType.def_staticmethod(
35 "default_maximum_for_integer",
36 [](
bool isSigned,
unsigned integralWidth) {
40 "Default maximum value for the integer with the specified signedness and "
42 py::arg(
"is_signed"), py::arg(
"integral_width"));
43 quantizedType.def_property_readonly(
46 "Type expressed by this quantized type.");
47 quantizedType.def_property_readonly(
49 "Flags of this quantized type (named accessors should be preferred to "
51 quantizedType.def_property_readonly(
54 "Signedness of this quantized type.");
55 quantizedType.def_property_readonly(
58 "Storage type backing this quantized type.");
59 quantizedType.def_property_readonly(
62 "The minimum value held by the storage type of this quantized type.");
63 quantizedType.def_property_readonly(
66 "The maximum value held by the storage type of this quantized type.");
67 quantizedType.def_property_readonly(
68 "storage_type_integral_width",
72 "The bitwidth of the storage type of this quantized type.");
74 "is_compatible_expressed_type",
75 [](MlirType type, MlirType candidate) {
78 "Checks whether the candidate type can be expressed by this quantized "
80 py::arg(
"candidate"));
81 quantizedType.def_property_readonly(
82 "quantized_element_type",
86 "Element type of this quantized type expressed as quantized type.");
88 "cast_from_storage_type",
89 [](MlirType type, MlirType candidate) {
94 throw py::type_error(
"Invalid cast.");
96 "Casts from a type based on the storage type of this quantized type to a "
97 "corresponding type based on the quantized type. Raises TypeError if the "
99 py::arg(
"candidate"));
100 quantizedType.def_staticmethod(
101 "cast_to_storage_type",
106 throw py::type_error(
"Invalid cast.");
108 "Casts from a type based on a quantized type to a corresponding type "
109 "based on the storage type of this quantized type. Raises TypeError if "
110 "the cast is not valid.",
113 "cast_from_expressed_type",
114 [](MlirType type, MlirType candidate) {
115 MlirType castResult =
119 throw py::type_error(
"Invalid cast.");
121 "Casts from a type based on the expressed type of this quantized type to "
122 "a corresponding type based on the quantized type. Raises TypeError if "
123 "the cast is not valid.",
124 py::arg(
"candidate"));
125 quantizedType.def_staticmethod(
126 "cast_to_expressed_type",
131 throw py::type_error(
"Invalid cast.");
133 "Casts from a type based on a quantized type to a corresponding type "
134 "based on the expressed type of this quantized type. Raises TypeError if "
135 "the cast is not valid.",
138 "cast_expressed_to_storage_type",
139 [](MlirType type, MlirType candidate) {
140 MlirType castResult =
144 throw py::type_error(
"Invalid cast.");
146 "Casts from a type based on the expressed type of this quantized type to "
147 "a corresponding type based on the storage type. Raises TypeError if the "
148 "cast is not valid.",
149 py::arg(
"candidate"));
151 quantizedType.get_class().attr(
"FLAG_SIGNED") =
158 auto anyQuantizedType =
160 quantizedType.get_class());
161 anyQuantizedType.def_classmethod(
163 [](py::object cls,
unsigned flags, MlirType storageType,
164 MlirType expressedType, int64_t storageTypeMin,
165 int64_t storageTypeMax) {
167 storageTypeMin, storageTypeMax));
169 "Gets an instance of AnyQuantizedType in the same context as the "
170 "provided storage type.",
171 py::arg(
"cls"), py::arg(
"flags"), py::arg(
"storage_type"),
172 py::arg(
"expressed_type"), py::arg(
"storage_type_min"),
173 py::arg(
"storage_type_max"));
181 quantizedType.get_class());
182 uniformQuantizedType.def_classmethod(
184 [](py::object cls,
unsigned flags, MlirType storageType,
185 MlirType expressedType,
double scale, int64_t zeroPoint,
186 int64_t storageTypeMin, int64_t storageTypeMax) {
188 expressedType, scale, zeroPoint,
189 storageTypeMin, storageTypeMax));
191 "Gets an instance of UniformQuantizedType in the same context as the "
192 "provided storage type.",
193 py::arg(
"cls"), py::arg(
"flags"), py::arg(
"storage_type"),
194 py::arg(
"expressed_type"), py::arg(
"scale"), py::arg(
"zero_point"),
195 py::arg(
"storage_type_min"), py::arg(
"storage_type_max"));
196 uniformQuantizedType.def_property_readonly(
199 "The scale designates the difference between the real values "
200 "corresponding to consecutive quantized values differing by 1.");
201 uniformQuantizedType.def_property_readonly(
204 "The storage value corresponding to the real value 0 in the affine "
206 uniformQuantizedType.def_property_readonly(
209 "Fixed point values are real numbers divided by a scale.");
216 quantizedType.get_class());
217 uniformQuantizedPerAxisType.def_classmethod(
219 [](py::object cls,
unsigned flags, MlirType storageType,
220 MlirType expressedType, std::vector<double> scales,
221 std::vector<int64_t> zeroPoints, int32_t quantizedDimension,
222 int64_t storageTypeMin, int64_t storageTypeMax) {
223 if (scales.size() != zeroPoints.size())
224 throw py::value_error(
225 "Mismatching number of scales and zero points.");
226 auto nDims =
static_cast<intptr_t
>(scales.size());
228 flags, storageType, expressedType, nDims, scales.data(),
229 zeroPoints.data(), quantizedDimension, storageTypeMin,
232 "Gets an instance of UniformQuantizedPerAxisType in the same context as "
233 "the provided storage type.",
234 py::arg(
"cls"), py::arg(
"flags"), py::arg(
"storage_type"),
235 py::arg(
"expressed_type"), py::arg(
"scales"), py::arg(
"zero_points"),
236 py::arg(
"quantized_dimension"), py::arg(
"storage_type_min"),
237 py::arg(
"storage_type_max"));
238 uniformQuantizedPerAxisType.def_property_readonly(
242 std::vector<double> scales;
243 scales.reserve(nDim);
244 for (intptr_t i = 0; i < nDim; ++i) {
246 scales.push_back(scale);
249 "The scales designate the difference between the real values "
250 "corresponding to consecutive quantized values differing by 1. The ith "
251 "scale corresponds to the ith slice in the quantized_dimension.");
252 uniformQuantizedPerAxisType.def_property_readonly(
256 std::vector<int64_t> zeroPoints;
257 zeroPoints.reserve(nDim);
258 for (intptr_t i = 0; i < nDim; ++i) {
261 zeroPoints.push_back(zeroPoint);
264 "the storage values corresponding to the real value 0 in the affine "
265 "equation. The ith zero point corresponds to the ith slice in the "
266 "quantized_dimension.");
267 uniformQuantizedPerAxisType.def_property_readonly(
268 "quantized_dimension",
272 "Specifies the dimension of the shape that the scales and zero points "
274 uniformQuantizedPerAxisType.def_property_readonly(
279 "Fixed point values are real numbers divided by a scale.");
287 quantizedType.get_class());
288 calibratedQuantizedType.def_classmethod(
290 [](py::object cls, MlirType expressedType,
double min,
double max) {
293 "Gets an instance of CalibratedQuantizedType in the same context as the "
294 "provided expressed type.",
295 py::arg(
"cls"), py::arg(
"expressed_type"), py::arg(
"min"),
297 calibratedQuantizedType.def_property_readonly(
"min", [](MlirType type) {
300 calibratedQuantizedType.def_property_readonly(
"max", [](MlirType type) {
306 m.doc() =
"MLIR Quantization dialect";
PYBIND11_MODULE(_mlirDialectsQuant, m)
static void populateDialectQuantSubmodule(const py::module &m)
static Value max(ImplicitLocOpBuilder &builder, Value value, Value bound)
static Value min(ImplicitLocOpBuilder &builder, Value value, Value bound)
MLIR_CAPI_EXPORTED intptr_t mlirUniformQuantizedPerAxisTypeGetNumDims(MlirType type)
Returns the number of axes in the given quantized per-axis type.
MLIR_CAPI_EXPORTED bool mlirTypeIsACalibratedQuantizedType(MlirType type)
Returns true if the given type is a CalibratedQuantizedType.
MLIR_CAPI_EXPORTED int64_t mlirQuantizedTypeGetDefaultMaximumForInteger(bool isSigned, unsigned integralWidth)
Returns the maximum possible value stored by a quantized type.
MLIR_CAPI_EXPORTED bool mlirUniformQuantizedTypeIsFixedPoint(MlirType type)
Returns true if the given uniform quantized type is fixed-point.
MLIR_CAPI_EXPORTED int64_t mlirQuantizedTypeGetStorageTypeMin(MlirType type)
Returns the minimum value that the storage type of the given quantized type can take.
MLIR_CAPI_EXPORTED bool mlirTypeIsAUniformQuantizedType(MlirType type)
Returns true if the given type is a UniformQuantizedType.
MLIR_CAPI_EXPORTED bool mlirTypeIsAQuantizedType(MlirType type)
Returns true if the given type is a quantization dialect type.
MLIR_CAPI_EXPORTED double mlirUniformQuantizedPerAxisTypeGetScale(MlirType type, intptr_t pos)
Returns pos-th scale of the given quantized per-axis type.
MLIR_CAPI_EXPORTED int64_t mlirUniformQuantizedTypeGetZeroPoint(MlirType type)
Returns the zero point of the given uniform quantized type.
MLIR_CAPI_EXPORTED bool mlirUniformQuantizedPerAxisTypeIsFixedPoint(MlirType type)
Returns true if the given uniform quantized per-axis type is fixed-point.
MLIR_CAPI_EXPORTED int64_t mlirQuantizedTypeGetStorageTypeMax(MlirType type)
Returns the maximum value that the storage type of the given quantized type can take.
MLIR_CAPI_EXPORTED double mlirCalibratedQuantizedTypeGetMax(MlirType type)
Returns the max value of the given calibrated quantized type.
MLIR_CAPI_EXPORTED MlirType mlirCalibratedQuantizedTypeGet(MlirType expressedType, double min, double max)
Creates an instance of CalibratedQuantizedType with the given parameters in the same context as expre...
MLIR_CAPI_EXPORTED bool mlirQuantizedTypeIsSigned(MlirType type)
Returns true if the given type is signed, false otherwise.
MLIR_CAPI_EXPORTED int64_t mlirUniformQuantizedPerAxisTypeGetZeroPoint(MlirType type, intptr_t pos)
Returns pos-th zero point of the given quantized per-axis type.
MLIR_CAPI_EXPORTED int32_t mlirUniformQuantizedPerAxisTypeGetQuantizedDimension(MlirType type)
Returns the index of the quantized dimension in the given quantized per-axis type.
MLIR_CAPI_EXPORTED MlirType mlirQuantizedTypeCastToExpressedType(MlirType type)
Casts from a type based on a quantized type to a corresponding typed based on the expressed type.
MLIR_CAPI_EXPORTED MlirType mlirQuantizedTypeGetExpressedType(MlirType type)
Gets the original type approximated by the given quantized type.
MLIR_CAPI_EXPORTED unsigned mlirQuantizedTypeGetStorageTypeIntegralWidth(MlirType type)
Returns the integral bitwidth that the storage type of the given quantized type can represent exactly...
MLIR_CAPI_EXPORTED MlirType mlirAnyQuantizedTypeGet(unsigned flags, MlirType storageType, MlirType expressedType, int64_t storageTypeMin, int64_t storageTypeMax)
Creates an instance of AnyQuantizedType with the given parameters in the same context as storageType ...
MLIR_CAPI_EXPORTED MlirType mlirQuantizedTypeCastToStorageType(MlirType type)
Casts from a type based on a quantized type to a corresponding typed based on the storage type.
MLIR_CAPI_EXPORTED MlirType mlirQuantizedTypeGetStorageType(MlirType type)
Returns the underlying type used to store the values.
MLIR_CAPI_EXPORTED MlirType mlirQuantizedTypeCastFromExpressedType(MlirType type, MlirType candidate)
Casts from a type based on the expressed type of the given type to a corresponding type based on the ...
MLIR_CAPI_EXPORTED bool mlirTypeIsAUniformQuantizedPerAxisType(MlirType type)
Returns true if the given type is a UniformQuantizedPerAxisType.
MLIR_CAPI_EXPORTED MlirType mlirQuantizedTypeGetQuantizedElementType(MlirType type)
Returns the element type of the given quantized type as another quantized type.
MLIR_CAPI_EXPORTED bool mlirTypeIsAAnyQuantizedType(MlirType type)
Returns true if the given type is an AnyQuantizedType.
MLIR_CAPI_EXPORTED MlirType mlirQuantizedTypeCastExpressedToStorageType(MlirType type, MlirType candidate)
Casts from a type based on the expressed type of the given quantized type to equivalent type based on...
MLIR_CAPI_EXPORTED MlirType mlirQuantizedTypeCastFromStorageType(MlirType type, MlirType candidate)
Casts from a type based on the storage type of the given type to a corresponding type based on the gi...
MLIR_CAPI_EXPORTED unsigned mlirQuantizedTypeGetSignedFlag(void)
Returns the bit flag used to indicate signedness of a quantized type.
MLIR_CAPI_EXPORTED int64_t mlirQuantizedTypeGetDefaultMinimumForInteger(bool isSigned, unsigned integralWidth)
Returns the minimum possible value stored by a quantized type.
MLIR_CAPI_EXPORTED double mlirCalibratedQuantizedTypeGetMin(MlirType type)
Returns the min value of the given calibrated quantized type.
MLIR_CAPI_EXPORTED unsigned mlirQuantizedTypeGetFlags(MlirType type)
Gets the flags associated with the given quantized type.
MLIR_CAPI_EXPORTED MlirType mlirUniformQuantizedPerAxisTypeGet(unsigned flags, MlirType storageType, MlirType expressedType, intptr_t nDims, double *scales, int64_t *zeroPoints, int32_t quantizedDimension, int64_t storageTypeMin, int64_t storageTypeMax)
Creates an instance of UniformQuantizedPerAxisType with the given parameters in the same context as s...
MLIR_CAPI_EXPORTED bool mlirQuantizedTypeIsCompatibleExpressedType(MlirType type, MlirType candidate)
Returns true if the candidate type is compatible with the given quantized type.
MLIR_CAPI_EXPORTED double mlirUniformQuantizedTypeGetScale(MlirType type)
Returns the scale of the given uniform quantized type.
MLIR_CAPI_EXPORTED MlirType mlirUniformQuantizedTypeGet(unsigned flags, MlirType storageType, MlirType expressedType, double scale, int64_t zeroPoint, int64_t storageTypeMin, int64_t storageTypeMax)
Creates an instance of UniformQuantizedType with the given parameters in the same context as storageT...
Creates a custom subclass of mlir.ir.Type, implementing a casting constructor and type checking metho...
static bool mlirTypeIsNull(MlirType type)
Checks whether a type is null.
Include the generated interface declarations.
This header declares functions that assit transformations in the MemRef dialect.