22template <
typename OpT>
24 using mlir::OpRewritePattern<OpT>::OpRewritePattern;
26 LogicalResult matchAndRewrite(OpT op,
27 mlir::PatternRewriter &
b)
const override {
28 auto mRef = op.getRef();
29 if (mRef.getType().hasStaticShape()) {
30 return mlir::failure();
32 auto defOp = mRef.getDefiningOp();
33 if (!defOp || !mlir::isa<mlir::memref::CastOp>(defOp)) {
34 return mlir::failure();
36 auto src = mlir::cast<mlir::memref::CastOp>(defOp).getSource();
37 if (!src.getType().hasStaticShape()) {
38 return mlir::failure();
40 op.getRefMutable().assign(src);
41 return mlir::success();
46 using mlir::OpRewritePattern<mlir::mpi::CommRankOp>::OpRewritePattern;
47 LogicalResult matchAndRewrite(mlir::mpi::CommRankOp op,
48 mlir::PatternRewriter &
b)
const override {
54 using mlir::OpRewritePattern<mlir::mpi::CommSizeOp>::OpRewritePattern;
56 LogicalResult matchAndRewrite(mlir::mpi::CommSizeOp op,
57 mlir::PatternRewriter &
b)
const override {
63void mlir::mpi::SendOp::getCanonicalizationPatterns(
65 results.
add<FoldCast<mlir::mpi::SendOp>>(context);
68void mlir::mpi::RecvOp::getCanonicalizationPatterns(
70 results.
add<FoldCast<mlir::mpi::RecvOp>>(context);
73void mlir::mpi::ISendOp::getCanonicalizationPatterns(
75 results.
add<FoldCast<mlir::mpi::ISendOp>>(context);
78void mlir::mpi::IRecvOp::getCanonicalizationPatterns(
80 results.
add<FoldCast<mlir::mpi::IRecvOp>>(context);
83void mlir::mpi::CommRankOp::getCanonicalizationPatterns(
85 results.
add<FoldRank>(context);
88void mlir::mpi::CommSizeOp::getCanonicalizationPatterns(
90 results.
add<FoldSize>(context);
98#include "mlir/Dialect/MPI/IR/MPIOps.cpp.inc"
MLIRContext is the top-level object for a collection of MLIR operations.
RewritePatternSet & add(ConstructorArg &&arg, ConstructorArgs &&...args)
Add an instance of each of the pattern types 'Ts' to the pattern list with the given arguments.
LogicalResult FoldToDLTIConst(OpT op, const char *key, mlir::PatternRewriter &b)
Include the generated interface declarations.
OpRewritePattern is a wrapper around RewritePattern that allows for matching and rewriting against an...