[Mlir-commits] [mlir] 945d20f - [MLIR][Shape] Lower `size_to_index` and `index_to_size` with declarative rules

Frederik Gossen llvmlistbot at llvm.org
Thu Jun 18 01:02:12 PDT 2020


Author: Frederik Gossen
Date: 2020-06-18T08:01:38Z
New Revision: 945d20f7ab28bbf836bc7911d59f37eb9e9a6c87

URL: https://github.com/llvm/llvm-project/commit/945d20f7ab28bbf836bc7911d59f37eb9e9a6c87
DIFF: https://github.com/llvm/llvm-project/commit/945d20f7ab28bbf836bc7911d59f37eb9e9a6c87.diff

LOG: [MLIR][Shape] Lower `size_to_index` and `index_to_size` with declarative rules

Replace implemented rewrite patterns with equivalent declarative rules.

Differential Revision: https://reviews.llvm.org/D82023

Added: 
    

Modified: 
    mlir/lib/Conversion/ShapeToStandard/ShapeToStandard.cpp
    mlir/lib/Conversion/ShapeToStandard/ShapeToStandardPatterns.td

Removed: 
    


################################################################################
diff  --git a/mlir/lib/Conversion/ShapeToStandard/ShapeToStandard.cpp b/mlir/lib/Conversion/ShapeToStandard/ShapeToStandard.cpp
index 6cce898112bf..e7741145cfe5 100644
--- a/mlir/lib/Conversion/ShapeToStandard/ShapeToStandard.cpp
+++ b/mlir/lib/Conversion/ShapeToStandard/ShapeToStandard.cpp
@@ -38,32 +38,6 @@ class BinaryOpConversion : public OpConversionPattern<SrcOpTy> {
   }
 };
 
-class IndexToSizeOpConversion : public OpConversionPattern<IndexToSizeOp> {
-public:
-  using OpConversionPattern<IndexToSizeOp>::OpConversionPattern;
-
-  LogicalResult
-  matchAndRewrite(IndexToSizeOp op, ArrayRef<Value> operands,
-                  ConversionPatternRewriter &rewriter) const override {
-    IndexToSizeOp::Adaptor transformed(operands);
-    rewriter.replaceOp(op.getOperation(), transformed.arg());
-    return success();
-  }
-};
-
-class SizeToIndexOpConversion : public OpConversionPattern<SizeToIndexOp> {
-public:
-  using OpConversionPattern<SizeToIndexOp>::OpConversionPattern;
-
-  LogicalResult
-  matchAndRewrite(SizeToIndexOp op, ArrayRef<Value> operands,
-                  ConversionPatternRewriter &rewriter) const override {
-    SizeToIndexOp::Adaptor transformed(operands);
-    rewriter.replaceOp(op.getOperation(), transformed.arg());
-    return success();
-  }
-};
-
 class ConstSizeOpConverter : public OpConversionPattern<ConstSizeOp> {
 public:
   using OpConversionPattern<ConstSizeOp>::OpConversionPattern;
@@ -132,9 +106,7 @@ void mlir::populateShapeToStandardConversionPatterns(
   patterns.insert<
       BinaryOpConversion<AddOp, AddIOp>,
       BinaryOpConversion<MulOp, MulIOp>,
-      ConstSizeOpConverter,
-      IndexToSizeOpConversion,
-      SizeToIndexOpConversion>(ctx);
+      ConstSizeOpConverter>(ctx);
   // clang-format on
 }
 

diff  --git a/mlir/lib/Conversion/ShapeToStandard/ShapeToStandardPatterns.td b/mlir/lib/Conversion/ShapeToStandard/ShapeToStandardPatterns.td
index 3ad54215d8ed..a1335487f5ab 100644
--- a/mlir/lib/Conversion/ShapeToStandard/ShapeToStandardPatterns.td
+++ b/mlir/lib/Conversion/ShapeToStandard/ShapeToStandardPatterns.td
@@ -10,3 +10,12 @@ def ToExtentTensorOpConversion : Pat<
     (Shape_ToExtentTensorOp $input),
     (replaceWithValue $input)>;
 
+// Convert `index_to_size` and `size_to_index` to no-ops as sizes will be
+// represented as indices.
+def IndexToSizeOpConversion : Pat<
+    (Shape_IndexToSizeOp $arg),
+    (replaceWithValue $arg)>;
+def SizeToIndexOpConversion : Pat<
+    (Shape_SizeToIndexOp $arg),
+    (replaceWithValue $arg)>;
+


        


More information about the Mlir-commits mailing list