LLZK 3.0.0
An open-source IR for Zero Knowledge (ZK) circuits
Loading...
Searching...
No Matches
Attrs.cpp.inc
Go to the documentation of this file.
1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* AttrDef Definitions *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* *|
7\*===----------------------------------------------------------------------===*/
8
9#ifdef GET_ATTRDEF_LIST
10#undef GET_ATTRDEF_LIST
11
12::llzk::felt::FeltConstAttr,
13::llzk::felt::FieldSpecAttr
14
15#endif // GET_ATTRDEF_LIST
16
17#ifdef GET_ATTRDEF_CLASSES
18#undef GET_ATTRDEF_CLASSES
19
20static ::mlir::OptionalParseResult generatedAttributeParser(::mlir::AsmParser &parser, ::llvm::StringRef *mnemonic, ::mlir::Type type, ::mlir::Attribute &value) {
21 return ::mlir::AsmParser::KeywordSwitch<::mlir::OptionalParseResult>(parser)
22 .Case(::llzk::felt::FeltConstAttr::getMnemonic(), [&](llvm::StringRef, llvm::SMLoc) {
23 value = ::llzk::felt::FeltConstAttr::parse(parser, type);
24 return ::mlir::success(!!value);
25 })
26 .Case(::llzk::felt::FieldSpecAttr::getMnemonic(), [&](llvm::StringRef, llvm::SMLoc) {
27 value = ::llzk::felt::FieldSpecAttr::parse(parser, type);
28 return ::mlir::success(!!value);
29 })
30 .Default([&](llvm::StringRef keyword, llvm::SMLoc) {
31 *mnemonic = keyword;
32 return std::nullopt;
33 });
34}
35
36static ::llvm::LogicalResult generatedAttributePrinter(::mlir::Attribute def, ::mlir::AsmPrinter &printer) {
37 return ::llvm::TypeSwitch<::mlir::Attribute, ::llvm::LogicalResult>(def) .Case<::llzk::felt::FeltConstAttr>([&](auto t) {
38 printer << ::llzk::felt::FeltConstAttr::getMnemonic();
39t.print(printer);
40 return ::mlir::success();
41 })
42 .Case<::llzk::felt::FieldSpecAttr>([&](auto t) {
43 printer << ::llzk::felt::FieldSpecAttr::getMnemonic();
44t.print(printer);
45 return ::mlir::success();
46 })
47 .Default([](auto) { return ::mlir::failure(); });
48}
49
50namespace llzk::felt {
51
52namespace detail {
53
54struct FeltConstAttrStorage : public ::mlir::AttributeStorage {
55 using KeyTy = std::tuple<::llzk::DynamicAPIntValue, FeltType>;
56 FeltConstAttrStorage(::llzk::DynamicAPIntValue rawValue, FeltType type) : rawValue(std::move(rawValue)), type(std::move(type)) {}
57
58 KeyTy getAsKey() const {
59 return KeyTy(rawValue, type);
60 }
61
62 bool operator==(const KeyTy &tblgenKey) const {
63 return (rawValue == std::get<0>(tblgenKey)) && (type == std::get<1>(tblgenKey));
64 }
65
66 static ::llvm::hash_code hashKey(const KeyTy &tblgenKey) {
67 return ::llvm::hash_combine(std::get<0>(tblgenKey), std::get<1>(tblgenKey));
68 }
69
70 static FeltConstAttrStorage *construct(::mlir::AttributeStorageAllocator &allocator, KeyTy &&tblgenKey) {
71 auto rawValue = std::move(std::get<0>(tblgenKey));
72 auto type = std::move(std::get<1>(tblgenKey));
73 return new (allocator.allocate<FeltConstAttrStorage>()) FeltConstAttrStorage(std::move(rawValue), std::move(type));
74 }
75
76 ::llzk::DynamicAPIntValue rawValue;
77 FeltType type;
78};
79
80} // namespace detail
81FeltConstAttr FeltConstAttr::get(::mlir::MLIRContext *context, ::llzk::DynamicAPIntValue rawValue, FeltType type) {
82 return Base::get(context, std::move(rawValue), std::move(type));
83}
84
85FeltConstAttr FeltConstAttr::get(::mlir::MLIRContext *context, const ::llvm::DynamicAPInt &rawValue, FeltType ty) {
86 return Base::get(context, ::llzk::DynamicAPIntValue(rawValue), ty);
87}
88
89FeltConstAttr FeltConstAttr::get(::mlir::MLIRContext *context, const ::llvm::DynamicAPInt &rawValue) {
90 return get(context, rawValue, FeltType::get(context));
91}
92
93FeltConstAttr FeltConstAttr::get(::mlir::MLIRContext *context, const ::llvm::DynamicAPInt &rawValue, ::llvm::StringRef fieldName) {
94 return get(context, rawValue, FeltType::get(context, fieldName));
95}
96
97FeltConstAttr FeltConstAttr::get(::mlir::MLIRContext *context, ::llvm::ArrayRef<uint64_t> parts, FeltType ty) {
98 return get(context, ::llzk::toSignedDynamicAPInt(parts), ty);
99}
100
101FeltConstAttr FeltConstAttr::get(::mlir::MLIRContext *context, ::llvm::ArrayRef<uint64_t> parts) {
102 return get(context, ::llzk::toSignedDynamicAPInt(parts));
103}
104
105FeltConstAttr FeltConstAttr::get(::mlir::MLIRContext *context, ::llvm::ArrayRef<uint64_t> parts, ::llvm::StringRef fieldName) {
106 return get(context, ::llzk::toSignedDynamicAPInt(parts), fieldName);
107}
108
109const ::llvm::DynamicAPInt &FeltConstAttr::getRawValue() const {
110 return getImpl()->rawValue;
111}
112
113FeltType FeltConstAttr::getType() const {
114 return getImpl()->type;
115}
116
117
118} // namespace llzk::felt
119MLIR_DEFINE_EXPLICIT_TYPE_ID(::llzk::felt::FeltConstAttr)
120namespace llzk::felt {
121
122namespace detail {
123
124struct FieldSpecAttrStorage : public ::mlir::AttributeStorage {
125 using KeyTy = std::tuple<::mlir::StringAttr, ::llzk::DynamicAPIntValue>;
126 FieldSpecAttrStorage(::mlir::StringAttr fieldName, ::llzk::DynamicAPIntValue prime) : fieldName(std::move(fieldName)), prime(std::move(prime)) {}
127
128 KeyTy getAsKey() const {
129 return KeyTy(fieldName, prime);
130 }
131
132 bool operator==(const KeyTy &tblgenKey) const {
133 return (fieldName == std::get<0>(tblgenKey)) && (prime == std::get<1>(tblgenKey));
134 }
135
136 static ::llvm::hash_code hashKey(const KeyTy &tblgenKey) {
137 return ::llvm::hash_combine(std::get<0>(tblgenKey), std::get<1>(tblgenKey));
138 }
139
140 static FieldSpecAttrStorage *construct(::mlir::AttributeStorageAllocator &allocator, KeyTy &&tblgenKey) {
141 auto fieldName = std::move(std::get<0>(tblgenKey));
142 auto prime = std::move(std::get<1>(tblgenKey));
143 return new (allocator.allocate<FieldSpecAttrStorage>()) FieldSpecAttrStorage(std::move(fieldName), std::move(prime));
144 }
145
146 ::mlir::StringAttr fieldName;
147 ::llzk::DynamicAPIntValue prime;
148};
149
150} // namespace detail
151FieldSpecAttr FieldSpecAttr::get(::mlir::MLIRContext *context, ::mlir::StringAttr fieldName, ::llzk::DynamicAPIntValue prime) {
152 return Base::get(context, std::move(fieldName), std::move(prime));
153}
154
155FieldSpecAttr FieldSpecAttr::getChecked(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::mlir::MLIRContext *context, ::mlir::StringAttr fieldName, ::llzk::DynamicAPIntValue prime) {
156 return Base::getChecked(emitError, context, std::move(fieldName), std::move(prime));
157}
158
159FieldSpecAttr FieldSpecAttr::get(::mlir::MLIRContext *context, ::mlir::StringAttr fieldName, const ::llvm::DynamicAPInt &prime) {
160 return Base::get(context, fieldName, ::llzk::DynamicAPIntValue(prime));
161}
162
163FieldSpecAttr FieldSpecAttr::getChecked(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::mlir::MLIRContext *context, ::mlir::StringAttr fieldName, const ::llvm::DynamicAPInt &prime) {
164 return Base::getChecked(emitError, context, fieldName, ::llzk::DynamicAPIntValue(prime));
165}
166
167FieldSpecAttr FieldSpecAttr::get(::mlir::MLIRContext *context, ::mlir::StringAttr fieldName, ::llvm::ArrayRef<uint64_t> parts) {
168 return Base::get(context, fieldName,
169 ::llzk::DynamicAPIntValue(::llzk::toSignedDynamicAPInt(parts)));
170}
171
172FieldSpecAttr FieldSpecAttr::getChecked(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::mlir::MLIRContext *context, ::mlir::StringAttr fieldName, ::llvm::ArrayRef<uint64_t> parts) {
173 return Base::getChecked(emitError, context, fieldName,
174 ::llzk::DynamicAPIntValue(::llzk::toSignedDynamicAPInt(parts)));
175}
176
177FieldSpecAttr FieldSpecAttr::get(::mlir::MLIRContext *context, ::llvm::StringRef fieldName, ::llvm::ArrayRef<uint64_t> parts) {
178 return Base::get(context, ::mlir::StringAttr::get(context, fieldName),
179 ::llzk::DynamicAPIntValue(::llzk::toSignedDynamicAPInt(parts)));
180}
181
182FieldSpecAttr FieldSpecAttr::getChecked(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::mlir::MLIRContext *context, ::llvm::StringRef fieldName, ::llvm::ArrayRef<uint64_t> parts) {
183 return Base::getChecked(emitError, context, ::mlir::StringAttr::get(context, fieldName),
184 ::llzk::DynamicAPIntValue(::llzk::toSignedDynamicAPInt(parts)));
185}
186
187::llvm::LogicalResult FieldSpecAttr::verifyInvariants(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::mlir::StringAttr fieldName, ::llzk::DynamicAPIntValue prime) {
188 if (::mlir::failed(verify(emitError, fieldName, prime)))
189 return ::mlir::failure();
190 return ::mlir::success();
191}
192
193::mlir::StringAttr FieldSpecAttr::getFieldName() const {
194 return getImpl()->fieldName;
195}
196
197const ::llvm::DynamicAPInt &FieldSpecAttr::getPrime() const {
198 return getImpl()->prime;
199}
200
201
202} // namespace llzk::felt
203MLIR_DEFINE_EXPLICIT_TYPE_ID(::llzk::felt::FieldSpecAttr)
204namespace llzk::felt {
205
206
208::mlir::Attribute FeltDialect::parseAttribute(::mlir::DialectAsmParser &parser,
209 ::mlir::Type type) const {
210 ::llvm::SMLoc typeLoc = parser.getCurrentLocation();
211 ::llvm::StringRef attrTag;
212 {
213 ::mlir::Attribute attr;
214 auto parseResult = generatedAttributeParser(parser, &attrTag, type, attr);
215 if (parseResult.has_value())
216 return attr;
217 }
218
219 parser.emitError(typeLoc) << "unknown attribute `"
220 << attrTag << "` in dialect `" << getNamespace() << "`";
221 return {};
222}
224void FeltDialect::printAttribute(::mlir::Attribute attr,
225 ::mlir::DialectAsmPrinter &printer) const {
226 if (::mlir::succeeded(generatedAttributePrinter(attr, printer)))
227 return;
228
229}
230
231} // namespace llzk::felt
232
233#endif // GET_ATTRDEF_CLASSES
234
::mlir::Attribute parseAttribute(::mlir::DialectAsmParser &parser, ::mlir::Type type) const override
Parse an attribute registered to this dialect.
void printAttribute(::mlir::Attribute attr, ::mlir::DialectAsmPrinter &os) const override
Print an attribute registered to this dialect.
static FeltType get(::mlir::MLIRContext *context, ::mlir::StringAttr fieldName)
Definition Types.cpp.inc:69
Common interface for binary arithmetic operations on felts.
DynamicAPInt toSignedDynamicAPInt(ArrayRef< uint64_t > parts)