#include "mlir/Dialect/Shape/Transforms/Passes.h"
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/Dialect/Shape/IR/Shape.h"
#include "mlir/IR/Builders.h"
#include "mlir/IR/PatternMatch.h"
#include "mlir/Pass/Pass.h"
#include "mlir/Transforms/DialectConversion.h"
namespace mlir {
#define GEN_PASS_DEF_SHAPETOSHAPELOWERING
#include "mlir/Dialect/Shape/Transforms/Passes.h.inc"
}
usingnamespacemlir;
usingnamespacemlir::shape;
namespace {
struct NumElementsOpConverter : public OpRewritePattern<NumElementsOp> { … };
}
LogicalResult
NumElementsOpConverter::matchAndRewrite(NumElementsOp op,
PatternRewriter &rewriter) const { … }
namespace {
struct ShapeToShapeLowering
: public impl::ShapeToShapeLoweringBase<ShapeToShapeLowering> { … };
}
void ShapeToShapeLowering::runOnOperation() { … }
void mlir::populateShapeRewritePatterns(RewritePatternSet &patterns) { … }
std::unique_ptr<Pass> mlir::createShapeToShapeLowering() { … }