10#undef GET_TYPEDEF_LIST
16#ifdef GET_TYPEDEF_CLASSES
17#undef GET_TYPEDEF_CLASSES
19static ::mlir::OptionalParseResult generatedTypeParser(::mlir::AsmParser &parser, ::llvm::StringRef *mnemonic, ::mlir::Type &value) {
20 return ::mlir::AsmParser::KeywordSwitch<::mlir::OptionalParseResult>(parser)
23 return ::mlir::success(!!value);
25 .Default([&](llvm::StringRef keyword, llvm::SMLoc) {
31static ::llvm::LogicalResult generatedTypePrinter(::mlir::Type def, ::mlir::AsmPrinter &printer) {
32 return ::llvm::TypeSwitch<::mlir::Type, ::llvm::LogicalResult>(def) .Case<
::llzk::pod::PodType>([&](
auto t) {
35 return ::mlir::success();
37 .Default([](
auto) { return ::mlir::failure(); });
45 using KeyTy = std::tuple<::llvm::ArrayRef<::llzk::pod::RecordAttr>>;
53 return (
records == std::get<0>(tblgenKey));
57 return ::llvm::hash_combine(std::get<0>(tblgenKey));
61 auto records = std::move(std::get<0>(tblgenKey));
66 ::llvm::ArrayRef<::llzk::pod::RecordAttr>
records;
70PodType PodType::get(::mlir::MLIRContext *context, ::llvm::ArrayRef<::llzk::pod::RecordAttr> records) {
71 return Base::get(context, std::move(records));
74PodType PodType::getChecked(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::mlir::MLIRContext *context, ::llvm::ArrayRef<::llzk::pod::RecordAttr> records) {
75 return Base::getChecked(emitError, context, std::move(records));
78::llvm::LogicalResult
PodType::verifyInvariants(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::llvm::ArrayRef<::llzk::pod::RecordAttr> records) {
79 if (::mlir::failed(
verify(emitError, records)))
80 return ::mlir::failure();
81 return ::mlir::success();
85 ::mlir::Builder odsBuilder(odsParser.getContext());
86 ::llvm::SMLoc odsLoc = odsParser.getCurrentLocation();
88 ::mlir::FailureOr<::llvm::SmallVector<::llzk::pod::RecordAttr>> _result_records;
90 if (odsParser.parseLess())
return {};
92 auto odsCustomLoc = odsParser.getCurrentLocation();
95 ::mlir::detail::unwrapForCustomParse(_result_records));
96 if (::mlir::failed(odsCustomResult))
return {};
97 if (::mlir::failed(_result_records)) {
98 odsParser.emitError(odsCustomLoc,
"custom parser failed to parse parameter 'records'");
103 if (odsParser.parseGreater())
return {};
104 assert(::mlir::succeeded(_result_records));
105 return odsParser.getChecked<
PodType>(odsLoc, odsParser.getContext(),
106 ::llvm::ArrayRef<::llzk::pod::RecordAttr>((*_result_records)));
110 ::mlir::Builder odsBuilder(getContext());
118 return getImpl()->records;
129 ::llvm::SMLoc typeLoc = parser.getCurrentLocation();
130 ::llvm::StringRef mnemonic;
131 ::mlir::Type genType;
132 auto parseResult = generatedTypeParser(parser, &mnemonic, genType);
133 if (parseResult.has_value())
136 parser.emitError(typeLoc) <<
"unknown type `"
137 << mnemonic <<
"` in dialect `" << getNamespace() <<
"`";
142 ::mlir::DialectAsmPrinter &printer)
const {
143 if (::mlir::succeeded(generatedTypePrinter(type, printer)))
void printType(::mlir::Type type, ::mlir::DialectAsmPrinter &os) const override
Print a type registered to this dialect.
::mlir::Type parseType(::mlir::DialectAsmParser &parser) const override
Parse a type registered to this dialect.
void print(::mlir::AsmPrinter &odsPrinter) const
static constexpr ::llvm::StringLiteral getMnemonic()
static PodType getChecked(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::mlir::MLIRContext *context, ::llvm::ArrayRef<::llzk::pod::RecordAttr > records)
static PodType get(::mlir::MLIRContext *context, ::llvm::ArrayRef<::llzk::pod::RecordAttr > records)
::mlir::Type parse(::mlir::AsmParser &odsParser)
::llvm::LogicalResult verifyInvariants(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::llvm::ArrayRef<::llzk::pod::RecordAttr > records)
::llvm::ArrayRef<::llzk::pod::RecordAttr > getRecords() const
::llvm::LogicalResult verify(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::llvm::ArrayRef<::llzk::pod::RecordAttr > records)
Common interface for operations that reference a plain-old-data struct value.
ParseResult parsePodType(AsmParser &parser, SmallVector< RecordAttr > &records)
void printPodType(AsmPrinter &printer, ArrayRef< RecordAttr > records)
std::tuple<::llvm::ArrayRef<::llzk::pod::RecordAttr > > KeyTy
PodTypeStorage(::llvm::ArrayRef<::llzk::pod::RecordAttr > records)
bool operator==(const KeyTy &tblgenKey) const
::llvm::ArrayRef<::llzk::pod::RecordAttr > records
::llvm::hash_code hashKey(const KeyTy &tblgenKey)
static PodTypeStorage * construct(::mlir::TypeStorageAllocator &allocator, KeyTy &&tblgenKey)