@@ -83,6 +83,16 @@ void mlir::python::populateRewriteSubmodule(nb::module_ &m) {
8383 // ----------------------------------------------------------------------------
8484#if MLIR_ENABLE_PDL_IN_PATTERNMATCH
8585 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." )
8696 .def (
8797 " __init__" ,
8898 [](PyPDLPatternModule &self, PyModule &module ) {
@@ -117,6 +127,22 @@ void mlir::python::populateRewriteSubmodule(nb::module_ &m) {
117127 // clang-format on
118128 " Applys the given patterns to the given module greedily while folding "
119129 " 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." )
120146 .def (
121147 " apply_patterns_and_fold_greedily" ,
122148 [](PyOperationBase &op, PyFrozenRewritePatternSet &set) {
@@ -131,5 +157,20 @@ void mlir::python::populateRewriteSubmodule(nb::module_ &m) {
131157 nb::sig (" def apply_patterns_and_fold_greedily(op: " MAKE_MLIR_PYTHON_QUALNAME (" ir._OperationBase" ) " , set: FrozenRewritePatternSet) -> None" ),
132158 // clang-format on
133159 " 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 "
134175 " results." );
135176}
0 commit comments