|
10 | 10 | #define MEMREF_OPS
|
11 | 11 |
|
12 | 12 | include "mlir/Dialect/MemRef/IR/MemRefBase.td"
|
| 13 | +include "mlir/IR/OpBase.td" |
13 | 14 | include "mlir/Interfaces/CastInterfaces.td"
|
14 | 15 | include "mlir/Interfaces/SideEffectInterfaces.td"
|
15 | 16 | include "mlir/Interfaces/ViewLikeInterface.td"
|
@@ -106,28 +107,6 @@ def AssumeAlignmentOp : MemRef_Op<"assume_alignment"> {
|
106 | 107 | let assemblyFormat = "$memref `,` $alignment attr-dict `:` type($memref)";
|
107 | 108 | }
|
108 | 109 |
|
109 |
| -//===----------------------------------------------------------------------===// |
110 |
| -// BaseOpWithOffsetSizesAndStrides |
111 |
| -//===----------------------------------------------------------------------===// |
112 |
| - |
113 |
| -// Base class for ops with static/dynamic offset, sizes and strides |
114 |
| -// attributes/arguments. |
115 |
| -class BaseOpWithOffsetSizesAndStrides<string mnemonic, list<OpTrait> traits = []> : |
116 |
| - MemRef_Op<mnemonic, |
117 |
| - !listconcat(traits, [NoSideEffect, AttrSizedOperandSegments])> { |
118 |
| - code extraBaseClassDeclaration = [{ |
119 |
| - /// Returns the dynamic sizes for this subview operation if specified. |
120 |
| - operand_range getDynamicSizes() { return sizes(); } |
121 |
| - |
122 |
| - /// Return the list of Range (i.e. offset, size, stride). Each |
123 |
| - /// Range entry contains either the dynamic value or a ConstantIndexOp |
124 |
| - /// constructed with `b` at location `loc`. |
125 |
| - SmallVector<Range, 8> getOrCreateRanges(OpBuilder &b, Location loc) { |
126 |
| - return mlir::getOrCreateRanges(*this, b, loc); |
127 |
| - } |
128 |
| - }]; |
129 |
| -} |
130 |
| - |
131 | 110 | //===----------------------------------------------------------------------===//
|
132 | 111 | // AllocOp
|
133 | 112 | //===----------------------------------------------------------------------===//
|
@@ -627,8 +606,9 @@ def MemRef_PrefetchOp : MemRef_Op<"prefetch"> {
|
627 | 606 | //===----------------------------------------------------------------------===//
|
628 | 607 |
|
629 | 608 | def MemRef_ReinterpretCastOp:
|
630 |
| - BaseOpWithOffsetSizesAndStrides<"reinterpret_cast", [ |
631 |
| - NoSideEffect, ViewLikeOpInterface, OffsetSizeAndStrideOpInterface |
| 609 | + BaseOpWithOffsetSizesAndStrides<MemRef_Dialect, "reinterpret_cast", [ |
| 610 | + NoSideEffect, AttrSizedOperandSegments, ViewLikeOpInterface, |
| 611 | + OffsetSizeAndStrideOpInterface |
632 | 612 | ]> {
|
633 | 613 | let summary = "memref reinterpret cast operation";
|
634 | 614 | let description = [{
|
@@ -855,8 +835,9 @@ def MemRef_StoreOp : MemRef_Op<"store",
|
855 | 835 | //===----------------------------------------------------------------------===//
|
856 | 836 |
|
857 | 837 | def SubViewOp : BaseOpWithOffsetSizesAndStrides<
|
858 |
| - "subview", [DeclareOpInterfaceMethods<ViewLikeOpInterface>, |
859 |
| - NoSideEffect, OffsetSizeAndStrideOpInterface] > { |
| 838 | + MemRef_Dialect, "subview", [DeclareOpInterfaceMethods<ViewLikeOpInterface>, |
| 839 | + NoSideEffect, AttrSizedOperandSegments, |
| 840 | + OffsetSizeAndStrideOpInterface] > { |
860 | 841 | let summary = "memref subview operation";
|
861 | 842 | let description = [{
|
862 | 843 | The "subview" operation converts a memref type to another memref type
|
|
0 commit comments