diff --git a/mlir/include/mlir/IR/DialectImplementation.h b/mlir/include/mlir/IR/DialectImplementation.h --- a/mlir/include/mlir/IR/DialectImplementation.h +++ b/mlir/include/mlir/IR/DialectImplementation.h @@ -361,6 +361,11 @@ /// static-dimension-list ::= (integer `x`)* virtual ParseResult parseDimensionList(SmallVectorImpl &dimensions, bool allowDynamic = true) = 0; + + /// Parse an 'x' token in a dimension list, handling the case where the x is + /// juxtaposed with an element type, as in "xf32", leaving the "f32" as the + /// next token. + virtual ParseResult parseXInDimensionList() = 0; }; } // end namespace mlir diff --git a/mlir/lib/Parser/DialectSymbolParser.cpp b/mlir/lib/Parser/DialectSymbolParser.cpp --- a/mlir/lib/Parser/DialectSymbolParser.cpp +++ b/mlir/lib/Parser/DialectSymbolParser.cpp @@ -308,6 +308,10 @@ return parser.parseDimensionListRanked(dimensions, allowDynamic); } + ParseResult parseXInDimensionList() override { + return parser.parseXInDimensionList(); + } + OptionalParseResult parseOptionalType(Type &result) override { return parser.parseOptionalType(result); }