@@ -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