LLZK 3.0.0
An open-source IR for Zero Knowledge (ZK) circuits
Loading...
Searching...
No Matches
Types.cpp.inc
Go to the documentation of this file.
1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* TypeDef Definitions *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* *|
7\*===----------------------------------------------------------------------===*/
8
9#ifdef GET_TYPEDEF_LIST
10#undef GET_TYPEDEF_LIST
11
13
14#endif // GET_TYPEDEF_LIST
15
16#ifdef GET_TYPEDEF_CLASSES
17#undef GET_TYPEDEF_CLASSES
18
19static ::mlir::OptionalParseResult generatedTypeParser(::mlir::AsmParser &parser, ::llvm::StringRef *mnemonic, ::mlir::Type &value) {
20 return ::mlir::AsmParser::KeywordSwitch<::mlir::OptionalParseResult>(parser)
21 .Case(::llzk::pod::PodType::getMnemonic(), [&](llvm::StringRef, llvm::SMLoc) {
22 value = ::llzk::pod::PodType::parse(parser);
23 return ::mlir::success(!!value);
24 })
25 .Default([&](llvm::StringRef keyword, llvm::SMLoc) {
26 *mnemonic = keyword;
27 return std::nullopt;
28 });
29}
30
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) {
34t.print(printer);
35 return ::mlir::success();
36 })
37 .Default([](auto) { return ::mlir::failure(); });
38}
39
40namespace llzk::pod {
41
42namespace detail {
43
44struct PodTypeStorage : public ::mlir::TypeStorage {
45 using KeyTy = std::tuple<::llvm::ArrayRef<::llzk::pod::RecordAttr>>;
46 PodTypeStorage(::llvm::ArrayRef<::llzk::pod::RecordAttr> records) : records(std::move(records)) {}
47
48 KeyTy getAsKey() const {
49 return KeyTy(records);
50 }
51
52 bool operator==(const KeyTy &tblgenKey) const {
53 return (records == std::get<0>(tblgenKey));
54 }
55
56 static ::llvm::hash_code hashKey(const KeyTy &tblgenKey) {
57 return ::llvm::hash_combine(std::get<0>(tblgenKey));
58 }
59
60 static PodTypeStorage *construct(::mlir::TypeStorageAllocator &allocator, KeyTy &&tblgenKey) {
61 auto records = std::move(std::get<0>(tblgenKey));
62 records = allocator.copyInto(records);
63 return new (allocator.allocate<PodTypeStorage>()) PodTypeStorage(std::move(records));
64 }
65
66 ::llvm::ArrayRef<::llzk::pod::RecordAttr> records;
67};
68
69} // namespace detail
70PodType PodType::get(::mlir::MLIRContext *context, ::llvm::ArrayRef<::llzk::pod::RecordAttr> records) {
71 return Base::get(context, std::move(records));
72}
73
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));
76}
77
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();
82}
83
84::mlir::Type PodType::parse(::mlir::AsmParser &odsParser) {
85 ::mlir::Builder odsBuilder(odsParser.getContext());
86 ::llvm::SMLoc odsLoc = odsParser.getCurrentLocation();
87 (void) odsLoc;
88 ::mlir::FailureOr<::llvm::SmallVector<::llzk::pod::RecordAttr>> _result_records;
89 // Parse literal '<'
90 if (odsParser.parseLess()) return {};
91 {
92 auto odsCustomLoc = odsParser.getCurrentLocation();
93 (void)odsCustomLoc;
94 auto odsCustomResult = parsePodType(odsParser,
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'");
99 return {};
100 }
101 }
102 // Parse literal '>'
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)));
107}
108
109void PodType::print(::mlir::AsmPrinter &odsPrinter) const {
110 ::mlir::Builder odsBuilder(getContext());
111 odsPrinter << "<";
112 printPodType(odsPrinter,
113 getRecords());
114 odsPrinter << ">";
115}
116
117::llvm::ArrayRef<::llzk::pod::RecordAttr> PodType::getRecords() const {
118 return getImpl()->records;
119}
120
121
122} // namespace llzk::pod
123MLIR_DEFINE_EXPLICIT_TYPE_ID(::llzk::pod::PodType)
124namespace llzk::pod {
125
126
128::mlir::Type PODDialect::parseType(::mlir::DialectAsmParser &parser) const {
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())
134 return genType;
135
136 parser.emitError(typeLoc) << "unknown type `"
137 << mnemonic << "` in dialect `" << getNamespace() << "`";
138 return {};
139}
140
141void PODDialect::printType(::mlir::Type type,
142 ::mlir::DialectAsmPrinter &printer) const {
143 if (::mlir::succeeded(generatedTypePrinter(type, printer)))
144 return;
145
146}
147
148} // namespace llzk::pod
149
150#endif // GET_TYPEDEF_CLASSES
151
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()
Definition Types.h.inc:73
static PodType getChecked(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::mlir::MLIRContext *context, ::llvm::ArrayRef<::llzk::pod::RecordAttr > records)
Definition Types.cpp.inc:74
static PodType get(::mlir::MLIRContext *context, ::llvm::ArrayRef<::llzk::pod::RecordAttr > records)
Definition Types.cpp.inc:70
::mlir::Type parse(::mlir::AsmParser &odsParser)
Definition Types.cpp.inc:84
::llvm::LogicalResult verifyInvariants(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::llvm::ArrayRef<::llzk::pod::RecordAttr > records)
Definition Types.cpp.inc:78
::llvm::ArrayRef<::llzk::pod::RecordAttr > getRecords() const
::llvm::LogicalResult verify(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::llvm::ArrayRef<::llzk::pod::RecordAttr > records)
Definition Types.cpp:28
Common interface for operations that reference a plain-old-data struct value.
ParseResult parsePodType(AsmParser &parser, SmallVector< RecordAttr > &records)
Definition Types.cpp:91
void printPodType(AsmPrinter &printer, ArrayRef< RecordAttr > records)
Definition Types.cpp:103
std::tuple<::llvm::ArrayRef<::llzk::pod::RecordAttr > > KeyTy
Definition Types.cpp.inc:45
PodTypeStorage(::llvm::ArrayRef<::llzk::pod::RecordAttr > records)
Definition Types.cpp.inc:46
bool operator==(const KeyTy &tblgenKey) const
Definition Types.cpp.inc:52
::llvm::ArrayRef<::llzk::pod::RecordAttr > records
Definition Types.cpp.inc:66
::llvm::hash_code hashKey(const KeyTy &tblgenKey)
Definition Types.cpp.inc:56
static PodTypeStorage * construct(::mlir::TypeStorageAllocator &allocator, KeyTy &&tblgenKey)
Definition Types.cpp.inc:60