Files
gps/tools/local/circt/include/mlir/IR/BuiltinDialectBytecode.cpp.inc
T
2026-07-12 11:01:51 +03:00

1247 lines
41 KiB
C++

static ::mlir::Attribute readAffineMapAttr(MLIRContext* context, DialectBytecodeReader &reader) {
AffineMap value;
if (succeeded(readAffineMap(reader, context, value))) {
return getChecked<AffineMapAttr>([&]() { return reader.emitError(); }, context, value);
}
return AffineMapAttr();
}
static LogicalResult write(AffineMapAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* AffineMapAttr */ 23);
writeAffineMap(writer, attribute);
return success();
return failure();
}
static ::mlir::Attribute readArrayAttr(MLIRContext* context, DialectBytecodeReader &reader) {
SmallVector<Attribute> value;
if (succeeded(reader.readAttributes(value))) {
return getChecked<ArrayAttr>([&]() { return reader.emitError(); }, context, value);
}
return ArrayAttr();
}
static LogicalResult write(ArrayAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* ArrayAttr */ 0);
writer.writeAttributes(attribute.getValue());
return success();
return failure();
}
static ::mlir::Attribute readCallSiteLoc(MLIRContext* context, DialectBytecodeReader &reader) {
LocationAttr callee, caller;
if (succeeded(reader.readAttribute(callee)) &&
succeeded(reader.readAttribute(caller))) {
return getChecked<CallSiteLoc>([&]() { return reader.emitError(); }, context, callee, caller);
}
return CallSiteLoc();
}
static LogicalResult write(CallSiteLoc attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* CallSiteLoc */ 10);
writer.writeAttribute(attribute.getCallee());
writer.writeAttribute(attribute.getCaller());
return success();
return failure();
}
static ::mlir::Attribute readDenseArrayAttr(MLIRContext* context, DialectBytecodeReader &reader) {
Type elementType;
uint64_t size;
ArrayRef<char> rawData;
if (succeeded(reader.readType(elementType)) &&
succeeded(reader.readVarInt(size)) &&
succeeded(reader.readBlob(rawData))) {
return getChecked<DenseArrayAttr>([&]() { return reader.emitError(); }, context, elementType, size, rawData);
}
return DenseArrayAttr();
}
static LogicalResult write(DenseArrayAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DenseArrayAttr */ 17);
writer.writeType(attribute.getElementType());
writer.writeVarInt(attribute.getSize());
writer.writeOwnedBlob(attribute.getRawData());
return success();
return failure();
}
static ::mlir::Attribute readDenseResourceElementsAttr(MLIRContext* context, DialectBytecodeReader &reader) {
ShapedType type;
FailureOr<DenseResourceElementsHandle> rawHandle;
if (succeeded(reader.readType(type)) &&
succeeded(readResourceHandle<DenseResourceElementsHandle>(reader, rawHandle))) {
return getChecked<DenseResourceElementsAttr>([&]() { return reader.emitError(); }, context, type, *rawHandle);
}
return DenseResourceElementsAttr();
}
static LogicalResult write(DenseResourceElementsAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DenseResourceElementsAttr */ 16);
writer.writeType(attribute.getType());
writer.writeResourceHandle(attribute.getRawHandle());
return success();
return failure();
}
static ::mlir::Attribute readDenseStringElementsAttr(MLIRContext* context, DialectBytecodeReader &reader) {
ShapedType type;
uint64_t _isSplat;
SmallVector<StringRef> rawStringData;
if (succeeded(reader.readType(type)) &&
succeeded(reader.readVarInt(_isSplat)) &&
succeeded(readPotentiallySplatString(reader, type, _isSplat, rawStringData))) {
return getChecked<DenseStringElementsAttr>([&]() { return reader.emitError(); }, context, type, rawStringData);
}
return DenseStringElementsAttr();
}
static LogicalResult write(DenseStringElementsAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DenseStringElementsAttr */ 19);
writer.writeType(attribute.getType());
writer.writeVarInt(attribute.isSplat());
writePotentiallySplatString(writer, attribute);
return success();
return failure();
}
static ::mlir::Attribute readDenseTypedElementsAttr(MLIRContext* context, DialectBytecodeReader &reader) {
ShapedType type;
SmallVector<char> rawData;
if (succeeded(reader.readType(type)) &&
succeeded(readDenseTypedElementsAttr(reader, type, rawData))) {
return getChecked<DenseTypedElementsAttr>([&]() { return reader.emitError(); }, context, type, rawData);
}
return DenseTypedElementsAttr();
}
static LogicalResult write(DenseTypedElementsAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DenseTypedElementsAttr */ 18);
writer.writeType(attribute.getType());
writeDenseTypedElementsAttr(writer, attribute);
return success();
return failure();
}
static ::mlir::Attribute readDictionaryAttr(MLIRContext* context, DialectBytecodeReader &reader) {
SmallVector<NamedAttribute> value;
auto readValue = [&]() -> FailureOr<NamedAttribute> {
StringAttr name;
Attribute value;
if (succeeded(reader.readAttribute<StringAttr>(name)) &&
succeeded(reader.readAttribute(value))) {
return NamedAttribute(name, value);
}
return failure();
};
if (succeeded(reader.readList(value, readValue))) {
return getChecked<DictionaryAttr>([&]() { return reader.emitError(); }, context, value);
}
return DictionaryAttr();
}
static LogicalResult write(DictionaryAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DictionaryAttr */ 1);
writer.writeList(attribute.getValue(), [&](NamedAttribute attribute) {
writer.writeAttribute(attribute.getName());
writer.writeAttribute(attribute.getValue());
});
return success();
return failure();
}
static ::mlir::Attribute readDistinctAttr(MLIRContext* context, DialectBytecodeReader &reader) {
Attribute referencedAttr;
if (succeeded(reader.readAttribute(referencedAttr))) {
return getChecked<DistinctAttr>([&]() { return reader.emitError(); }, context, referencedAttr);
}
return DistinctAttr();
}
static LogicalResult write(DistinctAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DistinctAttr */ 21);
writer.writeAttribute(attribute.getReferencedAttr());
return success();
return failure();
}
static ::mlir::Attribute readFileLineColLoc(MLIRContext* context, DialectBytecodeReader &reader) {
StringAttr filename;
uint64_t start_line, start_column;
if (succeeded(reader.readAttribute<StringAttr>(filename)) &&
succeeded(reader.readVarInt(start_line)) &&
succeeded(reader.readVarInt(start_column))) {
return getChecked<FileLineColRange>([&]() { return reader.emitError(); }, context, filename, start_line, start_column);
}
return FileLineColRange();
}
static ::mlir::Attribute readFileLineColRange(MLIRContext* context, DialectBytecodeReader &reader) {
StringAttr filename;
SmallVector<uint64_t> rawLocData;
if (succeeded(reader.readAttribute<StringAttr>(filename)) &&
succeeded(readFileLineColRangeLocs(reader, rawLocData))) {
return getFileLineColRange(context, filename, rawLocData);
}
return FileLineColRange();
}
static LogicalResult write(FileLineColRange attribute, DialectBytecodeWriter &writer) {
if (isStrictFileLineColLoc(attribute)) {
writer.writeVarInt(/* FileLineColLoc */ 11);
writer.writeAttribute(attribute.getFilename());
writer.writeVarInt(attribute.getStartLine());
writer.writeVarInt(attribute.getStartColumn());
return success();
}
if (!isStrictFileLineColLoc(attribute)) {
writer.writeVarInt(/* FileLineColRange */ 22);
writer.writeAttribute(attribute.getFilename());
writeFileLineColRangeLocs(writer, attribute);
return success();
}
return failure();
}
static ::mlir::Attribute readFlatSymbolRefAttr(MLIRContext* context, DialectBytecodeReader &reader) {
StringAttr rootReference;
if (succeeded(reader.readAttribute<StringAttr>(rootReference))) {
return getChecked<FlatSymbolRefAttr>([&]() { return reader.emitError(); }, context, rootReference);
}
return FlatSymbolRefAttr();
}
static LogicalResult write(FlatSymbolRefAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* FlatSymbolRefAttr */ 4);
writer.writeAttribute(attribute.getRootReference());
return success();
return failure();
}
static ::mlir::Attribute readFloatAttr(MLIRContext* context, DialectBytecodeReader &reader) {
Type type;
FailureOr<APFloat> value;
if (succeeded(reader.readType(type)) &&
succeeded(readAPFloatWithKnownSemantics(reader, type, value))) {
return getChecked<FloatAttr>([&]() { return reader.emitError(); }, context, type, *value);
}
return FloatAttr();
}
static LogicalResult write(FloatAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* FloatAttr */ 9);
writer.writeType(attribute.getType());
writer.writeAPFloatWithKnownSemantics(attribute.getValue());
return success();
return failure();
}
static ::mlir::Attribute readFusedLoc(MLIRContext* context, DialectBytecodeReader &reader) {
SmallVector<Location> locations;
auto readLocations = [&]() -> FailureOr<Location> {
LocationAttr value;
if (succeeded(reader.readAttribute(value))) {
return Location(value);
}
return failure();
};
if (succeeded(reader.readList(locations, readLocations))) {
return cast<FusedLoc>(getChecked<FusedLoc>([&]() { return reader.emitError(); }, context, locations, Attribute()));
}
return FusedLoc();
}
static ::mlir::Attribute readFusedLocWithMetadata(MLIRContext* context, DialectBytecodeReader &reader) {
SmallVector<Location> locations;
Attribute metadata;
auto readLocations = [&]() -> FailureOr<Location> {
LocationAttr value;
if (succeeded(reader.readAttribute(value))) {
return Location(value);
}
return failure();
};
if (succeeded(reader.readList(locations, readLocations)) &&
succeeded(reader.readAttribute(metadata))) {
return cast<FusedLoc>(getChecked<FusedLoc>([&]() { return reader.emitError(); }, context, locations, metadata));
}
return FusedLoc();
}
static LogicalResult write(FusedLoc attribute, DialectBytecodeWriter &writer) {
if (!attribute.getMetadata()) {
writer.writeVarInt(/* FusedLoc */ 12);
writer.writeList(attribute.getLocations(), [&](Location attribute) {
writer.writeAttribute((LocationAttr)attribute);
});
return success();
}
if (attribute.getMetadata()) {
writer.writeVarInt(/* FusedLocWithMetadata */ 13);
writer.writeList(attribute.getLocations(), [&](Location attribute) {
writer.writeAttribute((LocationAttr)attribute);
});
writer.writeAttribute(attribute.getMetadata());
return success();
}
return failure();
}
static ::mlir::Attribute readIntegerAttr(MLIRContext* context, DialectBytecodeReader &reader) {
Type type;
FailureOr<APInt> value;
if (succeeded(reader.readType(type)) &&
succeeded(readAPIntWithKnownWidth(reader, type, value))) {
return getChecked<IntegerAttr>([&]() { return reader.emitError(); }, context, type, *value);
}
return IntegerAttr();
}
static LogicalResult write(IntegerAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* IntegerAttr */ 8);
writer.writeType(attribute.getType());
writer.writeAPIntWithKnownWidth(attribute.getValue());
return success();
return failure();
}
static ::mlir::Attribute readNameLoc(MLIRContext* context, DialectBytecodeReader &reader) {
StringAttr name;
LocationAttr childLoc;
if (succeeded(reader.readAttribute<StringAttr>(name)) &&
succeeded(reader.readAttribute(childLoc))) {
return getChecked<NameLoc>([&]() { return reader.emitError(); }, context, name, childLoc);
}
return NameLoc();
}
static LogicalResult write(NameLoc attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* NameLoc */ 14);
writer.writeAttribute(attribute.getName());
writer.writeAttribute(attribute.getChildLoc());
return success();
return failure();
}
static ::mlir::Attribute readSparseElementsAttr(MLIRContext* context, DialectBytecodeReader &reader) {
ShapedType type;
DenseIntElementsAttr indices;
DenseElementsAttr values;
if (succeeded(reader.readType(type)) &&
succeeded(reader.readAttribute(indices)) &&
succeeded(reader.readAttribute(values))) {
return getChecked<SparseElementsAttr>([&]() { return reader.emitError(); }, context, type, indices, values);
}
return SparseElementsAttr();
}
static LogicalResult write(SparseElementsAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* SparseElementsAttr */ 20);
writer.writeType(attribute.getType());
writer.writeAttribute(attribute.getIndices());
writer.writeAttribute(attribute.getValues());
return success();
return failure();
}
static ::mlir::Attribute readStringAttr(MLIRContext* context, DialectBytecodeReader &reader) {
StringRef value;
if (succeeded(reader.readString(value))) {
return getChecked<StringAttr>([&]() { return reader.emitError(); }, context, value);
}
return StringAttr();
}
static ::mlir::Attribute readStringAttrWithType(MLIRContext* context, DialectBytecodeReader &reader) {
StringRef value;
Type type;
if (succeeded(reader.readString(value)) &&
succeeded(reader.readType(type))) {
return getChecked<StringAttr>([&]() { return reader.emitError(); }, context, value, type);
}
return StringAttr();
}
static LogicalResult write(StringAttr attribute, DialectBytecodeWriter &writer) {
if (::llvm::isa<NoneType>(attribute.getType())) {
writer.writeVarInt(/* StringAttr */ 2);
writer.writeOwnedString(attribute);
return success();
}
if (!::llvm::isa<NoneType>(attribute.getType())) {
writer.writeVarInt(/* StringAttrWithType */ 3);
writer.writeOwnedString(attribute);
writer.writeType(attribute.getType());
return success();
}
return failure();
}
static ::mlir::Attribute readSymbolRefAttr(MLIRContext* context, DialectBytecodeReader &reader) {
StringAttr rootReference;
SmallVector<FlatSymbolRefAttr> nestedReferences;
if (succeeded(reader.readAttribute<StringAttr>(rootReference)) &&
succeeded(reader.readAttributes(nestedReferences))) {
return getChecked<SymbolRefAttr>([&]() { return reader.emitError(); }, context, rootReference, nestedReferences);
}
return SymbolRefAttr();
}
static LogicalResult write(SymbolRefAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* SymbolRefAttr */ 5);
writer.writeAttribute(attribute.getRootReference());
writer.writeAttributes(attribute.getNestedReferences());
return success();
return failure();
}
static ::mlir::Attribute readTypeAttr(MLIRContext* context, DialectBytecodeReader &reader) {
Type value;
if (succeeded(reader.readType(value))) {
return getChecked<TypeAttr>([&]() { return reader.emitError(); }, context, value);
}
return TypeAttr();
}
static LogicalResult write(TypeAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* TypeAttr */ 6);
writer.writeType(attribute.getValue());
return success();
return failure();
}
static ::mlir::Attribute readUnitAttr(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<UnitAttr>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(UnitAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* UnitAttr */ 7);
return success();
return failure();
}
static ::mlir::Attribute readUnknownLoc(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<UnknownLoc>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(UnknownLoc attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* UnknownLoc */ 15);
return success();
return failure();
}
static Attribute readAttribute(MLIRContext* context, DialectBytecodeReader &reader) {
uint64_t kind;
if (failed(reader.readVarInt(kind)))
return Attribute();
switch (kind) {
case 0:
return readArrayAttr(context, reader);
case 1:
return readDictionaryAttr(context, reader);
case 2:
return readStringAttr(context, reader);
case 3:
return readStringAttrWithType(context, reader);
case 4:
return readFlatSymbolRefAttr(context, reader);
case 5:
return readSymbolRefAttr(context, reader);
case 6:
return readTypeAttr(context, reader);
case 7:
return readUnitAttr(context, reader);
case 8:
return readIntegerAttr(context, reader);
case 9:
return readFloatAttr(context, reader);
case 10:
return readCallSiteLoc(context, reader);
case 11:
return readFileLineColLoc(context, reader);
case 12:
return readFusedLoc(context, reader);
case 13:
return readFusedLocWithMetadata(context, reader);
case 14:
return readNameLoc(context, reader);
case 15:
return readUnknownLoc(context, reader);
case 16:
return readDenseResourceElementsAttr(context, reader);
case 17:
return readDenseArrayAttr(context, reader);
case 18:
return readDenseTypedElementsAttr(context, reader);
case 19:
return readDenseStringElementsAttr(context, reader);
case 20:
return readSparseElementsAttr(context, reader);
case 21:
return readDistinctAttr(context, reader);
case 22:
return readFileLineColRange(context, reader);
case 23:
return readAffineMapAttr(context, reader);
default:
reader.emitError() << "unknown attribute code: " << kind;
return Attribute();
}
return Attribute();
}
static LogicalResult writeAttribute(Attribute attribute,
DialectBytecodeWriter &writer) {
return TypeSwitch<Attribute, LogicalResult>(attribute)
.Case([&](AffineMapAttr t) {
return write(t, writer);
})
.Case([&](ArrayAttr t) {
return write(t, writer);
})
.Case([&](CallSiteLoc t) {
return write(t, writer);
})
.Case([&](DenseArrayAttr t) {
return write(t, writer);
})
.Case([&](DenseResourceElementsAttr t) {
return write(t, writer);
})
.Case([&](DenseStringElementsAttr t) {
return write(t, writer);
})
.Case([&](DenseTypedElementsAttr t) {
return write(t, writer);
})
.Case([&](DictionaryAttr t) {
return write(t, writer);
})
.Case([&](DistinctAttr t) {
return write(t, writer);
})
.Case([&](FileLineColRange t) {
return write(t, writer);
})
.Case([&](FlatSymbolRefAttr t) {
return write(t, writer);
})
.Case([&](FloatAttr t) {
return write(t, writer);
})
.Case([&](FusedLoc t) {
return write(t, writer);
})
.Case([&](IntegerAttr t) {
return write(t, writer);
})
.Case([&](NameLoc t) {
return write(t, writer);
})
.Case([&](SparseElementsAttr t) {
return write(t, writer);
})
.Case([&](StringAttr t) {
return write(t, writer);
})
.Case([&](SymbolRefAttr t) {
return write(t, writer);
})
.Case([&](TypeAttr t) {
return write(t, writer);
})
.Case([&](UnitAttr t) {
return write(t, writer);
})
.Case([&](UnknownLoc t) {
return write(t, writer);
})
.Default([&](Attribute) { return failure(); });
}
static ::mlir::Type readBFloat16Type(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<BFloat16Type>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(BFloat16Type type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* BFloat16Type */ 3);
return success();
return failure();
}
static ::mlir::Type readComplexType(MLIRContext* context, DialectBytecodeReader &reader) {
Type elementType;
if (succeeded(reader.readType(elementType))) {
return getChecked<ComplexType>([&]() { return reader.emitError(); }, context, elementType);
}
return ComplexType();
}
static LogicalResult write(ComplexType type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* ComplexType */ 9);
writer.writeType(type.getElementType());
return success();
return failure();
}
static ::mlir::Type readFloat128Type(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<Float128Type>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(Float128Type type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* Float128Type */ 8);
return success();
return failure();
}
static ::mlir::Type readFloat16Type(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<Float16Type>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(Float16Type type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* Float16Type */ 4);
return success();
return failure();
}
static ::mlir::Type readFloat32Type(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<Float32Type>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(Float32Type type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* Float32Type */ 5);
return success();
return failure();
}
static ::mlir::Type readFloat4E2M1FNType(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<Float4E2M1FNType>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(Float4E2M1FNType type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* Float4E2M1FNType */ 29);
return success();
return failure();
}
static ::mlir::Type readFloat64Type(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<Float64Type>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(Float64Type type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* Float64Type */ 6);
return success();
return failure();
}
static ::mlir::Type readFloat6E2M3FNType(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<Float6E2M3FNType>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(Float6E2M3FNType type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* Float6E2M3FNType */ 30);
return success();
return failure();
}
static ::mlir::Type readFloat6E3M2FNType(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<Float6E3M2FNType>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(Float6E3M2FNType type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* Float6E3M2FNType */ 31);
return success();
return failure();
}
static ::mlir::Type readFloat80Type(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<Float80Type>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(Float80Type type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* Float80Type */ 7);
return success();
return failure();
}
static ::mlir::Type readFloat8E3M4Type(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<Float8E3M4Type>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(Float8E3M4Type type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* Float8E3M4Type */ 28);
return success();
return failure();
}
static ::mlir::Type readFloat8E4M3B11FNUZType(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<Float8E4M3B11FNUZType>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(Float8E4M3B11FNUZType type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* Float8E4M3B11FNUZType */ 27);
return success();
return failure();
}
static ::mlir::Type readFloat8E4M3FNType(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<Float8E4M3FNType>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(Float8E4M3FNType type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* Float8E4M3FNType */ 24);
return success();
return failure();
}
static ::mlir::Type readFloat8E4M3FNUZType(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<Float8E4M3FNUZType>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(Float8E4M3FNUZType type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* Float8E4M3FNUZType */ 26);
return success();
return failure();
}
static ::mlir::Type readFloat8E4M3Type(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<Float8E4M3Type>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(Float8E4M3Type type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* Float8E4M3Type */ 23);
return success();
return failure();
}
static ::mlir::Type readFloat8E5M2FNUZType(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<Float8E5M2FNUZType>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(Float8E5M2FNUZType type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* Float8E5M2FNUZType */ 25);
return success();
return failure();
}
static ::mlir::Type readFloat8E5M2Type(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<Float8E5M2Type>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(Float8E5M2Type type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* Float8E5M2Type */ 22);
return success();
return failure();
}
static ::mlir::Type readFloat8E8M0FNUType(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<Float8E8M0FNUType>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(Float8E8M0FNUType type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* Float8E8M0FNUType */ 32);
return success();
return failure();
}
static ::mlir::Type readFloatTF32Type(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<FloatTF32Type>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(FloatTF32Type type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* FloatTF32Type */ 21);
return success();
return failure();
}
static ::mlir::Type readFunctionType(MLIRContext* context, DialectBytecodeReader &reader) {
SmallVector<Type> inputs, results;
if (succeeded(reader.readTypes(inputs)) &&
succeeded(reader.readTypes(results))) {
return getChecked<FunctionType>([&]() { return reader.emitError(); }, context, inputs, results);
}
return FunctionType();
}
static LogicalResult write(FunctionType type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* FunctionType */ 2);
writer.writeTypes(type.getInputs());
writer.writeTypes(type.getResults());
return success();
return failure();
}
static ::mlir::Type readIndexType(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<IndexType>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(IndexType type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* IndexType */ 1);
return success();
return failure();
}
static ::mlir::Type readIntegerType(MLIRContext* context, DialectBytecodeReader &reader) {
uint64_t _widthAndSignedness, width;
IntegerType::SignednessSemantics signedness;
if (succeeded(reader.readVarInt(_widthAndSignedness)) &&
((width = _widthAndSignedness >> 2), true) &&
((signedness = static_cast<IntegerType::SignednessSemantics>(_widthAndSignedness & 0x3)), true)) {
return getChecked<IntegerType>([&]() { return reader.emitError(); }, context, width, signedness);
}
return IntegerType();
}
static LogicalResult write(IntegerType type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* IntegerType */ 0);
writer.writeVarInt(type.getWidth() << 2 | type.getSignedness());
return success();
return failure();
}
static ::mlir::Type readMemRefType(MLIRContext* context, DialectBytecodeReader &reader) {
SmallVector<int64_t> shape;
Type elementType;
MemRefLayoutAttrInterface layout;
auto readShape = [&]() -> FailureOr<int64_t> {
int64_t temp;
if (succeeded(reader.readSignedVarInt(temp))) {
return temp;
}
return failure();
};
if (succeeded(reader.readList(shape, readShape)) &&
succeeded(reader.readType(elementType)) &&
succeeded(reader.readAttribute(layout))) {
return getChecked<MemRefType>([&]() { return reader.emitError(); }, context, shape, elementType, layout);
}
return MemRefType();
}
static ::mlir::Type readMemRefTypeWithMemSpace(MLIRContext* context, DialectBytecodeReader &reader) {
Attribute memorySpace;
SmallVector<int64_t> shape;
Type elementType;
MemRefLayoutAttrInterface layout;
auto readShape = [&]() -> FailureOr<int64_t> {
int64_t temp;
if (succeeded(reader.readSignedVarInt(temp))) {
return temp;
}
return failure();
};
if (succeeded(reader.readAttribute(memorySpace)) &&
succeeded(reader.readList(shape, readShape)) &&
succeeded(reader.readType(elementType)) &&
succeeded(reader.readAttribute(layout))) {
return getChecked<MemRefType>([&]() { return reader.emitError(); }, context, shape, elementType, layout, memorySpace);
}
return MemRefType();
}
static LogicalResult write(MemRefType type, DialectBytecodeWriter &writer) {
if (!type.getMemorySpace()) {
writer.writeVarInt(/* MemRefType */ 10);
writer.writeList(type.getShape(), [&](int64_t type) {
writer.writeSignedVarInt(type);
});
writer.writeType(type.getElementType());
writer.writeAttribute(type.getLayout());
return success();
}
if (!!type.getMemorySpace()) {
writer.writeVarInt(/* MemRefTypeWithMemSpace */ 11);
writer.writeAttribute(type.getMemorySpace());
writer.writeList(type.getShape(), [&](int64_t type) {
writer.writeSignedVarInt(type);
});
writer.writeType(type.getElementType());
writer.writeAttribute(type.getLayout());
return success();
}
return failure();
}
static ::mlir::Type readNoneType(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<NoneType>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(NoneType type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* NoneType */ 12);
return success();
return failure();
}
static ::mlir::Type readRankedTensorType(MLIRContext* context, DialectBytecodeReader &reader) {
SmallVector<int64_t> shape;
Type elementType;
auto readShape = [&]() -> FailureOr<int64_t> {
int64_t temp;
if (succeeded(reader.readSignedVarInt(temp))) {
return temp;
}
return failure();
};
if (succeeded(reader.readList(shape, readShape)) &&
succeeded(reader.readType(elementType))) {
return getChecked<RankedTensorType>([&]() { return reader.emitError(); }, context, shape, elementType);
}
return RankedTensorType();
}
static ::mlir::Type readRankedTensorTypeWithEncoding(MLIRContext* context, DialectBytecodeReader &reader) {
Attribute encoding;
SmallVector<int64_t> shape;
Type elementType;
auto readShape = [&]() -> FailureOr<int64_t> {
int64_t temp;
if (succeeded(reader.readSignedVarInt(temp))) {
return temp;
}
return failure();
};
if (succeeded(reader.readAttribute(encoding)) &&
succeeded(reader.readList(shape, readShape)) &&
succeeded(reader.readType(elementType))) {
return getChecked<RankedTensorType>([&]() { return reader.emitError(); }, context, shape, elementType, encoding);
}
return RankedTensorType();
}
static LogicalResult write(RankedTensorType type, DialectBytecodeWriter &writer) {
if (!type.getEncoding()) {
writer.writeVarInt(/* RankedTensorType */ 13);
writer.writeList(type.getShape(), [&](int64_t type) {
writer.writeSignedVarInt(type);
});
writer.writeType(type.getElementType());
return success();
}
if (type.getEncoding()) {
writer.writeVarInt(/* RankedTensorTypeWithEncoding */ 14);
writer.writeAttribute(type.getEncoding());
writer.writeList(type.getShape(), [&](int64_t type) {
writer.writeSignedVarInt(type);
});
writer.writeType(type.getElementType());
return success();
}
return failure();
}
static ::mlir::Type readTokenType(MLIRContext* context, DialectBytecodeReader &reader) {
return getChecked<TokenType>([&]() { return reader.emitError(); }, context);
}
static LogicalResult write(TokenType type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* TokenType */ 33);
return success();
return failure();
}
static ::mlir::Type readTupleType(MLIRContext* context, DialectBytecodeReader &reader) {
SmallVector<Type> types;
if (succeeded(reader.readTypes(types))) {
return getChecked<TupleType>([&]() { return reader.emitError(); }, context, types);
}
return TupleType();
}
static LogicalResult write(TupleType type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* TupleType */ 15);
writer.writeTypes(type.getTypes());
return success();
return failure();
}
static ::mlir::Type readUnrankedMemRefType(MLIRContext* context, DialectBytecodeReader &reader) {
Type elementType;
if (succeeded(reader.readType(elementType))) {
return getChecked<UnrankedMemRefType>([&]() { return reader.emitError(); }, context, elementType, Attribute());
}
return UnrankedMemRefType();
}
static ::mlir::Type readUnrankedMemRefTypeWithMemSpace(MLIRContext* context, DialectBytecodeReader &reader) {
Attribute memorySpace;
Type elementType;
if (succeeded(reader.readAttribute(memorySpace)) &&
succeeded(reader.readType(elementType))) {
return getChecked<UnrankedMemRefType>([&]() { return reader.emitError(); }, context, elementType, memorySpace);
}
return UnrankedMemRefType();
}
static LogicalResult write(UnrankedMemRefType type, DialectBytecodeWriter &writer) {
if (!type.getMemorySpace()) {
writer.writeVarInt(/* UnrankedMemRefType */ 16);
writer.writeType(type.getElementType());
return success();
}
if (type.getMemorySpace()) {
writer.writeVarInt(/* UnrankedMemRefTypeWithMemSpace */ 17);
writer.writeAttribute(type.getMemorySpace());
writer.writeType(type.getElementType());
return success();
}
return failure();
}
static ::mlir::Type readUnrankedTensorType(MLIRContext* context, DialectBytecodeReader &reader) {
Type elementType;
if (succeeded(reader.readType(elementType))) {
return getChecked<UnrankedTensorType>([&]() { return reader.emitError(); }, context, elementType);
}
return UnrankedTensorType();
}
static LogicalResult write(UnrankedTensorType type, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* UnrankedTensorType */ 18);
writer.writeType(type.getElementType());
return success();
return failure();
}
static ::mlir::Type readVectorType(MLIRContext* context, DialectBytecodeReader &reader) {
SmallVector<int64_t> shape;
Type elementType;
auto readShape = [&]() -> FailureOr<int64_t> {
int64_t temp;
if (succeeded(reader.readSignedVarInt(temp))) {
return temp;
}
return failure();
};
if (succeeded(reader.readList(shape, readShape)) &&
succeeded(reader.readType(elementType))) {
return VectorType::getChecked([&]() { return reader.emitError("invalid vector type"); }, shape, elementType);
}
return VectorType();
}
static ::mlir::Type readVectorTypeWithScalableDims(MLIRContext* context, DialectBytecodeReader &reader) {
SmallVector<bool> scalableDims;
SmallVector<int64_t> shape;
Type elementType;
auto readScalableDims = [&]() -> FailureOr<bool> {
bool temp;
if (succeeded(reader.readBool(temp))) {
return temp;
}
return failure();
};
auto readShape = [&]() -> FailureOr<int64_t> {
int64_t temp;
if (succeeded(reader.readSignedVarInt(temp))) {
return temp;
}
return failure();
};
if (succeeded(reader.readList(scalableDims, readScalableDims)) &&
succeeded(reader.readList(shape, readShape)) &&
succeeded(reader.readType(elementType))) {
return getChecked<VectorType>([&]() { return reader.emitError(); }, context, shape, elementType, scalableDims);
}
return VectorType();
}
static LogicalResult write(VectorType type, DialectBytecodeWriter &writer) {
if (!type.isScalable()) {
writer.writeVarInt(/* VectorType */ 19);
writer.writeList(type.getShape(), [&](int64_t type) {
writer.writeSignedVarInt(type);
});
writer.writeType(type.getElementType());
return success();
}
if (type.isScalable()) {
writer.writeVarInt(/* VectorTypeWithScalableDims */ 20);
writer.writeList(type.getScalableDims(), [&](bool type) {
writer.writeOwnedBool(type);
});
writer.writeList(type.getShape(), [&](int64_t type) {
writer.writeSignedVarInt(type);
});
writer.writeType(type.getElementType());
return success();
}
return failure();
}
static Type readType(MLIRContext* context, DialectBytecodeReader &reader) {
uint64_t kind;
if (failed(reader.readVarInt(kind)))
return Type();
switch (kind) {
case 0:
return readIntegerType(context, reader);
case 1:
return readIndexType(context, reader);
case 2:
return readFunctionType(context, reader);
case 3:
return readBFloat16Type(context, reader);
case 4:
return readFloat16Type(context, reader);
case 5:
return readFloat32Type(context, reader);
case 6:
return readFloat64Type(context, reader);
case 7:
return readFloat80Type(context, reader);
case 8:
return readFloat128Type(context, reader);
case 9:
return readComplexType(context, reader);
case 10:
return readMemRefType(context, reader);
case 11:
return readMemRefTypeWithMemSpace(context, reader);
case 12:
return readNoneType(context, reader);
case 13:
return readRankedTensorType(context, reader);
case 14:
return readRankedTensorTypeWithEncoding(context, reader);
case 15:
return readTupleType(context, reader);
case 16:
return readUnrankedMemRefType(context, reader);
case 17:
return readUnrankedMemRefTypeWithMemSpace(context, reader);
case 18:
return readUnrankedTensorType(context, reader);
case 19:
return readVectorType(context, reader);
case 20:
return readVectorTypeWithScalableDims(context, reader);
case 21:
return readFloatTF32Type(context, reader);
case 22:
return readFloat8E5M2Type(context, reader);
case 23:
return readFloat8E4M3Type(context, reader);
case 24:
return readFloat8E4M3FNType(context, reader);
case 25:
return readFloat8E5M2FNUZType(context, reader);
case 26:
return readFloat8E4M3FNUZType(context, reader);
case 27:
return readFloat8E4M3B11FNUZType(context, reader);
case 28:
return readFloat8E3M4Type(context, reader);
case 29:
return readFloat4E2M1FNType(context, reader);
case 30:
return readFloat6E2M3FNType(context, reader);
case 31:
return readFloat6E3M2FNType(context, reader);
case 32:
return readFloat8E8M0FNUType(context, reader);
case 33:
return readTokenType(context, reader);
default:
reader.emitError() << "unknown attribute code: " << kind;
return Type();
}
return Type();
}
static LogicalResult writeType(Type type,
DialectBytecodeWriter &writer) {
return TypeSwitch<Type, LogicalResult>(type)
.Case([&](BFloat16Type t) {
return write(t, writer);
})
.Case([&](ComplexType t) {
return write(t, writer);
})
.Case([&](Float128Type t) {
return write(t, writer);
})
.Case([&](Float16Type t) {
return write(t, writer);
})
.Case([&](Float32Type t) {
return write(t, writer);
})
.Case([&](Float4E2M1FNType t) {
return write(t, writer);
})
.Case([&](Float64Type t) {
return write(t, writer);
})
.Case([&](Float6E2M3FNType t) {
return write(t, writer);
})
.Case([&](Float6E3M2FNType t) {
return write(t, writer);
})
.Case([&](Float80Type t) {
return write(t, writer);
})
.Case([&](Float8E3M4Type t) {
return write(t, writer);
})
.Case([&](Float8E4M3B11FNUZType t) {
return write(t, writer);
})
.Case([&](Float8E4M3FNType t) {
return write(t, writer);
})
.Case([&](Float8E4M3FNUZType t) {
return write(t, writer);
})
.Case([&](Float8E4M3Type t) {
return write(t, writer);
})
.Case([&](Float8E5M2FNUZType t) {
return write(t, writer);
})
.Case([&](Float8E5M2Type t) {
return write(t, writer);
})
.Case([&](Float8E8M0FNUType t) {
return write(t, writer);
})
.Case([&](FloatTF32Type t) {
return write(t, writer);
})
.Case([&](FunctionType t) {
return write(t, writer);
})
.Case([&](IndexType t) {
return write(t, writer);
})
.Case([&](IntegerType t) {
return write(t, writer);
})
.Case([&](MemRefType t) {
return write(t, writer);
})
.Case([&](NoneType t) {
return write(t, writer);
})
.Case([&](RankedTensorType t) {
return write(t, writer);
})
.Case([&](TokenType t) {
return write(t, writer);
})
.Case([&](TupleType t) {
return write(t, writer);
})
.Case([&](UnrankedMemRefType t) {
return write(t, writer);
})
.Case([&](UnrankedTensorType t) {
return write(t, writer);
})
.Case([&](VectorType t) {
return write(t, writer);
})
.Default([&](Type) { return failure(); });
}