LLZK 3.0.0
An open-source IR for Zero Knowledge (ZK) circuits
Loading...
Searching...
No Matches
Ops.h.inc
Go to the documentation of this file.
1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* Op Declarations *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* From: Ops.td *|
7|* *|
8\*===----------------------------------------------------------------------===*/
9
10namespace llzk {
11namespace verif {
12class AssumeDetOp;
13} // namespace verif
14} // namespace llzk
15namespace llzk {
16namespace verif {
17class ContractEndOp;
18} // namespace verif
19} // namespace llzk
20namespace llzk {
21namespace verif {
22class ContractOp;
23} // namespace verif
24} // namespace llzk
25namespace llzk {
26namespace verif {
27class DecreasesOp;
28} // namespace verif
29} // namespace llzk
30namespace llzk {
31namespace verif {
32class EnsureComputeOp;
33} // namespace verif
34} // namespace llzk
35namespace llzk {
36namespace verif {
38} // namespace verif
39} // namespace llzk
40namespace llzk {
41namespace verif {
42class IncludeOp;
43} // namespace verif
44} // namespace llzk
45namespace llzk {
46namespace verif {
47class IncreasesOp;
48} // namespace verif
49} // namespace llzk
50namespace llzk {
51namespace verif {
52class InvariantOp;
53} // namespace verif
54} // namespace llzk
55namespace llzk {
56namespace verif {
57class OldOp;
58} // namespace verif
59} // namespace llzk
60namespace llzk {
61namespace verif {
62class ProveDetOp;
63} // namespace verif
64} // namespace llzk
65namespace llzk {
66namespace verif {
68} // namespace verif
69} // namespace llzk
70namespace llzk {
71namespace verif {
73} // namespace verif
74} // namespace llzk
75namespace llzk {
76namespace verif {
77class StepOp;
78} // namespace verif
79} // namespace llzk
80namespace llzk {
81namespace verif {
82class StepYieldOp;
83} // namespace verif
84} // namespace llzk
85namespace llzk {
86namespace verif {
87class VerifAssertOp;
88} // namespace verif
89} // namespace llzk
90namespace llzk {
91namespace verif {
92class VerifProveOp;
93} // namespace verif
94} // namespace llzk
95namespace llzk {
96namespace verif {
97class VerifSMTProveOp;
98} // namespace verif
99} // namespace llzk
100#ifdef GET_OP_CLASSES
101#undef GET_OP_CLASSES
102
103namespace llzk {
104namespace verif {
105
106//===----------------------------------------------------------------------===//
107// ::llzk::verif::AssumeDetOp declarations
108//===----------------------------------------------------------------------===//
109
110namespace detail {
112public:
113protected:
114 ::mlir::DictionaryAttr odsAttrs;
115 ::std::optional<::mlir::OperationName> odsOpName;
116 ::mlir::RegionRange odsRegions;
117public:
118 AssumeDetOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
119 odsOpName.emplace("verif.det.assume", odsAttrs.getContext());
120 }
121
122 AssumeDetOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
123
124 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) {
125 return {index, 1};
126 }
127
128 ::mlir::DictionaryAttr getAttributes() {
129 return odsAttrs;
130 }
131
132};
133} // namespace detail
134template <typename RangeT>
136 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
138public:
139 AssumeDetOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
140
141 AssumeDetOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : AssumeDetOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
142
143 AssumeDetOpGenericAdaptor(RangeT values, const AssumeDetOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
144
145 template <typename LateInst = AssumeDetOp, typename = std::enable_if_t<std::is_same_v<LateInst, AssumeDetOp>>>
146 AssumeDetOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
147
148 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
149 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
150 }
151
152 RangeT getODSOperands(unsigned index) {
153 auto valueRange = getODSOperandIndexAndLength(index);
154 return {std::next(odsOperands.begin(), valueRange.first),
155 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
156 }
157
158 ValueT getHint() {
159 return (*getODSOperands(0).begin());
160 }
161
162 RangeT getOperands() {
163 return odsOperands;
164 }
165
166private:
167 RangeT odsOperands;
168};
169class AssumeDetOpAdaptor : public AssumeDetOpGenericAdaptor<::mlir::ValueRange> {
170public:
173
174 ::llvm::LogicalResult verify(::mlir::Location loc);
175};
176class AssumeDetOp : public ::mlir::Op<AssumeDetOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::ZeroResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::llzk::function::Verification<>::Impl, ::mlir::OpTrait::OpInvariants> {
177public:
178 using Op::Op;
179 using Op::print;
181 template <typename RangeT>
184 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
185 return {};
186 }
187
188 static constexpr ::llvm::StringLiteral getOperationName() {
189 return ::llvm::StringLiteral("verif.det.assume");
190 }
191
192 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
193 return {index, 1};
194 }
195
196 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
197 auto valueRange = getODSOperandIndexAndLength(index);
198 return {std::next(getOperation()->operand_begin(), valueRange.first),
199 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
200 }
201
202 ::mlir::TypedValue<::mlir::Type> getHint() {
203 return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin());
204 }
205
206 ::mlir::OpOperand &getHintMutable() {
207 auto range = getODSOperandIndexAndLength(0);
208 return getOperation()->getOpOperand(range.first);
209 }
210
211 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
212 return {index, 1};
213 }
214
215 ::mlir::Operation::result_range getODSResults(unsigned index) {
216 auto valueRange = getODSResultIndexAndLength(index);
217 return {std::next(getOperation()->result_begin(), valueRange.first),
218 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
219 }
220
221 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value hint);
222 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value hint);
223 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
224 ::llvm::LogicalResult verifyInvariantsImpl();
225 ::llvm::LogicalResult verifyInvariants();
226 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
227 void print(::mlir::OpAsmPrinter &_odsPrinter);
228public:
229};
230} // namespace verif
231} // namespace llzk
232MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::verif::AssumeDetOp)
233
234namespace llzk {
235namespace verif {
236
237//===----------------------------------------------------------------------===//
238// ::llzk::verif::ContractEndOp declarations
239//===----------------------------------------------------------------------===//
240
241namespace detail {
243public:
244protected:
245 ::mlir::DictionaryAttr odsAttrs;
246 ::std::optional<::mlir::OperationName> odsOpName;
247 ::mlir::RegionRange odsRegions;
248public:
249 ContractEndOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
250 odsOpName.emplace("verif.contract_end", odsAttrs.getContext());
251 }
252
253 ContractEndOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
254
255 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) {
256 return {index, 1};
257 }
258
259 ::mlir::DictionaryAttr getAttributes() {
260 return odsAttrs;
261 }
262
263};
264} // namespace detail
265template <typename RangeT>
267 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
269public:
270 ContractEndOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
271
272 ContractEndOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : ContractEndOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
273
274 ContractEndOpGenericAdaptor(RangeT values, const ContractEndOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
275
276 template <typename LateInst = ContractEndOp, typename = std::enable_if_t<std::is_same_v<LateInst, ContractEndOp>>>
277 ContractEndOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
278
279 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
280 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
281 }
282
283 RangeT getODSOperands(unsigned index) {
284 auto valueRange = getODSOperandIndexAndLength(index);
285 return {std::next(odsOperands.begin(), valueRange.first),
286 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
287 }
288
289 RangeT getOperands() {
290 return odsOperands;
291 }
292
293private:
294 RangeT odsOperands;
295};
296class ContractEndOpAdaptor : public ContractEndOpGenericAdaptor<::mlir::ValueRange> {
297public:
300
301 ::llvm::LogicalResult verify(::mlir::Location loc);
302};
303class ContractEndOp : public ::mlir::Op<ContractEndOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::ZeroResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::mlir::OpTrait::HasParent<::llzk::verif::ContractOp>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait, ::mlir::OpTrait::IsTerminator> {
304public:
305 using Op::Op;
306 using Op::print;
308 template <typename RangeT>
311 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
312 return {};
313 }
314
315 static constexpr ::llvm::StringLiteral getOperationName() {
316 return ::llvm::StringLiteral("verif.contract_end");
317 }
318
319 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
320 return {index, 1};
321 }
322
323 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
324 auto valueRange = getODSOperandIndexAndLength(index);
325 return {std::next(getOperation()->operand_begin(), valueRange.first),
326 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
327 }
328
329 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
330 return {index, 1};
331 }
332
333 ::mlir::Operation::result_range getODSResults(unsigned index) {
334 auto valueRange = getODSResultIndexAndLength(index);
335 return {std::next(getOperation()->result_begin(), valueRange.first),
336 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
337 }
338
339 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState);
340 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes);
341 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
342 ::llvm::LogicalResult verifyInvariantsImpl();
343 ::llvm::LogicalResult verifyInvariants();
344 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
345 void print(::mlir::OpAsmPrinter &_odsPrinter);
346 void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects);
347public:
348};
349} // namespace verif
350} // namespace llzk
351MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::verif::ContractEndOp)
352
353namespace llzk {
354namespace verif {
355
356//===----------------------------------------------------------------------===//
357// ::llzk::verif::ContractOp declarations
358//===----------------------------------------------------------------------===//
359
360namespace detail {
362public:
363 struct Properties {
364 using arg_attrsTy = ::mlir::ArrayAttr;
366
367 auto getArgAttrs() {
368 auto &propStorage = this->arg_attrs;
369 return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage);
370 }
371 void setArgAttrs(const ::mlir::ArrayAttr &propValue) {
372 this->arg_attrs = propValue;
373 }
374 using function_typeTy = ::mlir::TypeAttr;
376
378 auto &propStorage = this->function_type;
379 return ::llvm::cast<::mlir::TypeAttr>(propStorage);
380 }
381 void setFunctionType(const ::mlir::TypeAttr &propValue) {
382 this->function_type = propValue;
383 }
384 using sym_nameTy = ::mlir::StringAttr;
386
387 auto getSymName() {
388 auto &propStorage = this->sym_name;
389 return ::llvm::cast<::mlir::StringAttr>(propStorage);
390 }
391 void setSymName(const ::mlir::StringAttr &propValue) {
392 this->sym_name = propValue;
393 }
394 using targetTy = ::mlir::SymbolRefAttr;
396
397 auto getTarget() {
398 auto &propStorage = this->target;
399 return ::llvm::cast<::mlir::SymbolRefAttr>(propStorage);
400 }
401 void setTarget(const ::mlir::SymbolRefAttr &propValue) {
402 this->target = propValue;
403 }
404 bool operator==(const Properties &rhs) const {
405 return
406 rhs.arg_attrs == this->arg_attrs &&
407 rhs.function_type == this->function_type &&
408 rhs.sym_name == this->sym_name &&
409 rhs.target == this->target &&
410 true;
411 }
412 bool operator!=(const Properties &rhs) const {
413 return !(*this == rhs);
414 }
415 };
416protected:
417 ::mlir::DictionaryAttr odsAttrs;
418 ::std::optional<::mlir::OperationName> odsOpName;
420 ::mlir::RegionRange odsRegions;
421public:
422 ContractOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs)
423 odsOpName.emplace("verif.contract", odsAttrs.getContext());
424 }
425
427
428 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) {
429 return {index, 1};
430 }
431
433 return properties;
434 }
435
436 ::mlir::DictionaryAttr getAttributes() {
437 return odsAttrs;
438 }
439
440 ::mlir::StringAttr getSymNameAttr() {
441 auto attr = ::llvm::cast<::mlir::StringAttr>(getProperties().sym_name);
442 return attr;
443 }
444
445 ::llvm::StringRef getSymName();
446 ::mlir::SymbolRefAttr getTargetAttr() {
447 auto attr = ::llvm::cast<::mlir::SymbolRefAttr>(getProperties().target);
448 return attr;
449 }
450
451 ::mlir::SymbolRefAttr getTarget();
452 ::mlir::TypeAttr getFunctionTypeAttr() {
453 auto attr = ::llvm::cast<::mlir::TypeAttr>(getProperties().function_type);
454 return attr;
455 }
456
457 ::mlir::FunctionType getFunctionType();
458 ::mlir::ArrayAttr getArgAttrsAttr() {
459 auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().arg_attrs);
460 return attr;
461 }
462
463 ::std::optional< ::mlir::ArrayAttr > getArgAttrs();
464 ::mlir::Region &getBody() {
465 return *odsRegions[0];
466 }
467
468 ::mlir::RegionRange getRegions() {
469 return odsRegions;
470 }
471
472};
473} // namespace detail
474template <typename RangeT>
476 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
478public:
479 ContractOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
480
481 ContractOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : ContractOpGenericAdaptor(values, attrs, (properties ? *properties.as<Properties *>() : Properties{}), regions) {}
482
483 ContractOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ContractOpGenericAdaptor(values, attrs, Properties{}, {}) {}
484
485 ContractOpGenericAdaptor(RangeT values, const ContractOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
486
487 template <typename LateInst = ContractOp, typename = std::enable_if_t<std::is_same_v<LateInst, ContractOp>>>
488 ContractOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
489
490 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
491 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
492 }
493
494 RangeT getODSOperands(unsigned index) {
495 auto valueRange = getODSOperandIndexAndLength(index);
496 return {std::next(odsOperands.begin(), valueRange.first),
497 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
498 }
499
500 RangeT getOperands() {
501 return odsOperands;
502 }
503
504private:
505 RangeT odsOperands;
506};
507class ContractOpAdaptor : public ContractOpGenericAdaptor<::mlir::ValueRange> {
508public:
511
512 ::llvm::LogicalResult verify(::mlir::Location loc);
513};
514class ContractOp : public ::mlir::Op<ContractOp, ::mlir::OpTrait::OneRegion, ::mlir::OpTrait::ZeroResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::mlir::OpTrait::HasParent<::mlir::ModuleOp, ::llzk::polymorphic::TemplateOp>::Impl, ::mlir::OpTrait::SingleBlock, ::mlir::OpTrait::SingleBlockImplicitTerminator<::llzk::verif::ContractEndOp>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::SymbolUserOpInterface::Trait, ::mlir::OpTrait::AffineScope, ::mlir::OpTrait::AutomaticAllocationScope, ::mlir::SymbolOpInterface::Trait, ::mlir::CallableOpInterface::Trait, ::mlir::FunctionOpInterface::Trait, ::mlir::OpTrait::IsIsolatedFromAbove> {
515public:
516 using Op::Op;
517 using Op::print;
519 template <typename RangeT>
523 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
524 static ::llvm::StringRef attrNames[] = {::llvm::StringRef("arg_attrs"), ::llvm::StringRef("function_type"), ::llvm::StringRef("sym_name"), ::llvm::StringRef("target")};
525 return ::llvm::ArrayRef(attrNames);
526 }
527
528 ::mlir::StringAttr getArgAttrsAttrName() {
529 return getAttributeNameForIndex(0);
530 }
531
532 static ::mlir::StringAttr getArgAttrsAttrName(::mlir::OperationName name) {
533 return getAttributeNameForIndex(name, 0);
534 }
535
536 ::mlir::StringAttr getFunctionTypeAttrName() {
537 return getAttributeNameForIndex(1);
538 }
539
540 static ::mlir::StringAttr getFunctionTypeAttrName(::mlir::OperationName name) {
541 return getAttributeNameForIndex(name, 1);
542 }
543
544 ::mlir::StringAttr getSymNameAttrName() {
545 return getAttributeNameForIndex(2);
546 }
547
548 static ::mlir::StringAttr getSymNameAttrName(::mlir::OperationName name) {
549 return getAttributeNameForIndex(name, 2);
550 }
551
552 ::mlir::StringAttr getTargetAttrName() {
553 return getAttributeNameForIndex(3);
554 }
555
556 static ::mlir::StringAttr getTargetAttrName(::mlir::OperationName name) {
557 return getAttributeNameForIndex(name, 3);
558 }
559
560 static constexpr ::llvm::StringLiteral getOperationName() {
561 return ::llvm::StringLiteral("verif.contract");
562 }
563
564 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
565 return {index, 1};
566 }
567
568 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
569 auto valueRange = getODSOperandIndexAndLength(index);
570 return {std::next(getOperation()->operand_begin(), valueRange.first),
571 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
572 }
573
574 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
575 return {index, 1};
576 }
577
578 ::mlir::Operation::result_range getODSResults(unsigned index) {
579 auto valueRange = getODSResultIndexAndLength(index);
580 return {std::next(getOperation()->result_begin(), valueRange.first),
581 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
582 }
583
584 ::mlir::Region &getBody() {
585 return (*this)->getRegion(0);
586 }
587
588 static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError);
589 static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop);
590 static llvm::hash_code computePropertiesHash(const Properties &prop);
591 static std::optional<mlir::Attribute> getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name);
592 static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value);
593 static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs);
594 static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError);
595 static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state);
596 void writeProperties(::mlir::DialectBytecodeWriter &writer);
597 ::mlir::StringAttr getSymNameAttr() {
598 return ::llvm::cast<::mlir::StringAttr>(getProperties().sym_name);
599 }
600
601 ::llvm::StringRef getSymName();
602 ::mlir::SymbolRefAttr getTargetAttr() {
603 return ::llvm::cast<::mlir::SymbolRefAttr>(getProperties().target);
604 }
605
606 ::mlir::SymbolRefAttr getTarget();
607 ::mlir::TypeAttr getFunctionTypeAttr() {
608 return ::llvm::cast<::mlir::TypeAttr>(getProperties().function_type);
609 }
610
611 ::mlir::FunctionType getFunctionType();
612 ::mlir::ArrayAttr getArgAttrsAttr() {
613 return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().arg_attrs);
614 }
615
616 ::std::optional< ::mlir::ArrayAttr > getArgAttrs();
617 void setSymNameAttr(::mlir::StringAttr attr) {
618 getProperties().sym_name = attr;
619 }
620
621 void setSymName(::llvm::StringRef attrValue);
622 void setTargetAttr(::mlir::SymbolRefAttr attr) {
623 getProperties().target = attr;
624 }
625
626 void setFunctionTypeAttr(::mlir::TypeAttr attr) {
627 getProperties().function_type = attr;
628 }
629
630 void setFunctionType(::mlir::FunctionType attrValue);
631 void setArgAttrsAttr(::mlir::ArrayAttr attr) {
632 getProperties().arg_attrs = attr;
633 }
634
635 ::mlir::Attribute removeArgAttrsAttr() {
636 auto &attr = getProperties().arg_attrs;
637 attr = {};
638 return attr;
639 }
640
641 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::StringAttr sym_name, ::mlir::SymbolRefAttr target, ::mlir::TypeAttr function_type, ::mlir::ArrayAttr arg_attrs = {});
642 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::StringAttr sym_name, ::mlir::SymbolRefAttr target, ::mlir::TypeAttr function_type, ::mlir::ArrayAttr arg_attrs = {});
643 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::llvm::StringRef sym_name, ::mlir::SymbolRefAttr target, ::mlir::FunctionType function_type, ::mlir::ArrayAttr arg_attrs = {});
644 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::llvm::StringRef sym_name, ::mlir::SymbolRefAttr target, ::mlir::FunctionType function_type, ::mlir::ArrayAttr arg_attrs = {});
645 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::llvm::StringRef name, llvm::StringRef target);
646 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::llvm::StringRef name, ::mlir::SymbolRefAttr target);
647 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
648 void print(::mlir::OpAsmPrinter &p);
649 ::llvm::LogicalResult verifyInvariantsImpl();
650 ::llvm::LogicalResult verifyInvariants();
651 ::llvm::LogicalResult verify();
652 ::llvm::LogicalResult verifyRegions();
653 ::llvm::LogicalResult verifySymbolUses(::mlir::SymbolTableCollection &symbolTable);
654private:
655 ::mlir::StringAttr getAttributeNameForIndex(unsigned index) {
656 return getAttributeNameForIndex((*this)->getName(), index);
657 }
658
659 static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) {
660 assert(index < 4 && "invalid attribute index");
661 assert(name.getStringRef() == getOperationName() && "invalid operation name");
662 assert(name.isRegistered() && "Operation isn't registered, missing a "
663 "dependent dialect loading?");
664 return name.getAttributeNames()[index];
665 }
666
667public:
675 ContractOp clone(::mlir::IRMapping &mapper);
677
682 void cloneInto(ContractOp dest, ::mlir::IRMapping &mapper);
683
685 bool hasArgPublicAttr(unsigned index);
686
688 bool hasArgName(unsigned index);
689
691 ::std::optional<::mlir::StringAttr> getArgNameAttr(unsigned index);
692
694 void setArgNameAttr(unsigned index, const ::mlir::StringAttr &attr);
695
697 void setArgName(unsigned index, ::llvm::StringRef name);
698
701 ::mlir::Region *getCallableRegion() { return &getBody(); }
702
705 ::llvm::ArrayRef<::mlir::Type> getArgumentTypes() { return getFunctionType().getInputs(); }
706
710 ::llvm::ArrayRef<::mlir::Type> getResultTypes() { return getFunctionType().getResults(); }
711
713 bool isDeclaration() { return false; }
714
717 ::mlir::SymbolRefAttr getFullyQualifiedName(bool requireParent = true);
718
720 bool hasStructTarget() { return succeeded(getStructTarget()); }
721
724 ::mlir::FailureOr<SymbolLookupResult<component::StructDefOp>> getStructTarget(::mlir::SymbolTableCollection &tables);
725
726 ::mlir::FailureOr<SymbolLookupResult<component::StructDefOp>> getStructTarget() {
727 ::mlir::SymbolTableCollection tables;
728 return getStructTarget(tables);
729 }
730
733 ::mlir::FailureOr<::mlir::Value> getSelfValue();
734
736 bool hasFuncTarget() { return succeeded(getFuncTarget()); }
737
740 ::mlir::FailureOr<SymbolLookupResult<function::FuncDefOp>> getFuncTarget(::mlir::SymbolTableCollection &tables);
741
742 ::mlir::FailureOr<SymbolLookupResult<function::FuncDefOp>> getFuncTarget() {
743 ::mlir::SymbolTableCollection tables;
744 return getFuncTarget(tables);
745 }
746
749 ::mlir::FailureOr<SymbolLookupResult<::llzk::verif::ContractTargetOpInterface>> getTargetOp(::mlir::SymbolTableCollection &tables);
750
751 ::mlir::FailureOr<SymbolLookupResult<::llzk::verif::ContractTargetOpInterface>> getTargetOp() {
752 ::mlir::SymbolTableCollection tables;
753 return getTargetOp(tables);
754 }
755
756 private:
759 static void initializeEmptyBody(
760 ::mlir::OpBuilder &builder, ::mlir::OperationState &state,
761 ::mlir::FunctionType functionType
762 );
763};
764} // namespace verif
765} // namespace llzk
766MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::verif::ContractOp)
767
768namespace llzk {
769namespace verif {
770
771//===----------------------------------------------------------------------===//
772// ::llzk::verif::DecreasesOp declarations
773//===----------------------------------------------------------------------===//
774
775namespace detail {
777public:
778protected:
779 ::mlir::DictionaryAttr odsAttrs;
780 ::std::optional<::mlir::OperationName> odsOpName;
781 ::mlir::RegionRange odsRegions;
782public:
783 DecreasesOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
784 odsOpName.emplace("verif.decreases", odsAttrs.getContext());
785 }
786
787 DecreasesOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
788
789 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) {
790 return {index, 1};
791 }
792
793 ::mlir::DictionaryAttr getAttributes() {
794 return odsAttrs;
795 }
796
797};
798} // namespace detail
799template <typename RangeT>
801 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
803public:
804 DecreasesOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
805
806 DecreasesOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : DecreasesOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
807
808 DecreasesOpGenericAdaptor(RangeT values, const DecreasesOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
809
810 template <typename LateInst = DecreasesOp, typename = std::enable_if_t<std::is_same_v<LateInst, DecreasesOp>>>
811 DecreasesOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
812
813 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
814 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
815 }
816
817 RangeT getODSOperands(unsigned index) {
818 auto valueRange = getODSOperandIndexAndLength(index);
819 return {std::next(odsOperands.begin(), valueRange.first),
820 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
821 }
822
823 ValueT getValue() {
824 return (*getODSOperands(0).begin());
825 }
826
827 RangeT getOperands() {
828 return odsOperands;
829 }
830
831private:
832 RangeT odsOperands;
833};
834class DecreasesOpAdaptor : public DecreasesOpGenericAdaptor<::mlir::ValueRange> {
835public:
838
839 ::llvm::LogicalResult verify(::mlir::Location loc);
840};
841class DecreasesOp : public ::mlir::Op<DecreasesOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::ZeroResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::llzk::HasAncestor<::llzk::verif::InvariantOp>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::MemoryEffectOpInterface::Trait> {
842public:
843 using Op::Op;
844 using Op::print;
846 template <typename RangeT>
849 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
850 return {};
851 }
852
853 static constexpr ::llvm::StringLiteral getOperationName() {
854 return ::llvm::StringLiteral("verif.decreases");
855 }
856
857 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
858 return {index, 1};
859 }
860
861 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
862 auto valueRange = getODSOperandIndexAndLength(index);
863 return {std::next(getOperation()->operand_begin(), valueRange.first),
864 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
865 }
866
867 ::mlir::TypedValue<::llzk::felt::FeltType> getValue() {
868 return ::llvm::cast<::mlir::TypedValue<::llzk::felt::FeltType>>(*getODSOperands(0).begin());
869 }
870
871 ::mlir::OpOperand &getValueMutable() {
872 auto range = getODSOperandIndexAndLength(0);
873 return getOperation()->getOpOperand(range.first);
874 }
875
876 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
877 return {index, 1};
878 }
879
880 ::mlir::Operation::result_range getODSResults(unsigned index) {
881 auto valueRange = getODSResultIndexAndLength(index);
882 return {std::next(getOperation()->result_begin(), valueRange.first),
883 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
884 }
885
886 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value value);
887 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value value);
888 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
889 ::llvm::LogicalResult verifyInvariantsImpl();
890 ::llvm::LogicalResult verifyInvariants();
891 void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects);
892 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
893 void print(::mlir::OpAsmPrinter &_odsPrinter);
894public:
895};
896} // namespace verif
897} // namespace llzk
898MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::verif::DecreasesOp)
899
900namespace llzk {
901namespace verif {
902
903//===----------------------------------------------------------------------===//
904// ::llzk::verif::EnsureComputeOp declarations
905//===----------------------------------------------------------------------===//
906
907namespace detail {
909public:
910protected:
911 ::mlir::DictionaryAttr odsAttrs;
912 ::std::optional<::mlir::OperationName> odsOpName;
913 ::mlir::RegionRange odsRegions;
914public:
915 EnsureComputeOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
916 odsOpName.emplace("verif.ensure_compute", odsAttrs.getContext());
917 }
918
919 EnsureComputeOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
920
921 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) {
922 return {index, 1};
923 }
924
925 ::mlir::DictionaryAttr getAttributes() {
926 return odsAttrs;
927 }
928
929};
930} // namespace detail
931template <typename RangeT>
933 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
935public:
936 EnsureComputeOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
937
938 EnsureComputeOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : EnsureComputeOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
939
940 EnsureComputeOpGenericAdaptor(RangeT values, const EnsureComputeOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
941
942 template <typename LateInst = EnsureComputeOp, typename = std::enable_if_t<std::is_same_v<LateInst, EnsureComputeOp>>>
943 EnsureComputeOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
944
945 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
946 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
947 }
948
949 RangeT getODSOperands(unsigned index) {
950 auto valueRange = getODSOperandIndexAndLength(index);
951 return {std::next(odsOperands.begin(), valueRange.first),
952 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
953 }
954
955 ValueT getCondition() {
956 return (*getODSOperands(0).begin());
957 }
958
959 RangeT getOperands() {
960 return odsOperands;
961 }
962
963private:
964 RangeT odsOperands;
965};
966class EnsureComputeOpAdaptor : public EnsureComputeOpGenericAdaptor<::mlir::ValueRange> {
967public:
970
971 ::llvm::LogicalResult verify(::mlir::Location loc);
972};
973class EnsureComputeOp : public ::mlir::Op<EnsureComputeOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::ZeroResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::llzk::HasAncestor<::llzk::verif::ContractOp>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::MemoryEffectOpInterface::Trait, ::llzk::verif::ConditionOpInterface::Trait, ::llzk::verif::PostconditionOpInterface::Trait> {
974public:
975 using Op::Op;
976 using Op::print;
978 template <typename RangeT>
981 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
982 return {};
983 }
984
985 static constexpr ::llvm::StringLiteral getOperationName() {
986 return ::llvm::StringLiteral("verif.ensure_compute");
987 }
988
989 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
990 return {index, 1};
991 }
992
993 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
994 auto valueRange = getODSOperandIndexAndLength(index);
995 return {std::next(getOperation()->operand_begin(), valueRange.first),
996 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
997 }
998
999 ::mlir::TypedValue<::mlir::IntegerType> getCondition() {
1000 return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin());
1001 }
1002
1003 ::mlir::OpOperand &getConditionMutable() {
1004 auto range = getODSOperandIndexAndLength(0);
1005 return getOperation()->getOpOperand(range.first);
1006 }
1007
1008 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
1009 return {index, 1};
1010 }
1011
1012 ::mlir::Operation::result_range getODSResults(unsigned index) {
1013 auto valueRange = getODSResultIndexAndLength(index);
1014 return {std::next(getOperation()->result_begin(), valueRange.first),
1015 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
1016 }
1017
1018 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value condition);
1019 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value condition);
1020 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
1021 ::llvm::LogicalResult verifyInvariantsImpl();
1022 ::llvm::LogicalResult verifyInvariants();
1023 void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects);
1024 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
1025 void print(::mlir::OpAsmPrinter &_odsPrinter);
1026public:
1027};
1028} // namespace verif
1029} // namespace llzk
1030MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::verif::EnsureComputeOp)
1031
1032namespace llzk {
1033namespace verif {
1034
1035//===----------------------------------------------------------------------===//
1036// ::llzk::verif::EnsureConstrainOp declarations
1037//===----------------------------------------------------------------------===//
1038
1039namespace detail {
1041public:
1042protected:
1043 ::mlir::DictionaryAttr odsAttrs;
1044 ::std::optional<::mlir::OperationName> odsOpName;
1045 ::mlir::RegionRange odsRegions;
1046public:
1047 EnsureConstrainOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
1048 odsOpName.emplace("verif.ensure_constrain", odsAttrs.getContext());
1049 }
1050
1051 EnsureConstrainOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
1052
1053 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) {
1054 return {index, 1};
1055 }
1056
1057 ::mlir::DictionaryAttr getAttributes() {
1058 return odsAttrs;
1059 }
1060
1061};
1062} // namespace detail
1063template <typename RangeT>
1065 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
1067public:
1068 EnsureConstrainOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
1069
1070 EnsureConstrainOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : EnsureConstrainOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
1071
1072 EnsureConstrainOpGenericAdaptor(RangeT values, const EnsureConstrainOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
1073
1074 template <typename LateInst = EnsureConstrainOp, typename = std::enable_if_t<std::is_same_v<LateInst, EnsureConstrainOp>>>
1075 EnsureConstrainOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
1076
1077 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
1078 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
1079 }
1080
1081 RangeT getODSOperands(unsigned index) {
1082 auto valueRange = getODSOperandIndexAndLength(index);
1083 return {std::next(odsOperands.begin(), valueRange.first),
1084 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
1085 }
1086
1087 ValueT getCondition() {
1088 return (*getODSOperands(0).begin());
1089 }
1090
1091 RangeT getOperands() {
1092 return odsOperands;
1093 }
1094
1095private:
1096 RangeT odsOperands;
1097};
1099public:
1102
1103 ::llvm::LogicalResult verify(::mlir::Location loc);
1104};
1105class EnsureConstrainOp : public ::mlir::Op<EnsureConstrainOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::ZeroResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::llzk::function::Verification<::llzk::function::ConstraintGen>::Impl, ::llzk::HasAncestor<::llzk::verif::ContractOp, ::llzk::function::FuncDefOp>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::MemoryEffectOpInterface::Trait, ::llzk::verif::ConditionOpInterface::Trait, ::llzk::verif::PostconditionOpInterface::Trait> {
1106public:
1107 using Op::Op;
1108 using Op::print;
1110 template <typename RangeT>
1113 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
1114 return {};
1115 }
1116
1117 static constexpr ::llvm::StringLiteral getOperationName() {
1118 return ::llvm::StringLiteral("verif.ensure_constrain");
1119 }
1120
1121 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
1122 return {index, 1};
1123 }
1124
1125 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
1126 auto valueRange = getODSOperandIndexAndLength(index);
1127 return {std::next(getOperation()->operand_begin(), valueRange.first),
1128 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
1129 }
1130
1131 ::mlir::TypedValue<::mlir::IntegerType> getCondition() {
1132 return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin());
1133 }
1134
1135 ::mlir::OpOperand &getConditionMutable() {
1136 auto range = getODSOperandIndexAndLength(0);
1137 return getOperation()->getOpOperand(range.first);
1138 }
1139
1140 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
1141 return {index, 1};
1142 }
1143
1144 ::mlir::Operation::result_range getODSResults(unsigned index) {
1145 auto valueRange = getODSResultIndexAndLength(index);
1146 return {std::next(getOperation()->result_begin(), valueRange.first),
1147 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
1148 }
1149
1150 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value condition);
1151 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value condition);
1152 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
1153 ::llvm::LogicalResult verifyInvariantsImpl();
1154 ::llvm::LogicalResult verifyInvariants();
1155 void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects);
1156 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
1157 void print(::mlir::OpAsmPrinter &_odsPrinter);
1158public:
1159};
1160} // namespace verif
1161} // namespace llzk
1162MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::verif::EnsureConstrainOp)
1163
1164namespace llzk {
1165namespace verif {
1166
1167//===----------------------------------------------------------------------===//
1168// ::llzk::verif::IncludeOp declarations
1169//===----------------------------------------------------------------------===//
1170
1171namespace detail {
1173public:
1174 struct Properties {
1175 using calleeTy = ::mlir::SymbolRefAttr;
1177
1178 auto getCallee() {
1179 auto &propStorage = this->callee;
1180 return ::llvm::cast<::mlir::SymbolRefAttr>(propStorage);
1181 }
1182 void setCallee(const ::mlir::SymbolRefAttr &propValue) {
1183 this->callee = propValue;
1184 }
1185 using mapOpGroupSizesTy = ::mlir::DenseI32ArrayAttr;
1187
1189 auto &propStorage = this->mapOpGroupSizes;
1190 return ::llvm::cast<::mlir::DenseI32ArrayAttr>(propStorage);
1191 }
1192 void setMapOpGroupSizes(const ::mlir::DenseI32ArrayAttr &propValue) {
1193 this->mapOpGroupSizes = propValue;
1194 }
1195 using numDimsPerMapTy = ::mlir::DenseI32ArrayAttr;
1197
1199 auto &propStorage = this->numDimsPerMap;
1200 return ::llvm::dyn_cast_or_null<::mlir::DenseI32ArrayAttr>(propStorage);
1201 }
1202 void setNumDimsPerMap(const ::mlir::DenseI32ArrayAttr &propValue) {
1203 this->numDimsPerMap = propValue;
1204 }
1205 using templateParamsTy = ::mlir::ArrayAttr;
1207
1209 auto &propStorage = this->templateParams;
1210 return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage);
1211 }
1212 void setTemplateParams(const ::mlir::ArrayAttr &propValue) {
1213 this->templateParams = propValue;
1214 }
1215 using operandSegmentSizesTy = std::array<int32_t, 2>;
1217 ::llvm::ArrayRef<int32_t> getOperandSegmentSizes() const {
1218 auto &propStorage = this->operandSegmentSizes;
1219 return propStorage;
1220 }
1221 void setOperandSegmentSizes(::llvm::ArrayRef<int32_t> propValue) {
1222 auto &propStorage = this->operandSegmentSizes;
1223 ::llvm::copy(propValue, propStorage.begin());
1224 }
1225 bool operator==(const Properties &rhs) const {
1226 return
1227 rhs.callee == this->callee &&
1228 rhs.mapOpGroupSizes == this->mapOpGroupSizes &&
1229 rhs.numDimsPerMap == this->numDimsPerMap &&
1230 rhs.templateParams == this->templateParams &&
1231 rhs.operandSegmentSizes == this->operandSegmentSizes &&
1232 true;
1233 }
1234 bool operator!=(const Properties &rhs) const {
1235 return !(*this == rhs);
1236 }
1237 };
1238protected:
1239 ::mlir::DictionaryAttr odsAttrs;
1240 ::std::optional<::mlir::OperationName> odsOpName;
1242 ::mlir::RegionRange odsRegions;
1243public:
1244 IncludeOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs)
1245 odsOpName.emplace("verif.include", odsAttrs.getContext());
1246 }
1247
1249
1250 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize);
1252 return properties;
1253 }
1254
1255 ::mlir::DictionaryAttr getAttributes() {
1256 return odsAttrs;
1257 }
1258
1259 ::mlir::SymbolRefAttr getCalleeAttr() {
1260 auto attr = ::llvm::cast<::mlir::SymbolRefAttr>(getProperties().callee);
1261 return attr;
1262 }
1263
1264 ::mlir::SymbolRefAttr getCallee();
1265 ::mlir::ArrayAttr getTemplateParamsAttr() {
1266 auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().templateParams);
1267 return attr;
1268 }
1269
1270 ::std::optional< ::mlir::ArrayAttr > getTemplateParams();
1271 ::mlir::DenseI32ArrayAttr getNumDimsPerMapAttr();
1272 ::llvm::ArrayRef<int32_t> getNumDimsPerMap();
1273 ::mlir::DenseI32ArrayAttr getMapOpGroupSizesAttr() {
1274 auto attr = ::llvm::cast<::mlir::DenseI32ArrayAttr>(getProperties().mapOpGroupSizes);
1275 return attr;
1276 }
1277
1278 ::llvm::ArrayRef<int32_t> getMapOpGroupSizes();
1279};
1280} // namespace detail
1281template <typename RangeT>
1283 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
1285public:
1286 IncludeOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
1287
1288 IncludeOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : IncludeOpGenericAdaptor(values, attrs, (properties ? *properties.as<Properties *>() : Properties{}), regions) {}
1289
1290 IncludeOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs) : IncludeOpGenericAdaptor(values, attrs, Properties{}, {}) {}
1291
1292 IncludeOpGenericAdaptor(RangeT values, const IncludeOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
1293
1294 template <typename LateInst = IncludeOp, typename = std::enable_if_t<std::is_same_v<LateInst, IncludeOp>>>
1295 IncludeOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
1296
1297 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
1298 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
1299 }
1300
1301 RangeT getODSOperands(unsigned index) {
1302 auto valueRange = getODSOperandIndexAndLength(index);
1303 return {std::next(odsOperands.begin(), valueRange.first),
1304 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
1305 }
1306
1308 return getODSOperands(0);
1309 }
1310
1311 ::llvm::SmallVector<RangeT> getMapOperands() {
1312 auto tblgenTmpOperands = getODSOperands(1);
1313 auto sizes = getMapOpGroupSizes();
1314
1315 ::llvm::SmallVector<RangeT> tblgenTmpOperandGroups;
1316 for (int i = 0, e = sizes.size(); i < e; ++i) {
1317 tblgenTmpOperandGroups.push_back(tblgenTmpOperands.take_front(sizes[i]));
1318 tblgenTmpOperands = tblgenTmpOperands.drop_front(sizes[i]);
1319 }
1320 return tblgenTmpOperandGroups;
1321 }
1322
1323 RangeT getOperands() {
1324 return odsOperands;
1325 }
1326
1327private:
1328 RangeT odsOperands;
1329};
1330class IncludeOpAdaptor : public IncludeOpGenericAdaptor<::mlir::ValueRange> {
1331public:
1334
1335 ::llvm::LogicalResult verify(::mlir::Location loc);
1336};
1337class IncludeOp : public ::mlir::Op<IncludeOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::ZeroResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::VariadicOperands, ::mlir::OpTrait::AttrSizedOperandSegments, ::llzk::VerifySizesForMultiAffineOps<1>::Impl, ::llzk::HasAncestor<::llzk::verif::ContractOp>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::OpTrait::MemRefsNormalizable, ::mlir::CallOpInterface::Trait, ::mlir::SymbolUserOpInterface::Trait> {
1338public:
1339 using Op::Op;
1340 using Op::print;
1342 template <typename RangeT>
1346 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
1347 static ::llvm::StringRef attrNames[] = {::llvm::StringRef("callee"), ::llvm::StringRef("mapOpGroupSizes"), ::llvm::StringRef("numDimsPerMap"), ::llvm::StringRef("templateParams"), ::llvm::StringRef("operandSegmentSizes")};
1348 return ::llvm::ArrayRef(attrNames);
1349 }
1350
1351 ::mlir::StringAttr getCalleeAttrName() {
1352 return getAttributeNameForIndex(0);
1353 }
1354
1355 static ::mlir::StringAttr getCalleeAttrName(::mlir::OperationName name) {
1356 return getAttributeNameForIndex(name, 0);
1357 }
1358
1359 ::mlir::StringAttr getMapOpGroupSizesAttrName() {
1360 return getAttributeNameForIndex(1);
1361 }
1362
1363 static ::mlir::StringAttr getMapOpGroupSizesAttrName(::mlir::OperationName name) {
1364 return getAttributeNameForIndex(name, 1);
1365 }
1366
1367 ::mlir::StringAttr getNumDimsPerMapAttrName() {
1368 return getAttributeNameForIndex(2);
1369 }
1370
1371 static ::mlir::StringAttr getNumDimsPerMapAttrName(::mlir::OperationName name) {
1372 return getAttributeNameForIndex(name, 2);
1373 }
1374
1375 ::mlir::StringAttr getTemplateParamsAttrName() {
1376 return getAttributeNameForIndex(3);
1377 }
1378
1379 static ::mlir::StringAttr getTemplateParamsAttrName(::mlir::OperationName name) {
1380 return getAttributeNameForIndex(name, 3);
1381 }
1382
1383 ::mlir::StringAttr getOperandSegmentSizesAttrName() {
1384 return (*this)->getName().getAttributeNames().back();
1385 }
1386
1387 static ::mlir::StringAttr getOperandSegmentSizesAttrName(::mlir::OperationName name) {
1388 return name.getAttributeNames().back();
1389 }
1390
1391 static constexpr ::llvm::StringLiteral getOperationName() {
1392 return ::llvm::StringLiteral("verif.include");
1393 }
1394
1395 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index);
1396 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
1397 auto valueRange = getODSOperandIndexAndLength(index);
1398 return {std::next(getOperation()->operand_begin(), valueRange.first),
1399 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
1400 }
1401
1402 ::mlir::Operation::operand_range getArgOperands() {
1403 return getODSOperands(0);
1404 }
1405
1406 ::mlir::OperandRangeRange getMapOperands() {
1407 return getODSOperands(1).split(getMapOpGroupSizesAttr());
1408 }
1409
1410 ::mlir::MutableOperandRange getArgOperandsMutable();
1411 ::mlir::MutableOperandRangeRange getMapOperandsMutable();
1412 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
1413 return {index, 1};
1414 }
1415
1416 ::mlir::Operation::result_range getODSResults(unsigned index) {
1417 auto valueRange = getODSResultIndexAndLength(index);
1418 return {std::next(getOperation()->result_begin(), valueRange.first),
1419 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
1420 }
1421
1422 static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError);
1423 static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop);
1424 static llvm::hash_code computePropertiesHash(const Properties &prop);
1425 static std::optional<mlir::Attribute> getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name);
1426 static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value);
1427 static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs);
1428 static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError);
1429 static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state);
1430 void writeProperties(::mlir::DialectBytecodeWriter &writer);
1431 ::mlir::SymbolRefAttr getCalleeAttr() {
1432 return ::llvm::cast<::mlir::SymbolRefAttr>(getProperties().callee);
1433 }
1434
1435 ::mlir::SymbolRefAttr getCallee();
1436 ::mlir::ArrayAttr getTemplateParamsAttr() {
1437 return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().templateParams);
1438 }
1439
1440 ::std::optional< ::mlir::ArrayAttr > getTemplateParams();
1441 ::mlir::DenseI32ArrayAttr getNumDimsPerMapAttr() {
1442 return ::llvm::dyn_cast_or_null<::mlir::DenseI32ArrayAttr>(getProperties().numDimsPerMap);
1443 }
1444
1445 ::llvm::ArrayRef<int32_t> getNumDimsPerMap();
1446 ::mlir::DenseI32ArrayAttr getMapOpGroupSizesAttr() {
1447 return ::llvm::cast<::mlir::DenseI32ArrayAttr>(getProperties().mapOpGroupSizes);
1448 }
1449
1450 ::llvm::ArrayRef<int32_t> getMapOpGroupSizes();
1451 void setCalleeAttr(::mlir::SymbolRefAttr attr) {
1452 getProperties().callee = attr;
1453 }
1454
1455 void setTemplateParamsAttr(::mlir::ArrayAttr attr) {
1456 getProperties().templateParams = attr;
1457 }
1458
1459 void setNumDimsPerMapAttr(::mlir::DenseI32ArrayAttr attr) {
1460 getProperties().numDimsPerMap = attr;
1461 }
1462
1463 void setNumDimsPerMap(::llvm::ArrayRef<int32_t> attrValue);
1464 void setMapOpGroupSizesAttr(::mlir::DenseI32ArrayAttr attr) {
1465 getProperties().mapOpGroupSizes = attr;
1466 }
1467
1468 void setMapOpGroupSizes(::llvm::ArrayRef<int32_t> attrValue);
1469 ::mlir::Attribute removeTemplateParamsAttr() {
1470 auto &attr = getProperties().templateParams;
1471 attr = {};
1472 return attr;
1473 }
1474
1475 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::SymbolRefAttr callee, ::mlir::ValueRange argOperands = {}, ::llvm::ArrayRef<::mlir::Attribute> templateParams = {});
1476 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::SymbolRefAttr callee, ::llvm::ArrayRef<::mlir::ValueRange> mapOperands, ::mlir::DenseI32ArrayAttr numDimsPerMap, ::mlir::ValueRange argOperands = {}, ::llvm::ArrayRef<::mlir::Attribute> templateParams = {});
1477 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::SymbolRefAttr callee, ::llvm::ArrayRef<::mlir::ValueRange> mapOperands, ::llvm::ArrayRef<int32_t> numDimsPerMap, ::mlir::ValueRange argOperands = {}, ::llvm::ArrayRef<::mlir::Attribute> templateParams = {});
1478 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::llzk::verif::ContractOp callee, ::mlir::ValueRange argOperands = {}, ::llvm::ArrayRef<::mlir::Attribute> templateParams = {});
1479 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::llzk::verif::ContractOp callee, ::llvm::ArrayRef<::mlir::ValueRange> mapOperands, ::mlir::DenseI32ArrayAttr numDimsPerMap, ::mlir::ValueRange argOperands = {}, ::llvm::ArrayRef<::mlir::Attribute> templateParams = {});
1480 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::llzk::verif::ContractOp callee, ::llvm::ArrayRef<::mlir::ValueRange> mapOperands, ::llvm::ArrayRef<int32_t> numDimsPerMap, ::mlir::ValueRange argOperands = {}, ::llvm::ArrayRef<::mlir::Attribute> templateParams = {});
1481 static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties);
1482 ::llvm::LogicalResult verifyInvariantsImpl();
1483 ::llvm::LogicalResult verifyInvariants();
1484 ::mlir::CallInterfaceCallable getCallableForCallee();
1485 void setCalleeFromCallable(::mlir::CallInterfaceCallable callee);
1486 ::llvm::LogicalResult verifySymbolUses(::mlir::SymbolTableCollection &symbolTable);
1487 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
1488 static ::llvm::LogicalResult setPropertiesFromParsedAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError);
1489 void print(::mlir::OpAsmPrinter &_odsPrinter);
1490private:
1491 ::mlir::StringAttr getAttributeNameForIndex(unsigned index) {
1492 return getAttributeNameForIndex((*this)->getName(), index);
1493 }
1494
1495 static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) {
1496 assert(index < 4 && "invalid attribute index");
1497 assert(name.getStringRef() == getOperationName() && "invalid operation name");
1498 assert(name.isRegistered() && "Operation isn't registered, missing a "
1499 "dependent dialect loading?");
1500 return name.getAttributeNames()[index];
1501 }
1502
1503public:
1505 ::mlir::Operation *resolveCallableInTable(::mlir::SymbolTableCollection *symbolTable);
1506
1508 ::mlir::Operation *resolveCallable();
1509
1513 ::mlir::FunctionType getTypeSignature();
1514
1518 ::mlir::FailureOr<UnificationMap> unifyTypeSignature(::mlir::FunctionType other);
1519
1521 bool contractTargetsStruct();
1522
1525 ::mlir::Value getSelfValue();
1526
1528 ::mlir::FailureOr<::llzk::SymbolLookupResult<::llzk::verif::ContractOp>>
1529 getCalleeTarget(::mlir::SymbolTableCollection &tables);
1530
1533 static ::llvm::SmallVector<::mlir::ValueRange> toVectorOfValueRange(::mlir::OperandRangeRange);
1534
1538 ::mlir::Attribute paramFromCallOp, ::llzk::polymorphic::TemplateParamOp targetParam
1539 );
1540
1548 ::llvm::iterator_range<::mlir::Region::op_iterator<::llzk::polymorphic::TemplateParamOp>> targetParamDefs
1549 );
1550
1559 ::mlir::LogicalResult verifyTemplateParamsMatchInferred(
1560 ::llvm::iterator_range<::mlir::Region::op_iterator<::llzk::polymorphic::TemplateParamOp>> targetParamDefs,
1561 const UnificationMap &unifications
1562 );
1563};
1564} // namespace verif
1565} // namespace llzk
1566MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::verif::IncludeOp)
1567
1568namespace llzk {
1569namespace verif {
1570
1571//===----------------------------------------------------------------------===//
1572// ::llzk::verif::IncreasesOp declarations
1573//===----------------------------------------------------------------------===//
1574
1575namespace detail {
1577public:
1578protected:
1579 ::mlir::DictionaryAttr odsAttrs;
1580 ::std::optional<::mlir::OperationName> odsOpName;
1581 ::mlir::RegionRange odsRegions;
1582public:
1583 IncreasesOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
1584 odsOpName.emplace("verif.increases", odsAttrs.getContext());
1585 }
1586
1587 IncreasesOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
1588
1589 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) {
1590 return {index, 1};
1591 }
1592
1593 ::mlir::DictionaryAttr getAttributes() {
1594 return odsAttrs;
1595 }
1596
1597};
1598} // namespace detail
1599template <typename RangeT>
1601 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
1603public:
1604 IncreasesOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
1605
1606 IncreasesOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : IncreasesOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
1607
1608 IncreasesOpGenericAdaptor(RangeT values, const IncreasesOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
1609
1610 template <typename LateInst = IncreasesOp, typename = std::enable_if_t<std::is_same_v<LateInst, IncreasesOp>>>
1611 IncreasesOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
1612
1613 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
1614 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
1615 }
1616
1617 RangeT getODSOperands(unsigned index) {
1618 auto valueRange = getODSOperandIndexAndLength(index);
1619 return {std::next(odsOperands.begin(), valueRange.first),
1620 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
1621 }
1622
1623 ValueT getValue() {
1624 return (*getODSOperands(0).begin());
1625 }
1626
1627 RangeT getOperands() {
1628 return odsOperands;
1629 }
1630
1631private:
1632 RangeT odsOperands;
1633};
1634class IncreasesOpAdaptor : public IncreasesOpGenericAdaptor<::mlir::ValueRange> {
1635public:
1638
1639 ::llvm::LogicalResult verify(::mlir::Location loc);
1640};
1641class IncreasesOp : public ::mlir::Op<IncreasesOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::ZeroResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::llzk::HasAncestor<::llzk::verif::InvariantOp>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::MemoryEffectOpInterface::Trait> {
1642public:
1643 using Op::Op;
1644 using Op::print;
1646 template <typename RangeT>
1649 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
1650 return {};
1651 }
1652
1653 static constexpr ::llvm::StringLiteral getOperationName() {
1654 return ::llvm::StringLiteral("verif.increases");
1655 }
1656
1657 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
1658 return {index, 1};
1659 }
1660
1661 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
1662 auto valueRange = getODSOperandIndexAndLength(index);
1663 return {std::next(getOperation()->operand_begin(), valueRange.first),
1664 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
1665 }
1666
1667 ::mlir::TypedValue<::llzk::felt::FeltType> getValue() {
1668 return ::llvm::cast<::mlir::TypedValue<::llzk::felt::FeltType>>(*getODSOperands(0).begin());
1669 }
1670
1671 ::mlir::OpOperand &getValueMutable() {
1672 auto range = getODSOperandIndexAndLength(0);
1673 return getOperation()->getOpOperand(range.first);
1674 }
1675
1676 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
1677 return {index, 1};
1678 }
1679
1680 ::mlir::Operation::result_range getODSResults(unsigned index) {
1681 auto valueRange = getODSResultIndexAndLength(index);
1682 return {std::next(getOperation()->result_begin(), valueRange.first),
1683 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
1684 }
1685
1686 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value value);
1687 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value value);
1688 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
1689 ::llvm::LogicalResult verifyInvariantsImpl();
1690 ::llvm::LogicalResult verifyInvariants();
1691 void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects);
1692 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
1693 void print(::mlir::OpAsmPrinter &_odsPrinter);
1694public:
1695};
1696} // namespace verif
1697} // namespace llzk
1698MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::verif::IncreasesOp)
1699
1700namespace llzk {
1701namespace verif {
1702
1703//===----------------------------------------------------------------------===//
1704// ::llzk::verif::InvariantOp declarations
1705//===----------------------------------------------------------------------===//
1706
1707namespace detail {
1709public:
1710 struct Properties {
1711 using loop_arg_typesTy = ::mlir::ArrayAttr;
1713
1715 auto &propStorage = this->loop_arg_types;
1716 return ::llvm::cast<::mlir::ArrayAttr>(propStorage);
1717 }
1718 void setLoopArgTypes(const ::mlir::ArrayAttr &propValue) {
1719 this->loop_arg_types = propValue;
1720 }
1721 using loop_nameTy = ::mlir::StringAttr;
1723
1725 auto &propStorage = this->loop_name;
1726 return ::llvm::cast<::mlir::StringAttr>(propStorage);
1727 }
1728 void setLoopName(const ::mlir::StringAttr &propValue) {
1729 this->loop_name = propValue;
1730 }
1731 bool operator==(const Properties &rhs) const {
1732 return
1733 rhs.loop_arg_types == this->loop_arg_types &&
1734 rhs.loop_name == this->loop_name &&
1735 true;
1736 }
1737 bool operator!=(const Properties &rhs) const {
1738 return !(*this == rhs);
1739 }
1740 };
1741protected:
1742 ::mlir::DictionaryAttr odsAttrs;
1743 ::std::optional<::mlir::OperationName> odsOpName;
1745 ::mlir::RegionRange odsRegions;
1746public:
1747 InvariantOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs)
1748 odsOpName.emplace("verif.invariant", odsAttrs.getContext());
1749 }
1750
1752
1753 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) {
1754 return {index, 1};
1755 }
1756
1758 return properties;
1759 }
1760
1761 ::mlir::DictionaryAttr getAttributes() {
1762 return odsAttrs;
1763 }
1764
1765 ::mlir::StringAttr getLoopNameAttr() {
1766 auto attr = ::llvm::cast<::mlir::StringAttr>(getProperties().loop_name);
1767 return attr;
1768 }
1769
1770 ::llvm::StringRef getLoopName();
1771 ::mlir::ArrayAttr getLoopArgTypesAttr() {
1772 auto attr = ::llvm::cast<::mlir::ArrayAttr>(getProperties().loop_arg_types);
1773 return attr;
1774 }
1775
1776 ::mlir::ArrayAttr getLoopArgTypes();
1777 ::mlir::Region &getRegion() {
1778 return *odsRegions[0];
1779 }
1780
1781 ::mlir::RegionRange getRegions() {
1782 return odsRegions;
1783 }
1784
1785};
1786} // namespace detail
1787template <typename RangeT>
1789 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
1791public:
1792 InvariantOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
1793
1794 InvariantOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : InvariantOpGenericAdaptor(values, attrs, (properties ? *properties.as<Properties *>() : Properties{}), regions) {}
1795
1796 InvariantOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : InvariantOpGenericAdaptor(values, attrs, Properties{}, {}) {}
1797
1798 InvariantOpGenericAdaptor(RangeT values, const InvariantOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
1799
1800 template <typename LateInst = InvariantOp, typename = std::enable_if_t<std::is_same_v<LateInst, InvariantOp>>>
1801 InvariantOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
1802
1803 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
1804 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
1805 }
1806
1807 RangeT getODSOperands(unsigned index) {
1808 auto valueRange = getODSOperandIndexAndLength(index);
1809 return {std::next(odsOperands.begin(), valueRange.first),
1810 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
1811 }
1812
1813 RangeT getOperands() {
1814 return odsOperands;
1815 }
1816
1817private:
1818 RangeT odsOperands;
1819};
1820class InvariantOpAdaptor : public InvariantOpGenericAdaptor<::mlir::ValueRange> {
1821public:
1824
1825 ::llvm::LogicalResult verify(::mlir::Location loc);
1826};
1827class InvariantOp : public ::mlir::Op<InvariantOp, ::mlir::OpTrait::OneRegion, ::mlir::OpTrait::ZeroResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::llzk::HasAncestor<::llzk::verif::ContractOp>::Impl, ::mlir::OpTrait::NoTerminator, ::mlir::OpTrait::SingleBlock, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> {
1828public:
1829 using Op::Op;
1830 using Op::print;
1832 template <typename RangeT>
1836 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
1837 static ::llvm::StringRef attrNames[] = {::llvm::StringRef("loop_arg_types"), ::llvm::StringRef("loop_name")};
1838 return ::llvm::ArrayRef(attrNames);
1839 }
1840
1841 ::mlir::StringAttr getLoopArgTypesAttrName() {
1842 return getAttributeNameForIndex(0);
1843 }
1844
1845 static ::mlir::StringAttr getLoopArgTypesAttrName(::mlir::OperationName name) {
1846 return getAttributeNameForIndex(name, 0);
1847 }
1848
1849 ::mlir::StringAttr getLoopNameAttrName() {
1850 return getAttributeNameForIndex(1);
1851 }
1852
1853 static ::mlir::StringAttr getLoopNameAttrName(::mlir::OperationName name) {
1854 return getAttributeNameForIndex(name, 1);
1855 }
1856
1857 static constexpr ::llvm::StringLiteral getOperationName() {
1858 return ::llvm::StringLiteral("verif.invariant");
1859 }
1860
1861 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
1862 return {index, 1};
1863 }
1864
1865 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
1866 auto valueRange = getODSOperandIndexAndLength(index);
1867 return {std::next(getOperation()->operand_begin(), valueRange.first),
1868 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
1869 }
1870
1871 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
1872 return {index, 1};
1873 }
1874
1875 ::mlir::Operation::result_range getODSResults(unsigned index) {
1876 auto valueRange = getODSResultIndexAndLength(index);
1877 return {std::next(getOperation()->result_begin(), valueRange.first),
1878 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
1879 }
1880
1881 ::mlir::Region &getRegion() {
1882 return (*this)->getRegion(0);
1883 }
1884
1885 static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError);
1886 static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop);
1887 static llvm::hash_code computePropertiesHash(const Properties &prop);
1888 static std::optional<mlir::Attribute> getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name);
1889 static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value);
1890 static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs);
1891 static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError);
1892 static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state);
1893 void writeProperties(::mlir::DialectBytecodeWriter &writer);
1894 ::mlir::StringAttr getLoopNameAttr() {
1895 return ::llvm::cast<::mlir::StringAttr>(getProperties().loop_name);
1896 }
1897
1898 ::llvm::StringRef getLoopName();
1899 ::mlir::ArrayAttr getLoopArgTypesAttr() {
1900 return ::llvm::cast<::mlir::ArrayAttr>(getProperties().loop_arg_types);
1901 }
1902
1903 ::mlir::ArrayAttr getLoopArgTypes();
1904 void setLoopNameAttr(::mlir::StringAttr attr) {
1905 getProperties().loop_name = attr;
1906 }
1907
1908 void setLoopName(::llvm::StringRef attrValue);
1909 void setLoopArgTypesAttr(::mlir::ArrayAttr attr) {
1910 getProperties().loop_arg_types = attr;
1911 }
1912
1913 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::StringRef loop_name, ::llvm::ArrayRef<::mlir::Type> loop_arg_types = {}, ::llvm::ArrayRef<::mlir::Location> loop_arg_locs = {});
1914 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
1915 void print(::mlir::OpAsmPrinter &p);
1916 ::llvm::LogicalResult verifyInvariantsImpl();
1917 ::llvm::LogicalResult verifyInvariants();
1918 ::llvm::LogicalResult verify();
1919private:
1920 ::mlir::StringAttr getAttributeNameForIndex(unsigned index) {
1921 return getAttributeNameForIndex((*this)->getName(), index);
1922 }
1923
1924 static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) {
1925 assert(index < 2 && "invalid attribute index");
1926 assert(name.getStringRef() == getOperationName() && "invalid operation name");
1927 assert(name.isRegistered() && "Operation isn't registered, missing a "
1928 "dependent dialect loading?");
1929 return name.getAttributeNames()[index];
1930 }
1931
1932public:
1934 ::llzk::verif::ContractOp getParentContract();
1936 ::mlir::FailureOr<::llzk::verif::InvariantTargetOpInterface> getTarget();
1937};
1938} // namespace verif
1939} // namespace llzk
1940MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::verif::InvariantOp)
1941
1942namespace llzk {
1943namespace verif {
1944
1945//===----------------------------------------------------------------------===//
1946// ::llzk::verif::OldOp declarations
1947//===----------------------------------------------------------------------===//
1948
1949namespace detail {
1951public:
1952protected:
1953 ::mlir::DictionaryAttr odsAttrs;
1954 ::std::optional<::mlir::OperationName> odsOpName;
1955 ::mlir::RegionRange odsRegions;
1956public:
1957 OldOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
1958 odsOpName.emplace("verif.old", odsAttrs.getContext());
1959 }
1960
1961 OldOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
1962
1963 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) {
1964 return {index, 1};
1965 }
1966
1967 ::mlir::DictionaryAttr getAttributes() {
1968 return odsAttrs;
1969 }
1970
1971};
1972} // namespace detail
1973template <typename RangeT>
1975 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
1977public:
1978 OldOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
1979
1980 OldOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : OldOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
1981
1982 OldOpGenericAdaptor(RangeT values, const OldOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
1983
1984 template <typename LateInst = OldOp, typename = std::enable_if_t<std::is_same_v<LateInst, OldOp>>>
1985 OldOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
1986
1987 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
1988 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
1989 }
1990
1991 RangeT getODSOperands(unsigned index) {
1992 auto valueRange = getODSOperandIndexAndLength(index);
1993 return {std::next(odsOperands.begin(), valueRange.first),
1994 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
1995 }
1996
1997 ValueT getValue() {
1998 return (*getODSOperands(0).begin());
1999 }
2000
2001 RangeT getOperands() {
2002 return odsOperands;
2003 }
2004
2005private:
2006 RangeT odsOperands;
2007};
2008class OldOpAdaptor : public OldOpGenericAdaptor<::mlir::ValueRange> {
2009public:
2011 OldOpAdaptor(OldOp op);
2012
2013 ::llvm::LogicalResult verify(::mlir::Location loc);
2014};
2015class OldOp : public ::mlir::Op<OldOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::OneResult, ::mlir::OpTrait::OneTypedResult<::mlir::Type>::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::llzk::HasAncestor<::llzk::verif::StepOp>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait, ::mlir::InferTypeOpInterface::Trait> {
2016public:
2017 using Op::Op;
2018 using Op::print;
2020 template <typename RangeT>
2023 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
2024 return {};
2025 }
2026
2027 static constexpr ::llvm::StringLiteral getOperationName() {
2028 return ::llvm::StringLiteral("verif.old");
2029 }
2030
2031 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
2032 return {index, 1};
2033 }
2034
2035 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
2036 auto valueRange = getODSOperandIndexAndLength(index);
2037 return {std::next(getOperation()->operand_begin(), valueRange.first),
2038 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
2039 }
2040
2041 ::mlir::TypedValue<::mlir::Type> getValue() {
2042 return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin());
2043 }
2044
2045 ::mlir::OpOperand &getValueMutable() {
2046 auto range = getODSOperandIndexAndLength(0);
2047 return getOperation()->getOpOperand(range.first);
2048 }
2049
2050 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
2051 return {index, 1};
2052 }
2053
2054 ::mlir::Operation::result_range getODSResults(unsigned index) {
2055 auto valueRange = getODSResultIndexAndLength(index);
2056 return {std::next(getOperation()->result_begin(), valueRange.first),
2057 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
2058 }
2059
2060 ::mlir::TypedValue<::mlir::Type> getResult() {
2061 return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin());
2062 }
2063
2064 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type result, ::mlir::Value value);
2065 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value value);
2066 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value value);
2067 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
2068 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
2069 ::llvm::LogicalResult verifyInvariantsImpl();
2070 ::llvm::LogicalResult verifyInvariants();
2071 static ::llvm::LogicalResult inferReturnTypes(::mlir::MLIRContext *context, ::std::optional<::mlir::Location> location, ::mlir::ValueRange operands, ::mlir::DictionaryAttr attributes, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions, ::llvm::SmallVectorImpl<::mlir::Type>&inferredReturnTypes);
2072 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
2073 void print(::mlir::OpAsmPrinter &_odsPrinter);
2074 void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects);
2075public:
2076};
2077} // namespace verif
2078} // namespace llzk
2079MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::verif::OldOp)
2080
2081namespace llzk {
2082namespace verif {
2083
2084//===----------------------------------------------------------------------===//
2085// ::llzk::verif::ProveDetOp declarations
2086//===----------------------------------------------------------------------===//
2087
2088namespace detail {
2090public:
2091protected:
2092 ::mlir::DictionaryAttr odsAttrs;
2093 ::std::optional<::mlir::OperationName> odsOpName;
2094 ::mlir::RegionRange odsRegions;
2095public:
2096 ProveDetOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
2097 odsOpName.emplace("verif.det.prove", odsAttrs.getContext());
2098 }
2099
2100 ProveDetOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
2101
2102 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) {
2103 return {index, 1};
2104 }
2105
2106 ::mlir::DictionaryAttr getAttributes() {
2107 return odsAttrs;
2108 }
2109
2110};
2111} // namespace detail
2112template <typename RangeT>
2114 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
2116public:
2117 ProveDetOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
2118
2119 ProveDetOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : ProveDetOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
2120
2121 ProveDetOpGenericAdaptor(RangeT values, const ProveDetOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
2122
2123 template <typename LateInst = ProveDetOp, typename = std::enable_if_t<std::is_same_v<LateInst, ProveDetOp>>>
2124 ProveDetOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
2125
2126 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
2127 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
2128 }
2129
2130 RangeT getODSOperands(unsigned index) {
2131 auto valueRange = getODSOperandIndexAndLength(index);
2132 return {std::next(odsOperands.begin(), valueRange.first),
2133 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
2134 }
2135
2136 ValueT getCondition() {
2137 return (*getODSOperands(0).begin());
2138 }
2139
2140 RangeT getOperands() {
2141 return odsOperands;
2142 }
2143
2144private:
2145 RangeT odsOperands;
2146};
2147class ProveDetOpAdaptor : public ProveDetOpGenericAdaptor<::mlir::ValueRange> {
2148public:
2151
2152 ::llvm::LogicalResult verify(::mlir::Location loc);
2153};
2154class ProveDetOp : public ::mlir::Op<ProveDetOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::OneResult, ::mlir::OpTrait::OneTypedResult<::mlir::IntegerType>::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::llzk::function::Verification<>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::InferTypeOpInterface::Trait> {
2155public:
2156 using Op::Op;
2157 using Op::print;
2159 template <typename RangeT>
2162 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
2163 return {};
2164 }
2165
2166 static constexpr ::llvm::StringLiteral getOperationName() {
2167 return ::llvm::StringLiteral("verif.det.prove");
2168 }
2169
2170 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
2171 return {index, 1};
2172 }
2173
2174 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
2175 auto valueRange = getODSOperandIndexAndLength(index);
2176 return {std::next(getOperation()->operand_begin(), valueRange.first),
2177 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
2178 }
2179
2180 ::mlir::TypedValue<::mlir::Type> getCondition() {
2181 return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin());
2182 }
2183
2184 ::mlir::OpOperand &getConditionMutable() {
2185 auto range = getODSOperandIndexAndLength(0);
2186 return getOperation()->getOpOperand(range.first);
2187 }
2188
2189 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
2190 return {index, 1};
2191 }
2192
2193 ::mlir::Operation::result_range getODSResults(unsigned index) {
2194 auto valueRange = getODSResultIndexAndLength(index);
2195 return {std::next(getOperation()->result_begin(), valueRange.first),
2196 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
2197 }
2198
2199 ::mlir::TypedValue<::mlir::IntegerType> getResult() {
2200 return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin());
2201 }
2202
2203 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type result, ::mlir::Value condition);
2204 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value condition);
2205 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value condition);
2206 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
2207 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
2208 ::llvm::LogicalResult verifyInvariantsImpl();
2209 ::llvm::LogicalResult verifyInvariants();
2210 static ::llvm::LogicalResult inferReturnTypes(::mlir::MLIRContext *context, ::std::optional<::mlir::Location> location, ::mlir::ValueRange operands, ::mlir::DictionaryAttr attributes, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions, ::llvm::SmallVectorImpl<::mlir::Type>&inferredReturnTypes);
2211 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
2212 void print(::mlir::OpAsmPrinter &_odsPrinter);
2213public:
2214};
2215} // namespace verif
2216} // namespace llzk
2217MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::verif::ProveDetOp)
2218
2219namespace llzk {
2220namespace verif {
2221
2222//===----------------------------------------------------------------------===//
2223// ::llzk::verif::RequireComputeOp declarations
2224//===----------------------------------------------------------------------===//
2225
2226namespace detail {
2228public:
2229protected:
2230 ::mlir::DictionaryAttr odsAttrs;
2231 ::std::optional<::mlir::OperationName> odsOpName;
2232 ::mlir::RegionRange odsRegions;
2233public:
2234 RequireComputeOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
2235 odsOpName.emplace("verif.require_compute", odsAttrs.getContext());
2236 }
2237
2238 RequireComputeOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
2239
2240 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) {
2241 return {index, 1};
2242 }
2243
2244 ::mlir::DictionaryAttr getAttributes() {
2245 return odsAttrs;
2246 }
2247
2248};
2249} // namespace detail
2250template <typename RangeT>
2252 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
2254public:
2255 RequireComputeOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
2256
2257 RequireComputeOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : RequireComputeOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
2258
2259 RequireComputeOpGenericAdaptor(RangeT values, const RequireComputeOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
2260
2261 template <typename LateInst = RequireComputeOp, typename = std::enable_if_t<std::is_same_v<LateInst, RequireComputeOp>>>
2262 RequireComputeOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
2263
2264 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
2265 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
2266 }
2267
2268 RangeT getODSOperands(unsigned index) {
2269 auto valueRange = getODSOperandIndexAndLength(index);
2270 return {std::next(odsOperands.begin(), valueRange.first),
2271 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
2272 }
2273
2274 ValueT getCondition() {
2275 return (*getODSOperands(0).begin());
2276 }
2277
2278 RangeT getOperands() {
2279 return odsOperands;
2280 }
2281
2282private:
2283 RangeT odsOperands;
2284};
2286public:
2289
2290 ::llvm::LogicalResult verify(::mlir::Location loc);
2291};
2292class RequireComputeOp : public ::mlir::Op<RequireComputeOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::ZeroResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::llzk::HasAncestor<::llzk::verif::ContractOp>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::MemoryEffectOpInterface::Trait, ::llzk::verif::ConditionOpInterface::Trait, ::llzk::verif::PreconditionOpInterface::Trait> {
2293public:
2294 using Op::Op;
2295 using Op::print;
2297 template <typename RangeT>
2300 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
2301 return {};
2302 }
2303
2304 static constexpr ::llvm::StringLiteral getOperationName() {
2305 return ::llvm::StringLiteral("verif.require_compute");
2306 }
2307
2308 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
2309 return {index, 1};
2310 }
2311
2312 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
2313 auto valueRange = getODSOperandIndexAndLength(index);
2314 return {std::next(getOperation()->operand_begin(), valueRange.first),
2315 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
2316 }
2317
2318 ::mlir::TypedValue<::mlir::IntegerType> getCondition() {
2319 return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin());
2320 }
2321
2322 ::mlir::OpOperand &getConditionMutable() {
2323 auto range = getODSOperandIndexAndLength(0);
2324 return getOperation()->getOpOperand(range.first);
2325 }
2326
2327 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
2328 return {index, 1};
2329 }
2330
2331 ::mlir::Operation::result_range getODSResults(unsigned index) {
2332 auto valueRange = getODSResultIndexAndLength(index);
2333 return {std::next(getOperation()->result_begin(), valueRange.first),
2334 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
2335 }
2336
2337 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value condition);
2338 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value condition);
2339 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
2340 ::llvm::LogicalResult verifyInvariantsImpl();
2341 ::llvm::LogicalResult verifyInvariants();
2342 void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects);
2343 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
2344 void print(::mlir::OpAsmPrinter &_odsPrinter);
2345public:
2346};
2347} // namespace verif
2348} // namespace llzk
2349MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::verif::RequireComputeOp)
2350
2351namespace llzk {
2352namespace verif {
2353
2354//===----------------------------------------------------------------------===//
2355// ::llzk::verif::RequireConstrainOp declarations
2356//===----------------------------------------------------------------------===//
2357
2358namespace detail {
2360public:
2361protected:
2362 ::mlir::DictionaryAttr odsAttrs;
2363 ::std::optional<::mlir::OperationName> odsOpName;
2364 ::mlir::RegionRange odsRegions;
2365public:
2366 RequireConstrainOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
2367 odsOpName.emplace("verif.require_constrain", odsAttrs.getContext());
2368 }
2369
2370 RequireConstrainOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
2371
2372 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) {
2373 return {index, 1};
2374 }
2375
2376 ::mlir::DictionaryAttr getAttributes() {
2377 return odsAttrs;
2378 }
2379
2380};
2381} // namespace detail
2382template <typename RangeT>
2384 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
2386public:
2387 RequireConstrainOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
2388
2389 RequireConstrainOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : RequireConstrainOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
2390
2391 RequireConstrainOpGenericAdaptor(RangeT values, const RequireConstrainOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
2392
2393 template <typename LateInst = RequireConstrainOp, typename = std::enable_if_t<std::is_same_v<LateInst, RequireConstrainOp>>>
2394 RequireConstrainOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
2395
2396 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
2397 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
2398 }
2399
2400 RangeT getODSOperands(unsigned index) {
2401 auto valueRange = getODSOperandIndexAndLength(index);
2402 return {std::next(odsOperands.begin(), valueRange.first),
2403 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
2404 }
2405
2406 ValueT getCondition() {
2407 return (*getODSOperands(0).begin());
2408 }
2409
2410 RangeT getOperands() {
2411 return odsOperands;
2412 }
2413
2414private:
2415 RangeT odsOperands;
2416};
2418public:
2421
2422 ::llvm::LogicalResult verify(::mlir::Location loc);
2423};
2424class RequireConstrainOp : public ::mlir::Op<RequireConstrainOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::ZeroResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::llzk::HasAncestor<::llzk::verif::ContractOp>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::MemoryEffectOpInterface::Trait, ::llzk::verif::ConditionOpInterface::Trait, ::llzk::verif::PreconditionOpInterface::Trait> {
2425public:
2426 using Op::Op;
2427 using Op::print;
2429 template <typename RangeT>
2432 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
2433 return {};
2434 }
2435
2436 static constexpr ::llvm::StringLiteral getOperationName() {
2437 return ::llvm::StringLiteral("verif.require_constrain");
2438 }
2439
2440 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
2441 return {index, 1};
2442 }
2443
2444 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
2445 auto valueRange = getODSOperandIndexAndLength(index);
2446 return {std::next(getOperation()->operand_begin(), valueRange.first),
2447 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
2448 }
2449
2450 ::mlir::TypedValue<::mlir::IntegerType> getCondition() {
2451 return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin());
2452 }
2453
2454 ::mlir::OpOperand &getConditionMutable() {
2455 auto range = getODSOperandIndexAndLength(0);
2456 return getOperation()->getOpOperand(range.first);
2457 }
2458
2459 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
2460 return {index, 1};
2461 }
2462
2463 ::mlir::Operation::result_range getODSResults(unsigned index) {
2464 auto valueRange = getODSResultIndexAndLength(index);
2465 return {std::next(getOperation()->result_begin(), valueRange.first),
2466 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
2467 }
2468
2469 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value condition);
2470 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value condition);
2471 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
2472 ::llvm::LogicalResult verifyInvariantsImpl();
2473 ::llvm::LogicalResult verifyInvariants();
2474 void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects);
2475 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
2476 void print(::mlir::OpAsmPrinter &_odsPrinter);
2477public:
2478};
2479} // namespace verif
2480} // namespace llzk
2481MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::verif::RequireConstrainOp)
2482
2483namespace llzk {
2484namespace verif {
2485
2486//===----------------------------------------------------------------------===//
2487// ::llzk::verif::StepOp declarations
2488//===----------------------------------------------------------------------===//
2489
2490namespace detail {
2492public:
2493protected:
2494 ::mlir::DictionaryAttr odsAttrs;
2495 ::std::optional<::mlir::OperationName> odsOpName;
2496 ::mlir::RegionRange odsRegions;
2497public:
2498 StepOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
2499 odsOpName.emplace("verif.step", odsAttrs.getContext());
2500 }
2501
2502 StepOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
2503
2504 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) {
2505 return {index, 1};
2506 }
2507
2508 ::mlir::DictionaryAttr getAttributes() {
2509 return odsAttrs;
2510 }
2511
2512 ::mlir::Region &getRegion() {
2513 return *odsRegions[0];
2514 }
2515
2516 ::mlir::RegionRange getRegions() {
2517 return odsRegions;
2518 }
2519
2520};
2521} // namespace detail
2522template <typename RangeT>
2524 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
2526public:
2527 StepOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
2528
2529 StepOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : StepOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
2530
2531 StepOpGenericAdaptor(RangeT values, const StepOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
2532
2533 template <typename LateInst = StepOp, typename = std::enable_if_t<std::is_same_v<LateInst, StepOp>>>
2534 StepOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
2535
2536 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
2537 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
2538 }
2539
2540 RangeT getODSOperands(unsigned index) {
2541 auto valueRange = getODSOperandIndexAndLength(index);
2542 return {std::next(odsOperands.begin(), valueRange.first),
2543 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
2544 }
2545
2546 RangeT getOperands() {
2547 return odsOperands;
2548 }
2549
2550private:
2551 RangeT odsOperands;
2552};
2553class StepOpAdaptor : public StepOpGenericAdaptor<::mlir::ValueRange> {
2554public:
2557
2558 ::llvm::LogicalResult verify(::mlir::Location loc);
2559};
2560class StepOp : public ::mlir::Op<StepOp, ::mlir::OpTrait::OneRegion, ::mlir::OpTrait::ZeroResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::llzk::HasAncestor<::llzk::verif::InvariantOp>::Impl, ::mlir::OpTrait::NoRegionArguments, ::mlir::OpTrait::SingleBlock, ::mlir::OpTrait::OpInvariants, ::mlir::MemoryEffectOpInterface::Trait> {
2561public:
2562 using Op::Op;
2563 using Op::print;
2565 template <typename RangeT>
2568 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
2569 return {};
2570 }
2571
2572 static constexpr ::llvm::StringLiteral getOperationName() {
2573 return ::llvm::StringLiteral("verif.step");
2574 }
2575
2576 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
2577 return {index, 1};
2578 }
2579
2580 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
2581 auto valueRange = getODSOperandIndexAndLength(index);
2582 return {std::next(getOperation()->operand_begin(), valueRange.first),
2583 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
2584 }
2585
2586 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
2587 return {index, 1};
2588 }
2589
2590 ::mlir::Operation::result_range getODSResults(unsigned index) {
2591 auto valueRange = getODSResultIndexAndLength(index);
2592 return {std::next(getOperation()->result_begin(), valueRange.first),
2593 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
2594 }
2595
2596 ::mlir::Region &getRegion() {
2597 return (*this)->getRegion(0);
2598 }
2599
2600 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState);
2601 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes);
2602 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
2603 ::llvm::LogicalResult verifyInvariantsImpl();
2604 ::llvm::LogicalResult verifyInvariants();
2605 void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects);
2606 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
2607 void print(::mlir::OpAsmPrinter &_odsPrinter);
2608public:
2609};
2610} // namespace verif
2611} // namespace llzk
2612MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::verif::StepOp)
2613
2614namespace llzk {
2615namespace verif {
2616
2617//===----------------------------------------------------------------------===//
2618// ::llzk::verif::StepYieldOp declarations
2619//===----------------------------------------------------------------------===//
2620
2621namespace detail {
2623public:
2624protected:
2625 ::mlir::DictionaryAttr odsAttrs;
2626 ::std::optional<::mlir::OperationName> odsOpName;
2627 ::mlir::RegionRange odsRegions;
2628public:
2629 StepYieldOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
2630 odsOpName.emplace("verif.step.yield", odsAttrs.getContext());
2631 }
2632
2633 StepYieldOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
2634
2635 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) {
2636 return {index, 1};
2637 }
2638
2639 ::mlir::DictionaryAttr getAttributes() {
2640 return odsAttrs;
2641 }
2642
2643};
2644} // namespace detail
2645template <typename RangeT>
2647 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
2649public:
2650 StepYieldOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
2651
2652 StepYieldOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : StepYieldOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
2653
2654 StepYieldOpGenericAdaptor(RangeT values, const StepYieldOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
2655
2656 template <typename LateInst = StepYieldOp, typename = std::enable_if_t<std::is_same_v<LateInst, StepYieldOp>>>
2657 StepYieldOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
2658
2659 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
2660 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
2661 }
2662
2663 RangeT getODSOperands(unsigned index) {
2664 auto valueRange = getODSOperandIndexAndLength(index);
2665 return {std::next(odsOperands.begin(), valueRange.first),
2666 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
2667 }
2668
2669 ValueT getValue() {
2670 return (*getODSOperands(0).begin());
2671 }
2672
2673 RangeT getOperands() {
2674 return odsOperands;
2675 }
2676
2677private:
2678 RangeT odsOperands;
2679};
2680class StepYieldOpAdaptor : public StepYieldOpGenericAdaptor<::mlir::ValueRange> {
2681public:
2684
2685 ::llvm::LogicalResult verify(::mlir::Location loc);
2686};
2687class StepYieldOp : public ::mlir::Op<StepYieldOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::ZeroResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::HasParent<StepOp>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::OpTrait::IsTerminator> {
2688public:
2689 using Op::Op;
2690 using Op::print;
2692 template <typename RangeT>
2695 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
2696 return {};
2697 }
2698
2699 static constexpr ::llvm::StringLiteral getOperationName() {
2700 return ::llvm::StringLiteral("verif.step.yield");
2701 }
2702
2703 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
2704 return {index, 1};
2705 }
2706
2707 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
2708 auto valueRange = getODSOperandIndexAndLength(index);
2709 return {std::next(getOperation()->operand_begin(), valueRange.first),
2710 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
2711 }
2712
2713 ::mlir::TypedValue<::mlir::IntegerType> getValue() {
2714 return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin());
2715 }
2716
2717 ::mlir::OpOperand &getValueMutable() {
2718 auto range = getODSOperandIndexAndLength(0);
2719 return getOperation()->getOpOperand(range.first);
2720 }
2721
2722 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
2723 return {index, 1};
2724 }
2725
2726 ::mlir::Operation::result_range getODSResults(unsigned index) {
2727 auto valueRange = getODSResultIndexAndLength(index);
2728 return {std::next(getOperation()->result_begin(), valueRange.first),
2729 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
2730 }
2731
2732 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value value);
2733 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value value);
2734 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
2735 ::llvm::LogicalResult verifyInvariantsImpl();
2736 ::llvm::LogicalResult verifyInvariants();
2737 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
2738 void print(::mlir::OpAsmPrinter &_odsPrinter);
2739public:
2740};
2741} // namespace verif
2742} // namespace llzk
2743MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::verif::StepYieldOp)
2744
2745namespace llzk {
2746namespace verif {
2747
2748//===----------------------------------------------------------------------===//
2749// ::llzk::verif::VerifAssertOp declarations
2750//===----------------------------------------------------------------------===//
2751
2752namespace detail {
2754public:
2755protected:
2756 ::mlir::DictionaryAttr odsAttrs;
2757 ::std::optional<::mlir::OperationName> odsOpName;
2758 ::mlir::RegionRange odsRegions;
2759public:
2760 VerifAssertOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
2761 odsOpName.emplace("verif.assert", odsAttrs.getContext());
2762 }
2763
2764 VerifAssertOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
2765
2766 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) {
2767 return {index, 1};
2768 }
2769
2770 ::mlir::DictionaryAttr getAttributes() {
2771 return odsAttrs;
2772 }
2773
2774};
2775} // namespace detail
2776template <typename RangeT>
2778 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
2780public:
2781 VerifAssertOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
2782
2783 VerifAssertOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : VerifAssertOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
2784
2785 VerifAssertOpGenericAdaptor(RangeT values, const VerifAssertOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
2786
2787 template <typename LateInst = VerifAssertOp, typename = std::enable_if_t<std::is_same_v<LateInst, VerifAssertOp>>>
2788 VerifAssertOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
2789
2790 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
2791 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
2792 }
2793
2794 RangeT getODSOperands(unsigned index) {
2795 auto valueRange = getODSOperandIndexAndLength(index);
2796 return {std::next(odsOperands.begin(), valueRange.first),
2797 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
2798 }
2799
2800 ValueT getCondition() {
2801 return (*getODSOperands(0).begin());
2802 }
2803
2804 RangeT getOperands() {
2805 return odsOperands;
2806 }
2807
2808private:
2809 RangeT odsOperands;
2810};
2811class VerifAssertOpAdaptor : public VerifAssertOpGenericAdaptor<::mlir::ValueRange> {
2812public:
2815
2816 ::llvm::LogicalResult verify(::mlir::Location loc);
2817};
2818class VerifAssertOp : public ::mlir::Op<VerifAssertOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::ZeroResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::MemoryEffectOpInterface::Trait, ::llzk::verif::ConditionOpInterface::Trait> {
2819public:
2820 using Op::Op;
2821 using Op::print;
2823 template <typename RangeT>
2826 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
2827 return {};
2828 }
2829
2830 static constexpr ::llvm::StringLiteral getOperationName() {
2831 return ::llvm::StringLiteral("verif.assert");
2832 }
2833
2834 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
2835 return {index, 1};
2836 }
2837
2838 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
2839 auto valueRange = getODSOperandIndexAndLength(index);
2840 return {std::next(getOperation()->operand_begin(), valueRange.first),
2841 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
2842 }
2843
2844 ::mlir::TypedValue<::mlir::IntegerType> getCondition() {
2845 return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin());
2846 }
2847
2848 ::mlir::OpOperand &getConditionMutable() {
2849 auto range = getODSOperandIndexAndLength(0);
2850 return getOperation()->getOpOperand(range.first);
2851 }
2852
2853 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
2854 return {index, 1};
2855 }
2856
2857 ::mlir::Operation::result_range getODSResults(unsigned index) {
2858 auto valueRange = getODSResultIndexAndLength(index);
2859 return {std::next(getOperation()->result_begin(), valueRange.first),
2860 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
2861 }
2862
2863 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value condition);
2864 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value condition);
2865 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
2866 ::llvm::LogicalResult verifyInvariantsImpl();
2867 ::llvm::LogicalResult verifyInvariants();
2868 void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects);
2869 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
2870 void print(::mlir::OpAsmPrinter &_odsPrinter);
2871public:
2872};
2873} // namespace verif
2874} // namespace llzk
2875MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::verif::VerifAssertOp)
2876
2877namespace llzk {
2878namespace verif {
2879
2880//===----------------------------------------------------------------------===//
2881// ::llzk::verif::VerifProveOp declarations
2882//===----------------------------------------------------------------------===//
2883
2884namespace detail {
2886public:
2887protected:
2888 ::mlir::DictionaryAttr odsAttrs;
2889 ::std::optional<::mlir::OperationName> odsOpName;
2890 ::mlir::RegionRange odsRegions;
2891public:
2892 VerifProveOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
2893 odsOpName.emplace("verif.prove", odsAttrs.getContext());
2894 }
2895
2896 VerifProveOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
2897
2898 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) {
2899 return {index, 1};
2900 }
2901
2902 ::mlir::DictionaryAttr getAttributes() {
2903 return odsAttrs;
2904 }
2905
2906};
2907} // namespace detail
2908template <typename RangeT>
2910 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
2912public:
2913 VerifProveOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
2914
2915 VerifProveOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : VerifProveOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
2916
2917 VerifProveOpGenericAdaptor(RangeT values, const VerifProveOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
2918
2919 template <typename LateInst = VerifProveOp, typename = std::enable_if_t<std::is_same_v<LateInst, VerifProveOp>>>
2920 VerifProveOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
2921
2922 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
2923 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
2924 }
2925
2926 RangeT getODSOperands(unsigned index) {
2927 auto valueRange = getODSOperandIndexAndLength(index);
2928 return {std::next(odsOperands.begin(), valueRange.first),
2929 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
2930 }
2931
2932 ValueT getCondition() {
2933 return (*getODSOperands(0).begin());
2934 }
2935
2936 RangeT getOperands() {
2937 return odsOperands;
2938 }
2939
2940private:
2941 RangeT odsOperands;
2942};
2943class VerifProveOpAdaptor : public VerifProveOpGenericAdaptor<::mlir::ValueRange> {
2944public:
2947
2948 ::llvm::LogicalResult verify(::mlir::Location loc);
2949};
2950class VerifProveOp : public ::mlir::Op<VerifProveOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::ZeroResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::MemoryEffectOpInterface::Trait, ::llzk::verif::ConditionOpInterface::Trait> {
2951public:
2952 using Op::Op;
2953 using Op::print;
2955 template <typename RangeT>
2958 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
2959 return {};
2960 }
2961
2962 static constexpr ::llvm::StringLiteral getOperationName() {
2963 return ::llvm::StringLiteral("verif.prove");
2964 }
2965
2966 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
2967 return {index, 1};
2968 }
2969
2970 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
2971 auto valueRange = getODSOperandIndexAndLength(index);
2972 return {std::next(getOperation()->operand_begin(), valueRange.first),
2973 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
2974 }
2975
2976 ::mlir::TypedValue<::mlir::IntegerType> getCondition() {
2977 return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin());
2978 }
2979
2980 ::mlir::OpOperand &getConditionMutable() {
2981 auto range = getODSOperandIndexAndLength(0);
2982 return getOperation()->getOpOperand(range.first);
2983 }
2984
2985 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
2986 return {index, 1};
2987 }
2988
2989 ::mlir::Operation::result_range getODSResults(unsigned index) {
2990 auto valueRange = getODSResultIndexAndLength(index);
2991 return {std::next(getOperation()->result_begin(), valueRange.first),
2992 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
2993 }
2994
2995 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value condition);
2996 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value condition);
2997 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
2998 ::llvm::LogicalResult verifyInvariantsImpl();
2999 ::llvm::LogicalResult verifyInvariants();
3000 void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects);
3001 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
3002 void print(::mlir::OpAsmPrinter &_odsPrinter);
3003public:
3004};
3005} // namespace verif
3006} // namespace llzk
3007MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::verif::VerifProveOp)
3008
3009namespace llzk {
3010namespace verif {
3011
3012//===----------------------------------------------------------------------===//
3013// ::llzk::verif::VerifSMTProveOp declarations
3014//===----------------------------------------------------------------------===//
3015
3016namespace detail {
3018public:
3019protected:
3020 ::mlir::DictionaryAttr odsAttrs;
3021 ::std::optional<::mlir::OperationName> odsOpName;
3022 ::mlir::RegionRange odsRegions;
3023public:
3024 VerifSMTProveOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
3025 odsOpName.emplace("verif.smt_prove", odsAttrs.getContext());
3026 }
3027
3028 VerifSMTProveOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
3029
3030 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) {
3031 return {index, 1};
3032 }
3033
3034 ::mlir::DictionaryAttr getAttributes() {
3035 return odsAttrs;
3036 }
3037
3038};
3039} // namespace detail
3040template <typename RangeT>
3042 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
3044public:
3045 VerifSMTProveOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
3046
3047 VerifSMTProveOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : VerifSMTProveOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
3048
3049 VerifSMTProveOpGenericAdaptor(RangeT values, const VerifSMTProveOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
3050
3051 template <typename LateInst = VerifSMTProveOp, typename = std::enable_if_t<std::is_same_v<LateInst, VerifSMTProveOp>>>
3052 VerifSMTProveOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
3053
3054 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
3055 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
3056 }
3057
3058 RangeT getODSOperands(unsigned index) {
3059 auto valueRange = getODSOperandIndexAndLength(index);
3060 return {std::next(odsOperands.begin(), valueRange.first),
3061 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
3062 }
3063
3064 ValueT getCondition() {
3065 return (*getODSOperands(0).begin());
3066 }
3067
3068 RangeT getOperands() {
3069 return odsOperands;
3070 }
3071
3072private:
3073 RangeT odsOperands;
3074};
3075class VerifSMTProveOpAdaptor : public VerifSMTProveOpGenericAdaptor<::mlir::ValueRange> {
3076public:
3079
3080 ::llvm::LogicalResult verify(::mlir::Location loc);
3081};
3082class VerifSMTProveOp : public ::mlir::Op<VerifSMTProveOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::ZeroResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants> {
3083public:
3084 using Op::Op;
3085 using Op::print;
3087 template <typename RangeT>
3090 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
3091 return {};
3092 }
3093
3094 static constexpr ::llvm::StringLiteral getOperationName() {
3095 return ::llvm::StringLiteral("verif.smt_prove");
3096 }
3097
3098 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
3099 return {index, 1};
3100 }
3101
3102 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
3103 auto valueRange = getODSOperandIndexAndLength(index);
3104 return {std::next(getOperation()->operand_begin(), valueRange.first),
3105 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
3106 }
3107
3108 ::mlir::TypedValue<::llzk::smt::BoolType> getCondition() {
3109 return ::llvm::cast<::mlir::TypedValue<::llzk::smt::BoolType>>(*getODSOperands(0).begin());
3110 }
3111
3112 ::mlir::OpOperand &getConditionMutable() {
3113 auto range = getODSOperandIndexAndLength(0);
3114 return getOperation()->getOpOperand(range.first);
3115 }
3116
3117 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
3118 return {index, 1};
3119 }
3120
3121 ::mlir::Operation::result_range getODSResults(unsigned index) {
3122 auto valueRange = getODSResultIndexAndLength(index);
3123 return {std::next(getOperation()->result_begin(), valueRange.first),
3124 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
3125 }
3126
3127 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value condition);
3128 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value condition);
3129 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
3130 ::llvm::LogicalResult verifyInvariantsImpl();
3131 ::llvm::LogicalResult verifyInvariants();
3132 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
3133 void print(::mlir::OpAsmPrinter &_odsPrinter);
3134public:
3135};
3136} // namespace verif
3137} // namespace llzk
3138MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::verif::VerifSMTProveOp)
3139
3140
3141#endif // GET_OP_CLASSES
3142
AssumeDetOpAdaptor(AssumeDetOp op)
Definition Ops.cpp.inc:244
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:246
AssumeDetOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:139
AssumeDetOpGenericAdaptor(RangeT values, const AssumeDetOpGenericAdaptorBase &base)
Definition Ops.h.inc:143
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:148
AssumeDetOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:146
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:152
AssumeDetOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:141
AssumeDetOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:139
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:211
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:196
::mlir::TypedValue<::mlir::Type > getHint()
Definition Ops.h.inc:202
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:314
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:188
AssumeDetOpAdaptor Adaptor
Definition Ops.h.inc:180
::mlir::OpOperand & getHintMutable()
Definition Ops.h.inc:206
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:281
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:285
AssumeDetOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:182
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:184
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:183
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:192
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:215
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:268
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value hint)
Definition Ops.cpp.inc:250
ContractEndOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:270
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:352
ContractEndOpAdaptor(ContractEndOp op)
Definition Ops.cpp.inc:350
ContractEndOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:270
ContractEndOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:272
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:283
ContractEndOpGenericAdaptor(RangeT values, const ContractEndOpGenericAdaptorBase &base)
Definition Ops.h.inc:274
ContractEndOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:277
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:279
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:315
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:333
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:380
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:372
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:311
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:376
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:329
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:323
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState)
Definition Ops.cpp.inc:356
ContractEndOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:309
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:310
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:389
void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect > > &effects)
Definition Ops.cpp.inc:394
ContractEndOpAdaptor Adaptor
Definition Ops.h.inc:307
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:319
ContractOpAdaptor(ContractOp op)
Definition Ops.cpp.inc:432
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:434
ContractOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:479
ContractOpGenericAdaptor(RangeT values, const ContractOpGenericAdaptorBase &base)
Definition Ops.h.inc:485
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:490
ContractOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs=nullptr)
Definition Ops.h.inc:483
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:494
ContractOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:479
ContractOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:481
ContractOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:488
::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:614
::mlir::StringAttr getFunctionTypeAttrName()
Definition Ops.h.inc:536
::llvm::LogicalResult verifyRegions()
Definition Ops.cpp:664
void setSymNameAttr(::mlir::StringAttr attr)
Definition Ops.h.inc:617
ContractOpAdaptor Adaptor
Definition Ops.h.inc:518
static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value)
Definition Ops.cpp.inc:582
void setArgNameAttr(unsigned index, const ::mlir::StringAttr &attr)
Set the function.arg_name attribute for the argument at the given index.
Definition Ops.cpp:383
::mlir::FailureOr< SymbolLookupResult< function::FuncDefOp > > getFuncTarget(::mlir::SymbolTableCollection &tables)
Return the FuncDefOp that this contract targets, or failure if it does not target a function or the f...
void setTargetAttr(::mlir::SymbolRefAttr attr)
Definition Ops.h.inc:622
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:523
bool hasArgName(unsigned index)
Return true iff the argument at the given index has a function.arg_name attribute.
Definition Ops.cpp:371
static std::optional< mlir::Attribute > getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name)
Definition Ops.cpp.inc:567
static llvm::hash_code computePropertiesHash(const Properties &prop)
Definition Ops.cpp.inc:559
::llvm::ArrayRef<::mlir::Type > getResultTypes()
Required by FunctionOpInterface.
Definition Ops.h.inc:710
bool hasArgPublicAttr(unsigned index)
Return true iff the argument at the given index has pub attribute.
Definition Ops.cpp:363
void cloneInto(ContractOp dest, ::mlir::IRMapping &mapper)
Clone the internal blocks and attributes from this contract into dest.
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:560
void setFunctionTypeAttr(::mlir::TypeAttr attr)
Definition Ops.h.inc:626
::mlir::StringAttr getTargetAttrName()
Definition Ops.h.inc:552
void setFunctionType(::mlir::FunctionType attrValue)
Definition Ops.cpp.inc:690
::llvm::LogicalResult verifySymbolUses(::mlir::SymbolTableCollection &symbolTable)
Definition Ops.cpp:396
::mlir::StringAttr getSymNameAttr()
Definition Ops.h.inc:597
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:762
::llvm::LogicalResult verify()
Definition Ops.cpp:610
void print(::mlir::OpAsmPrinter &p)
Definition Ops.cpp:583
::std::optional< ::mlir::ArrayAttr > getArgAttrs()
Definition Ops.cpp.inc:681
::mlir::FunctionType getFunctionType()
Definition Ops.cpp.inc:676
void setArgName(unsigned index, ::llvm::StringRef name)
Set the function.arg_name attribute for the argument at the given index from a string.
Definition Ops.cpp:388
::mlir::Attribute removeArgAttrsAttr()
Definition Ops.h.inc:635
ContractOp clone(::mlir::IRMapping &mapper)
Create a deep copy of this contract and all of its blocks, remapping any operands that use values out...
::mlir::FailureOr< SymbolLookupResult<::llzk::verif::ContractTargetOpInterface > > getTargetOp(::mlir::SymbolTableCollection &tables)
Return the operation that this contract targets, or failure if it does not target an operation that i...
::mlir::StringAttr getSymNameAttrName()
Definition Ops.h.inc:544
bool hasStructTarget()
Return true iff the contract targets a struct type.
Definition Ops.h.inc:720
::std::optional<::mlir::StringAttr > getArgNameAttr(unsigned index)
Return the function.arg_name attribute for the argument at the given index.
Definition Ops.cpp:373
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:521
::llvm::ArrayRef<::mlir::Type > getArgumentTypes()
Required by FunctionOpInterface.
Definition Ops.h.inc:705
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:578
::mlir::Region & getBody()
Definition Ops.h.inc:584
void setArgAttrsAttr(::mlir::ArrayAttr attr)
Definition Ops.h.inc:631
::mlir::StringAttr getArgAttrsAttrName()
Definition Ops.h.inc:528
::mlir::StringAttr getArgAttrsAttrName(::mlir::OperationName name)
Definition Ops.h.inc:532
::mlir::TypeAttr getFunctionTypeAttr()
Definition Ops.h.inc:607
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:564
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:574
::mlir::FailureOr< SymbolLookupResult< component::StructDefOp > > getStructTarget(::mlir::SymbolTableCollection &tables)
Return the StructDefOp that this contract targets, or failure if it does not target a struct or the s...
::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop)
Definition Ops.cpp.inc:522
static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs)
Definition Ops.cpp.inc:604
::mlir::StringAttr getFunctionTypeAttrName(::mlir::OperationName name)
Definition Ops.h.inc:540
::mlir::Region * getCallableRegion()
Required by FunctionOpInterface.
Definition Ops.h.inc:701
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::llvm::StringRef name, llvm::StringRef target)
::mlir::SymbolRefAttr getTargetAttr()
Definition Ops.h.inc:602
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:568
::mlir::SymbolRefAttr getFullyQualifiedName(bool requireParent=true)
Return the full name for this contract from the root module, including all surrounding symbol table n...
Definition Ops.cpp:392
::mlir::FailureOr< SymbolLookupResult<::llzk::verif::ContractTargetOpInterface > > getTargetOp()
Definition Ops.h.inc:751
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:732
::mlir::FailureOr<::mlir::Value > getSelfValue()
Return the "self" value (i.e.
Definition Ops.cpp:720
::mlir::ArrayAttr getArgAttrsAttr()
Definition Ops.h.inc:612
void writeProperties(::mlir::DialectBytecodeWriter &writer)
Definition Ops.cpp.inc:657
void setSymName(::llvm::StringRef attrValue)
Definition Ops.cpp.inc:686
::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:457
::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state)
Definition Ops.cpp.inc:641
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp:476
::mlir::SymbolRefAttr getTarget()
Definition Ops.cpp.inc:671
FoldAdaptor::Properties Properties
Definition Ops.h.inc:522
::mlir::FailureOr< SymbolLookupResult< component::StructDefOp > > getStructTarget()
Definition Ops.h.inc:726
::mlir::FailureOr< SymbolLookupResult< function::FuncDefOp > > getFuncTarget()
Definition Ops.h.inc:742
::mlir::StringAttr getSymNameAttrName(::mlir::OperationName name)
Definition Ops.h.inc:548
ContractOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:520
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::StringAttr sym_name, ::mlir::SymbolRefAttr target, ::mlir::TypeAttr function_type, ::mlir::ArrayAttr arg_attrs={})
Definition Ops.cpp.inc:694
bool hasFuncTarget()
Return true iff the contract targets a function.
Definition Ops.h.inc:736
::llvm::StringRef getSymName()
Definition Ops.cpp.inc:666
::mlir::StringAttr getTargetAttrName(::mlir::OperationName name)
Definition Ops.h.inc:556
bool isDeclaration()
Required by SymbolOpInterface.
Definition Ops.h.inc:713
DecreasesOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:804
DecreasesOpAdaptor(DecreasesOp op)
Definition Ops.cpp.inc:781
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:783
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:813
DecreasesOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:811
DecreasesOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:804
DecreasesOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:806
DecreasesOpGenericAdaptor(RangeT values, const DecreasesOpGenericAdaptorBase &base)
Definition Ops.h.inc:808
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:817
DecreasesOpAdaptor Adaptor
Definition Ops.h.inc:845
::mlir::OpOperand & getValueMutable()
Definition Ops.h.inc:871
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:849
::mlir::TypedValue<::llzk::felt::FeltType > getValue()
Definition Ops.h.inc:867
void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect > > &effects)
Definition Ops.cpp.inc:850
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:822
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:853
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value value)
Definition Ops.cpp.inc:787
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:876
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:805
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:861
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:848
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:857
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:818
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:880
DecreasesOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:847
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:841
EnsureComputeOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:936
EnsureComputeOpAdaptor(EnsureComputeOp op)
Definition Ops.cpp.inc:868
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:870
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:945
EnsureComputeOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:936
EnsureComputeOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:938
EnsureComputeOpGenericAdaptor(RangeT values, const EnsureComputeOpGenericAdaptorBase &base)
Definition Ops.h.inc:940
EnsureComputeOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:943
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:949
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:909
void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect > > &effects)
Definition Ops.cpp.inc:937
::mlir::OpOperand & getConditionMutable()
Definition Ops.h.inc:1003
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:905
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:981
EnsureComputeOpAdaptor Adaptor
Definition Ops.h.inc:977
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:989
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:980
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:985
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:928
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:993
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:1012
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value condition)
Definition Ops.cpp.inc:874
EnsureComputeOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:979
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:892
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:1008
::mlir::TypedValue<::mlir::IntegerType > getCondition()
Definition Ops.h.inc:999
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:957
EnsureConstrainOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1068
EnsureConstrainOpAdaptor(EnsureConstrainOp op)
Definition Ops.cpp.inc:955
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:1077
EnsureConstrainOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:1075
EnsureConstrainOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1070
EnsureConstrainOpGenericAdaptor(RangeT values, const EnsureConstrainOpGenericAdaptorBase &base)
Definition Ops.h.inc:1072
EnsureConstrainOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1068
::mlir::OpOperand & getConditionMutable()
Definition Ops.h.inc:1135
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:1112
EnsureConstrainOpAdaptor Adaptor
Definition Ops.h.inc:1109
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:1140
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:1125
void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect > > &effects)
Definition Ops.cpp.inc:1024
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:1117
EnsureConstrainOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:1111
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:992
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:1015
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:979
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:1121
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value condition)
Definition Ops.cpp.inc:961
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:996
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:1113
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:1144
::mlir::TypedValue<::mlir::IntegerType > getCondition()
Definition Ops.h.inc:1131
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:1080
IncludeOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1286
IncludeOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs)
Definition Ops.h.inc:1290
::llvm::SmallVector< RangeT > getMapOperands()
Definition Ops.h.inc:1311
IncludeOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1286
IncludeOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1288
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:1297
IncludeOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:1295
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:1301
IncludeOpGenericAdaptor(RangeT values, const IncludeOpGenericAdaptorBase &base)
Definition Ops.h.inc:1292
void setNumDimsPerMap(::llvm::ArrayRef< int32_t > attrValue)
Definition Ops.cpp.inc:1423
::mlir::LogicalResult verifyTemplateParamCompatibility(::mlir::Attribute paramFromCallOp, ::llzk::polymorphic::TemplateParamOp targetParam)
Check type compatibility of the given template parameter value from this CallOp against the declared ...
::mlir::MutableOperandRange getArgOperandsMutable()
Definition Ops.cpp.inc:1111
::mlir::StringAttr getMapOpGroupSizesAttrName(::mlir::OperationName name)
Definition Ops.h.inc:1363
::mlir::ArrayAttr getTemplateParamsAttr()
Definition Ops.h.inc:1436
::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop)
Definition Ops.cpp.inc:1199
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:1465
static llvm::hash_code computePropertiesHash(const Properties &prop)
Definition Ops.cpp.inc:1244
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:1396
::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state)
Definition Ops.cpp.inc:1340
IncludeOpAdaptor Adaptor
Definition Ops.h.inc:1341
void setMapOpGroupSizes(::llvm::ArrayRef< int32_t > attrValue)
Definition Ops.cpp.inc:1427
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:1346
::mlir::OperandRangeRange getMapOperands()
Definition Ops.h.inc:1406
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:1344
::llvm::LogicalResult setPropertiesFromParsedAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:1583
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:1508
::llvm::LogicalResult verifySymbolUses(::mlir::SymbolTableCollection &symbolTable)
Definition Ops.cpp:991
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.cpp.inc:1102
::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:1313
void setNumDimsPerMapAttr(::mlir::DenseI32ArrayAttr attr)
Definition Ops.h.inc:1459
::llvm::ArrayRef< int32_t > getMapOpGroupSizes()
Definition Ops.cpp.inc:1418
void writeProperties(::mlir::DialectBytecodeWriter &writer)
Definition Ops.cpp.inc:1380
::mlir::StringAttr getNumDimsPerMapAttrName(::mlir::OperationName name)
Definition Ops.h.inc:1371
::mlir::SymbolRefAttr getCalleeAttr()
Definition Ops.h.inc:1431
FoldAdaptor::Properties Properties
Definition Ops.h.inc:1345
void setMapOpGroupSizesAttr(::mlir::DenseI32ArrayAttr attr)
Definition Ops.h.inc:1464
static std::optional< mlir::Attribute > getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name)
Definition Ops.cpp.inc:1256
::mlir::Operation::operand_range getArgOperands()
Definition Ops.h.inc:1402
void setCalleeAttr(::mlir::SymbolRefAttr attr)
Definition Ops.h.inc:1451
::mlir::FailureOr<::llzk::SymbolLookupResult<::llzk::verif::ContractOp > > getCalleeTarget(::mlir::SymbolTableCollection &tables)
Resolve and return the target Contract for this CallOp.
Definition Ops.cpp:1043
::mlir::Operation * resolveCallable()
Required by CallOpInterface.
Definition Ops.cpp:1099
static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs)
Definition Ops.cpp.inc:1302
::mlir::SymbolRefAttr getCallee()
Definition Ops.cpp.inc:1403
::mlir::StringAttr getCalleeAttrName()
Definition Ops.h.inc:1351
::mlir::StringAttr getTemplateParamsAttrName(::mlir::OperationName name)
Definition Ops.h.inc:1379
::mlir::StringAttr getMapOpGroupSizesAttrName()
Definition Ops.h.inc:1359
::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:1123
::mlir::StringAttr getOperandSegmentSizesAttrName(::mlir::OperationName name)
Definition Ops.h.inc:1387
::mlir::Value getSelfValue()
Return the "self" value (i.e.
Definition Ops.cpp:1056
::mlir::MutableOperandRangeRange getMapOperandsMutable()
Definition Ops.cpp.inc:1117
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:1412
::mlir::StringAttr getOperandSegmentSizesAttrName()
Definition Ops.h.inc:1383
::std::optional< ::mlir::ArrayAttr > getTemplateParams()
Definition Ops.cpp.inc:1408
static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value)
Definition Ops.cpp.inc:1272
void setCalleeFromCallable(::mlir::CallInterfaceCallable callee)
Set the callee for this operation.
Definition Ops.cpp:1071
bool contractTargetsStruct()
Return true iff the contract targets a struct type.
Definition Ops.cpp:1050
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:1416
void setTemplateParamsAttr(::mlir::ArrayAttr attr)
Definition Ops.h.inc:1455
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::SymbolRefAttr callee, ::mlir::ValueRange argOperands={}, ::llvm::ArrayRef<::mlir::Attribute > templateParams={})
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:1611
::mlir::StringAttr getCalleeAttrName(::mlir::OperationName name)
Definition Ops.h.inc:1355
::mlir::LogicalResult verifyTemplateParamCompatibility(::llvm::iterator_range<::mlir::Region::op_iterator<::llzk::polymorphic::TemplateParamOp > > targetParamDefs)
Check type compatibility of each template parameter value provided in this CallOp against the declare...
static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties)
Definition Ops.cpp.inc:1459
::llvm::ArrayRef< int32_t > getNumDimsPerMap()
Definition Ops.cpp.inc:1413
::mlir::FunctionType getTypeSignature()
Return the FunctionType inferred from the arg operands of this CallOp.
Definition Ops.cpp:1030
::mlir::Attribute removeTemplateParamsAttr()
Definition Ops.h.inc:1469
::mlir::LogicalResult verifyTemplateParamsMatchInferred(::llvm::iterator_range<::mlir::Region::op_iterator<::llzk::polymorphic::TemplateParamOp > > targetParamDefs, const UnificationMap &unifications)
Verify that each template parameter value provided in this CallOp is consistent with the value inferr...
Definition Ops.cpp:823
::mlir::StringAttr getNumDimsPerMapAttrName()
Definition Ops.h.inc:1367
::mlir::DenseI32ArrayAttr getNumDimsPerMapAttr()
Definition Ops.h.inc:1441
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:1504
::mlir::FailureOr< UnificationMap > unifyTypeSignature(::mlir::FunctionType other)
Attempt type unfication between the inferred FunctionType from this CallOp (as LHS) and the given Fun...
Definition Ops.cpp:1034
::mlir::Operation * resolveCallableInTable(::mlir::SymbolTableCollection *symbolTable)
Required by CallOpInterface.
Definition Ops.cpp:1082
IncludeOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:1343
static ::llvm::SmallVector<::mlir::ValueRange > toVectorOfValueRange(::mlir::OperandRangeRange)
Allocate consecutive storage of the ValueRange instances in the parameter so it can be passed to the ...
Definition Ops.cpp:1075
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::SymbolRefAttr callee, ::llvm::ArrayRef<::mlir::ValueRange > mapOperands, ::mlir::DenseI32ArrayAttr numDimsPerMap, ::mlir::ValueRange argOperands={}, ::llvm::ArrayRef<::mlir::Attribute > templateParams={})
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:1391
::mlir::DenseI32ArrayAttr getMapOpGroupSizesAttr()
Definition Ops.h.inc:1446
::mlir::CallInterfaceCallable getCallableForCallee()
Return the callee of this operation.
Definition Ops.cpp:1068
::mlir::StringAttr getTemplateParamsAttrName()
Definition Ops.h.inc:1375
IncreasesOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1604
IncreasesOpAdaptor(IncreasesOp op)
Definition Ops.cpp.inc:1647
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:1649
IncreasesOpGenericAdaptor(RangeT values, const IncreasesOpGenericAdaptorBase &base)
Definition Ops.h.inc:1608
IncreasesOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1604
IncreasesOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:1611
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:1617
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:1613
IncreasesOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1606
IncreasesOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:1647
IncreasesOpAdaptor Adaptor
Definition Ops.h.inc:1645
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:1688
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:1653
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:1648
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:1680
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:1684
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:1707
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:1671
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value value)
Definition Ops.cpp.inc:1653
::mlir::OpOperand & getValueMutable()
Definition Ops.h.inc:1671
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:1661
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:1657
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:1649
::mlir::TypedValue<::llzk::felt::FeltType > getValue()
Definition Ops.h.inc:1667
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:1676
void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect > > &effects)
Definition Ops.cpp.inc:1716
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:1748
InvariantOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1792
InvariantOpAdaptor(InvariantOp op)
Definition Ops.cpp.inc:1746
InvariantOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1794
InvariantOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:1801
InvariantOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1792
InvariantOpGenericAdaptor(RangeT values, const InvariantOpGenericAdaptorBase &base)
Definition Ops.h.inc:1798
InvariantOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs=nullptr)
Definition Ops.h.inc:1796
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:1807
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:1803
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:1834
::mlir::FailureOr<::llzk::verif::InvariantTargetOpInterface > getTarget()
Returns the loop target.
Definition Ops.cpp:1241
::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:1855
InvariantOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:1833
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:1871
void setLoopArgTypesAttr(::mlir::ArrayAttr attr)
Definition Ops.h.inc:1909
static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value)
Definition Ops.cpp.inc:1837
::mlir::StringAttr getLoopArgTypesAttrName()
Definition Ops.h.inc:1841
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:1865
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:1857
InvariantOpAdaptor Adaptor
Definition Ops.h.inc:1831
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp:1169
void writeProperties(::mlir::DialectBytecodeWriter &writer)
Definition Ops.cpp.inc:1880
::mlir::StringAttr getLoopArgTypesAttrName(::mlir::OperationName name)
Definition Ops.h.inc:1845
void setLoopName(::llvm::StringRef attrValue)
Definition Ops.cpp.inc:1896
static std::optional< mlir::Attribute > getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name)
Definition Ops.cpp.inc:1828
::mlir::ArrayAttr getLoopArgTypesAttr()
Definition Ops.h.inc:1899
void print(::mlir::OpAsmPrinter &p)
Definition Ops.cpp:1220
::mlir::StringAttr getLoopNameAttrName(::mlir::OperationName name)
Definition Ops.h.inc:1853
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:1875
::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop)
Definition Ops.cpp.inc:1799
void setLoopNameAttr(::mlir::StringAttr attr)
Definition Ops.h.inc:1904
::mlir::ArrayAttr getLoopArgTypes()
Definition Ops.cpp.inc:1891
static llvm::hash_code computePropertiesHash(const Properties &prop)
Definition Ops.cpp.inc:1822
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:1836
::mlir::StringAttr getLoopNameAttr()
Definition Ops.h.inc:1894
::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state)
Definition Ops.cpp.inc:1870
::llvm::StringRef getLoopName()
Definition Ops.cpp.inc:1886
::llzk::verif::ContractOp getParentContract()
Returns the contract operation that contains this invariant.
Definition Ops.cpp:1237
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::StringRef loop_name, ::llvm::ArrayRef<::mlir::Type > loop_arg_types={}, ::llvm::ArrayRef<::mlir::Location > loop_arg_locs={})
Definition Ops.cpp:1108
FoldAdaptor::Properties Properties
Definition Ops.h.inc:1835
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:1861
::llvm::LogicalResult verify()
Definition Ops.cpp:1160
static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs)
Definition Ops.cpp.inc:1849
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:1900
::mlir::Region & getRegion()
Definition Ops.h.inc:1881
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:1921
::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:1762
::mlir::StringAttr getLoopNameAttrName()
Definition Ops.h.inc:1849
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:1942
OldOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1978
OldOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1980
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:1987
OldOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:1985
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:1991
OldOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1978
OldOpGenericAdaptor(RangeT values, const OldOpGenericAdaptorBase &base)
Definition Ops.h.inc:1982
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:2050
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:2066
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:2027
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:2023
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:1998
OldOpAdaptor Adaptor
Definition Ops.h.inc:2019
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:2036
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:2035
::mlir::TypedValue<::mlir::Type > getResult()
Definition Ops.h.inc:2060
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:2022
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:2031
void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect > > &effects)
Definition Ops.cpp.inc:2082
::mlir::TypedValue<::mlir::Type > getValue()
Definition Ops.h.inc:2041
::mlir::OpOperand & getValueMutable()
Definition Ops.h.inc:2045
::llvm::LogicalResult inferReturnTypes(::mlir::MLIRContext *context, ::std::optional<::mlir::Location > location, ::mlir::ValueRange operands, ::mlir::DictionaryAttr attributes, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions, ::llvm::SmallVectorImpl<::mlir::Type > &inferredReturnTypes)
Definition Ops.cpp.inc:2026
OldOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:2021
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:2054
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:2022
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type result, ::mlir::Value value)
Definition Ops.cpp.inc:1946
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:2100
ProveDetOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2117
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:2130
ProveDetOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:2124
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:2126
ProveDetOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2119
ProveDetOpGenericAdaptor(RangeT values, const ProveDetOpGenericAdaptorBase &base)
Definition Ops.h.inc:2121
ProveDetOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2117
::mlir::TypedValue<::mlir::IntegerType > getResult()
Definition Ops.h.inc:2199
::mlir::OpOperand & getConditionMutable()
Definition Ops.h.inc:2184
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:2161
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:2156
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:2166
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type result, ::mlir::Value condition)
Definition Ops.cpp.inc:2104
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:2221
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:2190
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:2189
ProveDetOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:2160
::mlir::TypedValue<::mlir::Type > getCondition()
Definition Ops.h.inc:2180
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:2193
ProveDetOpAdaptor Adaptor
Definition Ops.h.inc:2158
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:2174
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:2162
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:2178
::llvm::LogicalResult inferReturnTypes(::mlir::MLIRContext *context, ::std::optional<::mlir::Location > location, ::mlir::ValueRange operands, ::mlir::DictionaryAttr attributes, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions, ::llvm::SmallVectorImpl<::mlir::Type > &inferredReturnTypes)
Definition Ops.cpp.inc:2182
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:2170
RequireComputeOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2255
RequireComputeOpAdaptor(RequireComputeOp op)
Definition Ops.cpp.inc:2250
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:2252
RequireComputeOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:2262
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:2264
RequireComputeOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2257
RequireComputeOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2255
RequireComputeOpGenericAdaptor(RangeT values, const RequireComputeOpGenericAdaptorBase &base)
Definition Ops.h.inc:2259
RequireComputeOpAdaptor Adaptor
Definition Ops.h.inc:2296
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:2299
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:2304
RequireComputeOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:2298
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:2308
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:2274
void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect > > &effects)
Definition Ops.cpp.inc:2319
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:2287
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:2327
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:2291
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:2300
::mlir::TypedValue<::mlir::IntegerType > getCondition()
Definition Ops.h.inc:2318
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:2312
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value condition)
Definition Ops.cpp.inc:2256
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:2331
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:2310
::mlir::OpOperand & getConditionMutable()
Definition Ops.h.inc:2322
RequireConstrainOpAdaptor(RequireConstrainOp op)
Definition Ops.cpp.inc:2337
RequireConstrainOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2387
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:2339
RequireConstrainOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:2394
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:2396
RequireConstrainOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2389
RequireConstrainOpGenericAdaptor(RangeT values, const RequireConstrainOpGenericAdaptorBase &base)
Definition Ops.h.inc:2391
RequireConstrainOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2387
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:2432
::mlir::OpOperand & getConditionMutable()
Definition Ops.h.inc:2454
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:2459
RequireConstrainOpAdaptor Adaptor
Definition Ops.h.inc:2428
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:2431
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:2463
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:2374
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:2440
::mlir::TypedValue<::mlir::IntegerType > getCondition()
Definition Ops.h.inc:2450
void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect > > &effects)
Definition Ops.cpp.inc:2406
RequireConstrainOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:2430
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:2361
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value condition)
Definition Ops.cpp.inc:2343
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:2378
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:2436
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:2444
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:2397
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:2426
StepOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2527
StepOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2527
StepOpGenericAdaptor(RangeT values, const StepOpGenericAdaptorBase &base)
Definition Ops.h.inc:2531
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:2536
StepOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:2534
StepOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2529
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:2540
StepOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:2566
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:2586
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:2465
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:2450
StepOpAdaptor Adaptor
Definition Ops.h.inc:2564
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:2461
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:2576
void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect > > &effects)
Definition Ops.cpp.inc:2490
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:2572
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:2567
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:2580
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:2568
::mlir::Region & getRegion()
Definition Ops.h.inc:2596
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:2481
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:2590
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState)
Definition Ops.cpp.inc:2430
StepYieldOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2650
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:2510
StepYieldOpAdaptor(StepYieldOp op)
Definition Ops.cpp.inc:2508
StepYieldOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2650
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:2659
StepYieldOpGenericAdaptor(RangeT values, const StepYieldOpGenericAdaptorBase &base)
Definition Ops.h.inc:2654
StepYieldOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:2657
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:2663
StepYieldOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2652
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:2699
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:2695
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:2726
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:2694
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:2703
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value value)
Definition Ops.cpp.inc:2514
StepYieldOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:2693
::mlir::TypedValue<::mlir::IntegerType > getValue()
Definition Ops.h.inc:2713
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:2549
StepYieldOpAdaptor Adaptor
Definition Ops.h.inc:2691
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:2532
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:2707
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:2545
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:2722
::mlir::OpOperand & getValueMutable()
Definition Ops.h.inc:2717
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:2568
VerifAssertOpAdaptor(VerifAssertOp op)
Definition Ops.cpp.inc:2588
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:2590
VerifAssertOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2781
VerifAssertOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:2788
VerifAssertOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2783
VerifAssertOpGenericAdaptor(RangeT values, const VerifAssertOpGenericAdaptorBase &base)
Definition Ops.h.inc:2785
VerifAssertOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2781
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:2790
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:2794
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:2857
::mlir::TypedValue<::mlir::IntegerType > getCondition()
Definition Ops.h.inc:2844
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:2612
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:2853
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:2830
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:2826
VerifAssertOpAdaptor Adaptor
Definition Ops.h.inc:2822
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:2838
void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect > > &effects)
Definition Ops.cpp.inc:2657
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:2629
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:2648
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:2834
VerifAssertOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:2824
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:2625
::mlir::OpOperand & getConditionMutable()
Definition Ops.h.inc:2848
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value condition)
Definition Ops.cpp.inc:2594
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:2825
VerifProveOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2913
VerifProveOpAdaptor(VerifProveOp op)
Definition Ops.cpp.inc:2675
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:2677
VerifProveOpGenericAdaptor(RangeT values, const VerifProveOpGenericAdaptorBase &base)
Definition Ops.h.inc:2917
VerifProveOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2913
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:2926
VerifProveOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2915
VerifProveOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:2920
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:2922
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:2966
::mlir::TypedValue<::mlir::IntegerType > getCondition()
Definition Ops.h.inc:2976
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:2716
VerifProveOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:2956
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:2989
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:2958
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:2699
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:2712
::mlir::OpOperand & getConditionMutable()
Definition Ops.h.inc:2980
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:2962
void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect > > &effects)
Definition Ops.cpp.inc:2744
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:2970
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:2957
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:2985
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value condition)
Definition Ops.cpp.inc:2681
VerifProveOpAdaptor Adaptor
Definition Ops.h.inc:2954
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:2735
VerifSMTProveOpAdaptor(VerifSMTProveOp op)
Definition Ops.cpp.inc:2762
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:2764
VerifSMTProveOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:3045
VerifSMTProveOpGenericAdaptor(RangeT values, const VerifSMTProveOpGenericAdaptorBase &base)
Definition Ops.h.inc:3049
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:3058
VerifSMTProveOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:3052
VerifSMTProveOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:3045
VerifSMTProveOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:3047
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:3054
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:3090
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value condition)
Definition Ops.cpp.inc:2768
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:3102
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:3098
VerifSMTProveOpAdaptor Adaptor
Definition Ops.h.inc:3086
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:2803
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:2799
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:3089
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:2786
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:3121
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:3117
::mlir::TypedValue<::llzk::smt::BoolType > getCondition()
Definition Ops.h.inc:3108
VerifSMTProveOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:3088
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:3094
::mlir::OpOperand & getConditionMutable()
Definition Ops.h.inc:3112
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:2822
AssumeDetOpGenericAdaptorBase(::mlir::Operation *op)
Definition Ops.h.inc:122
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:115
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.h.inc:124
AssumeDetOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:118
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.h.inc:255
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:246
ContractEndOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:249
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.h.inc:428
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:418
ContractOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:422
::std::optional< ::mlir::ArrayAttr > getArgAttrs()
Definition Ops.cpp.inc:426
DecreasesOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:783
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:780
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.h.inc:789
DecreasesOpGenericAdaptorBase(::mlir::Operation *op)
Definition Ops.h.inc:787
EnsureComputeOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:915
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:912
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.h.inc:921
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:1044
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.h.inc:1053
EnsureConstrainOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1047
::llvm::ArrayRef< int32_t > getNumDimsPerMap()
Definition Ops.cpp.inc:1067
::mlir::DenseI32ArrayAttr getNumDimsPerMapAttr()
Definition Ops.cpp.inc:1062
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:1240
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.cpp.inc:1043
::llvm::ArrayRef< int32_t > getMapOpGroupSizes()
Definition Ops.cpp.inc:1072
::std::optional< ::mlir::ArrayAttr > getTemplateParams()
Definition Ops.cpp.inc:1057
IncludeOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1244
::mlir::DenseI32ArrayAttr getMapOpGroupSizesAttr()
Definition Ops.h.inc:1273
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:1580
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.h.inc:1589
IncreasesOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1583
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:1743
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.h.inc:1753
InvariantOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1747
::mlir::DictionaryAttr getAttributes()
Definition Ops.h.inc:1967
OldOpGenericAdaptorBase(::mlir::Operation *op)
Definition Ops.h.inc:1961
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:1954
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.h.inc:1963
OldOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1957
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:2093
ProveDetOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2096
ProveDetOpGenericAdaptorBase(::mlir::Operation *op)
Definition Ops.h.inc:2100
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.h.inc:2102
RequireComputeOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2234
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.h.inc:2240
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:2231
RequireConstrainOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2366
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:2363
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.h.inc:2372
StepOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2498
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.h.inc:2504
StepOpGenericAdaptorBase(::mlir::Operation *op)
Definition Ops.h.inc:2502
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:2495
StepYieldOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2629
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.h.inc:2635
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:2626
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:2757
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.h.inc:2766
VerifAssertOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2760
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.h.inc:2898
VerifProveOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:2892
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:2889
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:3021
VerifSMTProveOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:3024
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.h.inc:3030
mlir::DenseMap< std::pair< mlir::SymbolRefAttr, Side >, mlir::Attribute > UnificationMap
Optional result from type unifications.
Definition TypeHelper.h:217
llvm::StringLiteral getOperationName()
Get the operation name, like "constrain.eq" for the given OpClass.
Definition OpHelpers.h:34
void setTarget(const ::mlir::SymbolRefAttr &propValue)
Definition Ops.h.inc:401
void setFunctionType(const ::mlir::TypeAttr &propValue)
Definition Ops.h.inc:381
void setSymName(const ::mlir::StringAttr &propValue)
Definition Ops.h.inc:391
void setArgAttrs(const ::mlir::ArrayAttr &propValue)
Definition Ops.h.inc:371
void setMapOpGroupSizes(const ::mlir::DenseI32ArrayAttr &propValue)
Definition Ops.h.inc:1192
::llvm::ArrayRef< int32_t > getOperandSegmentSizes() const
Definition Ops.h.inc:1217
void setNumDimsPerMap(const ::mlir::DenseI32ArrayAttr &propValue)
Definition Ops.h.inc:1202
void setOperandSegmentSizes(::llvm::ArrayRef< int32_t > propValue)
Definition Ops.h.inc:1221
void setCallee(const ::mlir::SymbolRefAttr &propValue)
Definition Ops.h.inc:1182
void setTemplateParams(const ::mlir::ArrayAttr &propValue)
Definition Ops.h.inc:1212
void setLoopArgTypes(const ::mlir::ArrayAttr &propValue)
Definition Ops.h.inc:1718
void setLoopName(const ::mlir::StringAttr &propValue)
Definition Ops.h.inc:1728