diff --git a/mlir/include/mlir/Dialect/Arith/Transforms/Passes.h b/mlir/include/mlir/Dialect/Arith/Transforms/Passes.h --- a/mlir/include/mlir/Dialect/Arith/Transforms/Passes.h +++ b/mlir/include/mlir/Dialect/Arith/Transforms/Passes.h @@ -31,7 +31,10 @@ void populateWideIntEmulationPatterns(WideIntEmulationConverter &typeConverter, RewritePatternSet &patterns); -/// Add patterns to expand Arith ops for LLVM lowering. +/// Add patterns to expand Arith ceil/floor division ops. +void populateCeilFloorDivExpandOpsPatterns(RewritePatternSet &patterns); + +/// Add patterns to expand Arith ops. void populateArithExpandOpsPatterns(RewritePatternSet &patterns); /// Create a pass to legalize Arith ops for LLVM lowering. diff --git a/mlir/lib/Dialect/Arith/Transforms/ExpandOps.cpp b/mlir/lib/Dialect/Arith/Transforms/ExpandOps.cpp --- a/mlir/lib/Dialect/Arith/Transforms/ExpandOps.cpp +++ b/mlir/lib/Dialect/Arith/Transforms/ExpandOps.cpp @@ -225,12 +225,17 @@ } // namespace +void mlir::arith::populateCeilFloorDivExpandOpsPatterns( + RewritePatternSet &patterns) { + patterns + .add( + patterns.getContext()); +} + void mlir::arith::populateArithExpandOpsPatterns(RewritePatternSet &patterns) { + populateCeilFloorDivExpandOpsPatterns(patterns); // clang-format off patterns.add< - CeilDivSIOpConverter, - CeilDivUIOpConverter, - FloorDivSIOpConverter, MaxMinFOpConverter, MaxMinFOpConverter, MaxMinIOpConverter,