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

720 lines
29 KiB
C++

static ::mlir::Attribute readDIBasicTypeAttr(MLIRContext* context, DialectBytecodeReader &reader) {
uint64_t tag;
StringRef name;
uint64_t sizeInBits, encoding;
if (succeeded(reader.readVarInt(tag)) &&
succeeded(reader.readString(name)) &&
succeeded(reader.readVarInt(sizeInBits)) &&
succeeded(reader.readVarInt(encoding))) {
return getChecked<DIBasicTypeAttr>([&]() { return reader.emitError(); }, context, tag, name, sizeInBits, encoding);
}
return DIBasicTypeAttr();
}
static LogicalResult write(DIBasicTypeAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DIBasicTypeAttr */ 0);
writer.writeVarInt(attribute.getTag());
writer.writeOwnedString(attribute.getName());
writer.writeVarInt(attribute.getSizeInBits());
writer.writeVarInt(attribute.getEncoding());
return success();
return failure();
}
static ::mlir::Attribute readDICompileUnitAttr(MLIRContext* context, DialectBytecodeReader &reader) {
DistinctAttr recId;
bool isRecSelf;
DistinctAttr id;
uint64_t sourceLanguage;
DIFileAttr file;
StringAttr producer;
bool isOptimized;
uint64_t _rawEmissionKind;
DIEmissionKind emissionKind;
bool isDebugInfoForProfiling;
uint64_t _rawNameTableKind;
DINameTableKind nameTableKind;
StringAttr splitDebugFilename;
SmallVector<DINodeAttr> importedEntities;
if (succeeded(reader.readOptionalAttribute(recId)) &&
succeeded(reader.readBool(isRecSelf)) &&
succeeded(reader.readOptionalAttribute(id)) &&
succeeded(reader.readVarInt(sourceLanguage)) &&
succeeded(reader.readOptionalAttribute(file)) &&
succeeded(reader.readOptionalAttribute(producer)) &&
succeeded(reader.readBool(isOptimized)) &&
succeeded(reader.readVarInt(_rawEmissionKind)) &&
((emissionKind = (DIEmissionKind)_rawEmissionKind), true) &&
succeeded(reader.readBool(isDebugInfoForProfiling)) &&
succeeded(reader.readVarInt(_rawNameTableKind)) &&
((nameTableKind = (DINameTableKind)_rawNameTableKind), true) &&
succeeded(reader.readOptionalAttribute(splitDebugFilename)) &&
succeeded(readOptionalArrayRef<DINodeAttr>(reader, importedEntities))) {
return getChecked<DICompileUnitAttr>([&]() { return reader.emitError(); }, context, recId, isRecSelf, id, sourceLanguage, file, producer, isOptimized, emissionKind, isDebugInfoForProfiling, nameTableKind, splitDebugFilename, importedEntities);
}
return DICompileUnitAttr();
}
static LogicalResult write(DICompileUnitAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DICompileUnitAttr */ 1);
writer.writeOptionalAttribute(attribute.getRecId());
writer.writeOwnedBool(attribute.getIsRecSelf());
writer.writeOptionalAttribute(attribute.getId());
writer.writeVarInt(attribute.getSourceLanguage());
writer.writeOptionalAttribute(attribute.getFile());
writer.writeOptionalAttribute(attribute.getProducer());
writer.writeOwnedBool(attribute.getIsOptimized());
writer.writeVarInt((uint64_t)attribute.getEmissionKind());
writer.writeOwnedBool(attribute.getIsDebugInfoForProfiling());
writer.writeVarInt((uint64_t)attribute.getNameTableKind());
writer.writeOptionalAttribute(attribute.getSplitDebugFilename());
writeOptionalArrayRef<DINodeAttr>(writer, attribute.getImportedEntities());
return success();
return failure();
}
static ::mlir::Attribute readDICompositeTypeAttr(MLIRContext* context, DialectBytecodeReader &reader) {
DistinctAttr recId;
bool isRecSelf;
uint64_t tag;
StringAttr name;
DIFileAttr file;
uint64_t line;
DIScopeAttr scope;
DITypeAttr baseType;
uint64_t _rawflags;
DIFlags flags;
uint64_t sizeInBits, alignInBits;
DIExpressionAttr dataLocation, rank, allocated, associated;
StringAttr identifier;
DIDerivedTypeAttr discriminator;
SmallVector<DINodeAttr> elements;
if (succeeded(reader.readOptionalAttribute(recId)) &&
succeeded(reader.readBool(isRecSelf)) &&
succeeded(reader.readVarInt(tag)) &&
succeeded(reader.readOptionalAttribute(name)) &&
succeeded(reader.readOptionalAttribute(file)) &&
succeeded(reader.readVarInt(line)) &&
succeeded(reader.readOptionalAttribute(scope)) &&
succeeded(reader.readOptionalAttribute(baseType)) &&
succeeded(reader.readVarInt(_rawflags)) &&
((flags = (DIFlags)_rawflags), true) &&
succeeded(reader.readVarInt(sizeInBits)) &&
succeeded(reader.readVarInt(alignInBits)) &&
succeeded(reader.readOptionalAttribute(dataLocation)) &&
succeeded(reader.readOptionalAttribute(rank)) &&
succeeded(reader.readOptionalAttribute(allocated)) &&
succeeded(reader.readOptionalAttribute(associated)) &&
succeeded(reader.readOptionalAttribute(identifier)) &&
succeeded(reader.readOptionalAttribute(discriminator)) &&
succeeded(readOptionalArrayRef<DINodeAttr>(reader, elements))) {
return getChecked<DICompositeTypeAttr>([&]() { return reader.emitError(); }, context, recId, isRecSelf, tag, name, file, line, scope, baseType, flags, sizeInBits, alignInBits, dataLocation, rank, allocated, associated, identifier, discriminator, elements);
}
return DICompositeTypeAttr();
}
static LogicalResult write(DICompositeTypeAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DICompositeTypeAttr */ 2);
writer.writeOptionalAttribute(attribute.getRecId());
writer.writeOwnedBool(attribute.getIsRecSelf());
writer.writeVarInt(attribute.getTag());
writer.writeOptionalAttribute(attribute.getName());
writer.writeOptionalAttribute(attribute.getFile());
writer.writeVarInt(attribute.getLine());
writer.writeOptionalAttribute(attribute.getScope());
writer.writeOptionalAttribute(attribute.getBaseType());
writer.writeVarInt((uint64_t)attribute.getFlags());
writer.writeVarInt(attribute.getSizeInBits());
writer.writeVarInt(attribute.getAlignInBits());
writer.writeOptionalAttribute(attribute.getDataLocation());
writer.writeOptionalAttribute(attribute.getRank());
writer.writeOptionalAttribute(attribute.getAllocated());
writer.writeOptionalAttribute(attribute.getAssociated());
writer.writeOptionalAttribute(attribute.getIdentifier());
writer.writeOptionalAttribute(attribute.getDiscriminator());
writeOptionalArrayRef<DINodeAttr>(writer, attribute.getElements());
return success();
return failure();
}
static ::mlir::Attribute readDIDerivedTypeAttr(MLIRContext* context, DialectBytecodeReader &reader) {
uint64_t tag;
StringAttr name;
DIFileAttr file;
uint64_t line;
DIScopeAttr scope;
DITypeAttr baseType;
uint64_t sizeInBits, alignInBits, offsetInBits;
std::optional<unsigned> dwarfAddressSpace;
uint64_t _rawflags;
DIFlags flags;
Attribute extraData;
if (succeeded(reader.readVarInt(tag)) &&
succeeded(reader.readOptionalAttribute(name)) &&
succeeded(reader.readOptionalAttribute(file)) &&
succeeded(reader.readVarInt(line)) &&
succeeded(reader.readOptionalAttribute(scope)) &&
succeeded(reader.readOptionalAttribute(baseType)) &&
succeeded(reader.readVarInt(sizeInBits)) &&
succeeded(reader.readVarInt(alignInBits)) &&
succeeded(reader.readVarInt(offsetInBits)) &&
succeeded(readOptionalInt(reader, dwarfAddressSpace)) &&
succeeded(reader.readVarInt(_rawflags)) &&
((flags = (DIFlags)_rawflags), true) &&
succeeded(reader.readOptionalAttribute(extraData))) {
return getChecked<DIDerivedTypeAttr>([&]() { return reader.emitError(); }, context, tag, name, file, line, scope, baseType, sizeInBits, alignInBits, offsetInBits, dwarfAddressSpace, flags, extraData);
}
return DIDerivedTypeAttr();
}
static LogicalResult write(DIDerivedTypeAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DIDerivedTypeAttr */ 3);
writer.writeVarInt(attribute.getTag());
writer.writeOptionalAttribute(attribute.getName());
writer.writeOptionalAttribute(attribute.getFile());
writer.writeVarInt(attribute.getLine());
writer.writeOptionalAttribute(attribute.getScope());
writer.writeOptionalAttribute(attribute.getBaseType());
writer.writeVarInt(attribute.getSizeInBits());
writer.writeVarInt(attribute.getAlignInBits());
writer.writeVarInt(attribute.getOffsetInBits());
writeOptionalInt(writer, attribute.getDwarfAddressSpace());
writer.writeVarInt((uint64_t)attribute.getFlags());
writer.writeOptionalAttribute(attribute.getExtraData());
return success();
return failure();
}
static ::mlir::Attribute readDIExpressionAttr(MLIRContext* context, DialectBytecodeReader &reader) {
SmallVector<DIExpressionElemAttr> operations;
if (succeeded(readOptionalArrayRef<DIExpressionElemAttr>(reader, operations))) {
return getChecked<DIExpressionAttr>([&]() { return reader.emitError(); }, context, operations);
}
return DIExpressionAttr();
}
static LogicalResult write(DIExpressionAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DIExpressionAttr */ 5);
writeOptionalArrayRef<DIExpressionElemAttr>(writer, attribute.getOperations());
return success();
return failure();
}
static ::mlir::Attribute readDIExpressionElemAttr(MLIRContext* context, DialectBytecodeReader &reader) {
uint64_t opcode;
SmallVector<uint64_t> arguments;
if (succeeded(reader.readVarInt(opcode)) &&
succeeded(readOptionalArrayRef<uint64_t>(reader, arguments))) {
return getChecked<DIExpressionElemAttr>([&]() { return reader.emitError(); }, context, opcode, arguments);
}
return DIExpressionElemAttr();
}
static LogicalResult write(DIExpressionElemAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DIExpressionElemAttr */ 4);
writer.writeVarInt(attribute.getOpcode());
writeOptionalArrayRef<uint64_t>(writer, attribute.getArguments());
return success();
return failure();
}
static ::mlir::Attribute readDIFileAttr(MLIRContext* context, DialectBytecodeReader &reader) {
StringRef name, directory;
if (succeeded(reader.readString(name)) &&
succeeded(reader.readString(directory))) {
return getChecked<DIFileAttr>([&]() { return reader.emitError(); }, context, name, directory);
}
return DIFileAttr();
}
static LogicalResult write(DIFileAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DIFileAttr */ 6);
writer.writeOwnedString(attribute.getName());
writer.writeOwnedString(attribute.getDirectory());
return success();
return failure();
}
static ::mlir::Attribute readDIGlobalVariableAttr(MLIRContext* context, DialectBytecodeReader &reader) {
DIScopeAttr scope;
StringAttr name, linkageName;
DIFileAttr file;
uint64_t line;
DITypeAttr type;
bool isLocalToUnit, isDefined;
uint64_t alignInBits;
if (succeeded(reader.readOptionalAttribute(scope)) &&
succeeded(reader.readOptionalAttribute(name)) &&
succeeded(reader.readOptionalAttribute(linkageName)) &&
succeeded(reader.readAttribute(file)) &&
succeeded(reader.readVarInt(line)) &&
succeeded(reader.readAttribute(type)) &&
succeeded(reader.readBool(isLocalToUnit)) &&
succeeded(reader.readBool(isDefined)) &&
succeeded(reader.readVarInt(alignInBits))) {
return getChecked<DIGlobalVariableAttr>([&]() { return reader.emitError(); }, context, scope, name, linkageName, file, line, type, isLocalToUnit, isDefined, alignInBits);
}
return DIGlobalVariableAttr();
}
static LogicalResult write(DIGlobalVariableAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DIGlobalVariableAttr */ 7);
writer.writeOptionalAttribute(attribute.getScope());
writer.writeOptionalAttribute(attribute.getName());
writer.writeOptionalAttribute(attribute.getLinkageName());
writer.writeAttribute(attribute.getFile());
writer.writeVarInt(attribute.getLine());
writer.writeAttribute(attribute.getType());
writer.writeOwnedBool(attribute.getIsLocalToUnit());
writer.writeOwnedBool(attribute.getIsDefined());
writer.writeVarInt(attribute.getAlignInBits());
return success();
return failure();
}
static ::mlir::Attribute readDIGlobalVariableExpressionAttr(MLIRContext* context, DialectBytecodeReader &reader) {
DIGlobalVariableAttr var;
DIExpressionAttr expr;
if (succeeded(reader.readAttribute(var)) &&
succeeded(reader.readOptionalAttribute(expr))) {
return getChecked<DIGlobalVariableExpressionAttr>([&]() { return reader.emitError(); }, context, var, expr);
}
return DIGlobalVariableExpressionAttr();
}
static LogicalResult write(DIGlobalVariableExpressionAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DIGlobalVariableExpressionAttr */ 8);
writer.writeAttribute(attribute.getVar());
writer.writeOptionalAttribute(attribute.getExpr());
return success();
return failure();
}
static ::mlir::Attribute readDIImportedEntityAttr(MLIRContext* context, DialectBytecodeReader &reader) {
uint64_t tag;
DIScopeAttr scope;
DINodeAttr entity;
DIFileAttr file;
uint64_t line;
StringAttr name;
SmallVector<DINodeAttr> elements;
if (succeeded(reader.readVarInt(tag)) &&
succeeded(reader.readAttribute(scope)) &&
succeeded(reader.readAttribute(entity)) &&
succeeded(reader.readOptionalAttribute(file)) &&
succeeded(reader.readVarInt(line)) &&
succeeded(reader.readOptionalAttribute(name)) &&
succeeded(readOptionalArrayRef<DINodeAttr>(reader, elements))) {
return getChecked<DIImportedEntityAttr>([&]() { return reader.emitError(); }, context, tag, scope, entity, file, line, name, elements);
}
return DIImportedEntityAttr();
}
static LogicalResult write(DIImportedEntityAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DIImportedEntityAttr */ 9);
writer.writeVarInt(attribute.getTag());
writer.writeAttribute(attribute.getScope());
writer.writeAttribute(attribute.getEntity());
writer.writeOptionalAttribute(attribute.getFile());
writer.writeVarInt(attribute.getLine());
writer.writeOptionalAttribute(attribute.getName());
writeOptionalArrayRef<DINodeAttr>(writer, attribute.getElements());
return success();
return failure();
}
static ::mlir::Attribute readDILabelAttr(MLIRContext* context, DialectBytecodeReader &reader) {
DIScopeAttr scope;
StringAttr name;
DIFileAttr file;
uint64_t line;
if (succeeded(reader.readAttribute(scope)) &&
succeeded(reader.readOptionalAttribute(name)) &&
succeeded(reader.readOptionalAttribute(file)) &&
succeeded(reader.readVarInt(line))) {
return DILabelAttr::get(context, scope, name, file, line);
}
return DILabelAttr();
}
static LogicalResult write(DILabelAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DILabelAttr */ 10);
writer.writeAttribute(attribute.getScope());
writer.writeOptionalAttribute(attribute.getName());
writer.writeOptionalAttribute(attribute.getFile());
writer.writeVarInt(attribute.getLine());
return success();
return failure();
}
static ::mlir::Attribute readDILexicalBlockAttr(MLIRContext* context, DialectBytecodeReader &reader) {
DIScopeAttr scope;
DIFileAttr file;
uint64_t line, column;
if (succeeded(reader.readAttribute(scope)) &&
succeeded(reader.readOptionalAttribute(file)) &&
succeeded(reader.readVarInt(line)) &&
succeeded(reader.readVarInt(column))) {
return getChecked<DILexicalBlockAttr>([&]() { return reader.emitError(); }, context, scope, file, line, column);
}
return DILexicalBlockAttr();
}
static LogicalResult write(DILexicalBlockAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DILexicalBlockAttr */ 11);
writer.writeAttribute(attribute.getScope());
writer.writeOptionalAttribute(attribute.getFile());
writer.writeVarInt(attribute.getLine());
writer.writeVarInt(attribute.getColumn());
return success();
return failure();
}
static ::mlir::Attribute readDILexicalBlockFileAttr(MLIRContext* context, DialectBytecodeReader &reader) {
DIScopeAttr scope;
DIFileAttr file;
uint64_t discriminator;
if (succeeded(reader.readAttribute(scope)) &&
succeeded(reader.readOptionalAttribute(file)) &&
succeeded(reader.readVarInt(discriminator))) {
return getChecked<DILexicalBlockFileAttr>([&]() { return reader.emitError(); }, context, scope, file, discriminator);
}
return DILexicalBlockFileAttr();
}
static LogicalResult write(DILexicalBlockFileAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DILexicalBlockFileAttr */ 12);
writer.writeAttribute(attribute.getScope());
writer.writeOptionalAttribute(attribute.getFile());
writer.writeVarInt(attribute.getDiscriminator());
return success();
return failure();
}
static ::mlir::Attribute readDILocalVariableAttr(MLIRContext* context, DialectBytecodeReader &reader) {
DIScopeAttr scope;
StringAttr name;
DIFileAttr file;
uint64_t line, arg, alignInBits;
DITypeAttr type;
uint64_t _rawflags;
DIFlags flags;
if (succeeded(reader.readAttribute(scope)) &&
succeeded(reader.readOptionalAttribute(name)) &&
succeeded(reader.readOptionalAttribute(file)) &&
succeeded(reader.readVarInt(line)) &&
succeeded(reader.readVarInt(arg)) &&
succeeded(reader.readVarInt(alignInBits)) &&
succeeded(reader.readOptionalAttribute(type)) &&
succeeded(reader.readVarInt(_rawflags)) &&
((flags = (DIFlags)_rawflags), true)) {
return DILocalVariableAttr::get(context, scope, name, file, line, arg, alignInBits, type, flags);
}
return DILocalVariableAttr();
}
static LogicalResult write(DILocalVariableAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DILocalVariableAttr */ 13);
writer.writeAttribute(attribute.getScope());
writer.writeOptionalAttribute(attribute.getName());
writer.writeOptionalAttribute(attribute.getFile());
writer.writeVarInt(attribute.getLine());
writer.writeVarInt(attribute.getArg());
writer.writeVarInt(attribute.getAlignInBits());
writer.writeOptionalAttribute(attribute.getType());
writer.writeVarInt((uint64_t)attribute.getFlags());
return success();
return failure();
}
static ::mlir::Attribute readDINamespaceAttr(MLIRContext* context, DialectBytecodeReader &reader) {
StringAttr name;
DIScopeAttr scope;
bool exportSymbols;
if (succeeded(reader.readOptionalAttribute(name)) &&
succeeded(reader.readOptionalAttribute(scope)) &&
succeeded(reader.readBool(exportSymbols))) {
return getChecked<DINamespaceAttr>([&]() { return reader.emitError(); }, context, name, scope, exportSymbols);
}
return DINamespaceAttr();
}
static LogicalResult write(DINamespaceAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DINamespaceAttr */ 14);
writer.writeOptionalAttribute(attribute.getName());
writer.writeOptionalAttribute(attribute.getScope());
writer.writeOwnedBool(attribute.getExportSymbols());
return success();
return failure();
}
static ::mlir::Attribute readDISubprogramAttr(MLIRContext* context, DialectBytecodeReader &reader) {
DistinctAttr recId;
bool isRecSelf;
DistinctAttr id;
DICompileUnitAttr compileUnit;
DIScopeAttr scope;
StringAttr name, linkageName;
DIFileAttr file;
uint64_t line, scopeLine, _rawflags;
DISubprogramFlags subprogramFlags;
DISubroutineTypeAttr type;
SmallVector<DINodeAttr> retainedNodes, annotations;
if (succeeded(reader.readOptionalAttribute(recId)) &&
succeeded(reader.readBool(isRecSelf)) &&
succeeded(reader.readOptionalAttribute(id)) &&
succeeded(reader.readOptionalAttribute(compileUnit)) &&
succeeded(reader.readOptionalAttribute(scope)) &&
succeeded(reader.readOptionalAttribute(name)) &&
succeeded(reader.readOptionalAttribute(linkageName)) &&
succeeded(reader.readOptionalAttribute(file)) &&
succeeded(reader.readVarInt(line)) &&
succeeded(reader.readVarInt(scopeLine)) &&
succeeded(reader.readVarInt(_rawflags)) &&
((subprogramFlags = (DISubprogramFlags)_rawflags), true) &&
succeeded(reader.readOptionalAttribute(type)) &&
succeeded(readOptionalArrayRef<DINodeAttr>(reader, retainedNodes)) &&
succeeded(readOptionalArrayRef<DINodeAttr>(reader, annotations))) {
return getChecked<DISubprogramAttr>([&]() { return reader.emitError(); }, context, recId, isRecSelf, id, compileUnit, scope, name, linkageName, file, line, scopeLine, subprogramFlags, type, retainedNodes, annotations);
}
return DISubprogramAttr();
}
static LogicalResult write(DISubprogramAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DISubprogramAttr */ 15);
writer.writeOptionalAttribute(attribute.getRecId());
writer.writeOwnedBool(attribute.getIsRecSelf());
writer.writeOptionalAttribute(attribute.getId());
writer.writeOptionalAttribute(attribute.getCompileUnit());
writer.writeOptionalAttribute(attribute.getScope());
writer.writeOptionalAttribute(attribute.getName());
writer.writeOptionalAttribute(attribute.getLinkageName());
writer.writeOptionalAttribute(attribute.getFile());
writer.writeVarInt(attribute.getLine());
writer.writeVarInt(attribute.getScopeLine());
writer.writeVarInt((uint64_t)attribute.getSubprogramFlags());
writer.writeOptionalAttribute(attribute.getType());
writeOptionalArrayRef<DINodeAttr>(writer, attribute.getRetainedNodes());
writeOptionalArrayRef<DINodeAttr>(writer, attribute.getAnnotations());
return success();
return failure();
}
static ::mlir::Attribute readDISubrangeAttr(MLIRContext* context, DialectBytecodeReader &reader) {
Attribute count, lowerBound, upperBound, stride;
if (succeeded(reader.readOptionalAttribute(count)) &&
succeeded(reader.readOptionalAttribute(lowerBound)) &&
succeeded(reader.readOptionalAttribute(upperBound)) &&
succeeded(reader.readOptionalAttribute(stride))) {
return getChecked<DISubrangeAttr>([&]() { return reader.emitError(); }, context, count, lowerBound, upperBound, stride);
}
return DISubrangeAttr();
}
static LogicalResult write(DISubrangeAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DISubrangeAttr */ 16);
writer.writeOptionalAttribute(attribute.getCount());
writer.writeOptionalAttribute(attribute.getLowerBound());
writer.writeOptionalAttribute(attribute.getUpperBound());
writer.writeOptionalAttribute(attribute.getStride());
return success();
return failure();
}
static ::mlir::Attribute readDISubroutineTypeAttr(MLIRContext* context, DialectBytecodeReader &reader) {
uint64_t callingConvention;
SmallVector<DITypeAttr> types;
if (succeeded(reader.readVarInt(callingConvention)) &&
succeeded(readOptionalArrayRef<DITypeAttr>(reader, types))) {
return getChecked<DISubroutineTypeAttr>([&]() { return reader.emitError(); }, context, callingConvention, types);
}
return DISubroutineTypeAttr();
}
static LogicalResult write(DISubroutineTypeAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* DISubroutineTypeAttr */ 17);
writer.writeVarInt(attribute.getCallingConvention());
writeOptionalArrayRef<DITypeAttr>(writer, attribute.getTypes());
return success();
return failure();
}
static ::mlir::Attribute readLoopAnnotationAttr(MLIRContext* context, DialectBytecodeReader &reader) {
BoolAttr disableNonforced;
LoopVectorizeAttr vectorize;
LoopInterleaveAttr interleave;
LoopUnrollAttr unroll;
LoopUnrollAndJamAttr unrollAndJam;
LoopLICMAttr licm;
LoopDistributeAttr distribute;
LoopPipelineAttr pipeline;
LoopPeeledAttr peeled;
LoopUnswitchAttr unswitch;
BoolAttr mustProgress, isVectorized;
FusedLoc startLoc, endLoc;
SmallVector<AccessGroupAttr> parallelAccesses;
if (succeeded(reader.readOptionalAttribute(disableNonforced)) &&
succeeded(reader.readOptionalAttribute(vectorize)) &&
succeeded(reader.readOptionalAttribute(interleave)) &&
succeeded(reader.readOptionalAttribute(unroll)) &&
succeeded(reader.readOptionalAttribute(unrollAndJam)) &&
succeeded(reader.readOptionalAttribute(licm)) &&
succeeded(reader.readOptionalAttribute(distribute)) &&
succeeded(reader.readOptionalAttribute(pipeline)) &&
succeeded(reader.readOptionalAttribute(peeled)) &&
succeeded(reader.readOptionalAttribute(unswitch)) &&
succeeded(reader.readOptionalAttribute(mustProgress)) &&
succeeded(reader.readOptionalAttribute(isVectorized)) &&
succeeded(reader.readOptionalAttribute(startLoc)) &&
succeeded(reader.readOptionalAttribute(endLoc)) &&
succeeded(readOptionalArrayRef<AccessGroupAttr>(reader, parallelAccesses))) {
return getChecked<LoopAnnotationAttr>([&]() { return reader.emitError(); }, context, disableNonforced, vectorize, interleave, unroll, unrollAndJam, licm, distribute, pipeline, peeled, unswitch, mustProgress, isVectorized, startLoc, endLoc, parallelAccesses);
}
return LoopAnnotationAttr();
}
static LogicalResult write(LoopAnnotationAttr attribute, DialectBytecodeWriter &writer) {
writer.writeVarInt(/* LoopAnnotationAttr */ 18);
writer.writeOptionalAttribute(attribute.getDisableNonforced());
writer.writeOptionalAttribute(attribute.getVectorize());
writer.writeOptionalAttribute(attribute.getInterleave());
writer.writeOptionalAttribute(attribute.getUnroll());
writer.writeOptionalAttribute(attribute.getUnrollAndJam());
writer.writeOptionalAttribute(attribute.getLicm());
writer.writeOptionalAttribute(attribute.getDistribute());
writer.writeOptionalAttribute(attribute.getPipeline());
writer.writeOptionalAttribute(attribute.getPeeled());
writer.writeOptionalAttribute(attribute.getUnswitch());
writer.writeOptionalAttribute(attribute.getMustProgress());
writer.writeOptionalAttribute(attribute.getIsVectorized());
writer.writeOptionalAttribute(attribute.getStartLoc());
writer.writeOptionalAttribute(attribute.getEndLoc());
writeOptionalArrayRef<AccessGroupAttr>(writer, attribute.getParallelAccesses());
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 readDIBasicTypeAttr(context, reader);
case 1:
return readDICompileUnitAttr(context, reader);
case 2:
return readDICompositeTypeAttr(context, reader);
case 3:
return readDIDerivedTypeAttr(context, reader);
case 4:
return readDIExpressionElemAttr(context, reader);
case 5:
return readDIExpressionAttr(context, reader);
case 6:
return readDIFileAttr(context, reader);
case 7:
return readDIGlobalVariableAttr(context, reader);
case 8:
return readDIGlobalVariableExpressionAttr(context, reader);
case 9:
return readDIImportedEntityAttr(context, reader);
case 10:
return readDILabelAttr(context, reader);
case 11:
return readDILexicalBlockAttr(context, reader);
case 12:
return readDILexicalBlockFileAttr(context, reader);
case 13:
return readDILocalVariableAttr(context, reader);
case 14:
return readDINamespaceAttr(context, reader);
case 15:
return readDISubprogramAttr(context, reader);
case 16:
return readDISubrangeAttr(context, reader);
case 17:
return readDISubroutineTypeAttr(context, reader);
case 18:
return readLoopAnnotationAttr(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([&](DIBasicTypeAttr t) {
return write(t, writer);
})
.Case([&](DICompileUnitAttr t) {
return write(t, writer);
})
.Case([&](DICompositeTypeAttr t) {
return write(t, writer);
})
.Case([&](DIDerivedTypeAttr t) {
return write(t, writer);
})
.Case([&](DIExpressionAttr t) {
return write(t, writer);
})
.Case([&](DIExpressionElemAttr t) {
return write(t, writer);
})
.Case([&](DIFileAttr t) {
return write(t, writer);
})
.Case([&](DIGlobalVariableAttr t) {
return write(t, writer);
})
.Case([&](DIGlobalVariableExpressionAttr t) {
return write(t, writer);
})
.Case([&](DIImportedEntityAttr t) {
return write(t, writer);
})
.Case([&](DILabelAttr t) {
return write(t, writer);
})
.Case([&](DILexicalBlockAttr t) {
return write(t, writer);
})
.Case([&](DILexicalBlockFileAttr t) {
return write(t, writer);
})
.Case([&](DILocalVariableAttr t) {
return write(t, writer);
})
.Case([&](DINamespaceAttr t) {
return write(t, writer);
})
.Case([&](DISubprogramAttr t) {
return write(t, writer);
})
.Case([&](DISubrangeAttr t) {
return write(t, writer);
})
.Case([&](DISubroutineTypeAttr t) {
return write(t, writer);
})
.Case([&](LoopAnnotationAttr t) {
return write(t, writer);
})
.Default([&](Attribute) { return failure(); });
}
static Type readType(MLIRContext* context, DialectBytecodeReader &reader) {
return reader.emitError() << "unknown attribute", Type();
}
static LogicalResult writeType(Type type,
DialectBytecodeWriter &writer) {
return TypeSwitch<Type, LogicalResult>(type)
.Default([&](Type) { return failure(); });
}