@@ -185,56 +185,13 @@ struct FillExtractSlice
185
185
return mlir::success ();
186
186
}
187
187
};
188
-
189
- struct ReinterpretOfReinterpret
190
- : public mlir::OpRewritePattern<mlir::memref::ReinterpretCastOp> {
191
- using OpRewritePattern::OpRewritePattern;
192
-
193
- mlir::LogicalResult
194
- matchAndRewrite (mlir::memref::ReinterpretCastOp op,
195
- mlir::PatternRewriter &rewriter) const override {
196
- mlir::OpFoldResult zero = rewriter.getI64IntegerAttr (0 );
197
- auto getCastSrc = [&](mlir::Value src) -> mlir::Value {
198
- if (auto prev = src.getDefiningOp <mlir::memref::ReinterpretCastOp>()) {
199
- return prev.source ();
200
- } else if (auto prev = src.getDefiningOp <mlir::memref::CastOp>()) {
201
- return prev.source ();
202
- } else if (auto prev = src.getDefiningOp <mlir::memref::SubViewOp>()) {
203
- if (llvm::all_of (prev.getMixedOffsets (),
204
- [&](auto val) { return val == zero; }))
205
- return prev.source ();
206
- }
207
-
208
- return nullptr ;
209
- };
210
-
211
- mlir::Value src = op.source ();
212
- while (auto prev = getCastSrc (src))
213
- src = prev;
214
-
215
- if (src == op.source ())
216
- return mlir::failure ();
217
-
218
- auto offsets = op.getMixedOffsets ();
219
- if (offsets.size () != 1 )
220
- return mlir::failure ();
221
-
222
- auto sizes = op.getMixedSizes ();
223
- auto strides = op.getMixedStrides ();
224
-
225
- rewriter.replaceOpWithNewOp <mlir::memref::ReinterpretCastOp>(
226
- op, op.getType (), src, offsets.front (), sizes, strides);
227
- return mlir::success ();
228
- }
229
- };
230
188
} // namespace
231
189
232
190
void PlierUtilDialect::getCanonicalizationPatterns (
233
191
mlir::RewritePatternSet &results) const {
234
192
results.add <DimExpandShape<mlir::tensor::DimOp, mlir::tensor::ExpandShapeOp>,
235
193
DimExpandShape<mlir::memref::DimOp, mlir::memref::ExpandShapeOp>,
236
- DimInsertSlice, FillExtractSlice, ReinterpretOfReinterpret>(
237
- getContext ());
194
+ DimInsertSlice, FillExtractSlice>(getContext ());
238
195
}
239
196
240
197
OpaqueType OpaqueType::get (mlir::MLIRContext *context) {
0 commit comments