[Mlir-commits] [mlir] d32df0f - [mlir][arith] Expose dedicated API for expanding ceil/floor division
Lei Zhang
llvmlistbot at llvm.org
Fri Oct 7 12:52:14 PDT 2022
Author: Lei Zhang
Date: 2022-10-07T19:51:59Z
New Revision: d32df0f63d27bb40981eed14a9e6aebcad4d884b
URL: https://github.com/llvm/llvm-project/commit/d32df0f63d27bb40981eed14a9e6aebcad4d884b
DIFF: https://github.com/llvm/llvm-project/commit/d32df0f63d27bb40981eed14a9e6aebcad4d884b.diff
LOG: [mlir][arith] Expose dedicated API for expanding ceil/floor division
This allows more precise control over which patterns to pick to
expand arithmetic ops. Previously ceil/floor division epxansion
is only available together with various min/max op expansion.
Reviewed By: ThomasRaoux
Differential Revision: https://reviews.llvm.org/D135479
Added:
Modified:
mlir/include/mlir/Dialect/Arith/Transforms/Passes.h
mlir/lib/Dialect/Arith/Transforms/ExpandOps.cpp
Removed:
################################################################################
diff --git a/mlir/include/mlir/Dialect/Arith/Transforms/Passes.h b/mlir/include/mlir/Dialect/Arith/Transforms/Passes.h
index a987bcd8c8798..5e441a7020708 100644
--- a/mlir/include/mlir/Dialect/Arith/Transforms/Passes.h
+++ b/mlir/include/mlir/Dialect/Arith/Transforms/Passes.h
@@ -31,10 +31,13 @@ std::unique_ptr<Pass> createConstantBufferizePass(uint64_t alignment = 0);
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.
+/// Create a pass to legalize Arith ops.
std::unique_ptr<Pass> createArithExpandOpsPass();
/// Create a pass to replace signed ops with unsigned ones where they are proven
diff --git a/mlir/lib/Dialect/Arith/Transforms/ExpandOps.cpp b/mlir/lib/Dialect/Arith/Transforms/ExpandOps.cpp
index 5a1793aa14890..1a5911c1685e4 100644
--- a/mlir/lib/Dialect/Arith/Transforms/ExpandOps.cpp
+++ b/mlir/lib/Dialect/Arith/Transforms/ExpandOps.cpp
@@ -225,12 +225,17 @@ struct ArithExpandOpsPass
} // namespace
+void mlir::arith::populateCeilFloorDivExpandOpsPatterns(
+ RewritePatternSet &patterns) {
+ patterns
+ .add<CeilDivSIOpConverter, CeilDivUIOpConverter, FloorDivSIOpConverter>(
+ patterns.getContext());
+}
+
void mlir::arith::populateArithExpandOpsPatterns(RewritePatternSet &patterns) {
+ populateCeilFloorDivExpandOpsPatterns(patterns);
// clang-format off
patterns.add<
- CeilDivSIOpConverter,
- CeilDivUIOpConverter,
- FloorDivSIOpConverter,
MaxMinFOpConverter<MaxFOp, arith::CmpFPredicate::UGT>,
MaxMinFOpConverter<MinFOp, arith::CmpFPredicate::ULT>,
MaxMinIOpConverter<MaxSIOp, arith::CmpIPredicate::sgt>,
More information about the Mlir-commits
mailing list