File tree 5 files changed +66
-11
lines changed
python/mlir/_mlir_libs/_mlir
5 files changed +66
-11
lines changed Original file line number Diff line number Diff line change @@ -74,9 +74,11 @@ mlirPassManagerGetAsOpPassManager(MlirPassManager passManager);
74
74
MLIR_CAPI_EXPORTED MlirLogicalResult
75
75
mlirPassManagerRunOnOp (MlirPassManager passManager , MlirOperation op );
76
76
77
- /// Enable mlir-print-ir-after-all.
78
- MLIR_CAPI_EXPORTED void
79
- mlirPassManagerEnableIRPrinting (MlirPassManager passManager );
77
+ /// Enable IR printing.
78
+ MLIR_CAPI_EXPORTED void mlirPassManagerEnableIRPrinting (
79
+ MlirPassManager passManager , bool printBeforeAll , bool printAfterAll ,
80
+ bool printModuleScope , bool printAfterOnlyOnChange ,
81
+ bool printAfterOnlyOnFailure );
80
82
81
83
/// Enable / disable verify-each.
82
84
MLIR_CAPI_EXPORTED void
Original file line number Diff line number Diff line change @@ -74,10 +74,17 @@ void mlir::python::populatePassManagerSubmodule(py::module &m) {
74
74
" Releases (leaks) the backing pass manager (testing)" )
75
75
.def (
76
76
" enable_ir_printing" ,
77
- [](PyPassManager &passManager) {
78
- mlirPassManagerEnableIRPrinting (passManager.get ());
77
+ [](PyPassManager &passManager, bool printBeforeAll,
78
+ bool printAfterAll, bool printModuleScope, bool printAfterChange,
79
+ bool printAfterFailure) {
80
+ mlirPassManagerEnableIRPrinting (
81
+ passManager.get (), printBeforeAll, printAfterAll,
82
+ printModuleScope, printAfterChange, printAfterFailure);
79
83
},
80
- " Enable mlir-print-ir-after-all." )
84
+ " print_before_all" _a = false , " print_after_all" _a = true ,
85
+ " print_module_scope" _a = false , " print_after_change" _a = false ,
86
+ " print_after_failure" _a = false ,
87
+ " Enable IR printing, default as mlir-print-ir-after-all." )
81
88
.def (
82
89
" enable_verifier" ,
83
90
[](PyPassManager &passManager, bool enable) {
Original file line number Diff line number Diff line change @@ -44,8 +44,21 @@ MlirLogicalResult mlirPassManagerRunOnOp(MlirPassManager passManager,
44
44
return wrap (unwrap (passManager)->run (unwrap (op)));
45
45
}
46
46
47
- void mlirPassManagerEnableIRPrinting (MlirPassManager passManager) {
48
- return unwrap (passManager)->enableIRPrinting ();
47
+ void mlirPassManagerEnableIRPrinting (MlirPassManager passManager,
48
+ bool printBeforeAll, bool printAfterAll,
49
+ bool printModuleScope,
50
+ bool printAfterOnlyOnChange,
51
+ bool printAfterOnlyOnFailure) {
52
+ auto shouldPrintBeforePass = [printBeforeAll](Pass *, Operation *) {
53
+ return printBeforeAll;
54
+ };
55
+ auto shouldPrintAfterPass = [printAfterAll](Pass *, Operation *) {
56
+ return printAfterAll;
57
+ };
58
+ return unwrap (passManager)
59
+ ->enableIRPrinting (shouldPrintBeforePass, shouldPrintAfterPass,
60
+ printModuleScope, printAfterOnlyOnChange,
61
+ printAfterOnlyOnFailure);
49
62
}
50
63
51
64
void mlirPassManagerEnableVerifier (MlirPassManager passManager, bool enable) {
Original file line number Diff line number Diff line change @@ -16,7 +16,14 @@ class PassManager:
16
16
def __init__ (self , context : Optional [_ir .Context ] = None ) -> None : ...
17
17
def _CAPICreate (self ) -> object : ...
18
18
def _testing_release (self ) -> None : ...
19
- def enable_ir_printing (self ) -> None : ...
19
+ def enable_ir_printing (
20
+ self ,
21
+ print_before_all : bool = False ,
22
+ print_after_all : bool = True ,
23
+ print_module_scope : bool = False ,
24
+ print_after_change : bool = False ,
25
+ print_after_failure : bool = False ,
26
+ ) -> None : ...
20
27
def enable_verifier (self , enable : bool ) -> None : ...
21
28
@staticmethod
22
29
def parse (pipeline : str , context : Optional [_ir .Context ] = None ) -> PassManager : ...
Original file line number Diff line number Diff line change @@ -300,14 +300,40 @@ def testPrintIrAfterAll():
300
300
pm = PassManager .parse ("builtin.module(canonicalize)" )
301
301
ctx .enable_multithreading (False )
302
302
pm .enable_ir_printing ()
303
- # CHECK: // -----// IR Dump Before Canonicalizer (canonicalize) ('builtin.module' operation) //----- //
303
+ # CHECK: // -----// IR Dump After Canonicalizer (canonicalize) //----- //
304
+ # CHECK: module {
305
+ # CHECK: func.func @main() {
306
+ # CHECK: return
307
+ # CHECK: }
308
+ # CHECK: }
309
+ pm .run (module )
310
+
311
+
312
+ # CHECK-LABEL: TEST: testPrintIrBeforeAndAfterAll
313
+ @run
314
+ def testPrintIrBeforeAndAfterAll ():
315
+ with Context () as ctx :
316
+ module = ModuleOp .parse (
317
+ """
318
+ module {
319
+ func.func @main() {
320
+ %0 = arith.constant 10
321
+ return
322
+ }
323
+ }
324
+ """
325
+ )
326
+ pm = PassManager .parse ("builtin.module(canonicalize)" )
327
+ ctx .enable_multithreading (False )
328
+ pm .enable_ir_printing (print_before_all = True , print_after_all = True )
329
+ # CHECK: // -----// IR Dump Before Canonicalizer (canonicalize) //----- //
304
330
# CHECK: module {
305
331
# CHECK: func.func @main() {
306
332
# CHECK: %[[C10:.*]] = arith.constant 10 : i64
307
333
# CHECK: return
308
334
# CHECK: }
309
335
# CHECK: }
310
- # CHECK: // -----// IR Dump After Canonicalizer (canonicalize) ('builtin.module' operation) //----- //
336
+ # CHECK: // -----// IR Dump After Canonicalizer (canonicalize) //----- //
311
337
# CHECK: module {
312
338
# CHECK: func.func @main() {
313
339
# CHECK: return
You can’t perform that action at this time.
0 commit comments