17static std::optional<MlirLinalgContractionDimensions>
24 if (mlirAttributeIsNull(dims.
batch) && mlirAttributeIsNull(dims.
m) &&
25 mlirAttributeIsNull(dims.
n) && mlirAttributeIsNull(dims.
k)) {
31static std::optional<MlirLinalgConvolutionDimensions>
38 if (mlirAttributeIsNull(dims.
batch) &&
43 mlirAttributeIsNull(dims.
depth) && mlirAttributeIsNull(dims.
strides) &&
53 "fill_builtin_region",
56 "Fill the region for `op`, which is assumed to be a builtin named Linalg "
60 "Checks if the given operation is a Linalg contraction operation.",
63 nb::class_<MlirLinalgContractionDimensions>(m,
"ContractionDimensions")
79 "Infers contraction dimensions (batch/m/n/k) for a Linalg contraction "
84 "infer_contraction_dimensions_from_maps",
85 [](std::vector<MlirAffineMap> indexingMaps)
86 -> std::optional<MlirLinalgContractionDimensions> {
87 if (indexingMaps.empty())
95 if (mlirAttributeIsNull(dims.
batch) && mlirAttributeIsNull(dims.
m) &&
96 mlirAttributeIsNull(dims.
n) && mlirAttributeIsNull(dims.
k)) {
101 "Infers contraction dimensions (batch/m/n/k) from a list of affine "
103 nb::arg(
"indexing_maps"));
106 "Checks if the given operation is a Linalg convolution operation.",
109 nb::class_<MlirLinalgConvolutionDimensions>(m,
"ConvolutionDimensions")
110 .def_prop_ro(
"batch",
114 .def_prop_ro(
"output_image",
116 return self.outputImage;
118 .def_prop_ro(
"output_channel",
120 return self.outputChannel;
122 .def_prop_ro(
"filter_loop",
124 return self.filterLoop;
126 .def_prop_ro(
"input_channel",
128 return self.inputChannel;
130 .def_prop_ro(
"depth",
134 .def_prop_ro(
"strides",
138 .def_prop_ro(
"dilations",
140 return self.dilations;
144 "Infers convolution dimensions", nb::arg(
"op"));
148 [](MlirOperation op) -> std::optional<MlirAttribute> {
150 if (mlirAttributeIsNull(attr))
154 "Returns the indexing_maps attribute for a linalg op.");
158 m.doc() =
"MLIR Linalg dialect.";
static std::optional< MlirLinalgContractionDimensions > InferContractionDimensions(MlirOperation op)
static void populateDialectLinalgSubmodule(nb::module_ m)
NB_MODULE(_mlirDialectsLinalg, m)
static std::optional< MlirLinalgConvolutionDimensions > InferConvolutionDimensions(MlirOperation op)
MLIR_CAPI_EXPORTED MlirLinalgConvolutionDimensions mlirLinalgInferConvolutionDimensions(MlirOperation op)
MLIR_CAPI_EXPORTED void mlirLinalgFillBuiltinNamedOpRegion(MlirOperation mlirOp)
Apply the special region builder for the builtin named Linalg op.
MLIR_CAPI_EXPORTED MlirLinalgContractionDimensions mlirLinalgInferContractionDimensionsFromMaps(const MlirAffineMap *indexingMaps, size_t numMaps)
MLIR_CAPI_EXPORTED bool mlirLinalgIsAContractionOp(MlirOperation op)
MLIR_CAPI_EXPORTED MlirAttribute mlirLinalgGetIndexingMapsAttribute(MlirOperation op)
MLIR_CAPI_EXPORTED bool mlirLinalgIsAConvolutionOp(MlirOperation op)
MLIR_CAPI_EXPORTED MlirLinalgContractionDimensions mlirLinalgInferContractionDimensions(MlirOperation op)
MlirAttribute outputChannel
MlirAttribute outputImage
MlirAttribute inputChannel