diff --git a/mlir/include/mlir/IR/OpBase.td b/mlir/include/mlir/IR/OpBase.td --- a/mlir/include/mlir/IR/OpBase.td +++ b/mlir/include/mlir/IR/OpBase.td @@ -801,7 +801,7 @@ //===----------------------------------------------------------------------===// // Memref type. -// Unranked Memref type +// Any unranked memref whose element type is from the given `allowedTypes` list. class UnrankedMemRefOf allowedTypes> : ShapedContainerType; -// Memrefs are blocks of data with fixed type and rank. +// Any ranked memref whose element type is from the given `allowedTypes` list. class MemRefOf allowedTypes> : ShapedContainerType; + class Non0RankedMemRefOf allowedTypes> : ConfinedType, [HasRankGreaterOrEqualPred<1>], "non-0-ranked." # MemRefOf.summary, @@ -821,10 +822,18 @@ def AnyMemRef : MemRefOf<[AnyType]>; def AnyNon0RankedMemRef : Non0RankedMemRefOf<[AnyType]>; -class RankedOrUnrankedMemRefOf allowedTypes>: - AnyTypeOf<[UnrankedMemRefOf, MemRefOf]>; +// Any memref (ranked or unranked) whose element type is from the given +// `allowedTypes` list, and which additionally satisfies an optional list of +// predicates. +class RankedOrUnrankedMemRefOf< + list allowedTypes, + list preds = [], + string summary = "ranked or unranked memref"> + : ShapedContainerType, + summary, "::mlir::BaseMemRefType">; -def AnyRankedOrUnrankedMemRef: AnyTypeOf<[AnyUnrankedMemRef, AnyMemRef]>; +def AnyRankedOrUnrankedMemRef : RankedOrUnrankedMemRefOf<[AnyType]>; def AnyNon0RankedOrUnrankedMemRef: AnyTypeOf<[AnyUnrankedMemRef, AnyNon0RankedMemRef]>; diff --git a/mlir/test/Dialect/MemRef/invalid.mlir b/mlir/test/Dialect/MemRef/invalid.mlir --- a/mlir/test/Dialect/MemRef/invalid.mlir +++ b/mlir/test/Dialect/MemRef/invalid.mlir @@ -910,7 +910,7 @@ // ----- func.func @rank(%0: f32) { - // expected-error@+1 {{'memref.rank' op operand #0 must be unranked.memref of any type values or memref of any type values}} + // expected-error@+1 {{'memref.rank' op operand #0 must be ranked or unranked memref of any type values}} "memref.rank"(%0): (f32)->index return }