[Mlir-commits] [mlir] [mlir][emitc] Add ArrayType (PR #83386)
Marius Brehler
llvmlistbot at llvm.org
Mon Mar 11 08:23:15 PDT 2024
================
@@ -762,6 +772,69 @@ LogicalResult emitc::YieldOp::verify() {
#define GET_TYPEDEF_CLASSES
#include "mlir/Dialect/EmitC/IR/EmitCTypes.cpp.inc"
+//===----------------------------------------------------------------------===//
+// ArrayType
+//===----------------------------------------------------------------------===//
+
+Type emitc::ArrayType::parse(AsmParser &parser) {
+ if (parser.parseLess())
+ return Type();
+
+ SmallVector<int64_t, 4> dimensions;
+ if (parser.parseDimensionList(dimensions, /*allowDynamic=*/false,
+ /*withTrailingX=*/true))
+ return Type();
+ // Parse the element type.
+ auto typeLoc = parser.getCurrentLocation();
+ Type elementType;
+ if (parser.parseType(elementType))
+ return Type();
+
+ // Check that array is formed from allowed types.
+ if (!isValidElementType(elementType))
+ return parser.emitError(typeLoc, "invalid array element type"), Type();
+ if (parser.parseGreater())
+ return Type();
+ return parser.getChecked<ArrayType>(dimensions, elementType);
+}
+
+void emitc::ArrayType::print(AsmPrinter &printer) const {
+ printer << "<";
+ for (int64_t dim : getShape()) {
+ printer << dim << 'x';
+ }
+ printer.printType(getElementType());
+ printer << ">";
+}
+
+LogicalResult emitc::ArrayType::verify(
+ ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError,
+ ::llvm::ArrayRef<int64_t> shape, Type elementType) {
+ if (shape.empty())
+ return emitError() << "shape must not be empty";
+
+ for (auto d : shape) {
+ if (d <= 0)
----------------
marbre wrote:
NIT:
```suggestion
for (int64_t dim : shape) {
if (dim <= 0)
```
https://github.com/llvm/llvm-project/pull/83386
More information about the Mlir-commits
mailing list