@@ -83,6 +83,16 @@ void mlir::python::populateRewriteSubmodule(nb::module_ &m) {
83
83
// ----------------------------------------------------------------------------
84
84
#if MLIR_ENABLE_PDL_IN_PATTERNMATCH
85
85
nb::class_<PyPDLPatternModule>(m, " PDLModule" )
86
+ .def (
87
+ " __init__" ,
88
+ [](PyPDLPatternModule &self, MlirModule module ) {
89
+ new (&self)
90
+ PyPDLPatternModule (mlirPDLPatternModuleFromModule (module ));
91
+ },
92
+ // clang-format off
93
+ nb::sig (" def __init__(self, module: " MAKE_MLIR_PYTHON_QUALNAME (" ir.Module" ) " ) -> None" ),
94
+ // clang-format on
95
+ " module" _a, " Create a PDL module from the given module." )
86
96
.def (
87
97
" __init__" ,
88
98
[](PyPDLPatternModule &self, PyModule &module ) {
@@ -117,6 +127,22 @@ void mlir::python::populateRewriteSubmodule(nb::module_ &m) {
117
127
// clang-format on
118
128
" Applys the given patterns to the given module greedily while folding "
119
129
" results." )
130
+ .def (
131
+ " apply_patterns_and_fold_greedily" ,
132
+ [](PyModule &module , MlirFrozenRewritePatternSet set) {
133
+ auto status =
134
+ mlirApplyPatternsAndFoldGreedily (module .get (), set, {});
135
+ if (mlirLogicalResultIsFailure (status))
136
+ throw std::runtime_error (
137
+ " pattern application failed to converge" );
138
+ },
139
+ " module" _a, " set" _a,
140
+ // clang-format off
141
+ nb::sig (" def apply_patterns_and_fold_greedily(module: " MAKE_MLIR_PYTHON_QUALNAME (" ir.Module" ) " , set: FrozenRewritePatternSet) -> None" ),
142
+ // clang-format on
143
+ " Applys the given patterns to the given module greedily while "
144
+ " folding "
145
+ " results." )
120
146
.def (
121
147
" apply_patterns_and_fold_greedily" ,
122
148
[](PyOperationBase &op, PyFrozenRewritePatternSet &set) {
@@ -131,5 +157,20 @@ void mlir::python::populateRewriteSubmodule(nb::module_ &m) {
131
157
nb::sig (" def apply_patterns_and_fold_greedily(op: " MAKE_MLIR_PYTHON_QUALNAME (" ir._OperationBase" ) " , set: FrozenRewritePatternSet) -> None" ),
132
158
// clang-format on
133
159
" Applys the given patterns to the given op greedily while folding "
160
+ " results." )
161
+ .def (
162
+ " apply_patterns_and_fold_greedily" ,
163
+ [](PyOperationBase &op, MlirFrozenRewritePatternSet set) {
164
+ auto status = mlirApplyPatternsAndFoldGreedilyWithOp (
165
+ op.getOperation (), set, {});
166
+ if (mlirLogicalResultIsFailure (status))
167
+ throw std::runtime_error (
168
+ " pattern application failed to converge" );
169
+ },
170
+ " op" _a, " set" _a,
171
+ // clang-format off
172
+ nb::sig (" def apply_patterns_and_fold_greedily(op: " MAKE_MLIR_PYTHON_QUALNAME (" ir._OperationBase" ) " , set: FrozenRewritePatternSet) -> None" ),
173
+ // clang-format on
174
+ " Applys the given patterns to the given op greedily while folding "
134
175
" results." );
135
176
}
0 commit comments