Lines Matching defs:memref
26 namespace memref {
29 } // namespace memref
38 /// floating-point numbers, to `memref.generic_atomic_rmw` with the expanded
41 /// %x = atomic_rmw maximumf %fval, %F[%i] : (f32, memref<10xf32>) -> f32
45 /// %x = memref.generic_atomic_rmw %F[%i] : memref<10xf32> {
48 /// memref.atomic_yield %1 : f32
50 struct AtomicRMWOpConverter : public OpRewritePattern<memref::AtomicRMWOp> {
54 LogicalResult matchAndRewrite(memref::AtomicRMWOp op,
57 auto genericOp = rewriter.create<memref::GenericAtomicRMWOp>(
67 bodyBuilder.create<memref::AtomicYieldOp>(loc, arithOp);
74 /// Converts `memref.reshape` that has a target shape of a statically-known
75 /// size to `memref.reinterpret_cast`.
76 struct MemRefReshapeOpConverter : public OpRewritePattern<memref::ReshapeOp> {
80 LogicalResult matchAndRewrite(memref::ReshapeOp op,
99 size = rewriter.create<memref::LoadOp>(loc, op.getShape(), index);
126 rewriter.replaceOpWithNewOp<memref::ReinterpretCastOp>(
133 struct ExpandOpsPass : public memref::impl::ExpandOpsBase<ExpandOpsPass> {
138 memref::populateExpandOpsPatterns(patterns);
141 target.addLegalDialect<arith::ArithDialect, memref::MemRefDialect>();
142 target.addDynamicallyLegalOp<memref::AtomicRMWOp>(
143 [](memref::AtomicRMWOp op) {
149 target.addDynamicallyLegalOp<memref::ReshapeOp>([](memref::ReshapeOp op) {
160 void mlir::memref::populateExpandOpsPatterns(RewritePatternSet &patterns) {
165 std::unique_ptr<Pass> mlir::memref::createExpandOpsPass() {