diff --git a/mlir/include/mlir-c/Pass.h b/mlir/include/mlir-c/Pass.h --- a/mlir/include/mlir-c/Pass.h +++ b/mlir/include/mlir-c/Pass.h @@ -70,9 +70,9 @@ MLIR_CAPI_EXPORTED MlirOpPassManager mlirPassManagerGetAsOpPassManager(MlirPassManager passManager); -/// Run the provided `passManager` on the given `module`. +/// Run the provided `passManager` on the given `op`. MLIR_CAPI_EXPORTED MlirLogicalResult -mlirPassManagerRun(MlirPassManager passManager, MlirModule module); +mlirPassManagerRunOnOp(MlirPassManager passManager, MlirOperation op); /// Enable mlir-print-ir-after-all. MLIR_CAPI_EXPORTED void diff --git a/mlir/lib/Bindings/Python/Pass.cpp b/mlir/lib/Bindings/Python/Pass.cpp --- a/mlir/lib/Bindings/Python/Pass.cpp +++ b/mlir/lib/Bindings/Python/Pass.cpp @@ -117,8 +117,8 @@ .def( "run", [](PyPassManager &passManager, PyModule &module) { - MlirLogicalResult status = - mlirPassManagerRun(passManager.get(), module.get()); + MlirLogicalResult status = mlirPassManagerRunOnOp( + passManager.get(), mlirModuleGetOperation(module.get())); if (mlirLogicalResultIsFailure(status)) throw SetPyError(PyExc_RuntimeError, "Failure while executing pass pipeline."); diff --git a/mlir/lib/CAPI/IR/Pass.cpp b/mlir/lib/CAPI/IR/Pass.cpp --- a/mlir/lib/CAPI/IR/Pass.cpp +++ b/mlir/lib/CAPI/IR/Pass.cpp @@ -39,9 +39,9 @@ return wrap(static_cast(unwrap(passManager))); } -MlirLogicalResult mlirPassManagerRun(MlirPassManager passManager, - MlirModule module) { - return wrap(unwrap(passManager)->run(unwrap(module))); +MlirLogicalResult mlirPassManagerRunOnOp(MlirPassManager passManager, + MlirOperation op) { + return wrap(unwrap(passManager)->run(unwrap(op))); } void mlirPassManagerEnableIRPrinting(MlirPassManager passManager) { diff --git a/mlir/test/CAPI/execution_engine.c b/mlir/test/CAPI/execution_engine.c --- a/mlir/test/CAPI/execution_engine.c +++ b/mlir/test/CAPI/execution_engine.c @@ -37,7 +37,8 @@ mlirPassManagerAddOwnedPass(pm, mlirCreateConversionConvertFuncToLLVMPass()); mlirOpPassManagerAddOwnedPass( opm, mlirCreateConversionArithToLLVMConversionPass()); - MlirLogicalResult status = mlirPassManagerRun(pm, module); + MlirLogicalResult status = + mlirPassManagerRunOnOp(pm, mlirModuleGetOperation(module)); if (mlirLogicalResultIsFailure(status)) { fprintf(stderr, "Unexpected failure running pass pipeline\n"); exit(2); diff --git a/mlir/test/CAPI/pass.c b/mlir/test/CAPI/pass.c --- a/mlir/test/CAPI/pass.c +++ b/mlir/test/CAPI/pass.c @@ -33,17 +33,16 @@ MlirContext ctx = mlirContextCreate(); registerAllUpstreamDialects(ctx); - MlirModule module = mlirModuleCreateParse( - ctx, - // clang-format off - mlirStringRefCreateFromCString( -"func.func @foo(%arg0 : i32) -> i32 { \n" -" %res = arith.addi %arg0, %arg0 : i32 \n" -" return %res : i32 \n" -"}")); - // clang-format on - if (mlirModuleIsNull(module)) { - fprintf(stderr, "Unexpected failure parsing module.\n"); + const char *funcAsm = // + "func.func @foo(%arg0 : i32) -> i32 { \n" + " %res = arith.addi %arg0, %arg0 : i32 \n" + " return %res : i32 \n" + "} \n"; + MlirOperation func = + mlirOperationCreateParse(ctx, mlirStringRefCreateFromCString(funcAsm), + mlirStringRefCreateFromCString("funcAsm")); + if (mlirOperationIsNull(func)) { + fprintf(stderr, "Unexpected failure parsing asm.\n"); exit(EXIT_FAILURE); } @@ -56,14 +55,14 @@ MlirPassManager pm = mlirPassManagerCreate(ctx); MlirPass printOpStatPass = mlirCreateTransformsPrintOpStats(); mlirPassManagerAddOwnedPass(pm, printOpStatPass); - MlirLogicalResult success = mlirPassManagerRun(pm, module); + MlirLogicalResult success = mlirPassManagerRunOnOp(pm, func); if (mlirLogicalResultIsFailure(success)) { fprintf(stderr, "Unexpected failure running pass manager.\n"); exit(EXIT_FAILURE); } mlirPassManagerDestroy(pm); } - mlirModuleDestroy(module); + mlirOperationDestroy(func); mlirContextDestroy(ctx); } @@ -71,22 +70,23 @@ MlirContext ctx = mlirContextCreate(); registerAllUpstreamDialects(ctx); - MlirModule module = mlirModuleCreateParse( - ctx, - // clang-format off - mlirStringRefCreateFromCString( -"func.func @foo(%arg0 : i32) -> i32 { \n" -" %res = arith.addi %arg0, %arg0 : i32 \n" -" return %res : i32 \n" -"} \n" -"module { \n" -" func.func @bar(%arg0 : f32) -> f32 { \n" -" %res = arith.addf %arg0, %arg0 : f32 \n" -" return %res : f32 \n" -" } \n" -"}")); - // clang-format on - if (mlirModuleIsNull(module)) + const char *moduleAsm = // + "module { \n" + " func.func @foo(%arg0 : i32) -> i32 { \n" + " %res = arith.addi %arg0, %arg0 : i32 \n" + " return %res : i32 \n" + " } \n" + " module { \n" + " func.func @bar(%arg0 : f32) -> f32 { \n" + " %res = arith.addf %arg0, %arg0 : f32 \n" + " return %res : f32 \n" + " } \n" + " } \n" + "} \n"; + MlirOperation module = + mlirOperationCreateParse(ctx, mlirStringRefCreateFromCString(moduleAsm), + mlirStringRefCreateFromCString("moduleAsm")); + if (mlirOperationIsNull(module)) exit(1); // Run the print-op-stats pass on functions under the top-level module: @@ -100,7 +100,7 @@ pm, mlirStringRefCreateFromCString("func.func")); MlirPass printOpStatPass = mlirCreateTransformsPrintOpStats(); mlirOpPassManagerAddOwnedPass(nestedFuncPm, printOpStatPass); - MlirLogicalResult success = mlirPassManagerRun(pm, module); + MlirLogicalResult success = mlirPassManagerRunOnOp(pm, module); if (mlirLogicalResultIsFailure(success)) exit(2); mlirPassManagerDestroy(pm); @@ -118,13 +118,13 @@ nestedModulePm, mlirStringRefCreateFromCString("func.func")); MlirPass printOpStatPass = mlirCreateTransformsPrintOpStats(); mlirOpPassManagerAddOwnedPass(nestedFuncPm, printOpStatPass); - MlirLogicalResult success = mlirPassManagerRun(pm, module); + MlirLogicalResult success = mlirPassManagerRunOnOp(pm, module); if (mlirLogicalResultIsFailure(success)) exit(2); mlirPassManagerDestroy(pm); } - mlirModuleDestroy(module); + mlirOperationDestroy(module); mlirContextDestroy(ctx); } @@ -339,16 +339,17 @@ MlirContext ctx = mlirContextCreate(); registerAllUpstreamDialects(ctx); - MlirModule module = mlirModuleCreateParse( - ctx, - // clang-format off - mlirStringRefCreateFromCString( -"func.func @foo(%arg0 : i32) -> i32 { \n" -" %res = arith.addi %arg0, %arg0 : i32 \n" -" return %res : i32 \n" -"}")); - // clang-format on - if (mlirModuleIsNull(module)) { + const char *moduleAsm = // + "module { \n" + " func.func @foo(%arg0 : i32) -> i32 { \n" + " %res = arith.addi %arg0, %arg0 : i32 \n" + " return %res : i32 \n" + " } \n" + "}"; + MlirOperation module = + mlirOperationCreateParse(ctx, mlirStringRefCreateFromCString(moduleAsm), + mlirStringRefCreateFromCString("moduleAsm")); + if (mlirOperationIsNull(module)) { fprintf(stderr, "Unexpected failure parsing module.\n"); exit(EXIT_FAILURE); } @@ -377,7 +378,7 @@ MlirPassManager pm = mlirPassManagerCreate(ctx); mlirPassManagerAddOwnedPass(pm, externalPass); - MlirLogicalResult success = mlirPassManagerRun(pm, module); + MlirLogicalResult success = mlirPassManagerRunOnOp(pm, module); if (mlirLogicalResultIsFailure(success)) { fprintf(stderr, "Unexpected failure running external pass.\n"); exit(EXIT_FAILURE); @@ -421,7 +422,7 @@ MlirOpPassManager nestedFuncPm = mlirPassManagerGetNestedUnder(pm, funcOpName); mlirOpPassManagerAddOwnedPass(nestedFuncPm, externalPass); - MlirLogicalResult success = mlirPassManagerRun(pm, module); + MlirLogicalResult success = mlirPassManagerRunOnOp(pm, module); if (mlirLogicalResultIsFailure(success)) { fprintf(stderr, "Unexpected failure running external operation pass.\n"); exit(EXIT_FAILURE); @@ -469,7 +470,7 @@ MlirPassManager pm = mlirPassManagerCreate(ctx); mlirPassManagerAddOwnedPass(pm, externalPass); - MlirLogicalResult success = mlirPassManagerRun(pm, module); + MlirLogicalResult success = mlirPassManagerRunOnOp(pm, module); if (mlirLogicalResultIsFailure(success)) { fprintf(stderr, "Unexpected failure running external pass.\n"); exit(EXIT_FAILURE); @@ -516,7 +517,7 @@ MlirPassManager pm = mlirPassManagerCreate(ctx); mlirPassManagerAddOwnedPass(pm, externalPass); - MlirLogicalResult success = mlirPassManagerRun(pm, module); + MlirLogicalResult success = mlirPassManagerRunOnOp(pm, module); if (mlirLogicalResultIsSuccess(success)) { fprintf( stderr, @@ -564,7 +565,7 @@ MlirPassManager pm = mlirPassManagerCreate(ctx); mlirPassManagerAddOwnedPass(pm, externalPass); - MlirLogicalResult success = mlirPassManagerRun(pm, module); + MlirLogicalResult success = mlirPassManagerRunOnOp(pm, module); if (mlirLogicalResultIsSuccess(success)) { fprintf( stderr, @@ -587,7 +588,7 @@ } mlirTypeIDAllocatorDestroy(typeIDAllocator); - mlirModuleDestroy(module); + mlirOperationDestroy(module); mlirContextDestroy(ctx); }