[Mlir-commits] [mlir] [MLIR][Python] Support dialect conversion in python bindings (PR #177782)

Maksim Levental llvmlistbot at llvm.org
Sun Jan 25 15:23:20 PST 2026


================
@@ -439,6 +441,73 @@ void mlirWalkAndApplyPatterns(MlirOperation op,
   mlir::walkAndApplyPatterns(unwrap(op), *unwrap(patterns));
 }
 
+MlirLogicalResult
+mlirApplyPartialConversion(MlirOperation op, MlirConversionTarget target,
+                           MlirFrozenRewritePatternSet patterns,
+                           MlirConversionConfig config) {
+  return wrap(mlir::applyPartialConversion(unwrap(op), *unwrap(target),
+                                           *unwrap(patterns), *unwrap(config)));
+}
+
+MlirLogicalResult mlirApplyFullConversion(MlirOperation op,
+                                          MlirConversionTarget target,
+                                          MlirFrozenRewritePatternSet patterns,
+                                          MlirConversionConfig config) {
+  return wrap(mlir::applyFullConversion(unwrap(op), *unwrap(target),
+                                        *unwrap(patterns), *unwrap(config)));
+}
+
+//===----------------------------------------------------------------------===//
+/// ConversionConfig API
+//===----------------------------------------------------------------------===//
+
+MlirConversionConfig mlirConversionConfigCreate(void) {
+  return wrap(new mlir::ConversionConfig());
+}
+
+void mlirConversionConfigDestroy(MlirConversionConfig config) {
+  delete unwrap(config);
+}
+
+void mlirConversionConfigSetFoldingMode(MlirConversionConfig config,
+                                        MlirDialectConversionFoldingMode mode) {
+  mlir::DialectConversionFoldingMode cppMode;
+  switch (mode) {
+  case MLIR_DIALECT_CONVERSION_FOLDING_MODE_NEVER:
+    cppMode = mlir::DialectConversionFoldingMode::Never;
+    break;
+  case MLIR_DIALECT_CONVERSION_FOLDING_MODE_BEFORE_PATTERNS:
+    cppMode = mlir::DialectConversionFoldingMode::BeforePatterns;
+    break;
+  case MLIR_DIALECT_CONVERSION_FOLDING_MODE_AFTER_PATTERNS:
+    cppMode = mlir::DialectConversionFoldingMode::AfterPatterns;
+    break;
+  }
+  unwrap(config)->foldingMode = cppMode;
+}
+
+MlirDialectConversionFoldingMode
+mlirConversionConfigGetFoldingMode(MlirConversionConfig config) {
+  switch (unwrap(config)->foldingMode) {
+  case mlir::DialectConversionFoldingMode::Never:
+    return MLIR_DIALECT_CONVERSION_FOLDING_MODE_NEVER;
+  case mlir::DialectConversionFoldingMode::BeforePatterns:
+    return MLIR_DIALECT_CONVERSION_FOLDING_MODE_BEFORE_PATTERNS;
+  case mlir::DialectConversionFoldingMode::AfterPatterns:
+    return MLIR_DIALECT_CONVERSION_FOLDING_MODE_AFTER_PATTERNS;
----------------
makslevental wrote:

```suggestion
    return MLIR_DIALECT_CONVERSION_FOLDING_MODE_AFTER_PATTERNS;
  default:
    llvm::report_fatal_error("unhandled DialectConversionFoldingMode");
```

https://github.com/llvm/llvm-project/pull/177782


More information about the Mlir-commits mailing list