Skip to content

Commit caff7d4

Browse files
author
Vrajang Parikh
committed
Add optional arguments to passmanger ir printing
1 parent 4759890 commit caff7d4

File tree

4 files changed

+54
-6
lines changed

4 files changed

+54
-6
lines changed

mlir/include/mlir-c/Pass.h

+9-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,15 @@ mlirPassManagerRunOnOp(MlirPassManager passManager, MlirOperation op);
7676

7777
/// Enable mlir-print-ir-after-all.
7878
MLIR_CAPI_EXPORTED void
79-
mlirPassManagerEnableIRPrinting(MlirPassManager passManager);
79+
mlirPassManagerEnableIRPrinting(MlirPassManager passManager,
80+
bool shouldPrintBeforePass,
81+
bool shouldPrintAfterPass,
82+
bool printAfterOnlyOnChange,
83+
bool printAfterOnlyOnFailure);
84+
85+
// Enable timing of passes
86+
MLIR_CAPI_EXPORTED void
87+
mlirPassManagerEnableTiming(MlirPassManager passManager);
8088

8189
/// Enable / disable verify-each.
8290
MLIR_CAPI_EXPORTED void

mlir/lib/Bindings/Python/Pass.cpp

+19-2
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,27 @@ void mlir::python::populatePassManagerSubmodule(py::module &m) {
7474
"Releases (leaks) the backing pass manager (testing)")
7575
.def(
7676
"enable_ir_printing",
77-
[](PyPassManager &passManager) {
78-
mlirPassManagerEnableIRPrinting(passManager.get());
77+
[](PyPassManager &passManager,
78+
bool print_before_pass,
79+
bool print_after_pass,
80+
bool print_after_only_on_change,
81+
bool print_after_only_on_failure) {
82+
mlirPassManagerEnableIRPrinting(passManager.get(),
83+
print_before_pass,
84+
print_after_pass,
85+
print_after_only_on_change,
86+
print_after_only_on_failure);
7987
},
88+
"print_before_pass"_a = true, "print_after_pass"_a = true,
89+
"print_after_only_on_change"_a = true, "print_after_only_on_failure"_a = false,
8090
"Enable mlir-print-ir-after-all.")
91+
.def(
92+
"enable_timing",
93+
[](PyPassManager &PyPassManager) {
94+
mlirPassManagerEnableTiming(PyPassManager.get());
95+
},
96+
"Enable timing of passes"
97+
)
8198
.def(
8299
"enable_verifier",
83100
[](PyPassManager &passManager, bool enable) {

mlir/lib/CAPI/IR/Pass.cpp

+17-2
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,23 @@ MlirLogicalResult mlirPassManagerRunOnOp(MlirPassManager passManager,
4444
return wrap(unwrap(passManager)->run(unwrap(op)));
4545
}
4646

47-
void mlirPassManagerEnableIRPrinting(MlirPassManager passManager) {
48-
return unwrap(passManager)->enableIRPrinting();
47+
void mlirPassManagerEnableIRPrinting(MlirPassManager passManager,
48+
bool shouldPrintBeforePass,
49+
bool shouldPrintAfterPass,
50+
bool printAfterOnlyOnChange,
51+
bool printAfterOnlyOnFailure) {
52+
auto shouldPrintBeforeFn = [shouldPrintBeforePass](Pass *, Operation *) {return shouldPrintBeforePass;};
53+
auto shouldPrintAfterFn = [shouldPrintAfterPass](Pass *, Operation *) {return shouldPrintAfterPass;};
54+
55+
return unwrap(passManager)->enableIRPrinting(shouldPrintBeforeFn,
56+
shouldPrintAfterFn,
57+
true,
58+
printAfterOnlyOnChange,
59+
printAfterOnlyOnFailure);
60+
}
61+
62+
void mlirPassManagerEnableTiming(MlirPassManager passManager) {
63+
return unwrap(passManager)->enableTiming();
4964
}
5065

5166
void mlirPassManagerEnableVerifier(MlirPassManager passManager, bool enable) {

mlir/python/mlir/_mlir_libs/_mlir/passmanager.pyi

+9-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
# * Relative imports for cross-module references.
55
# * Add __all__
66

7+
from pickle import TRUE
78
from typing import Any, Optional
89

910
from . import ir as _ir
@@ -16,7 +17,14 @@ class PassManager:
1617
def __init__(self, context: Optional[_ir.Context] = None) -> None: ...
1718
def _CAPICreate(self) -> object: ...
1819
def _testing_release(self) -> None: ...
19-
def enable_ir_printing(self) -> None: ...
20+
def enable_ir_printing(
21+
self,
22+
print_before_pass=True,
23+
print_after_pass=True,
24+
print_after_only_on_change=True,
25+
print_after_only_on_failure=False,
26+
) -> None: ...
27+
def enable_timing(self) -> None: ...
2028
def enable_verifier(self, enable: bool) -> None: ...
2129
@staticmethod
2230
def parse(pipeline: str, context: Optional[_ir.Context] = None) -> PassManager: ...

0 commit comments

Comments
 (0)