LLZK 3.0.0
An open-source IR for Zero Knowledge (ZK) circuits
Loading...
Searching...
No Matches
Ops.cpp.inc
Go to the documentation of this file.
1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* Op Definitions *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* From: Ops.td *|
7|* *|
8\*===----------------------------------------------------------------------===*/
9
10#ifdef GET_OP_LIST
11#undef GET_OP_LIST
12
18#endif // GET_OP_LIST
19
20#ifdef GET_OP_CLASSES
21#undef GET_OP_CLASSES
22
23
24//===----------------------------------------------------------------------===//
25// Local Utility Method Definitions
26//===----------------------------------------------------------------------===//
27
28
29static ::llvm::LogicalResult __mlir_ods_local_type_constraint_Ops1(
30 ::mlir::Operation *op, ::mlir::Type type, ::llvm::StringRef valueKind,
31 unsigned valueIndex) {
32 if (!((::llvm::isa<::llzk::component::StructType>(type)))) {
33 return op->emitOpError(valueKind) << " #" << valueIndex
34 << " must be circuit component, but got " << type;
35 }
36 return ::mlir::success();
37}
38
39static ::llvm::LogicalResult __mlir_ods_local_type_constraint_Ops2(
40 ::mlir::Operation *op, ::mlir::Type type, ::llvm::StringRef valueKind,
41 unsigned valueIndex) {
42 if (!((::llvm::isa<::mlir::IndexType>(type)))) {
43 return op->emitOpError(valueKind) << " #" << valueIndex
44 << " must be variadic of index, but got " << type;
45 }
46 return ::mlir::success();
47}
48
49static ::llvm::LogicalResult __mlir_ods_local_type_constraint_Ops3(
50 ::mlir::Operation *op, ::mlir::Type type, ::llvm::StringRef valueKind,
51 unsigned valueIndex) {
52 if (!((::llzk::isValidType(type)))) {
53 return op->emitOpError(valueKind) << " #" << valueIndex
54 << " must be a valid LLZK type, but got " << type;
55 }
56 return ::mlir::success();
57}
58
59static ::llvm::LogicalResult __mlir_ods_local_attr_constraint_Ops1(
60 ::mlir::Attribute attr, ::llvm::StringRef attrName, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) {
61 if (attr && !((::llvm::isa<::mlir::StringAttr>(attr))))
62 return emitError() << "attribute '" << attrName
63 << "' failed to satisfy constraint: string attribute";
64 return ::mlir::success();
65}
66static ::llvm::LogicalResult __mlir_ods_local_attr_constraint_Ops1(
67 ::mlir::Operation *op, ::mlir::Attribute attr, ::llvm::StringRef attrName) {
68 return __mlir_ods_local_attr_constraint_Ops1(attr, attrName, [op]() {
69 return op->emitOpError();
70 });
71}
72
73static ::llvm::LogicalResult __mlir_ods_local_attr_constraint_Ops2(
74 ::mlir::Attribute attr, ::llvm::StringRef attrName, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) {
75 if (attr && !(((::llvm::isa<::mlir::TypeAttr>(attr))) && ((::llvm::isa<::mlir::Type>(::llvm::cast<::mlir::TypeAttr>(attr).getValue()))) && ((::llzk::isValidType(::llvm::cast<::mlir::TypeAttr>(attr).getValue())))))
76 return emitError() << "attribute '" << attrName
77 << "' failed to satisfy constraint: type attribute of a valid LLZK type";
78 return ::mlir::success();
79}
80static ::llvm::LogicalResult __mlir_ods_local_attr_constraint_Ops2(
81 ::mlir::Operation *op, ::mlir::Attribute attr, ::llvm::StringRef attrName) {
82 return __mlir_ods_local_attr_constraint_Ops2(attr, attrName, [op]() {
83 return op->emitOpError();
84 });
85}
86
87static ::llvm::LogicalResult __mlir_ods_local_attr_constraint_Ops3(
88 ::mlir::Attribute attr, ::llvm::StringRef attrName, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) {
89 if (attr && !((::llvm::isa<::mlir::UnitAttr>(attr))))
90 return emitError() << "attribute '" << attrName
91 << "' failed to satisfy constraint: unit attribute";
92 return ::mlir::success();
93}
94static ::llvm::LogicalResult __mlir_ods_local_attr_constraint_Ops3(
95 ::mlir::Operation *op, ::mlir::Attribute attr, ::llvm::StringRef attrName) {
96 return __mlir_ods_local_attr_constraint_Ops3(attr, attrName, [op]() {
97 return op->emitOpError();
98 });
99}
100
101static ::llvm::LogicalResult __mlir_ods_local_attr_constraint_Ops4(
102 ::mlir::Attribute attr, ::llvm::StringRef attrName, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) {
103 if (attr && !((::llvm::isa<::mlir::FlatSymbolRefAttr>(attr))))
104 return emitError() << "attribute '" << attrName
105 << "' failed to satisfy constraint: flat symbol reference attribute";
106 return ::mlir::success();
107}
108static ::llvm::LogicalResult __mlir_ods_local_attr_constraint_Ops4(
109 ::mlir::Operation *op, ::mlir::Attribute attr, ::llvm::StringRef attrName) {
110 return __mlir_ods_local_attr_constraint_Ops4(attr, attrName, [op]() {
111 return op->emitOpError();
112 });
113}
114
115static ::llvm::LogicalResult __mlir_ods_local_attr_constraint_Ops5(
116 ::mlir::Attribute attr, ::llvm::StringRef attrName, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) {
117 if (attr && !(((::llvm::isa<::mlir::SymbolRefAttr>(attr))) || (((::llvm::isa<::mlir::IntegerAttr>(attr))) && ((::llvm::isa<::mlir::IndexType>(::llvm::cast<::mlir::IntegerAttr>(attr).getType())))) || ((::llvm::isa<::mlir::AffineMapAttr>(attr)))))
118 return emitError() << "attribute '" << attrName
119 << "' failed to satisfy constraint: symbol reference attribute or index attribute or AffineMap attribute";
120 return ::mlir::success();
121}
122static ::llvm::LogicalResult __mlir_ods_local_attr_constraint_Ops5(
123 ::mlir::Operation *op, ::mlir::Attribute attr, ::llvm::StringRef attrName) {
124 return __mlir_ods_local_attr_constraint_Ops5(attr, attrName, [op]() {
125 return op->emitOpError();
126 });
127}
128
129static ::llvm::LogicalResult __mlir_ods_local_attr_constraint_Ops6(
130 ::mlir::Attribute attr, ::llvm::StringRef attrName, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) {
131 if (attr && !((::llvm::isa<::mlir::DenseI32ArrayAttr>(attr))))
132 return emitError() << "attribute '" << attrName
133 << "' failed to satisfy constraint: i32 dense array attribute";
134 return ::mlir::success();
135}
136static ::llvm::LogicalResult __mlir_ods_local_attr_constraint_Ops6(
137 ::mlir::Operation *op, ::mlir::Attribute attr, ::llvm::StringRef attrName) {
138 return __mlir_ods_local_attr_constraint_Ops6(attr, attrName, [op]() {
139 return op->emitOpError();
140 });
141}
142
143static ::llvm::LogicalResult __mlir_ods_local_region_constraint_Ops1(
144 ::mlir::Operation *op, ::mlir::Region &region, ::llvm::StringRef regionName,
145 unsigned regionIndex) {
146 if (!((::llvm::hasNItems(region, 1)))) {
147 return op->emitOpError("region #") << regionIndex
148 << (regionName.empty() ? " " : " ('" + regionName + "') ")
149 << "failed to verify constraint: region with 1 blocks";
150 }
151 return ::mlir::success();
152}
153namespace llzk::component {
154
155
156//===----------------------------------------------------------------------===//
157// ::llzk::component::CreateStructOp definitions
158//===----------------------------------------------------------------------===//
159
160namespace detail {
161
163
164
165} // namespace detail
167
168::llvm::LogicalResult CreateStructOpAdaptor::verify(::mlir::Location loc) {
169 return ::mlir::success();
170}
171
172::llvm::LogicalResult CreateStructOp::setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) {
173 ::mlir::DictionaryAttr dict = ::llvm::dyn_cast<::mlir::DictionaryAttr>(attr);
174 if (!dict) {
175 emitError() << "expected DictionaryAttr to set properties";
176 return ::mlir::failure();
177 }
178 return ::mlir::success();
179}
180
181::mlir::Attribute CreateStructOp::getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop) {
182 ::mlir::SmallVector<::mlir::NamedAttribute> attrs;
183 ::mlir::Builder odsBuilder{ctx};
184
185 if (!attrs.empty())
186 return odsBuilder.getDictionaryAttr(attrs);
187 return {};
188}
189
191 using llvm::hash_value;
192 return llvm::hash_combine();
193}
194
195std::optional<mlir::Attribute> CreateStructOp::getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name) {
196 return std::nullopt;
197}
198
199void CreateStructOp::setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value) {
200}
201
202void CreateStructOp::populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs) {
203}
204
205::llvm::LogicalResult CreateStructOp::verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) {
206 return ::mlir::success();
207}
208
209void CreateStructOp::build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type result) {
210 odsState.addTypes(result);
211}
212
213CreateStructOp CreateStructOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type result) {
214 ::mlir::OperationState __state__(location, getOperationName());
215 build(builder, __state__, std::forward<decltype(result)>(result));
216 auto __res__ = ::llvm::dyn_cast<CreateStructOp>(builder.create(__state__));
217 assert(__res__ && "builder didn't return the right type");
218 return __res__;
219}
220
221CreateStructOp CreateStructOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type result) {
222 return create(builder, builder.getLoc(), std::forward<decltype(result)>(result));
223}
224
225void CreateStructOp::build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes) {
226 assert(resultTypes.size() == 1u && "mismatched number of results");
227 odsState.addTypes(resultTypes);
228}
229
230CreateStructOp CreateStructOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes) {
231 ::mlir::OperationState __state__(location, getOperationName());
232 build(builder, __state__, std::forward<decltype(resultTypes)>(resultTypes));
233 auto __res__ = ::llvm::dyn_cast<CreateStructOp>(builder.create(__state__));
234 assert(__res__ && "builder didn't return the right type");
235 return __res__;
236}
237
238CreateStructOp CreateStructOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes) {
239 return create(builder, builder.getLoc(), std::forward<decltype(resultTypes)>(resultTypes));
240}
241
242void CreateStructOp::build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes) {
243 assert(operands.size() == 0u && "mismatched number of parameters");
244 odsState.addOperands(operands);
245 odsState.addAttributes(attributes);
246 assert(resultTypes.size() == 1u && "mismatched number of return types");
247 odsState.addTypes(resultTypes);
248}
249
250CreateStructOp CreateStructOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes) {
251 ::mlir::OperationState __state__(location, getOperationName());
252 build(builder, __state__, std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(operands)>(operands), std::forward<decltype(attributes)>(attributes));
253 auto __res__ = ::llvm::dyn_cast<CreateStructOp>(builder.create(__state__));
254 assert(__res__ && "builder didn't return the right type");
255 return __res__;
256}
257
258CreateStructOp CreateStructOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes) {
259 return create(builder, builder.getLoc(), std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(operands)>(operands), std::forward<decltype(attributes)>(attributes));
260}
261
262void CreateStructOp::build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes) {
263 assert(operands.size() == 0u && "mismatched number of parameters");
264 odsState.addOperands(operands);
265 odsState.useProperties(const_cast<Properties&>(properties));
266 odsState.addAttributes(discardableAttributes);
267 assert(resultTypes.size() == 1u && "mismatched number of return types");
268 odsState.addTypes(resultTypes);
269}
270
271CreateStructOp CreateStructOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes) {
272 ::mlir::OperationState __state__(location, getOperationName());
273 build(builder, __state__, std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(operands)>(operands), std::forward<decltype(properties)>(properties), std::forward<decltype(discardableAttributes)>(discardableAttributes));
274 auto __res__ = ::llvm::dyn_cast<CreateStructOp>(builder.create(__state__));
275 assert(__res__ && "builder didn't return the right type");
276 return __res__;
277}
278
279CreateStructOp CreateStructOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes) {
280 return create(builder, builder.getLoc(), std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(operands)>(operands), std::forward<decltype(properties)>(properties), std::forward<decltype(discardableAttributes)>(discardableAttributes));
281}
282
284 {
285 unsigned index = 0; (void)index;
286 auto valueGroup0 = getODSResults(0);
287
288 for (auto v : valueGroup0) {
289 if (::mlir::failed(__mlir_ods_local_type_constraint_Ops1(*this, v.getType(), "result", index++)))
290 return ::mlir::failure();
291 }
292 }
293 return ::mlir::success();
294}
295
296::llvm::LogicalResult CreateStructOp::verifyInvariants() {
297 return verifyInvariantsImpl();
298}
299
300::mlir::ParseResult CreateStructOp::parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result) {
301 ::mlir::Type resultRawType{};
302 ::llvm::ArrayRef<::mlir::Type> resultTypes(&resultRawType, 1);
303 if (parser.parseColon())
304 return ::mlir::failure();
305
306 {
308 if (parser.parseCustomTypeWithFallback(type))
309 return ::mlir::failure();
310 resultRawType = type;
311 }
312 {
313 auto loc = parser.getCurrentLocation();(void)loc;
314 if (parser.parseOptionalAttrDict(result.attributes))
315 return ::mlir::failure();
316 if (failed(verifyInherentAttrs(result.name, result.attributes, [&]() {
317 return parser.emitError(loc) << "'" << result.name.getStringRef() << "' op ";
318 })))
319 return ::mlir::failure();
320 }
321 result.addTypes(resultTypes);
322 return ::mlir::success();
323}
324
325void CreateStructOp::print(::mlir::OpAsmPrinter &_odsPrinter) {
326 _odsPrinter << ' ' << ":";
327 _odsPrinter << ' ';
328 {
329 auto type = getResult().getType();
330 if (auto validType = ::llvm::dyn_cast<::llzk::component::StructType>(type))
331 _odsPrinter.printStrippedAttrOrType(validType);
332 else
333 _odsPrinter << type;
334 }
335 ::llvm::SmallVector<::llvm::StringRef, 2> elidedAttrs;
336 _odsPrinter.printOptionalAttrDict((*this)->getAttrs(), elidedAttrs);
337}
338
339
340} // namespace llzk::component
341MLIR_DEFINE_EXPLICIT_TYPE_ID(::llzk::component::CreateStructOp)
342
343namespace llzk::component {
344
345
346//===----------------------------------------------------------------------===//
347// ::llzk::component::MemberDefOp definitions
348//===----------------------------------------------------------------------===//
349
350namespace detail {
351
352MemberDefOpGenericAdaptorBase::MemberDefOpGenericAdaptorBase(MemberDefOp op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), properties(op.getProperties()), odsRegions(op->getRegions()) {}
353
355 auto attr = getSymNameAttr();
356 return attr.getValue();
357}
358
360 auto attr = getTypeAttr();
361 return ::llvm::cast<::mlir::Type>(attr.getValue());
362}
363
365 auto attr = ::llvm::dyn_cast_or_null<::mlir::UnitAttr>(getProperties().column);
366 if (!attr)
367 attr = ((false) ? ::mlir::Builder(odsAttrs.getContext()).getUnitAttr() : nullptr);
368 return attr;
369}
370
372 auto attr = getColumnAttr();
373 if (!attr)
374 return ((false) ? ::mlir::Builder(odsAttrs.getContext()).getUnitAttr() : nullptr) != nullptr;
375 return attr != nullptr;
376}
377
379 auto attr = ::llvm::dyn_cast_or_null<::mlir::UnitAttr>(getProperties().signal);
380 if (!attr)
381 attr = ((false) ? ::mlir::Builder(odsAttrs.getContext()).getUnitAttr() : nullptr);
382 return attr;
383}
384
386 auto attr = getSignalAttr();
387 if (!attr)
388 return ((false) ? ::mlir::Builder(odsAttrs.getContext()).getUnitAttr() : nullptr) != nullptr;
389 return attr != nullptr;
390}
391
392
393} // namespace detail
395
396::llvm::LogicalResult MemberDefOpAdaptor::verify(::mlir::Location loc) {
397 auto tblgen_column = getProperties().column; (void)tblgen_column;
398 auto tblgen_signal = getProperties().signal; (void)tblgen_signal;
399 auto tblgen_sym_name = getProperties().sym_name; (void)tblgen_sym_name;
400 if (!tblgen_sym_name) return emitError(loc, "'struct.member' op requires attribute 'sym_name'");
401 auto tblgen_type = getProperties().type; (void)tblgen_type;
402 if (!tblgen_type) return emitError(loc, "'struct.member' op requires attribute 'type'");
403
404 if (tblgen_sym_name && !((::llvm::isa<::mlir::StringAttr>(tblgen_sym_name))))
405 return emitError(loc, "'struct.member' op attribute 'sym_name' failed to satisfy constraint: string attribute");
406
407 if (tblgen_type && !(((::llvm::isa<::mlir::TypeAttr>(tblgen_type))) && ((::llvm::isa<::mlir::Type>(::llvm::cast<::mlir::TypeAttr>(tblgen_type).getValue()))) && ((::llzk::isValidType(::llvm::cast<::mlir::TypeAttr>(tblgen_type).getValue())))))
408 return emitError(loc, "'struct.member' op attribute 'type' failed to satisfy constraint: type attribute of a valid LLZK type");
409
410 if (tblgen_column && !((::llvm::isa<::mlir::UnitAttr>(tblgen_column))))
411 return emitError(loc, "'struct.member' op attribute 'column' failed to satisfy constraint: unit attribute");
412
413 if (tblgen_signal && !((::llvm::isa<::mlir::UnitAttr>(tblgen_signal))))
414 return emitError(loc, "'struct.member' op attribute 'signal' failed to satisfy constraint: unit attribute");
415 return ::mlir::success();
416}
417
418::llvm::LogicalResult MemberDefOp::setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) {
419 ::mlir::DictionaryAttr dict = ::llvm::dyn_cast<::mlir::DictionaryAttr>(attr);
420 if (!dict) {
421 emitError() << "expected DictionaryAttr to set properties";
422 return ::mlir::failure();
423 }
424
425 {
426 auto &propStorage = prop.column;
427 auto attr = dict.get("column");
428 if (attr) {
429 auto convertedAttr = ::llvm::dyn_cast<std::remove_reference_t<decltype(propStorage)>>(attr);
430 if (convertedAttr) {
431 propStorage = convertedAttr;
432 } else {
433 emitError() << "Invalid attribute `column` in property conversion: " << attr;
434 return ::mlir::failure();
435 }
436 }
437 }
438
439 {
440 auto &propStorage = prop.signal;
441 auto attr = dict.get("signal");
442 if (attr) {
443 auto convertedAttr = ::llvm::dyn_cast<std::remove_reference_t<decltype(propStorage)>>(attr);
444 if (convertedAttr) {
445 propStorage = convertedAttr;
446 } else {
447 emitError() << "Invalid attribute `signal` in property conversion: " << attr;
448 return ::mlir::failure();
449 }
450 }
451 }
452
453 {
454 auto &propStorage = prop.sym_name;
455 auto attr = dict.get("sym_name");
456 if (attr) {
457 auto convertedAttr = ::llvm::dyn_cast<std::remove_reference_t<decltype(propStorage)>>(attr);
458 if (convertedAttr) {
459 propStorage = convertedAttr;
460 } else {
461 emitError() << "Invalid attribute `sym_name` in property conversion: " << attr;
462 return ::mlir::failure();
463 }
464 }
465 }
466
467 {
468 auto &propStorage = prop.type;
469 auto attr = dict.get("type");
470 if (attr) {
471 auto convertedAttr = ::llvm::dyn_cast<std::remove_reference_t<decltype(propStorage)>>(attr);
472 if (convertedAttr) {
473 propStorage = convertedAttr;
474 } else {
475 emitError() << "Invalid attribute `type` in property conversion: " << attr;
476 return ::mlir::failure();
477 }
478 }
479 }
480 return ::mlir::success();
481}
482
483::mlir::Attribute MemberDefOp::getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop) {
484 ::mlir::SmallVector<::mlir::NamedAttribute> attrs;
485 ::mlir::Builder odsBuilder{ctx};
486
487 {
488 const auto &propStorage = prop.column;
489 if (propStorage)
490 attrs.push_back(odsBuilder.getNamedAttr("column",
491 propStorage));
492 }
493
494 {
495 const auto &propStorage = prop.signal;
496 if (propStorage)
497 attrs.push_back(odsBuilder.getNamedAttr("signal",
498 propStorage));
499 }
500
501 {
502 const auto &propStorage = prop.sym_name;
503 if (propStorage)
504 attrs.push_back(odsBuilder.getNamedAttr("sym_name",
505 propStorage));
506 }
507
508 {
509 const auto &propStorage = prop.type;
510 if (propStorage)
511 attrs.push_back(odsBuilder.getNamedAttr("type",
512 propStorage));
513 }
514
515 if (!attrs.empty())
516 return odsBuilder.getDictionaryAttr(attrs);
517 return {};
518}
519
520llvm::hash_code MemberDefOp::computePropertiesHash(const Properties &prop) {
521 using llvm::hash_value;
522 return llvm::hash_combine(
523 llvm::hash_value(prop.column.getAsOpaquePointer()),
524 llvm::hash_value(prop.signal.getAsOpaquePointer()),
525 llvm::hash_value(prop.sym_name.getAsOpaquePointer()),
526 llvm::hash_value(prop.type.getAsOpaquePointer()));
527}
528
529std::optional<mlir::Attribute> MemberDefOp::getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name) {
530 if (name == "column")
531 return prop.column;
532
533 if (name == "signal")
534 return prop.signal;
535
536 if (name == "sym_name")
537 return prop.sym_name;
538
539 if (name == "type")
540 return prop.type;
541 return std::nullopt;
542}
543
544void MemberDefOp::setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value) {
545 if (name == "column") {
546 prop.column = ::llvm::dyn_cast_or_null<std::remove_reference_t<decltype(prop.column)>>(value);
547 return;
548 }
549
550 if (name == "signal") {
551 prop.signal = ::llvm::dyn_cast_or_null<std::remove_reference_t<decltype(prop.signal)>>(value);
552 return;
553 }
554
555 if (name == "sym_name") {
556 prop.sym_name = ::llvm::dyn_cast_or_null<std::remove_reference_t<decltype(prop.sym_name)>>(value);
557 return;
558 }
559
560 if (name == "type") {
561 prop.type = ::llvm::dyn_cast_or_null<std::remove_reference_t<decltype(prop.type)>>(value);
562 return;
563 }
564}
565
566void MemberDefOp::populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs) {
567 if (prop.column) attrs.append("column", prop.column);
568
569 if (prop.signal) attrs.append("signal", prop.signal);
570
571 if (prop.sym_name) attrs.append("sym_name", prop.sym_name);
572
573 if (prop.type) attrs.append("type", prop.type);
574}
575
576::llvm::LogicalResult MemberDefOp::verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) {
577 {
578 ::mlir::Attribute attr = attrs.get(getColumnAttrName(opName));
579 if (attr && ::mlir::failed(__mlir_ods_local_attr_constraint_Ops3(attr, "column", emitError)))
580 return ::mlir::failure();
581 }
582
583 {
584 ::mlir::Attribute attr = attrs.get(getSignalAttrName(opName));
585 if (attr && ::mlir::failed(__mlir_ods_local_attr_constraint_Ops3(attr, "signal", emitError)))
586 return ::mlir::failure();
587 }
588
589 {
590 ::mlir::Attribute attr = attrs.get(getSymNameAttrName(opName));
591 if (attr && ::mlir::failed(__mlir_ods_local_attr_constraint_Ops1(attr, "sym_name", emitError)))
592 return ::mlir::failure();
593 }
594
595 {
596 ::mlir::Attribute attr = attrs.get(getTypeAttrName(opName));
597 if (attr && ::mlir::failed(__mlir_ods_local_attr_constraint_Ops2(attr, "type", emitError)))
598 return ::mlir::failure();
599 }
600 return ::mlir::success();
601}
602
603::llvm::LogicalResult MemberDefOp::readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state) {
604 auto &prop = state.getOrAddProperties<Properties>(); (void)prop;
605 if (::mlir::failed(reader.readOptionalAttribute(prop.column)))
606 return ::mlir::failure();
607
608 if (::mlir::failed(reader.readOptionalAttribute(prop.signal)))
609 return ::mlir::failure();
610
611 if (::mlir::failed(reader.readAttribute(prop.sym_name)))
612 return ::mlir::failure();
613
614 if (::mlir::failed(reader.readAttribute(prop.type)))
615 return ::mlir::failure();
616 return ::mlir::success();
617}
618
619void MemberDefOp::writeProperties(::mlir::DialectBytecodeWriter &writer) {
620 auto &prop = getProperties(); (void)prop;
621
622 writer.writeOptionalAttribute(prop.column);
623
624 writer.writeOptionalAttribute(prop.signal);
625 writer.writeAttribute(prop.sym_name);
626 writer.writeAttribute(prop.type);
627}
628
629::llvm::StringRef MemberDefOp::getSymName() {
630 auto attr = getSymNameAttr();
631 return attr.getValue();
632}
633
634::mlir::Type MemberDefOp::getType() {
635 auto attr = getTypeAttr();
636 return ::llvm::cast<::mlir::Type>(attr.getValue());
637}
638
640 auto attr = getColumnAttr();
641 if (!attr)
642 return ((false) ? ::mlir::Builder((*this)->getContext()).getUnitAttr() : nullptr) != nullptr;
643 return attr != nullptr;
644}
645
647 auto attr = getSignalAttr();
648 if (!attr)
649 return ((false) ? ::mlir::Builder((*this)->getContext()).getUnitAttr() : nullptr) != nullptr;
650 return attr != nullptr;
651}
652
653void MemberDefOp::setSymName(::llvm::StringRef attrValue) {
654 getProperties().sym_name = ::mlir::Builder((*this)->getContext()).getStringAttr(attrValue);
655}
656
657void MemberDefOp::setType(::mlir::Type attrValue) {
658 getProperties().type = ::mlir::TypeAttr::get(attrValue);
659}
660
661void MemberDefOp::setColumn(bool attrValue) {
662 auto &odsProp = getProperties().column;
663 if (attrValue)
664 odsProp = ((attrValue) ? ::mlir::Builder((*this)->getContext()).getUnitAttr() : nullptr);
665 else
666 odsProp = nullptr;
667}
668
669void MemberDefOp::setSignal(bool attrValue) {
670 auto &odsProp = getProperties().signal;
671 if (attrValue)
672 odsProp = ((attrValue) ? ::mlir::Builder((*this)->getContext()).getUnitAttr() : nullptr);
673 else
674 odsProp = nullptr;
675}
676
677MemberDefOp MemberDefOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::StringAttr sym_name, ::mlir::TypeAttr type, bool isSignal, bool isColumn) {
678 ::mlir::OperationState __state__(location, getOperationName());
679 build(builder, __state__, std::forward<decltype(sym_name)>(sym_name), std::forward<decltype(type)>(type), std::forward<decltype(isSignal)>(isSignal), std::forward<decltype(isColumn)>(isColumn));
680 auto __res__ = ::llvm::dyn_cast<MemberDefOp>(builder.create(__state__));
681 assert(__res__ && "builder didn't return the right type");
682 return __res__;
683}
684
685MemberDefOp MemberDefOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::StringAttr sym_name, ::mlir::TypeAttr type, bool isSignal, bool isColumn) {
686 return create(builder, builder.getLoc(), std::forward<decltype(sym_name)>(sym_name), std::forward<decltype(type)>(type), std::forward<decltype(isSignal)>(isSignal), std::forward<decltype(isColumn)>(isColumn));
687}
688
689MemberDefOp MemberDefOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::llvm::StringRef sym_name, ::mlir::Type type, bool isSignal, bool isColumn) {
690 ::mlir::OperationState __state__(location, getOperationName());
691 build(builder, __state__, std::forward<decltype(sym_name)>(sym_name), std::forward<decltype(type)>(type), std::forward<decltype(isSignal)>(isSignal), std::forward<decltype(isColumn)>(isColumn));
692 auto __res__ = ::llvm::dyn_cast<MemberDefOp>(builder.create(__state__));
693 assert(__res__ && "builder didn't return the right type");
694 return __res__;
695}
696
697MemberDefOp MemberDefOp::create(::mlir::ImplicitLocOpBuilder &builder, ::llvm::StringRef sym_name, ::mlir::Type type, bool isSignal, bool isColumn) {
698 return create(builder, builder.getLoc(), std::forward<decltype(sym_name)>(sym_name), std::forward<decltype(type)>(type), std::forward<decltype(isSignal)>(isSignal), std::forward<decltype(isColumn)>(isColumn));
699}
700
701MemberDefOp MemberDefOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes, bool isSignal, bool isColumn) {
702 ::mlir::OperationState __state__(location, getOperationName());
703 build(builder, __state__, std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(operands)>(operands), std::forward<decltype(attributes)>(attributes), std::forward<decltype(isSignal)>(isSignal), std::forward<decltype(isColumn)>(isColumn));
704 auto __res__ = ::llvm::dyn_cast<MemberDefOp>(builder.create(__state__));
705 assert(__res__ && "builder didn't return the right type");
706 return __res__;
707}
708
709MemberDefOp MemberDefOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes, bool isSignal, bool isColumn) {
710 return create(builder, builder.getLoc(), std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(operands)>(operands), std::forward<decltype(attributes)>(attributes), std::forward<decltype(isSignal)>(isSignal), std::forward<decltype(isColumn)>(isColumn));
711}
712
713void MemberDefOp::build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes, bool isSignal, bool isColumn) {
714 build(odsBuilder, odsState, {}, {}, attributes, isSignal, isColumn);
715}
716
717MemberDefOp MemberDefOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes, bool isSignal, bool isColumn) {
718 ::mlir::OperationState __state__(location, getOperationName());
719 build(builder, __state__, std::forward<decltype(attributes)>(attributes), std::forward<decltype(isSignal)>(isSignal), std::forward<decltype(isColumn)>(isColumn));
720 auto __res__ = ::llvm::dyn_cast<MemberDefOp>(builder.create(__state__));
721 assert(__res__ && "builder didn't return the right type");
722 return __res__;
723}
724
725MemberDefOp MemberDefOp::create(::mlir::ImplicitLocOpBuilder &builder, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes, bool isSignal, bool isColumn) {
726 return create(builder, builder.getLoc(), std::forward<decltype(attributes)>(attributes), std::forward<decltype(isSignal)>(isSignal), std::forward<decltype(isColumn)>(isColumn));
727}
728
729::llvm::LogicalResult MemberDefOp::verifyInvariantsImpl() {
730 auto tblgen_column = getProperties().column; (void)tblgen_column;
731 auto tblgen_signal = getProperties().signal; (void)tblgen_signal;
732 auto tblgen_sym_name = getProperties().sym_name; (void)tblgen_sym_name;
733 if (!tblgen_sym_name) return emitOpError("requires attribute 'sym_name'");
734 auto tblgen_type = getProperties().type; (void)tblgen_type;
735 if (!tblgen_type) return emitOpError("requires attribute 'type'");
736
737 if (::mlir::failed(__mlir_ods_local_attr_constraint_Ops1(*this, tblgen_sym_name, "sym_name")))
738 return ::mlir::failure();
739
740 if (::mlir::failed(__mlir_ods_local_attr_constraint_Ops2(*this, tblgen_type, "type")))
741 return ::mlir::failure();
742
743 if (::mlir::failed(__mlir_ods_local_attr_constraint_Ops3(*this, tblgen_column, "column")))
744 return ::mlir::failure();
745
746 if (::mlir::failed(__mlir_ods_local_attr_constraint_Ops3(*this, tblgen_signal, "signal")))
747 return ::mlir::failure();
748 return ::mlir::success();
749}
750
751::llvm::LogicalResult MemberDefOp::verifyInvariants() {
752 if(::mlir::succeeded(verifyInvariantsImpl()) && ::mlir::succeeded(verify()))
753 return ::mlir::success();
754 return ::mlir::failure();
755}
756
757::mlir::ParseResult MemberDefOp::parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result) {
758 ::mlir::StringAttr sym_nameAttr;
759 ::mlir::TypeAttr typeAttr;
760
761 if (parser.parseSymbolName(sym_nameAttr))
762 return ::mlir::failure();
763 if (sym_nameAttr) result.getOrAddProperties<MemberDefOp::Properties>().sym_name = sym_nameAttr;
764 if (parser.parseColon())
765 return ::mlir::failure();
766
767 if (parser.parseCustomAttributeWithFallback(typeAttr, parser.getBuilder().getType<::mlir::NoneType>())) {
768 return ::mlir::failure();
769 }
770 if (typeAttr) result.getOrAddProperties<MemberDefOp::Properties>().type = typeAttr;
771 {
772 auto loc = parser.getCurrentLocation();(void)loc;
773 if (parser.parseOptionalAttrDict(result.attributes))
774 return ::mlir::failure();
775 if (failed(verifyInherentAttrs(result.name, result.attributes, [&]() {
776 return parser.emitError(loc) << "'" << result.name.getStringRef() << "' op ";
777 })))
778 return ::mlir::failure();
779 }
780 return ::mlir::success();
781}
782
783void MemberDefOp::print(::mlir::OpAsmPrinter &_odsPrinter) {
784 _odsPrinter << ' ';
785 _odsPrinter.printSymbolName(getSymNameAttr().getValue());
786 _odsPrinter << ' ' << ":";
787 _odsPrinter << ' ';
788 _odsPrinter.printAttributeWithoutType(getTypeAttr());
789 ::llvm::SmallVector<::llvm::StringRef, 2> elidedAttrs;
790 elidedAttrs.push_back("sym_name");
791 elidedAttrs.push_back("type");
792 {
793 ::mlir::Builder odsBuilder(getContext());
794 ::mlir::Attribute attr = getColumnAttr();
795 if(attr && (attr == ((false) ? odsBuilder.getUnitAttr() : nullptr)))
796 elidedAttrs.push_back("column");
797 }
798 {
799 ::mlir::Builder odsBuilder(getContext());
800 ::mlir::Attribute attr = getSignalAttr();
801 if(attr && (attr == ((false) ? odsBuilder.getUnitAttr() : nullptr)))
802 elidedAttrs.push_back("signal");
803 }
804 _odsPrinter.printOptionalAttrDict((*this)->getAttrs(), elidedAttrs);
805}
806
807
808} // namespace llzk::component
809MLIR_DEFINE_EXPLICIT_TYPE_ID(::llzk::component::MemberDefOp)
811
812namespace llzk::component {
813
814
815//===----------------------------------------------------------------------===//
816// ::llzk::component::MemberReadOp definitions
817//===----------------------------------------------------------------------===//
818
819namespace detail {
820
821MemberReadOpGenericAdaptorBase::MemberReadOpGenericAdaptorBase(MemberReadOp op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), properties(op.getProperties()), odsRegions(op->getRegions()) {}
822
823std::pair<unsigned, unsigned> MemberReadOpGenericAdaptorBase::getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) {
824 bool isVariadic[] = {false, true};
825 int prevVariadicCount = 0;
826 for (unsigned i = 0; i < index; ++i)
827 if (isVariadic[i]) ++prevVariadicCount;
828
829 // Calculate how many dynamic values a static variadic operand corresponds to.
830 // This assumes all static variadic operands have the same dynamic value count.
831 int variadicSize = (odsOperandsSize - 1) / 1;
832 // `index` passed in as the parameter is the static index which counts each
833 // operand (variadic or not) as size 1. So here for each previous static variadic
834 // operand, we need to offset by (variadicSize - 1) to get where the dynamic
835 // value pack for this static operand starts.
836 int start = index + (variadicSize - 1) * prevVariadicCount;
837 int size = isVariadic[index] ? variadicSize : 1;
838 return {start, size};
839}
840
842 auto attr = getMemberNameAttr();
843 return attr.getValue();
844}
845
846::std::optional<::mlir::Attribute> MemberReadOpGenericAdaptorBase::getTableOffset() {
847 auto attr = getTableOffsetAttr();
848 return attr ? ::std::optional<::mlir::Attribute>(attr) : (::std::nullopt);
849}
850
852 auto attr = ::llvm::dyn_cast_or_null<::mlir::DenseI32ArrayAttr>(getProperties().numDimsPerMap);
853 return attr;
854}
855
857 auto attr = getNumDimsPerMapAttr();
858 return attr;
859}
860
862 auto attr = getMapOpGroupSizesAttr();
863 return attr;
864}
865
866
867} // namespace detail
869
870::llvm::LogicalResult MemberReadOpAdaptor::verify(::mlir::Location loc) {
871 auto tblgen_mapOpGroupSizes = getProperties().mapOpGroupSizes; (void)tblgen_mapOpGroupSizes;
872 if (!tblgen_mapOpGroupSizes) return emitError(loc, "'struct.readm' op requires attribute 'mapOpGroupSizes'");
873 auto tblgen_member_name = getProperties().member_name; (void)tblgen_member_name;
874 if (!tblgen_member_name) return emitError(loc, "'struct.readm' op requires attribute 'member_name'");
875 auto tblgen_numDimsPerMap = getProperties().numDimsPerMap; (void)tblgen_numDimsPerMap;
876 auto tblgen_tableOffset = getProperties().tableOffset; (void)tblgen_tableOffset;
877
878 if (tblgen_member_name && !((::llvm::isa<::mlir::FlatSymbolRefAttr>(tblgen_member_name))))
879 return emitError(loc, "'struct.readm' op attribute 'member_name' failed to satisfy constraint: flat symbol reference attribute");
880
881 if (tblgen_tableOffset && !(((::llvm::isa<::mlir::SymbolRefAttr>(tblgen_tableOffset))) || (((::llvm::isa<::mlir::IntegerAttr>(tblgen_tableOffset))) && ((::llvm::isa<::mlir::IndexType>(::llvm::cast<::mlir::IntegerAttr>(tblgen_tableOffset).getType())))) || ((::llvm::isa<::mlir::AffineMapAttr>(tblgen_tableOffset)))))
882 return emitError(loc, "'struct.readm' op attribute 'tableOffset' failed to satisfy constraint: symbol reference attribute or index attribute or AffineMap attribute");
883
884 if (tblgen_numDimsPerMap && !((::llvm::isa<::mlir::DenseI32ArrayAttr>(tblgen_numDimsPerMap))))
885 return emitError(loc, "'struct.readm' op attribute 'numDimsPerMap' failed to satisfy constraint: i32 dense array attribute");
886
887 if (tblgen_mapOpGroupSizes && !((::llvm::isa<::mlir::DenseI32ArrayAttr>(tblgen_mapOpGroupSizes))))
888 return emitError(loc, "'struct.readm' op attribute 'mapOpGroupSizes' failed to satisfy constraint: i32 dense array attribute");
889 return ::mlir::success();
890}
891
892std::pair<unsigned, unsigned> MemberReadOp::getODSOperandIndexAndLength(unsigned index) {
893 bool isVariadic[] = {false, true};
894 int prevVariadicCount = 0;
895 for (unsigned i = 0; i < index; ++i)
896 if (isVariadic[i]) ++prevVariadicCount;
897
898 // Calculate how many dynamic values a static variadic operand corresponds to.
899 // This assumes all static variadic operands have the same dynamic value count.
900 int variadicSize = (getOperation()->getNumOperands() - 1) / 1;
901 // `index` passed in as the parameter is the static index which counts each
902 // operand (variadic or not) as size 1. So here for each previous static variadic
903 // operand, we need to offset by (variadicSize - 1) to get where the dynamic
904 // value pack for this static operand starts.
905 int start = index + (variadicSize - 1) * prevVariadicCount;
906 int size = isVariadic[index] ? variadicSize : 1;
907 return {start, size};
908}
909
910::mlir::MutableOperandRangeRange MemberReadOp::getMapOperandsMutable() {
911 auto range = getODSOperandIndexAndLength(1);
912 auto mutableRange = ::mlir::MutableOperandRange(getOperation(), range.first, range.second);
913 return mutableRange.split(*(*this)->getAttrDictionary().getNamed(getMapOpGroupSizesAttrName()));
914}
915
916::llvm::LogicalResult MemberReadOp::setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) {
917 ::mlir::DictionaryAttr dict = ::llvm::dyn_cast<::mlir::DictionaryAttr>(attr);
918 if (!dict) {
919 emitError() << "expected DictionaryAttr to set properties";
920 return ::mlir::failure();
921 }
922
923 {
924 auto &propStorage = prop.mapOpGroupSizes;
925 auto attr = dict.get("mapOpGroupSizes");
926 if (attr) {
927 auto convertedAttr = ::llvm::dyn_cast<std::remove_reference_t<decltype(propStorage)>>(attr);
928 if (convertedAttr) {
929 propStorage = convertedAttr;
930 } else {
931 emitError() << "Invalid attribute `mapOpGroupSizes` in property conversion: " << attr;
932 return ::mlir::failure();
933 }
934 }
935 }
936
937 {
938 auto &propStorage = prop.member_name;
939 auto attr = dict.get("member_name");
940 if (attr) {
941 auto convertedAttr = ::llvm::dyn_cast<std::remove_reference_t<decltype(propStorage)>>(attr);
942 if (convertedAttr) {
943 propStorage = convertedAttr;
944 } else {
945 emitError() << "Invalid attribute `member_name` in property conversion: " << attr;
946 return ::mlir::failure();
947 }
948 }
949 }
950
951 {
952 auto &propStorage = prop.numDimsPerMap;
953 auto attr = dict.get("numDimsPerMap");
954 if (attr) {
955 auto convertedAttr = ::llvm::dyn_cast<std::remove_reference_t<decltype(propStorage)>>(attr);
956 if (convertedAttr) {
957 propStorage = convertedAttr;
958 } else {
959 emitError() << "Invalid attribute `numDimsPerMap` in property conversion: " << attr;
960 return ::mlir::failure();
961 }
962 }
963 }
964
965 {
966 auto &propStorage = prop.tableOffset;
967 auto attr = dict.get("tableOffset");
968 if (attr) {
969 auto convertedAttr = ::llvm::dyn_cast<std::remove_reference_t<decltype(propStorage)>>(attr);
970 if (convertedAttr) {
971 propStorage = convertedAttr;
972 } else {
973 emitError() << "Invalid attribute `tableOffset` in property conversion: " << attr;
974 return ::mlir::failure();
975 }
976 }
977 }
978 return ::mlir::success();
979}
980
981::mlir::Attribute MemberReadOp::getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop) {
982 ::mlir::SmallVector<::mlir::NamedAttribute> attrs;
983 ::mlir::Builder odsBuilder{ctx};
984
985 {
986 const auto &propStorage = prop.mapOpGroupSizes;
987 if (propStorage)
988 attrs.push_back(odsBuilder.getNamedAttr("mapOpGroupSizes",
989 propStorage));
990 }
991
992 {
993 const auto &propStorage = prop.member_name;
994 if (propStorage)
995 attrs.push_back(odsBuilder.getNamedAttr("member_name",
996 propStorage));
997 }
998
999 {
1000 const auto &propStorage = prop.numDimsPerMap;
1001 if (propStorage)
1002 attrs.push_back(odsBuilder.getNamedAttr("numDimsPerMap",
1003 propStorage));
1004 }
1005
1006 {
1007 const auto &propStorage = prop.tableOffset;
1008 if (propStorage)
1009 attrs.push_back(odsBuilder.getNamedAttr("tableOffset",
1010 propStorage));
1011 }
1012
1013 if (!attrs.empty())
1014 return odsBuilder.getDictionaryAttr(attrs);
1015 return {};
1016}
1017
1019 using llvm::hash_value;
1020 return llvm::hash_combine(
1021 llvm::hash_value(prop.mapOpGroupSizes.getAsOpaquePointer()),
1022 llvm::hash_value(prop.member_name.getAsOpaquePointer()),
1023 llvm::hash_value(prop.numDimsPerMap.getAsOpaquePointer()),
1024 llvm::hash_value(prop.tableOffset.getAsOpaquePointer()));
1025}
1026
1027std::optional<mlir::Attribute> MemberReadOp::getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name) {
1028 if (name == "mapOpGroupSizes")
1029 return prop.mapOpGroupSizes;
1030
1031 if (name == "member_name")
1032 return prop.member_name;
1033
1034 if (name == "numDimsPerMap")
1035 return prop.numDimsPerMap;
1036
1037 if (name == "tableOffset")
1038 return prop.tableOffset;
1039 return std::nullopt;
1040}
1041
1042void MemberReadOp::setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value) {
1043 if (name == "mapOpGroupSizes") {
1044 prop.mapOpGroupSizes = ::llvm::dyn_cast_or_null<std::remove_reference_t<decltype(prop.mapOpGroupSizes)>>(value);
1045 return;
1046 }
1047
1048 if (name == "member_name") {
1049 prop.member_name = ::llvm::dyn_cast_or_null<std::remove_reference_t<decltype(prop.member_name)>>(value);
1050 return;
1051 }
1052
1053 if (name == "numDimsPerMap") {
1054 prop.numDimsPerMap = ::llvm::dyn_cast_or_null<std::remove_reference_t<decltype(prop.numDimsPerMap)>>(value);
1055 return;
1056 }
1057
1058 if (name == "tableOffset") {
1059 prop.tableOffset = ::llvm::dyn_cast_or_null<std::remove_reference_t<decltype(prop.tableOffset)>>(value);
1060 return;
1061 }
1062}
1063
1064void MemberReadOp::populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs) {
1065 if (prop.mapOpGroupSizes) attrs.append("mapOpGroupSizes", prop.mapOpGroupSizes);
1066
1067 if (prop.member_name) attrs.append("member_name", prop.member_name);
1068
1069 if (prop.numDimsPerMap) attrs.append("numDimsPerMap", prop.numDimsPerMap);
1070
1071 if (prop.tableOffset) attrs.append("tableOffset", prop.tableOffset);
1072}
1073
1074::llvm::LogicalResult MemberReadOp::verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) {
1075 {
1076 ::mlir::Attribute attr = attrs.get(getMapOpGroupSizesAttrName(opName));
1077 if (attr && ::mlir::failed(__mlir_ods_local_attr_constraint_Ops6(attr, "mapOpGroupSizes", emitError)))
1078 return ::mlir::failure();
1079 }
1080
1081 {
1082 ::mlir::Attribute attr = attrs.get(getMemberNameAttrName(opName));
1083 if (attr && ::mlir::failed(__mlir_ods_local_attr_constraint_Ops4(attr, "member_name", emitError)))
1084 return ::mlir::failure();
1085 }
1086
1087 {
1088 ::mlir::Attribute attr = attrs.get(getNumDimsPerMapAttrName(opName));
1089 if (attr && ::mlir::failed(__mlir_ods_local_attr_constraint_Ops6(attr, "numDimsPerMap", emitError)))
1090 return ::mlir::failure();
1091 }
1092
1093 {
1094 ::mlir::Attribute attr = attrs.get(getTableOffsetAttrName(opName));
1095 if (attr && ::mlir::failed(__mlir_ods_local_attr_constraint_Ops5(attr, "tableOffset", emitError)))
1096 return ::mlir::failure();
1097 }
1098 return ::mlir::success();
1099}
1100
1101::llvm::LogicalResult MemberReadOp::readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state) {
1102 auto &prop = state.getOrAddProperties<Properties>(); (void)prop;
1103 if (::mlir::failed(reader.readAttribute(prop.mapOpGroupSizes)))
1104 return ::mlir::failure();
1105
1106 if (::mlir::failed(reader.readAttribute(prop.member_name)))
1107 return ::mlir::failure();
1108
1109 if (::mlir::failed(reader.readOptionalAttribute(prop.numDimsPerMap)))
1110 return ::mlir::failure();
1111
1112 if (::mlir::failed(reader.readOptionalAttribute(prop.tableOffset)))
1113 return ::mlir::failure();
1114 return ::mlir::success();
1115}
1116
1117void MemberReadOp::writeProperties(::mlir::DialectBytecodeWriter &writer) {
1118 auto &prop = getProperties(); (void)prop;
1119 writer.writeAttribute(prop.mapOpGroupSizes);
1120 writer.writeAttribute(prop.member_name);
1121
1122 writer.writeOptionalAttribute(prop.numDimsPerMap);
1123
1124 writer.writeOptionalAttribute(prop.tableOffset);
1125}
1126
1127::llvm::StringRef MemberReadOp::getMemberName() {
1128 auto attr = getMemberNameAttr();
1129 return attr.getValue();
1130}
1131
1132::std::optional<::mlir::Attribute> MemberReadOp::getTableOffset() {
1133 auto attr = getTableOffsetAttr();
1134 return attr ? ::std::optional<::mlir::Attribute>(attr) : (::std::nullopt);
1135}
1136
1137::llvm::ArrayRef<int32_t> MemberReadOp::getNumDimsPerMap() {
1138 auto attr = getNumDimsPerMapAttr();
1139 return attr;
1140}
1141
1142::llvm::ArrayRef<int32_t> MemberReadOp::getMapOpGroupSizes() {
1143 auto attr = getMapOpGroupSizesAttr();
1144 return attr;
1145}
1146
1147void MemberReadOp::setMemberName(::llvm::StringRef attrValue) {
1148 getProperties().member_name = ::mlir::SymbolRefAttr::get(::mlir::Builder((*this)->getContext()).getContext(), attrValue);
1149}
1150
1151void MemberReadOp::setNumDimsPerMap(::llvm::ArrayRef<int32_t> attrValue) {
1152 getProperties().numDimsPerMap = ::mlir::Builder((*this)->getContext()).getDenseI32ArrayAttr(attrValue);
1153}
1154
1155void MemberReadOp::setMapOpGroupSizes(::llvm::ArrayRef<int32_t> attrValue) {
1156 getProperties().mapOpGroupSizes = ::mlir::Builder((*this)->getContext()).getDenseI32ArrayAttr(attrValue);
1157}
1158
1159MemberReadOp MemberReadOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type resultType, ::mlir::Value component, ::mlir::StringAttr member) {
1160 ::mlir::OperationState __state__(location, getOperationName());
1161 build(builder, __state__, std::forward<decltype(resultType)>(resultType), std::forward<decltype(component)>(component), std::forward<decltype(member)>(member));
1162 auto __res__ = ::llvm::dyn_cast<MemberReadOp>(builder.create(__state__));
1163 assert(__res__ && "builder didn't return the right type");
1164 return __res__;
1165}
1166
1167MemberReadOp MemberReadOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type resultType, ::mlir::Value component, ::mlir::StringAttr member) {
1168 return create(builder, builder.getLoc(), std::forward<decltype(resultType)>(resultType), std::forward<decltype(component)>(component), std::forward<decltype(member)>(member));
1169}
1170
1171MemberReadOp MemberReadOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type resultType, ::mlir::Value component, ::mlir::StringAttr member, ::mlir::Attribute dist, ::mlir::ValueRange mapOperands, std::optional<int32_t> numDims) {
1172 ::mlir::OperationState __state__(location, getOperationName());
1173 build(builder, __state__, std::forward<decltype(resultType)>(resultType), std::forward<decltype(component)>(component), std::forward<decltype(member)>(member), std::forward<decltype(dist)>(dist), std::forward<decltype(mapOperands)>(mapOperands), std::forward<decltype(numDims)>(numDims));
1174 auto __res__ = ::llvm::dyn_cast<MemberReadOp>(builder.create(__state__));
1175 assert(__res__ && "builder didn't return the right type");
1176 return __res__;
1177}
1178
1179MemberReadOp MemberReadOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type resultType, ::mlir::Value component, ::mlir::StringAttr member, ::mlir::Attribute dist, ::mlir::ValueRange mapOperands, std::optional<int32_t> numDims) {
1180 return create(builder, builder.getLoc(), std::forward<decltype(resultType)>(resultType), std::forward<decltype(component)>(component), std::forward<decltype(member)>(member), std::forward<decltype(dist)>(dist), std::forward<decltype(mapOperands)>(mapOperands), std::forward<decltype(numDims)>(numDims));
1181}
1182
1183void MemberReadOp::build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type resultType, ::mlir::Value component, ::mlir::StringAttr member, ::mlir::SymbolRefAttr dist) {
1184 build(odsBuilder, odsState, resultType, component, member, dist, ::mlir::ValueRange(), std::nullopt);
1185
1186}
1187
1188MemberReadOp MemberReadOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type resultType, ::mlir::Value component, ::mlir::StringAttr member, ::mlir::SymbolRefAttr dist) {
1189 ::mlir::OperationState __state__(location, getOperationName());
1190 build(builder, __state__, std::forward<decltype(resultType)>(resultType), std::forward<decltype(component)>(component), std::forward<decltype(member)>(member), std::forward<decltype(dist)>(dist));
1191 auto __res__ = ::llvm::dyn_cast<MemberReadOp>(builder.create(__state__));
1192 assert(__res__ && "builder didn't return the right type");
1193 return __res__;
1194}
1195
1196MemberReadOp MemberReadOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type resultType, ::mlir::Value component, ::mlir::StringAttr member, ::mlir::SymbolRefAttr dist) {
1197 return create(builder, builder.getLoc(), std::forward<decltype(resultType)>(resultType), std::forward<decltype(component)>(component), std::forward<decltype(member)>(member), std::forward<decltype(dist)>(dist));
1198}
1199
1200void MemberReadOp::build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type resultType, ::mlir::Value component, ::mlir::StringAttr member, ::mlir::IntegerAttr dist) {
1201 build(odsBuilder, odsState, resultType, component, member, dist, ::mlir::ValueRange(), std::nullopt);
1202
1203}
1204
1205MemberReadOp MemberReadOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type resultType, ::mlir::Value component, ::mlir::StringAttr member, ::mlir::IntegerAttr dist) {
1206 ::mlir::OperationState __state__(location, getOperationName());
1207 build(builder, __state__, std::forward<decltype(resultType)>(resultType), std::forward<decltype(component)>(component), std::forward<decltype(member)>(member), std::forward<decltype(dist)>(dist));
1208 auto __res__ = ::llvm::dyn_cast<MemberReadOp>(builder.create(__state__));
1209 assert(__res__ && "builder didn't return the right type");
1210 return __res__;
1211}
1212
1213MemberReadOp MemberReadOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type resultType, ::mlir::Value component, ::mlir::StringAttr member, ::mlir::IntegerAttr dist) {
1214 return create(builder, builder.getLoc(), std::forward<decltype(resultType)>(resultType), std::forward<decltype(component)>(component), std::forward<decltype(member)>(member), std::forward<decltype(dist)>(dist));
1215}
1216
1217MemberReadOp MemberReadOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::mlir::ArrayRef<::mlir::NamedAttribute> attrs) {
1218 ::mlir::OperationState __state__(location, getOperationName());
1219 build(builder, __state__, std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(operands)>(operands), std::forward<decltype(attrs)>(attrs));
1220 auto __res__ = ::llvm::dyn_cast<MemberReadOp>(builder.create(__state__));
1221 assert(__res__ && "builder didn't return the right type");
1222 return __res__;
1223}
1224
1225MemberReadOp MemberReadOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::mlir::ArrayRef<::mlir::NamedAttribute> attrs) {
1226 return create(builder, builder.getLoc(), std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(operands)>(operands), std::forward<decltype(attrs)>(attrs));
1227}
1228
1229void MemberReadOp::populateDefaultProperties(::mlir::OperationName opName, Properties &properties) {
1230 ::mlir::Builder odsBuilder(opName.getContext());
1231 if (!properties.numDimsPerMap)
1232 properties.numDimsPerMap = odsBuilder.getDenseI32ArrayAttr({});
1233}
1234
1235::llvm::LogicalResult MemberReadOp::verifyInvariantsImpl() {
1236 auto tblgen_mapOpGroupSizes = getProperties().mapOpGroupSizes; (void)tblgen_mapOpGroupSizes;
1237 if (!tblgen_mapOpGroupSizes) return emitOpError("requires attribute 'mapOpGroupSizes'");
1238 auto tblgen_member_name = getProperties().member_name; (void)tblgen_member_name;
1239 if (!tblgen_member_name) return emitOpError("requires attribute 'member_name'");
1240 auto tblgen_numDimsPerMap = getProperties().numDimsPerMap; (void)tblgen_numDimsPerMap;
1241 auto tblgen_tableOffset = getProperties().tableOffset; (void)tblgen_tableOffset;
1242
1243 if (::mlir::failed(__mlir_ods_local_attr_constraint_Ops4(*this, tblgen_member_name, "member_name")))
1244 return ::mlir::failure();
1245
1246 if (::mlir::failed(__mlir_ods_local_attr_constraint_Ops5(*this, tblgen_tableOffset, "tableOffset")))
1247 return ::mlir::failure();
1248
1249 if (::mlir::failed(__mlir_ods_local_attr_constraint_Ops6(*this, tblgen_numDimsPerMap, "numDimsPerMap")))
1250 return ::mlir::failure();
1251
1252 if (::mlir::failed(__mlir_ods_local_attr_constraint_Ops6(*this, tblgen_mapOpGroupSizes, "mapOpGroupSizes")))
1253 return ::mlir::failure();
1254 {
1255 unsigned index = 0; (void)index;
1256 auto valueGroup0 = getODSOperands(0);
1257
1258 for (auto v : valueGroup0) {
1259 if (::mlir::failed(__mlir_ods_local_type_constraint_Ops1(*this, v.getType(), "operand", index++)))
1260 return ::mlir::failure();
1261 }
1262 auto valueGroup1 = getODSOperands(1);
1263 if (::mlir::failed(::mlir::OpTrait::impl::verifyValueSizeAttr(*this, "mapOpGroupSizes", "mapOperands", valueGroup1.size())))
1264 return ::mlir::failure();
1265
1266 for (auto v : valueGroup1) {
1267 if (::mlir::failed(__mlir_ods_local_type_constraint_Ops2(*this, v.getType(), "operand", index++)))
1268 return ::mlir::failure();
1269 }
1270 }
1271 {
1272 unsigned index = 0; (void)index;
1273 auto valueGroup0 = getODSResults(0);
1274
1275 for (auto v : valueGroup0) {
1276 if (::mlir::failed(__mlir_ods_local_type_constraint_Ops3(*this, v.getType(), "result", index++)))
1277 return ::mlir::failure();
1278 }
1279 }
1280 return ::mlir::success();
1281}
1282
1283::llvm::LogicalResult MemberReadOp::verifyInvariants() {
1284 if(::mlir::succeeded(verifyInvariantsImpl()) && ::mlir::succeeded(verify()))
1285 return ::mlir::success();
1286 return ::mlir::failure();
1287}
1288
1289::mlir::ParseResult MemberReadOp::parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result) {
1290 ::mlir::OpAsmParser::UnresolvedOperand componentRawOperand{};
1291 ::llvm::ArrayRef<::mlir::OpAsmParser::UnresolvedOperand> componentOperands(&componentRawOperand, 1); ::llvm::SMLoc componentOperandsLoc;
1292 (void)componentOperandsLoc;
1293 ::mlir::FlatSymbolRefAttr member_nameAttr;
1294 ::llvm::SmallVector<::mlir::OpAsmParser::UnresolvedOperand, 4> mapOperandsOperands;
1295 llvm::SmallVector<int32_t> mapOperandsOperandGroupSizes;
1296 ::llvm::SMLoc mapOperandsOperandsLoc;
1297 (void)mapOperandsOperandsLoc;
1298 ::mlir::DenseI32ArrayAttr numDimsPerMapAttr;
1299 ::mlir::Type componentRawType{};
1300 ::llvm::ArrayRef<::mlir::Type> componentTypes(&componentRawType, 1);
1301 ::mlir::Type valRawType{};
1302 ::llvm::ArrayRef<::mlir::Type> valTypes(&valRawType, 1);
1303
1304 componentOperandsLoc = parser.getCurrentLocation();
1305 if (parser.parseOperand(componentRawOperand))
1306 return ::mlir::failure();
1307 if (parser.parseLSquare())
1308 return ::mlir::failure();
1309
1310 if (parser.parseCustomAttributeWithFallback(member_nameAttr, parser.getBuilder().getType<::mlir::NoneType>())) {
1311 return ::mlir::failure();
1312 }
1313 if (member_nameAttr) result.getOrAddProperties<MemberReadOp::Properties>().member_name = member_nameAttr;
1314 if (parser.parseRSquare())
1315 return ::mlir::failure();
1316 if (::mlir::succeeded(parser.parseOptionalLBrace())) {
1317 {
1318 mapOperandsOperandsLoc = parser.getCurrentLocation();
1319 ::llvm::SmallVector<::llvm::SmallVector<::mlir::OpAsmParser::UnresolvedOperand>> mapOperandsOperandGroups;
1320 auto odsResult = parseMultiDimAndSymbolList(parser, mapOperandsOperandGroups, numDimsPerMapAttr);
1321 if (odsResult) return ::mlir::failure();
1322 for (const auto &subRange : mapOperandsOperandGroups) {
1323 mapOperandsOperands.append(subRange.begin(), subRange.end());
1324 mapOperandsOperandGroupSizes.push_back(subRange.size());
1325 }
1326 if (numDimsPerMapAttr)
1327 result.getOrAddProperties<MemberReadOp::Properties>().numDimsPerMap = numDimsPerMapAttr;
1328 }
1329 if (parser.parseRBrace())
1330 return ::mlir::failure();
1331 }
1332 if (parser.parseColon())
1333 return ::mlir::failure();
1334
1335 {
1337 if (parser.parseCustomTypeWithFallback(type))
1338 return ::mlir::failure();
1339 componentRawType = type;
1340 }
1341 if (parser.parseComma())
1342 return ::mlir::failure();
1343
1344 {
1345 ::mlir::Type type;
1346 if (parser.parseCustomTypeWithFallback(type))
1347 return ::mlir::failure();
1348 valRawType = type;
1349 }
1350 {
1351 auto loc = parser.getCurrentLocation();(void)loc;
1352 if (parser.parseOptionalAttrDict(result.attributes))
1353 return ::mlir::failure();
1354 if (failed(verifyInherentAttrs(result.name, result.attributes, [&]() {
1355 return parser.emitError(loc) << "'" << result.name.getStringRef() << "' op ";
1356 })))
1357 return ::mlir::failure();
1358 }
1359 result.getOrAddProperties<MemberReadOp::Properties>().mapOpGroupSizes = parser.getBuilder().getDenseI32ArrayAttr(mapOperandsOperandGroupSizes);
1360 ::mlir::Type odsBuildableType0 = parser.getBuilder().getIndexType();
1361 result.addTypes(valTypes);
1362 if (parser.resolveOperands(componentOperands, componentTypes, componentOperandsLoc, result.operands))
1363 return ::mlir::failure();
1364 if (parser.resolveOperands(mapOperandsOperands, odsBuildableType0, mapOperandsOperandsLoc, result.operands))
1365 return ::mlir::failure();
1366 return ::mlir::success();
1367}
1368
1369void MemberReadOp::print(::mlir::OpAsmPrinter &_odsPrinter) {
1370 _odsPrinter << ' ';
1371 _odsPrinter << getComponent();
1372 _odsPrinter << "[";
1373 _odsPrinter.printAttributeWithoutType(getMemberNameAttr());
1374 _odsPrinter << "]";
1375 if (((!getMapOperands().empty()) || (getNumDimsPerMapAttr() != ::mlir::OpBuilder((*this)->getContext()).getDenseI32ArrayAttr({})))) {
1376 _odsPrinter << ' ' << "{";
1378 _odsPrinter << "}";
1379 }
1380 _odsPrinter << ' ' << ":";
1381 _odsPrinter << ' ';
1382 {
1383 auto type = getComponent().getType();
1384 if (auto validType = ::llvm::dyn_cast<::llzk::component::StructType>(type))
1385 _odsPrinter.printStrippedAttrOrType(validType);
1386 else
1387 _odsPrinter << type;
1388 }
1389 _odsPrinter << ",";
1390 _odsPrinter << ' ';
1391 {
1392 auto type = getVal().getType();
1393 if (auto validType = ::llvm::dyn_cast<::mlir::Type>(type))
1394 _odsPrinter.printStrippedAttrOrType(validType);
1395 else
1396 _odsPrinter << type;
1397 }
1398 ::llvm::SmallVector<::llvm::StringRef, 2> elidedAttrs;
1399 elidedAttrs.push_back("mapOpGroupSizes");
1400 elidedAttrs.push_back("member_name");
1401 elidedAttrs.push_back("numDimsPerMap");
1402 {
1403 ::mlir::Builder odsBuilder(getContext());
1404 ::mlir::Attribute attr = getNumDimsPerMapAttr();
1405 if(attr && (attr == odsBuilder.getDenseI32ArrayAttr({})))
1406 elidedAttrs.push_back("numDimsPerMap");
1407 }
1408 _odsPrinter.printOptionalAttrDict((*this)->getAttrs(), elidedAttrs);
1409}
1410
1411void MemberReadOp::getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects) {
1412 effects.emplace_back(::mlir::MemoryEffects::Read::get(), 0, false, ::mlir::SideEffects::DefaultResource::get());
1413}
1414
1417 return true;
1418}
1419
1420} // namespace llzk::component
1421MLIR_DEFINE_EXPLICIT_TYPE_ID(::llzk::component::MemberReadOp)
1423
1424namespace llzk::component {
1425
1426
1427//===----------------------------------------------------------------------===//
1428// ::llzk::component::MemberWriteOp definitions
1429//===----------------------------------------------------------------------===//
1430
1431namespace detail {
1432
1434
1436 auto attr = getMemberNameAttr();
1437 return attr.getValue();
1438}
1439
1440
1441} // namespace detail
1443
1444::llvm::LogicalResult MemberWriteOpAdaptor::verify(::mlir::Location loc) {
1445 auto tblgen_member_name = getProperties().member_name; (void)tblgen_member_name;
1446 if (!tblgen_member_name) return emitError(loc, "'struct.writem' op requires attribute 'member_name'");
1447
1448 if (tblgen_member_name && !((::llvm::isa<::mlir::FlatSymbolRefAttr>(tblgen_member_name))))
1449 return emitError(loc, "'struct.writem' op attribute 'member_name' failed to satisfy constraint: flat symbol reference attribute");
1450 return ::mlir::success();
1451}
1452
1453::llvm::LogicalResult MemberWriteOp::setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) {
1454 ::mlir::DictionaryAttr dict = ::llvm::dyn_cast<::mlir::DictionaryAttr>(attr);
1455 if (!dict) {
1456 emitError() << "expected DictionaryAttr to set properties";
1457 return ::mlir::failure();
1458 }
1459
1460 {
1461 auto &propStorage = prop.member_name;
1462 auto attr = dict.get("member_name");
1463 if (attr) {
1464 auto convertedAttr = ::llvm::dyn_cast<std::remove_reference_t<decltype(propStorage)>>(attr);
1465 if (convertedAttr) {
1466 propStorage = convertedAttr;
1467 } else {
1468 emitError() << "Invalid attribute `member_name` in property conversion: " << attr;
1469 return ::mlir::failure();
1470 }
1471 }
1472 }
1473 return ::mlir::success();
1474}
1475
1476::mlir::Attribute MemberWriteOp::getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop) {
1477 ::mlir::SmallVector<::mlir::NamedAttribute> attrs;
1478 ::mlir::Builder odsBuilder{ctx};
1479
1480 {
1481 const auto &propStorage = prop.member_name;
1482 if (propStorage)
1483 attrs.push_back(odsBuilder.getNamedAttr("member_name",
1484 propStorage));
1485 }
1486
1487 if (!attrs.empty())
1488 return odsBuilder.getDictionaryAttr(attrs);
1489 return {};
1490}
1491
1493 using llvm::hash_value;
1494 return llvm::hash_combine(
1495 llvm::hash_value(prop.member_name.getAsOpaquePointer()));
1496}
1497
1498std::optional<mlir::Attribute> MemberWriteOp::getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name) {
1499 if (name == "member_name")
1500 return prop.member_name;
1501 return std::nullopt;
1502}
1503
1504void MemberWriteOp::setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value) {
1505 if (name == "member_name") {
1506 prop.member_name = ::llvm::dyn_cast_or_null<std::remove_reference_t<decltype(prop.member_name)>>(value);
1507 return;
1508 }
1509}
1510
1511void MemberWriteOp::populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs) {
1512 if (prop.member_name) attrs.append("member_name", prop.member_name);
1513}
1514
1515::llvm::LogicalResult MemberWriteOp::verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) {
1516 {
1517 ::mlir::Attribute attr = attrs.get(getMemberNameAttrName(opName));
1518 if (attr && ::mlir::failed(__mlir_ods_local_attr_constraint_Ops4(attr, "member_name", emitError)))
1519 return ::mlir::failure();
1520 }
1521 return ::mlir::success();
1522}
1523
1524::llvm::LogicalResult MemberWriteOp::readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state) {
1525 auto &prop = state.getOrAddProperties<Properties>(); (void)prop;
1526 if (::mlir::failed(reader.readAttribute(prop.member_name)))
1527 return ::mlir::failure();
1528 return ::mlir::success();
1529}
1530
1531void MemberWriteOp::writeProperties(::mlir::DialectBytecodeWriter &writer) {
1532 auto &prop = getProperties(); (void)prop;
1533 writer.writeAttribute(prop.member_name);
1534}
1535
1536::llvm::StringRef MemberWriteOp::getMemberName() {
1537 auto attr = getMemberNameAttr();
1538 return attr.getValue();
1539}
1540
1541void MemberWriteOp::setMemberName(::llvm::StringRef attrValue) {
1542 getProperties().member_name = ::mlir::SymbolRefAttr::get(::mlir::Builder((*this)->getContext()).getContext(), attrValue);
1543}
1544
1545void MemberWriteOp::build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value component, ::mlir::FlatSymbolRefAttr member_name, ::mlir::Value val) {
1546 odsState.addOperands(component);
1547 odsState.addOperands(val);
1548 odsState.getOrAddProperties<Properties>().member_name = member_name;
1549}
1550
1551MemberWriteOp MemberWriteOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value component, ::mlir::FlatSymbolRefAttr member_name, ::mlir::Value val) {
1552 ::mlir::OperationState __state__(location, getOperationName());
1553 build(builder, __state__, std::forward<decltype(component)>(component), std::forward<decltype(member_name)>(member_name), std::forward<decltype(val)>(val));
1554 auto __res__ = ::llvm::dyn_cast<MemberWriteOp>(builder.create(__state__));
1555 assert(__res__ && "builder didn't return the right type");
1556 return __res__;
1557}
1558
1559MemberWriteOp MemberWriteOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value component, ::mlir::FlatSymbolRefAttr member_name, ::mlir::Value val) {
1560 return create(builder, builder.getLoc(), std::forward<decltype(component)>(component), std::forward<decltype(member_name)>(member_name), std::forward<decltype(val)>(val));
1561}
1562
1563void MemberWriteOp::build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value component, ::mlir::FlatSymbolRefAttr member_name, ::mlir::Value val) {
1564 odsState.addOperands(component);
1565 odsState.addOperands(val);
1566 odsState.getOrAddProperties<Properties>().member_name = member_name;
1567 assert(resultTypes.size() == 0u && "mismatched number of results");
1568 odsState.addTypes(resultTypes);
1569}
1570
1571MemberWriteOp MemberWriteOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value component, ::mlir::FlatSymbolRefAttr member_name, ::mlir::Value val) {
1572 ::mlir::OperationState __state__(location, getOperationName());
1573 build(builder, __state__, std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(component)>(component), std::forward<decltype(member_name)>(member_name), std::forward<decltype(val)>(val));
1574 auto __res__ = ::llvm::dyn_cast<MemberWriteOp>(builder.create(__state__));
1575 assert(__res__ && "builder didn't return the right type");
1576 return __res__;
1577}
1578
1579MemberWriteOp MemberWriteOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value component, ::mlir::FlatSymbolRefAttr member_name, ::mlir::Value val) {
1580 return create(builder, builder.getLoc(), std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(component)>(component), std::forward<decltype(member_name)>(member_name), std::forward<decltype(val)>(val));
1581}
1582
1583void MemberWriteOp::build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value component, ::llvm::StringRef member_name, ::mlir::Value val) {
1584 odsState.addOperands(component);
1585 odsState.addOperands(val);
1586 odsState.getOrAddProperties<Properties>().member_name = ::mlir::SymbolRefAttr::get(odsBuilder.getContext(), member_name);
1587}
1588
1589MemberWriteOp MemberWriteOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value component, ::llvm::StringRef member_name, ::mlir::Value val) {
1590 ::mlir::OperationState __state__(location, getOperationName());
1591 build(builder, __state__, std::forward<decltype(component)>(component), std::forward<decltype(member_name)>(member_name), std::forward<decltype(val)>(val));
1592 auto __res__ = ::llvm::dyn_cast<MemberWriteOp>(builder.create(__state__));
1593 assert(__res__ && "builder didn't return the right type");
1594 return __res__;
1595}
1596
1597MemberWriteOp MemberWriteOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value component, ::llvm::StringRef member_name, ::mlir::Value val) {
1598 return create(builder, builder.getLoc(), std::forward<decltype(component)>(component), std::forward<decltype(member_name)>(member_name), std::forward<decltype(val)>(val));
1599}
1600
1601void MemberWriteOp::build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value component, ::llvm::StringRef member_name, ::mlir::Value val) {
1602 odsState.addOperands(component);
1603 odsState.addOperands(val);
1604 odsState.getOrAddProperties<Properties>().member_name = ::mlir::SymbolRefAttr::get(odsBuilder.getContext(), member_name);
1605 assert(resultTypes.size() == 0u && "mismatched number of results");
1606 odsState.addTypes(resultTypes);
1607}
1608
1609MemberWriteOp MemberWriteOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value component, ::llvm::StringRef member_name, ::mlir::Value val) {
1610 ::mlir::OperationState __state__(location, getOperationName());
1611 build(builder, __state__, std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(component)>(component), std::forward<decltype(member_name)>(member_name), std::forward<decltype(val)>(val));
1612 auto __res__ = ::llvm::dyn_cast<MemberWriteOp>(builder.create(__state__));
1613 assert(__res__ && "builder didn't return the right type");
1614 return __res__;
1615}
1616
1617MemberWriteOp MemberWriteOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value component, ::llvm::StringRef member_name, ::mlir::Value val) {
1618 return create(builder, builder.getLoc(), std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(component)>(component), std::forward<decltype(member_name)>(member_name), std::forward<decltype(val)>(val));
1619}
1620
1621void MemberWriteOp::build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes) {
1622 assert(operands.size() == 2u && "mismatched number of parameters");
1623 odsState.addOperands(operands);
1624 odsState.addAttributes(attributes);
1625 assert(resultTypes.size() == 0u && "mismatched number of return types");
1626 odsState.addTypes(resultTypes);
1627
1628 if (!attributes.empty()) {
1629 (void)odsState.getOrAddProperties<MemberWriteOp::Properties>();
1630 ::mlir::PropertyRef properties = odsState.getRawProperties();
1631 std::optional<::mlir::RegisteredOperationName> info =
1632 odsState.name.getRegisteredInfo();
1633 if (failed(info->setOpPropertiesFromAttribute(odsState.name, properties,
1634 odsState.attributes.getDictionary(odsState.getContext()), nullptr)))
1635 ::llvm::report_fatal_error("Property conversion failed.");
1636 }
1637}
1638
1639MemberWriteOp MemberWriteOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes) {
1640 ::mlir::OperationState __state__(location, getOperationName());
1641 build(builder, __state__, std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(operands)>(operands), std::forward<decltype(attributes)>(attributes));
1642 auto __res__ = ::llvm::dyn_cast<MemberWriteOp>(builder.create(__state__));
1643 assert(__res__ && "builder didn't return the right type");
1644 return __res__;
1645}
1646
1647MemberWriteOp MemberWriteOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes) {
1648 return create(builder, builder.getLoc(), std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(operands)>(operands), std::forward<decltype(attributes)>(attributes));
1649}
1650
1651void MemberWriteOp::build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes) {
1652 assert(operands.size() == 2u && "mismatched number of parameters");
1653 odsState.addOperands(operands);
1654 odsState.useProperties(const_cast<Properties&>(properties));
1655 odsState.addAttributes(discardableAttributes);
1656 assert(resultTypes.size() == 0u && "mismatched number of return types");
1657 odsState.addTypes(resultTypes);
1658}
1659
1660MemberWriteOp MemberWriteOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes) {
1661 ::mlir::OperationState __state__(location, getOperationName());
1662 build(builder, __state__, std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(operands)>(operands), std::forward<decltype(properties)>(properties), std::forward<decltype(discardableAttributes)>(discardableAttributes));
1663 auto __res__ = ::llvm::dyn_cast<MemberWriteOp>(builder.create(__state__));
1664 assert(__res__ && "builder didn't return the right type");
1665 return __res__;
1666}
1667
1668MemberWriteOp MemberWriteOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes) {
1669 return create(builder, builder.getLoc(), std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(operands)>(operands), std::forward<decltype(properties)>(properties), std::forward<decltype(discardableAttributes)>(discardableAttributes));
1670}
1671
1673 auto tblgen_member_name = getProperties().member_name; (void)tblgen_member_name;
1674 if (!tblgen_member_name) return emitOpError("requires attribute 'member_name'");
1675
1676 if (::mlir::failed(__mlir_ods_local_attr_constraint_Ops4(*this, tblgen_member_name, "member_name")))
1677 return ::mlir::failure();
1678 {
1679 unsigned index = 0; (void)index;
1680 auto valueGroup0 = getODSOperands(0);
1681
1682 for (auto v : valueGroup0) {
1683 if (::mlir::failed(__mlir_ods_local_type_constraint_Ops1(*this, v.getType(), "operand", index++)))
1684 return ::mlir::failure();
1685 }
1686 auto valueGroup1 = getODSOperands(1);
1687
1688 for (auto v : valueGroup1) {
1689 if (::mlir::failed(__mlir_ods_local_type_constraint_Ops3(*this, v.getType(), "operand", index++)))
1690 return ::mlir::failure();
1691 }
1692 }
1693 return ::mlir::success();
1694}
1695
1696::llvm::LogicalResult MemberWriteOp::verifyInvariants() {
1697 return verifyInvariantsImpl();
1698}
1699
1700::mlir::ParseResult MemberWriteOp::parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result) {
1701 ::mlir::OpAsmParser::UnresolvedOperand componentRawOperand{};
1702 ::llvm::ArrayRef<::mlir::OpAsmParser::UnresolvedOperand> componentOperands(&componentRawOperand, 1); ::llvm::SMLoc componentOperandsLoc;
1703 (void)componentOperandsLoc;
1704 ::mlir::FlatSymbolRefAttr member_nameAttr;
1705 ::mlir::OpAsmParser::UnresolvedOperand valRawOperand{};
1706 ::llvm::ArrayRef<::mlir::OpAsmParser::UnresolvedOperand> valOperands(&valRawOperand, 1); ::llvm::SMLoc valOperandsLoc;
1707 (void)valOperandsLoc;
1708 ::mlir::Type componentRawType{};
1709 ::llvm::ArrayRef<::mlir::Type> componentTypes(&componentRawType, 1);
1710 ::mlir::Type valRawType{};
1711 ::llvm::ArrayRef<::mlir::Type> valTypes(&valRawType, 1);
1712
1713 componentOperandsLoc = parser.getCurrentLocation();
1714 if (parser.parseOperand(componentRawOperand))
1715 return ::mlir::failure();
1716 if (parser.parseLSquare())
1717 return ::mlir::failure();
1718
1719 if (parser.parseCustomAttributeWithFallback(member_nameAttr, parser.getBuilder().getType<::mlir::NoneType>())) {
1720 return ::mlir::failure();
1721 }
1722 if (member_nameAttr) result.getOrAddProperties<MemberWriteOp::Properties>().member_name = member_nameAttr;
1723 if (parser.parseRSquare())
1724 return ::mlir::failure();
1725 if (parser.parseEqual())
1726 return ::mlir::failure();
1727
1728 valOperandsLoc = parser.getCurrentLocation();
1729 if (parser.parseOperand(valRawOperand))
1730 return ::mlir::failure();
1731 if (parser.parseColon())
1732 return ::mlir::failure();
1733
1734 {
1736 if (parser.parseCustomTypeWithFallback(type))
1737 return ::mlir::failure();
1738 componentRawType = type;
1739 }
1740 if (parser.parseComma())
1741 return ::mlir::failure();
1742
1743 {
1744 ::mlir::Type type;
1745 if (parser.parseCustomTypeWithFallback(type))
1746 return ::mlir::failure();
1747 valRawType = type;
1748 }
1749 {
1750 auto loc = parser.getCurrentLocation();(void)loc;
1751 if (parser.parseOptionalAttrDict(result.attributes))
1752 return ::mlir::failure();
1753 if (failed(verifyInherentAttrs(result.name, result.attributes, [&]() {
1754 return parser.emitError(loc) << "'" << result.name.getStringRef() << "' op ";
1755 })))
1756 return ::mlir::failure();
1757 }
1758 if (parser.resolveOperands(componentOperands, componentTypes, componentOperandsLoc, result.operands))
1759 return ::mlir::failure();
1760 if (parser.resolveOperands(valOperands, valTypes, valOperandsLoc, result.operands))
1761 return ::mlir::failure();
1762 return ::mlir::success();
1763}
1764
1765void MemberWriteOp::print(::mlir::OpAsmPrinter &_odsPrinter) {
1766 _odsPrinter << ' ';
1767 _odsPrinter << getComponent();
1768 _odsPrinter << "[";
1769 _odsPrinter.printAttributeWithoutType(getMemberNameAttr());
1770 _odsPrinter << "]";
1771 _odsPrinter << ' ' << "=";
1772 _odsPrinter << ' ';
1773 _odsPrinter << getVal();
1774 _odsPrinter << ' ' << ":";
1775 _odsPrinter << ' ';
1776 {
1777 auto type = getComponent().getType();
1778 if (auto validType = ::llvm::dyn_cast<::llzk::component::StructType>(type))
1779 _odsPrinter.printStrippedAttrOrType(validType);
1780 else
1781 _odsPrinter << type;
1782 }
1783 _odsPrinter << ",";
1784 _odsPrinter << ' ';
1785 {
1786 auto type = getVal().getType();
1787 if (auto validType = ::llvm::dyn_cast<::mlir::Type>(type))
1788 _odsPrinter.printStrippedAttrOrType(validType);
1789 else
1790 _odsPrinter << type;
1791 }
1792 ::llvm::SmallVector<::llvm::StringRef, 2> elidedAttrs;
1793 elidedAttrs.push_back("member_name");
1794 _odsPrinter.printOptionalAttrDict((*this)->getAttrs(), elidedAttrs);
1795}
1796
1797void MemberWriteOp::getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects) {
1798 effects.emplace_back(::mlir::MemoryEffects::Write::get(), 0, false, ::mlir::SideEffects::DefaultResource::get());
1799}
1800
1803 return false;
1804}
1805
1806} // namespace llzk::component
1807MLIR_DEFINE_EXPLICIT_TYPE_ID(::llzk::component::MemberWriteOp)
1809
1810namespace llzk::component {
1811
1812
1813//===----------------------------------------------------------------------===//
1814// ::llzk::component::StructDefOp definitions
1815//===----------------------------------------------------------------------===//
1816
1817namespace detail {
1818
1820
1822 auto attr = getSymNameAttr();
1823 return attr.getValue();
1824}
1825
1826
1827} // namespace detail
1829
1830::llvm::LogicalResult StructDefOpAdaptor::verify(::mlir::Location loc) {
1831 auto tblgen_sym_name = getProperties().sym_name; (void)tblgen_sym_name;
1832 if (!tblgen_sym_name) return emitError(loc, "'struct.def' op requires attribute 'sym_name'");
1833
1834 if (tblgen_sym_name && !((::llvm::isa<::mlir::StringAttr>(tblgen_sym_name))))
1835 return emitError(loc, "'struct.def' op attribute 'sym_name' failed to satisfy constraint: string attribute");
1836 return ::mlir::success();
1837}
1838
1839::llvm::LogicalResult StructDefOp::setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) {
1840 ::mlir::DictionaryAttr dict = ::llvm::dyn_cast<::mlir::DictionaryAttr>(attr);
1841 if (!dict) {
1842 emitError() << "expected DictionaryAttr to set properties";
1843 return ::mlir::failure();
1844 }
1845
1846 {
1847 auto &propStorage = prop.sym_name;
1848 auto attr = dict.get("sym_name");
1849 if (attr) {
1850 auto convertedAttr = ::llvm::dyn_cast<std::remove_reference_t<decltype(propStorage)>>(attr);
1851 if (convertedAttr) {
1852 propStorage = convertedAttr;
1853 } else {
1854 emitError() << "Invalid attribute `sym_name` in property conversion: " << attr;
1855 return ::mlir::failure();
1856 }
1857 }
1858 }
1859 return ::mlir::success();
1860}
1861
1862::mlir::Attribute StructDefOp::getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop) {
1863 ::mlir::SmallVector<::mlir::NamedAttribute> attrs;
1864 ::mlir::Builder odsBuilder{ctx};
1865
1866 {
1867 const auto &propStorage = prop.sym_name;
1868 if (propStorage)
1869 attrs.push_back(odsBuilder.getNamedAttr("sym_name",
1870 propStorage));
1871 }
1872
1873 if (!attrs.empty())
1874 return odsBuilder.getDictionaryAttr(attrs);
1875 return {};
1876}
1877
1879 using llvm::hash_value;
1880 return llvm::hash_combine(
1881 llvm::hash_value(prop.sym_name.getAsOpaquePointer()));
1882}
1883
1884std::optional<mlir::Attribute> StructDefOp::getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name) {
1885 if (name == "sym_name")
1886 return prop.sym_name;
1887 return std::nullopt;
1888}
1889
1890void StructDefOp::setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value) {
1891 if (name == "sym_name") {
1892 prop.sym_name = ::llvm::dyn_cast_or_null<std::remove_reference_t<decltype(prop.sym_name)>>(value);
1893 return;
1894 }
1895}
1896
1897void StructDefOp::populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs) {
1898 if (prop.sym_name) attrs.append("sym_name", prop.sym_name);
1899}
1900
1901::llvm::LogicalResult StructDefOp::verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) {
1902 {
1903 ::mlir::Attribute attr = attrs.get(getSymNameAttrName(opName));
1904 if (attr && ::mlir::failed(__mlir_ods_local_attr_constraint_Ops1(attr, "sym_name", emitError)))
1905 return ::mlir::failure();
1906 }
1907 return ::mlir::success();
1908}
1909
1910::llvm::StringRef StructDefOp::getSymName() {
1911 auto attr = getSymNameAttr();
1912 return attr.getValue();
1913}
1914
1915void StructDefOp::setSymName(::llvm::StringRef attrValue) {
1916 getProperties().sym_name = ::mlir::Builder((*this)->getContext()).getStringAttr(attrValue);
1917}
1918
1919void StructDefOp::build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::StringAttr sym_name) {
1920 odsState.getOrAddProperties<Properties>().sym_name = sym_name;
1921 (void)odsState.addRegion();
1922}
1923
1924StructDefOp StructDefOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::StringAttr sym_name) {
1925 ::mlir::OperationState __state__(location, getOperationName());
1926 build(builder, __state__, std::forward<decltype(sym_name)>(sym_name));
1927 auto __res__ = ::llvm::dyn_cast<StructDefOp>(builder.create(__state__));
1928 assert(__res__ && "builder didn't return the right type");
1929 return __res__;
1930}
1931
1932StructDefOp StructDefOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::StringAttr sym_name) {
1933 return create(builder, builder.getLoc(), std::forward<decltype(sym_name)>(sym_name));
1934}
1935
1936void StructDefOp::build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::StringAttr sym_name) {
1937 odsState.getOrAddProperties<Properties>().sym_name = sym_name;
1938 (void)odsState.addRegion();
1939 assert(resultTypes.size() == 0u && "mismatched number of results");
1940 odsState.addTypes(resultTypes);
1941}
1942
1943StructDefOp StructDefOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::StringAttr sym_name) {
1944 ::mlir::OperationState __state__(location, getOperationName());
1945 build(builder, __state__, std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(sym_name)>(sym_name));
1946 auto __res__ = ::llvm::dyn_cast<StructDefOp>(builder.create(__state__));
1947 assert(__res__ && "builder didn't return the right type");
1948 return __res__;
1949}
1950
1951StructDefOp StructDefOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::StringAttr sym_name) {
1952 return create(builder, builder.getLoc(), std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(sym_name)>(sym_name));
1953}
1954
1955void StructDefOp::build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::llvm::StringRef sym_name) {
1956 odsState.getOrAddProperties<Properties>().sym_name = odsBuilder.getStringAttr(sym_name);
1957 (void)odsState.addRegion();
1958}
1959
1960StructDefOp StructDefOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::llvm::StringRef sym_name) {
1961 ::mlir::OperationState __state__(location, getOperationName());
1962 build(builder, __state__, std::forward<decltype(sym_name)>(sym_name));
1963 auto __res__ = ::llvm::dyn_cast<StructDefOp>(builder.create(__state__));
1964 assert(__res__ && "builder didn't return the right type");
1965 return __res__;
1966}
1967
1968StructDefOp StructDefOp::create(::mlir::ImplicitLocOpBuilder &builder, ::llvm::StringRef sym_name) {
1969 return create(builder, builder.getLoc(), std::forward<decltype(sym_name)>(sym_name));
1970}
1971
1972void StructDefOp::build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::llvm::StringRef sym_name) {
1973 odsState.getOrAddProperties<Properties>().sym_name = odsBuilder.getStringAttr(sym_name);
1974 (void)odsState.addRegion();
1975 assert(resultTypes.size() == 0u && "mismatched number of results");
1976 odsState.addTypes(resultTypes);
1977}
1978
1979StructDefOp StructDefOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::llvm::StringRef sym_name) {
1980 ::mlir::OperationState __state__(location, getOperationName());
1981 build(builder, __state__, std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(sym_name)>(sym_name));
1982 auto __res__ = ::llvm::dyn_cast<StructDefOp>(builder.create(__state__));
1983 assert(__res__ && "builder didn't return the right type");
1984 return __res__;
1985}
1986
1987StructDefOp StructDefOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::llvm::StringRef sym_name) {
1988 return create(builder, builder.getLoc(), std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(sym_name)>(sym_name));
1989}
1990
1991void StructDefOp::build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes) {
1992 assert(operands.size() == 0u && "mismatched number of parameters");
1993 odsState.addOperands(operands);
1994 odsState.addAttributes(attributes);
1995 for (unsigned i = 0; i != 1; ++i)
1996 (void)odsState.addRegion();
1997 assert(resultTypes.size() == 0u && "mismatched number of return types");
1998 odsState.addTypes(resultTypes);
1999
2000 if (!attributes.empty()) {
2001 (void)odsState.getOrAddProperties<StructDefOp::Properties>();
2002 ::mlir::PropertyRef properties = odsState.getRawProperties();
2003 std::optional<::mlir::RegisteredOperationName> info =
2004 odsState.name.getRegisteredInfo();
2005 if (failed(info->setOpPropertiesFromAttribute(odsState.name, properties,
2006 odsState.attributes.getDictionary(odsState.getContext()), nullptr)))
2007 ::llvm::report_fatal_error("Property conversion failed.");
2008 }
2009}
2010
2011StructDefOp StructDefOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes) {
2012 ::mlir::OperationState __state__(location, getOperationName());
2013 build(builder, __state__, std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(operands)>(operands), std::forward<decltype(attributes)>(attributes));
2014 auto __res__ = ::llvm::dyn_cast<StructDefOp>(builder.create(__state__));
2015 assert(__res__ && "builder didn't return the right type");
2016 return __res__;
2017}
2018
2019StructDefOp StructDefOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes) {
2020 return create(builder, builder.getLoc(), std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(operands)>(operands), std::forward<decltype(attributes)>(attributes));
2021}
2022
2023void StructDefOp::build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes) {
2024 assert(operands.size() == 0u && "mismatched number of parameters");
2025 odsState.addOperands(operands);
2026 odsState.useProperties(const_cast<Properties&>(properties));
2027 odsState.addAttributes(discardableAttributes);
2028 for (unsigned i = 0; i != 1; ++i)
2029 (void)odsState.addRegion();
2030 assert(resultTypes.size() == 0u && "mismatched number of return types");
2031 odsState.addTypes(resultTypes);
2032}
2033
2034StructDefOp StructDefOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes) {
2035 ::mlir::OperationState __state__(location, getOperationName());
2036 build(builder, __state__, std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(operands)>(operands), std::forward<decltype(properties)>(properties), std::forward<decltype(discardableAttributes)>(discardableAttributes));
2037 auto __res__ = ::llvm::dyn_cast<StructDefOp>(builder.create(__state__));
2038 assert(__res__ && "builder didn't return the right type");
2039 return __res__;
2040}
2041
2042StructDefOp StructDefOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes) {
2043 return create(builder, builder.getLoc(), std::forward<decltype(resultTypes)>(resultTypes), std::forward<decltype(operands)>(operands), std::forward<decltype(properties)>(properties), std::forward<decltype(discardableAttributes)>(discardableAttributes));
2044}
2045
2046::llvm::LogicalResult StructDefOp::verifyInvariantsImpl() {
2047 auto tblgen_sym_name = getProperties().sym_name; (void)tblgen_sym_name;
2048 if (!tblgen_sym_name) return emitOpError("requires attribute 'sym_name'");
2049
2050 if (::mlir::failed(__mlir_ods_local_attr_constraint_Ops1(*this, tblgen_sym_name, "sym_name")))
2051 return ::mlir::failure();
2052 {
2053 unsigned index = 0; (void)index;
2054
2055 for (auto &region : ::llvm::MutableArrayRef((*this)->getRegion(0)))
2056 if (::mlir::failed(__mlir_ods_local_region_constraint_Ops1(*this, region, "bodyRegion", index++)))
2057 return ::mlir::failure();
2058 }
2059 return ::mlir::success();
2060}
2061
2062::llvm::LogicalResult StructDefOp::verifyInvariants() {
2063 return verifyInvariantsImpl();
2064}
2065
2066::mlir::ParseResult StructDefOp::parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result) {
2067 ::mlir::StringAttr sym_nameAttr;
2068 std::unique_ptr<::mlir::Region> bodyRegionRegion = std::make_unique<::mlir::Region>();
2069
2070 if (parser.parseSymbolName(sym_nameAttr))
2071 return ::mlir::failure();
2072 if (sym_nameAttr) result.getOrAddProperties<StructDefOp::Properties>().sym_name = sym_nameAttr;
2073
2074 if (parser.parseRegion(*bodyRegionRegion))
2075 return ::mlir::failure();
2076
2077 if (bodyRegionRegion->empty()) bodyRegionRegion->emplaceBlock();
2078 {
2079 auto loc = parser.getCurrentLocation();(void)loc;
2080 if (parser.parseOptionalAttrDict(result.attributes))
2081 return ::mlir::failure();
2082 if (failed(verifyInherentAttrs(result.name, result.attributes, [&]() {
2083 return parser.emitError(loc) << "'" << result.name.getStringRef() << "' op ";
2084 })))
2085 return ::mlir::failure();
2086 }
2087 result.addRegion(std::move(bodyRegionRegion));
2088 return ::mlir::success();
2089}
2090
2091void StructDefOp::print(::mlir::OpAsmPrinter &_odsPrinter) {
2092 _odsPrinter << ' ';
2093 _odsPrinter.printSymbolName(getSymNameAttr().getValue());
2094 _odsPrinter << ' ';
2095 _odsPrinter.printRegion(getBodyRegion());
2096 ::llvm::SmallVector<::llvm::StringRef, 2> elidedAttrs;
2097 elidedAttrs.push_back("sym_name");
2098 _odsPrinter.printOptionalAttrDict((*this)->getAttrs(), elidedAttrs);
2099}
2100
2101
2102} // namespace llzk::component
2103MLIR_DEFINE_EXPLICIT_TYPE_ID(::llzk::component::StructDefOp)
2105
2106
2107#endif // GET_OP_CLASSES
2108
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:168
CreateStructOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:199
CreateStructOpAdaptor(CreateStructOp op)
Definition Ops.cpp.inc:166
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type result)
Definition Ops.cpp.inc:209
::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:172
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:268
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:283
static std::optional< mlir::Attribute > getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name)
Definition Ops.cpp.inc:195
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:296
static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value)
Definition Ops.cpp.inc:199
::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:205
FoldAdaptor::Properties Properties
Definition Ops.h.inc:242
static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs)
Definition Ops.cpp.inc:202
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:250
::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop)
Definition Ops.cpp.inc:181
::mlir::TypedValue<::llzk::component::StructType > getResult()
Definition Ops.h.inc:274
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:300
static CreateStructOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type result)
Definition Ops.cpp.inc:213
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:325
static llvm::hash_code computePropertiesHash(const Properties &prop)
Definition Ops.cpp.inc:190
MemberDefOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:421
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:396
::llvm::StringRef getSymName()
Definition Ops.cpp.inc:629
void setSignal(bool attrValue)
Definition Ops.cpp.inc:669
::mlir::StringAttr getTypeAttrName()
Definition Ops.h.inc:494
::mlir::StringAttr getColumnAttrName()
Definition Ops.h.inc:470
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:751
static std::optional< mlir::Attribute > getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name)
Definition Ops.cpp.inc:529
::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:418
static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs)
Definition Ops.cpp.inc:566
::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:576
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:757
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:729
::mlir::UnitAttr getSignalAttr()
Definition Ops.h.inc:550
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:783
::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop)
Definition Ops.cpp.inc:483
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:502
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::StringAttr sym_name, ::mlir::TypeAttr type, bool isSignal=false, bool isColumn=false)
::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state)
Definition Ops.cpp.inc:603
void setColumn(bool attrValue)
Definition Ops.cpp.inc:661
::mlir::TypeAttr getTypeAttr()
Definition Ops.h.inc:540
static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value)
Definition Ops.cpp.inc:544
::mlir::StringAttr getSignalAttrName()
Definition Ops.h.inc:478
static llvm::hash_code computePropertiesHash(const Properties &prop)
Definition Ops.cpp.inc:520
::mlir::StringAttr getSymNameAttr()
Definition Ops.h.inc:535
void writeProperties(::mlir::DialectBytecodeWriter &writer)
Definition Ops.cpp.inc:619
void setType(::mlir::Type attrValue)
Definition Ops.cpp.inc:657
static MemberDefOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::StringAttr sym_name, ::mlir::TypeAttr type, bool isSignal=false, bool isColumn=false)
Definition Ops.cpp.inc:677
::llvm::LogicalResult verify()
Definition Ops.cpp:615
FoldAdaptor::Properties Properties
Definition Ops.h.inc:464
void setSymName(::llvm::StringRef attrValue)
Definition Ops.cpp.inc:653
::mlir::UnitAttr getColumnAttr()
Definition Ops.h.inc:545
::mlir::StringAttr getSymNameAttrName()
Definition Ops.h.inc:486
MemberReadOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:745
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:870
::mlir::MutableOperandRangeRange getMapOperandsMutable()
Definition Ops.cpp.inc:910
static std::optional< mlir::Attribute > getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name)
Definition Ops.cpp.inc:1027
static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs)
Definition Ops.cpp.inc:1064
::mlir::TypedValue<::llzk::component::StructType > getComponent()
Definition Ops.h.inc:855
static llvm::hash_code computePropertiesHash(const Properties &prop)
Definition Ops.cpp.inc:1018
static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value)
Definition Ops.cpp.inc:1042
void setMapOpGroupSizes(::llvm::ArrayRef< int32_t > attrValue)
Definition Ops.cpp.inc:1155
::mlir::TypedValue<::mlir::Type > getVal()
Definition Ops.h.inc:879
static MemberReadOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type resultType, ::mlir::Value component, ::mlir::StringAttr member)
Definition Ops.cpp.inc:1159
::std::optional<::mlir::Attribute > getTableOffset()
Definition Ops.cpp.inc:1132
::mlir::OperandRangeRange getMapOperands()
Definition Ops.h.inc:859
bool isRead()
Return true if the op is a read, false if it's a write.
Definition Ops.cpp.inc:1416
::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop)
Definition Ops.cpp.inc:981
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type resultType, ::mlir::Value component, ::mlir::StringAttr member)
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:1235
static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties)
Definition Ops.cpp.inc:1229
::mlir::FlatSymbolRefAttr getMemberNameAttr()
Definition Ops.h.inc:892
::llvm::ArrayRef< int32_t > getMapOpGroupSizes()
Definition Ops.cpp.inc:1142
::mlir::StringAttr getMapOpGroupSizesAttrName()
Definition Ops.h.inc:812
void setNumDimsPerMap(::llvm::ArrayRef< int32_t > attrValue)
Definition Ops.cpp.inc:1151
::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:1074
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.cpp.inc:892
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:873
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:1283
::llvm::ArrayRef< int32_t > getNumDimsPerMap()
Definition Ops.cpp.inc:1137
void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect > > &effects)
Definition Ops.cpp.inc:1411
::llvm::StringRef getMemberName()
Definition Ops.cpp.inc:1127
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:844
::mlir::StringAttr getTableOffsetAttrName()
Definition Ops.h.inc:836
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:1289
void writeProperties(::mlir::DialectBytecodeWriter &writer)
Definition Ops.cpp.inc:1117
::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state)
Definition Ops.cpp.inc:1101
::llvm::LogicalResult verify()
Definition Ops.cpp:795
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:849
::mlir::Attribute getTableOffsetAttr()
Definition Ops.h.inc:897
void setMemberName(::llvm::StringRef attrValue)
Definition Ops.cpp.inc:1147
::mlir::StringAttr getMemberNameAttrName()
Definition Ops.h.inc:820
::mlir::DenseI32ArrayAttr getMapOpGroupSizesAttr()
Definition Ops.h.inc:907
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:1369
::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:916
FoldAdaptor::Properties Properties
Definition Ops.h.inc:806
::mlir::DenseI32ArrayAttr getNumDimsPerMapAttr()
Definition Ops.h.inc:902
::mlir::StringAttr getNumDimsPerMapAttrName()
Definition Ops.h.inc:828
MemberWriteOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1056
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:1444
void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect > > &effects)
Definition Ops.cpp.inc:1797
::mlir::TypedValue<::llzk::component::StructType > getComponent()
Definition Ops.h.inc:1137
void setMemberName(::llvm::StringRef attrValue)
Definition Ops.cpp.inc:1541
FoldAdaptor::Properties Properties
Definition Ops.h.inc:1109
static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs)
Definition Ops.cpp.inc:1511
::mlir::FlatSymbolRefAttr getMemberNameAttr()
Definition Ops.h.inc:1174
bool isRead()
Return true if the op is a read, false if it's a write.
Definition Ops.cpp.inc:1802
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:1696
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:1765
static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value)
Definition Ops.cpp.inc:1504
::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state)
Definition Ops.cpp.inc:1524
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value component, ::mlir::FlatSymbolRefAttr member_name, ::mlir::Value val)
Definition Ops.cpp.inc:1545
void writeProperties(::mlir::DialectBytecodeWriter &writer)
Definition Ops.cpp.inc:1531
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:1123
::llvm::StringRef getMemberName()
Definition Ops.cpp.inc:1536
::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop)
Definition Ops.cpp.inc:1476
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:1131
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:1672
static std::optional< mlir::Attribute > getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name)
Definition Ops.cpp.inc:1498
static MemberWriteOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value component, ::mlir::FlatSymbolRefAttr member_name, ::mlir::Value val)
Definition Ops.cpp.inc:1551
::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:1453
::mlir::TypedValue<::mlir::Type > getVal()
Definition Ops.h.inc:1141
::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:1515
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:1700
static llvm::hash_code computePropertiesHash(const Properties &prop)
Definition Ops.cpp.inc:1492
::mlir::StringAttr getMemberNameAttrName()
Definition Ops.h.inc:1115
StructDefOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1310
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:1830
static llvm::hash_code computePropertiesHash(const Properties &prop)
Definition Ops.cpp.inc:1878
static std::optional< mlir::Attribute > getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name)
Definition Ops.cpp.inc:1884
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::StringAttr sym_name)
Definition Ops.cpp.inc:1919
static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value)
Definition Ops.cpp.inc:1890
::mlir::Region & getBodyRegion()
Definition Ops.h.inc:1391
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:1367
static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs)
Definition Ops.cpp.inc:1897
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:2062
::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop)
Definition Ops.cpp.inc:1862
::llvm::StringRef getSymName()
Definition Ops.cpp.inc:1910
FoldAdaptor::Properties Properties
Definition Ops.h.inc:1353
static StructDefOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::StringAttr sym_name)
Definition Ops.cpp.inc:1924
::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:1901
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:2066
::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:1839
::mlir::StringAttr getSymNameAttr()
Definition Ops.h.inc:1404
void setSymName(::llvm::StringRef attrValue)
Definition Ops.cpp.inc:1915
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:2046
::mlir::StringAttr getSymNameAttrName()
Definition Ops.h.inc:1359
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:2091
CreateStructOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:173
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:169
MemberDefOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:379
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:375
::std::optional<::mlir::Attribute > getTableOffset()
Definition Ops.cpp.inc:846
MemberReadOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:700
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:696
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.cpp.inc:823
MemberWriteOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1022
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:1018
StructDefOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1270
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:1266
Common interface for operations that read or write from a struct member.
Common interface for constant parameter-like symbol operations that can be defined within a TemplateO...
bool isValidType(Type type)
void printMultiDimAndSymbolList(mlir::OpAsmPrinter &printer, mlir::Operation *op, mlir::OperandRangeRange multiMapOperands, mlir::DenseI32ArrayAttr numDimsPerMap)
Definition OpHelpers.h:144
mlir::ParseResult parseMultiDimAndSymbolList(mlir::OpAsmParser &parser, mlir::SmallVector< mlir::SmallVector< mlir::OpAsmParser::UnresolvedOperand > > &multiMapOperands, mlir::DenseI32ArrayAttr &numDimsPerMap)
Definition OpHelpers.h:136