LLZK 2.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 function {
12class CallOp;
13} // namespace function
14} // namespace llzk
15namespace llzk {
16namespace function {
17class FuncDefOp;
18} // namespace function
19} // namespace llzk
20namespace llzk {
21namespace function {
22class ReturnOp;
23} // namespace function
24} // namespace llzk
25#ifdef GET_OP_CLASSES
26#undef GET_OP_CLASSES
27
28namespace llzk {
29namespace function {
30
31//===----------------------------------------------------------------------===//
32// ::llzk::function::CallOp declarations
33//===----------------------------------------------------------------------===//
34
35namespace detail {
37public:
38 struct Properties {
39 using calleeTy = ::mlir::SymbolRefAttr;
41
42 auto getCallee() {
43 auto &propStorage = this->callee;
44 return ::llvm::cast<::mlir::SymbolRefAttr>(propStorage);
45 }
46 void setCallee(const ::mlir::SymbolRefAttr &propValue) {
47 this->callee = propValue;
48 }
49 using mapOpGroupSizesTy = ::mlir::DenseI32ArrayAttr;
51
53 auto &propStorage = this->mapOpGroupSizes;
54 return ::llvm::cast<::mlir::DenseI32ArrayAttr>(propStorage);
55 }
56 void setMapOpGroupSizes(const ::mlir::DenseI32ArrayAttr &propValue) {
57 this->mapOpGroupSizes = propValue;
58 }
59 using numDimsPerMapTy = ::mlir::DenseI32ArrayAttr;
61
63 auto &propStorage = this->numDimsPerMap;
64 return ::llvm::dyn_cast_or_null<::mlir::DenseI32ArrayAttr>(propStorage);
65 }
66 void setNumDimsPerMap(const ::mlir::DenseI32ArrayAttr &propValue) {
67 this->numDimsPerMap = propValue;
68 }
69 using templateParamsTy = ::mlir::ArrayAttr;
71
73 auto &propStorage = this->templateParams;
74 return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage);
75 }
76 void setTemplateParams(const ::mlir::ArrayAttr &propValue) {
77 this->templateParams = propValue;
78 }
79 using operandSegmentSizesTy = std::array<int32_t, 2>;
81 ::llvm::ArrayRef<int32_t> getOperandSegmentSizes() const {
82 auto &propStorage = this->operandSegmentSizes;
83 return propStorage;
84 }
85 void setOperandSegmentSizes(::llvm::ArrayRef<int32_t> propValue) {
86 auto &propStorage = this->operandSegmentSizes;
87 ::llvm::copy(propValue, propStorage.begin());
88 }
89 bool operator==(const Properties &rhs) const {
90 return
91 rhs.callee == this->callee &&
92 rhs.mapOpGroupSizes == this->mapOpGroupSizes &&
93 rhs.numDimsPerMap == this->numDimsPerMap &&
94 rhs.templateParams == this->templateParams &&
95 rhs.operandSegmentSizes == this->operandSegmentSizes &&
96 true;
97 }
98 bool operator!=(const Properties &rhs) const {
99 return !(*this == rhs);
100 }
101 };
102protected:
103 ::mlir::DictionaryAttr odsAttrs;
104 ::std::optional<::mlir::OperationName> odsOpName;
106 ::mlir::RegionRange odsRegions;
107public:
108 CallOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs)
109 odsOpName.emplace("function.call", odsAttrs.getContext());
110 }
111
113
114 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize);
116 return properties;
117 }
118
119 ::mlir::DictionaryAttr getAttributes() {
120 return odsAttrs;
121 }
122
123 ::mlir::SymbolRefAttr getCalleeAttr() {
124 auto attr = ::llvm::cast<::mlir::SymbolRefAttr>(getProperties().callee);
125 return attr;
126 }
127
128 ::mlir::SymbolRefAttr getCallee();
129 ::mlir::ArrayAttr getTemplateParamsAttr() {
130 auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().templateParams);
131 return attr;
132 }
133
134 ::std::optional< ::mlir::ArrayAttr > getTemplateParams();
135 ::mlir::DenseI32ArrayAttr getNumDimsPerMapAttr();
136 ::llvm::ArrayRef<int32_t> getNumDimsPerMap();
137 ::mlir::DenseI32ArrayAttr getMapOpGroupSizesAttr() {
138 auto attr = ::llvm::cast<::mlir::DenseI32ArrayAttr>(getProperties().mapOpGroupSizes);
139 return attr;
140 }
141
142 ::llvm::ArrayRef<int32_t> getMapOpGroupSizes();
143};
144} // namespace detail
145template <typename RangeT>
147 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
149public:
150 CallOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
151
152 CallOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : CallOpGenericAdaptor(values, attrs, (properties ? *properties.as<Properties *>() : Properties{}), regions) {}
153
154 CallOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs) : CallOpGenericAdaptor(values, attrs, Properties{}, {}) {}
155
156 CallOpGenericAdaptor(RangeT values, const CallOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
157
158 template <typename LateInst = CallOp, typename = std::enable_if_t<std::is_same_v<LateInst, CallOp>>>
159 CallOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
160
161 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
162 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
163 }
164
165 RangeT getODSOperands(unsigned index) {
166 auto valueRange = getODSOperandIndexAndLength(index);
167 return {std::next(odsOperands.begin(), valueRange.first),
168 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
169 }
170
171 RangeT getArgOperands() {
172 return getODSOperands(0);
173 }
174
175 ::llvm::SmallVector<RangeT> getMapOperands() {
176 auto tblgenTmpOperands = getODSOperands(1);
177 auto sizes = getMapOpGroupSizes();
178
179 ::llvm::SmallVector<RangeT> tblgenTmpOperandGroups;
180 for (int i = 0, e = sizes.size(); i < e; ++i) {
181 tblgenTmpOperandGroups.push_back(tblgenTmpOperands.take_front(sizes[i]));
182 tblgenTmpOperands = tblgenTmpOperands.drop_front(sizes[i]);
183 }
184 return tblgenTmpOperandGroups;
185 }
186
187 RangeT getOperands() {
188 return odsOperands;
189 }
190
191private:
192 RangeT odsOperands;
193};
194class CallOpAdaptor : public CallOpGenericAdaptor<::mlir::ValueRange> {
195public:
198
199 ::llvm::LogicalResult verify(::mlir::Location loc);
200};
201class CallOp : public ::mlir::Op<CallOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::VariadicResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::VariadicOperands, ::mlir::OpTrait::AttrSizedOperandSegments, ::llzk::VerifySizesForMultiAffineOps<1>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::OpTrait::MemRefsNormalizable, ::mlir::CallOpInterface::Trait, ::mlir::SymbolUserOpInterface::Trait> {
202public:
203 using Op::Op;
204 using Op::print;
206 template <typename RangeT>
210 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
211 static ::llvm::StringRef attrNames[] = {::llvm::StringRef("callee"), ::llvm::StringRef("mapOpGroupSizes"), ::llvm::StringRef("numDimsPerMap"), ::llvm::StringRef("templateParams"), ::llvm::StringRef("operandSegmentSizes")};
212 return ::llvm::ArrayRef(attrNames);
213 }
214
215 ::mlir::StringAttr getCalleeAttrName() {
216 return getAttributeNameForIndex(0);
217 }
218
219 static ::mlir::StringAttr getCalleeAttrName(::mlir::OperationName name) {
220 return getAttributeNameForIndex(name, 0);
221 }
222
223 ::mlir::StringAttr getMapOpGroupSizesAttrName() {
224 return getAttributeNameForIndex(1);
225 }
226
227 static ::mlir::StringAttr getMapOpGroupSizesAttrName(::mlir::OperationName name) {
228 return getAttributeNameForIndex(name, 1);
229 }
230
231 ::mlir::StringAttr getNumDimsPerMapAttrName() {
232 return getAttributeNameForIndex(2);
233 }
234
235 static ::mlir::StringAttr getNumDimsPerMapAttrName(::mlir::OperationName name) {
236 return getAttributeNameForIndex(name, 2);
237 }
238
239 ::mlir::StringAttr getTemplateParamsAttrName() {
240 return getAttributeNameForIndex(3);
241 }
242
243 static ::mlir::StringAttr getTemplateParamsAttrName(::mlir::OperationName name) {
244 return getAttributeNameForIndex(name, 3);
245 }
246
247 ::mlir::StringAttr getOperandSegmentSizesAttrName() {
248 return (*this)->getName().getAttributeNames().back();
249 }
250
251 static ::mlir::StringAttr getOperandSegmentSizesAttrName(::mlir::OperationName name) {
252 return name.getAttributeNames().back();
253 }
254
255 static constexpr ::llvm::StringLiteral getOperationName() {
256 return ::llvm::StringLiteral("function.call");
257 }
258
259 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index);
260 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
261 auto valueRange = getODSOperandIndexAndLength(index);
262 return {std::next(getOperation()->operand_begin(), valueRange.first),
263 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
264 }
265
266 ::mlir::Operation::operand_range getArgOperands() {
267 return getODSOperands(0);
268 }
269
270 ::mlir::OperandRangeRange getMapOperands() {
271 return getODSOperands(1).split(getMapOpGroupSizesAttr());
272 }
273
274 ::mlir::MutableOperandRange getArgOperandsMutable();
275 ::mlir::MutableOperandRangeRange getMapOperandsMutable();
276 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index);
277 ::mlir::Operation::result_range getODSResults(unsigned index) {
278 auto valueRange = getODSResultIndexAndLength(index);
279 return {std::next(getOperation()->result_begin(), valueRange.first),
280 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
281 }
282
283 static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError);
284 static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop);
285 static llvm::hash_code computePropertiesHash(const Properties &prop);
286 static std::optional<mlir::Attribute> getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name);
287 static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value);
288 static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs);
289 static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError);
290 static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state);
291 void writeProperties(::mlir::DialectBytecodeWriter &writer);
292 ::mlir::SymbolRefAttr getCalleeAttr() {
293 return ::llvm::cast<::mlir::SymbolRefAttr>(getProperties().callee);
294 }
295
296 ::mlir::SymbolRefAttr getCallee();
297 ::mlir::ArrayAttr getTemplateParamsAttr() {
298 return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().templateParams);
299 }
300
301 ::std::optional< ::mlir::ArrayAttr > getTemplateParams();
302 ::mlir::DenseI32ArrayAttr getNumDimsPerMapAttr() {
303 return ::llvm::dyn_cast_or_null<::mlir::DenseI32ArrayAttr>(getProperties().numDimsPerMap);
304 }
305
306 ::llvm::ArrayRef<int32_t> getNumDimsPerMap();
307 ::mlir::DenseI32ArrayAttr getMapOpGroupSizesAttr() {
308 return ::llvm::cast<::mlir::DenseI32ArrayAttr>(getProperties().mapOpGroupSizes);
309 }
310
311 ::llvm::ArrayRef<int32_t> getMapOpGroupSizes();
312 void setCalleeAttr(::mlir::SymbolRefAttr attr) {
313 getProperties().callee = attr;
314 }
315
316 void setTemplateParamsAttr(::mlir::ArrayAttr attr) {
317 getProperties().templateParams = attr;
318 }
319
320 void setNumDimsPerMapAttr(::mlir::DenseI32ArrayAttr attr) {
321 getProperties().numDimsPerMap = attr;
322 }
323
324 void setNumDimsPerMap(::llvm::ArrayRef<int32_t> attrValue);
325 void setMapOpGroupSizesAttr(::mlir::DenseI32ArrayAttr attr) {
326 getProperties().mapOpGroupSizes = attr;
327 }
328
329 void setMapOpGroupSizes(::llvm::ArrayRef<int32_t> attrValue);
330 ::mlir::Attribute removeTemplateParamsAttr() {
331 auto &attr = getProperties().templateParams;
332 attr = {};
333 return attr;
334 }
335
336 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::SymbolRefAttr callee, ::mlir::ValueRange argOperands = {}, ::llvm::ArrayRef<::mlir::Attribute> templateParams = {});
337 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::SymbolRefAttr callee, ::llvm::ArrayRef<::mlir::ValueRange> mapOperands, ::mlir::DenseI32ArrayAttr numDimsPerMap, ::mlir::ValueRange argOperands = {}, ::llvm::ArrayRef<::mlir::Attribute> templateParams = {});
338 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::SymbolRefAttr callee, ::llvm::ArrayRef<::mlir::ValueRange> mapOperands, ::llvm::ArrayRef<int32_t> numDimsPerMap, ::mlir::ValueRange argOperands = {}, ::llvm::ArrayRef<::mlir::Attribute> templateParams = {});
339 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::llzk::function::FuncDefOp callee, ::mlir::ValueRange argOperands = {}, ::llvm::ArrayRef<::mlir::Attribute> templateParams = {});
340 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::llzk::function::FuncDefOp callee, ::llvm::ArrayRef<::mlir::ValueRange> mapOperands, ::mlir::DenseI32ArrayAttr numDimsPerMap, ::mlir::ValueRange argOperands = {}, ::llvm::ArrayRef<::mlir::Attribute> templateParams = {});
341 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::llzk::function::FuncDefOp callee, ::llvm::ArrayRef<::mlir::ValueRange> mapOperands, ::llvm::ArrayRef<int32_t> numDimsPerMap, ::mlir::ValueRange argOperands = {}, ::llvm::ArrayRef<::mlir::Attribute> templateParams = {});
342 static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties);
343 ::llvm::LogicalResult verifyInvariantsImpl();
344 ::llvm::LogicalResult verifyInvariants();
345 ::mlir::CallInterfaceCallable getCallableForCallee();
346 void setCalleeFromCallable(::mlir::CallInterfaceCallable callee);
347 ::llvm::LogicalResult verifySymbolUses(::mlir::SymbolTableCollection &symbolTable);
348 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
349 static ::llvm::LogicalResult setPropertiesFromParsedAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError);
350 void print(::mlir::OpAsmPrinter &_odsPrinter);
351private:
352 ::mlir::StringAttr getAttributeNameForIndex(unsigned index) {
353 return getAttributeNameForIndex((*this)->getName(), index);
354 }
355
356 static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) {
357 assert(index < 4 && "invalid attribute index");
358 assert(name.getStringRef() == getOperationName() && "invalid operation name");
359 assert(name.isRegistered() && "Operation isn't registered, missing a "
360 "dependent dialect loading?");
361 return name.getAttributeNames()[index];
362 }
363
364public:
366 ::mlir::Operation *resolveCallableInTable(::mlir::SymbolTableCollection *symbolTable);
367
369 ::mlir::Operation *resolveCallable();
370
374 ::mlir::FunctionType getTypeSignature();
375
379 ::mlir::FailureOr<UnificationMap> unifyTypeSignature(::mlir::FunctionType other);
380
383 inline bool calleeIsCompute() {
384 return FUNC_NAME_COMPUTE == getCallee().getLeafReference();
385 }
386
390 return FUNC_NAME_COMPUTE == getCallee().getLeafReference() ||
391 FUNC_NAME_PRODUCT == getCallee().getLeafReference();
392 }
393
396 inline bool calleeIsConstrain() { return FUNC_NAME_CONSTRAIN == getCallee().getLeafReference(); }
397
400
403
406 ::mlir::Value getSelfValueFromCompute();
407
410 ::mlir::Value getSelfValueFromConstrain();
411
413 ::mlir::FailureOr<::llzk::SymbolLookupResult<::llzk::function::FuncDefOp>>
414 getCalleeTarget(::mlir::SymbolTableCollection &tables);
415
418
421
424 static ::llvm::SmallVector<::mlir::ValueRange> toVectorOfValueRange(::mlir::OperandRangeRange);
425
428 ::mlir::LogicalResult verifyTemplateParamCompatibility(
429 ::mlir::Attribute paramFromCallOp, ::llzk::polymorphic::TemplateParamOp targetParam
430 );
431
438 ::mlir::LogicalResult verifyTemplateParamCompatibility(
439 ::llvm::iterator_range<::mlir::Region::op_iterator<::llzk::polymorphic::TemplateParamOp>> targetParamDefs
440 );
441
450 ::mlir::LogicalResult verifyTemplateParamsMatchInferred(
451 ::llvm::iterator_range<::mlir::Region::op_iterator<::llzk::polymorphic::TemplateParamOp>> targetParamDefs,
452 const UnificationMap &unifications
453 );
454};
455} // namespace function
456} // namespace llzk
457MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::function::CallOp)
458
459namespace llzk {
460namespace function {
461
462//===----------------------------------------------------------------------===//
463// ::llzk::function::FuncDefOp declarations
464//===----------------------------------------------------------------------===//
465
466namespace detail {
468public:
469 struct Properties {
470 using arg_attrsTy = ::mlir::ArrayAttr;
472
473 auto getArgAttrs() {
474 auto &propStorage = this->arg_attrs;
475 return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage);
476 }
477 void setArgAttrs(const ::mlir::ArrayAttr &propValue) {
478 this->arg_attrs = propValue;
479 }
480 using function_typeTy = ::mlir::TypeAttr;
482
484 auto &propStorage = this->function_type;
485 return ::llvm::cast<::mlir::TypeAttr>(propStorage);
486 }
487 void setFunctionType(const ::mlir::TypeAttr &propValue) {
488 this->function_type = propValue;
489 }
490 using res_attrsTy = ::mlir::ArrayAttr;
492
493 auto getResAttrs() {
494 auto &propStorage = this->res_attrs;
495 return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage);
496 }
497 void setResAttrs(const ::mlir::ArrayAttr &propValue) {
498 this->res_attrs = propValue;
499 }
500 using sym_nameTy = ::mlir::StringAttr;
502
503 auto getSymName() {
504 auto &propStorage = this->sym_name;
505 return ::llvm::cast<::mlir::StringAttr>(propStorage);
506 }
507 void setSymName(const ::mlir::StringAttr &propValue) {
508 this->sym_name = propValue;
509 }
510 bool operator==(const Properties &rhs) const {
511 return
512 rhs.arg_attrs == this->arg_attrs &&
513 rhs.function_type == this->function_type &&
514 rhs.res_attrs == this->res_attrs &&
515 rhs.sym_name == this->sym_name &&
516 true;
517 }
518 bool operator!=(const Properties &rhs) const {
519 return !(*this == rhs);
520 }
521 };
522protected:
523 ::mlir::DictionaryAttr odsAttrs;
524 ::std::optional<::mlir::OperationName> odsOpName;
526 ::mlir::RegionRange odsRegions;
527public:
528 FuncDefOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs)
529 odsOpName.emplace("function.def", odsAttrs.getContext());
530 }
531
533
534 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) {
535 return {index, 1};
536 }
537
539 return properties;
540 }
541
542 ::mlir::DictionaryAttr getAttributes() {
543 return odsAttrs;
544 }
545
546 ::mlir::StringAttr getSymNameAttr() {
547 auto attr = ::llvm::cast<::mlir::StringAttr>(getProperties().sym_name);
548 return attr;
549 }
550
551 ::llvm::StringRef getSymName();
552 ::mlir::TypeAttr getFunctionTypeAttr() {
553 auto attr = ::llvm::cast<::mlir::TypeAttr>(getProperties().function_type);
554 return attr;
555 }
556
557 ::mlir::FunctionType getFunctionType();
558 ::mlir::ArrayAttr getArgAttrsAttr() {
559 auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().arg_attrs);
560 return attr;
561 }
562
563 ::std::optional< ::mlir::ArrayAttr > getArgAttrs();
564 ::mlir::ArrayAttr getResAttrsAttr() {
565 auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().res_attrs);
566 return attr;
567 }
568
569 ::std::optional< ::mlir::ArrayAttr > getResAttrs();
570 ::mlir::Region &getBody() {
571 return *odsRegions[0];
572 }
573
574 ::mlir::RegionRange getRegions() {
575 return odsRegions;
576 }
577
578};
579} // namespace detail
580template <typename RangeT>
582 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
584public:
585 FuncDefOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
586
587 FuncDefOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : FuncDefOpGenericAdaptor(values, attrs, (properties ? *properties.as<Properties *>() : Properties{}), regions) {}
588
589 FuncDefOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : FuncDefOpGenericAdaptor(values, attrs, Properties{}, {}) {}
590
591 FuncDefOpGenericAdaptor(RangeT values, const FuncDefOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
592
593 template <typename LateInst = FuncDefOp, typename = std::enable_if_t<std::is_same_v<LateInst, FuncDefOp>>>
594 FuncDefOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
595
596 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
597 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
598 }
599
600 RangeT getODSOperands(unsigned index) {
601 auto valueRange = getODSOperandIndexAndLength(index);
602 return {std::next(odsOperands.begin(), valueRange.first),
603 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
604 }
605
606 RangeT getOperands() {
607 return odsOperands;
608 }
609
610private:
611 RangeT odsOperands;
612};
613class FuncDefOpAdaptor : public FuncDefOpGenericAdaptor<::mlir::ValueRange> {
614public:
617
618 ::llvm::LogicalResult verify(::mlir::Location loc);
619};
620class FuncDefOp : public ::mlir::Op<FuncDefOp, ::mlir::OpTrait::OneRegion, ::mlir::OpTrait::ZeroResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::mlir::OpTrait::HasParent<::mlir::ModuleOp, ::llzk::component::StructDefOp, ::llzk::polymorphic::TemplateOp>::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> {
621public:
622 using Op::Op;
623 using Op::print;
625 template <typename RangeT>
629 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
630 static ::llvm::StringRef attrNames[] = {::llvm::StringRef("arg_attrs"), ::llvm::StringRef("function_type"), ::llvm::StringRef("res_attrs"), ::llvm::StringRef("sym_name")};
631 return ::llvm::ArrayRef(attrNames);
632 }
633
634 ::mlir::StringAttr getArgAttrsAttrName() {
635 return getAttributeNameForIndex(0);
636 }
637
638 static ::mlir::StringAttr getArgAttrsAttrName(::mlir::OperationName name) {
639 return getAttributeNameForIndex(name, 0);
640 }
641
642 ::mlir::StringAttr getFunctionTypeAttrName() {
643 return getAttributeNameForIndex(1);
644 }
645
646 static ::mlir::StringAttr getFunctionTypeAttrName(::mlir::OperationName name) {
647 return getAttributeNameForIndex(name, 1);
648 }
649
650 ::mlir::StringAttr getResAttrsAttrName() {
651 return getAttributeNameForIndex(2);
652 }
653
654 static ::mlir::StringAttr getResAttrsAttrName(::mlir::OperationName name) {
655 return getAttributeNameForIndex(name, 2);
656 }
657
658 ::mlir::StringAttr getSymNameAttrName() {
659 return getAttributeNameForIndex(3);
660 }
661
662 static ::mlir::StringAttr getSymNameAttrName(::mlir::OperationName name) {
663 return getAttributeNameForIndex(name, 3);
664 }
665
666 static constexpr ::llvm::StringLiteral getOperationName() {
667 return ::llvm::StringLiteral("function.def");
668 }
669
670 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
671 return {index, 1};
672 }
673
674 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
675 auto valueRange = getODSOperandIndexAndLength(index);
676 return {std::next(getOperation()->operand_begin(), valueRange.first),
677 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
678 }
679
680 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
681 return {index, 1};
682 }
683
684 ::mlir::Operation::result_range getODSResults(unsigned index) {
685 auto valueRange = getODSResultIndexAndLength(index);
686 return {std::next(getOperation()->result_begin(), valueRange.first),
687 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
688 }
689
690 ::mlir::Region &getBody() {
691 return (*this)->getRegion(0);
692 }
693
694 static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError);
695 static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop);
696 static llvm::hash_code computePropertiesHash(const Properties &prop);
697 static std::optional<mlir::Attribute> getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name);
698 static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value);
699 static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs);
700 static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError);
701 static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state);
702 void writeProperties(::mlir::DialectBytecodeWriter &writer);
703 ::mlir::StringAttr getSymNameAttr() {
704 return ::llvm::cast<::mlir::StringAttr>(getProperties().sym_name);
705 }
706
707 ::llvm::StringRef getSymName();
708 ::mlir::TypeAttr getFunctionTypeAttr() {
709 return ::llvm::cast<::mlir::TypeAttr>(getProperties().function_type);
710 }
711
712 ::mlir::FunctionType getFunctionType();
713 ::mlir::ArrayAttr getArgAttrsAttr() {
714 return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().arg_attrs);
715 }
716
717 ::std::optional< ::mlir::ArrayAttr > getArgAttrs();
718 ::mlir::ArrayAttr getResAttrsAttr() {
719 return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().res_attrs);
720 }
721
722 ::std::optional< ::mlir::ArrayAttr > getResAttrs();
723 void setSymNameAttr(::mlir::StringAttr attr) {
724 getProperties().sym_name = attr;
725 }
726
727 void setSymName(::llvm::StringRef attrValue);
728 void setFunctionTypeAttr(::mlir::TypeAttr attr) {
729 getProperties().function_type = attr;
730 }
731
732 void setFunctionType(::mlir::FunctionType attrValue);
733 void setArgAttrsAttr(::mlir::ArrayAttr attr) {
734 getProperties().arg_attrs = attr;
735 }
736
737 void setResAttrsAttr(::mlir::ArrayAttr attr) {
738 getProperties().res_attrs = attr;
739 }
740
741 ::mlir::Attribute removeArgAttrsAttr() {
742 auto &attr = getProperties().arg_attrs;
743 attr = {};
744 return attr;
745 }
746
747 ::mlir::Attribute removeResAttrsAttr() {
748 auto &attr = getProperties().res_attrs;
749 attr = {};
750 return attr;
751 }
752
753 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::llvm::StringRef name, ::mlir::FunctionType type, ::llvm::ArrayRef<::mlir::NamedAttribute> attrs = {}, ::llvm::ArrayRef<::mlir::DictionaryAttr> argAttrs = {});
754 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::StringAttr sym_name, ::mlir::TypeAttr function_type, /*optional*/::mlir::ArrayAttr arg_attrs, /*optional*/::mlir::ArrayAttr res_attrs);
755 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::StringAttr sym_name, ::mlir::TypeAttr function_type, /*optional*/::mlir::ArrayAttr arg_attrs, /*optional*/::mlir::ArrayAttr res_attrs);
756 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::llvm::StringRef sym_name, ::mlir::FunctionType function_type, /*optional*/::mlir::ArrayAttr arg_attrs, /*optional*/::mlir::ArrayAttr res_attrs);
757 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::llvm::StringRef sym_name, ::mlir::FunctionType function_type, /*optional*/::mlir::ArrayAttr arg_attrs, /*optional*/::mlir::ArrayAttr res_attrs);
758 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
759 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
760 void print(::mlir::OpAsmPrinter &p);
761 ::llvm::LogicalResult verifyInvariantsImpl();
762 ::llvm::LogicalResult verifyInvariants();
763 ::llvm::LogicalResult verify();
764 ::llvm::LogicalResult verifySymbolUses(::mlir::SymbolTableCollection &symbolTable);
765private:
766 ::mlir::StringAttr getAttributeNameForIndex(unsigned index) {
767 return getAttributeNameForIndex((*this)->getName(), index);
768 }
769
770 static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) {
771 assert(index < 4 && "invalid attribute index");
772 assert(name.getStringRef() == getOperationName() && "invalid operation name");
773 assert(name.isRegistered() && "Operation isn't registered, missing a "
774 "dependent dialect loading?");
775 return name.getAttributeNames()[index];
776 }
777
778public:
779 static FuncDefOp create(::mlir::Location location, ::llvm::StringRef name, ::mlir::FunctionType type,
780 ::llvm::ArrayRef<::mlir::NamedAttribute> attrs = {});
781 static FuncDefOp create(::mlir::Location location, ::llvm::StringRef name, ::mlir::FunctionType type,
782 ::mlir::Operation::dialect_attr_range attrs);
783 static FuncDefOp create(::mlir::Location location, ::llvm::StringRef name, ::mlir::FunctionType type,
784 ::llvm::ArrayRef<::mlir::NamedAttribute> attrs,
785 ::llvm::ArrayRef<::mlir::DictionaryAttr> argAttrs);
786
794 FuncDefOp clone(::mlir::IRMapping &mapper);
796
801 void cloneInto(FuncDefOp dest, ::mlir::IRMapping &mapper);
802
805 return getOperation()->hasAttr(llzk::function::AllowConstraintAttr::name);
806 }
807
809 void setAllowConstraintAttr(bool newValue = true);
810
812 inline bool hasAllowWitnessAttr() {
813 return getOperation()->hasAttr(llzk::function::AllowWitnessAttr::name);
814 }
815
817 void setAllowWitnessAttr(bool newValue = true);
818
821 return getOperation()->hasAttr(llzk::function::AllowNonNativeFieldOpsAttr::name);
822 }
823
825 void setAllowNonNativeFieldOpsAttr(bool newValue = true);
826
828 bool hasArgPublicAttr(unsigned index);
829
834 ::mlir::Region *getCallableRegion() { return isExternal() ? nullptr : &getBody(); }
835
838 ::llvm::ArrayRef<::mlir::Type> getArgumentTypes() { return getFunctionType().getInputs(); }
839
842 ::llvm::ArrayRef<::mlir::Type> getResultTypes() { return getFunctionType().getResults(); }
843
845 bool isDeclaration() { return isExternal(); }
846
849 ::mlir::SymbolRefAttr getFullyQualifiedName(bool requireParent = true);
850
853 inline bool nameIsCompute() { return FUNC_NAME_COMPUTE == getSymName(); }
854
857 inline bool nameIsConstrain() { return FUNC_NAME_CONSTRAIN == getSymName(); }
858
861 inline bool nameIsProduct() { return FUNC_NAME_PRODUCT == getSymName(); }
862
864 inline bool isInStruct() { return ::llzk::component::isInStruct(*this); }
865
867 inline bool isStructCompute() { return isInStruct() && nameIsCompute(); }
868
870 inline bool isStructConstrain() { return isInStruct() && nameIsConstrain(); }
871
873 inline bool isStructProduct() { return isInStruct() && nameIsProduct(); }
874
877 ::mlir::Value getSelfValueFromCompute();
878
881 ::mlir::Value getSelfValueFromConstrain();
882
885};
886} // namespace function
887} // namespace llzk
888MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::function::FuncDefOp)
889
890namespace llzk {
891namespace function {
892
893//===----------------------------------------------------------------------===//
894// ::llzk::function::ReturnOp declarations
895//===----------------------------------------------------------------------===//
896
897namespace detail {
899public:
900protected:
901 ::mlir::DictionaryAttr odsAttrs;
902 ::std::optional<::mlir::OperationName> odsOpName;
903 ::mlir::RegionRange odsRegions;
904public:
905 ReturnOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
906 odsOpName.emplace("function.return", odsAttrs.getContext());
907 }
908
909 ReturnOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
910
911 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize);
912 ::mlir::DictionaryAttr getAttributes() {
913 return odsAttrs;
914 }
915
916};
917} // namespace detail
918template <typename RangeT>
920 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
922public:
923 ReturnOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
924
925 ReturnOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : ReturnOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
926
927 ReturnOpGenericAdaptor(RangeT values, const ReturnOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
928
929 template <typename LateInst = ReturnOp, typename = std::enable_if_t<std::is_same_v<LateInst, ReturnOp>>>
930 ReturnOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
931
932 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
933 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
934 }
935
936 RangeT getODSOperands(unsigned index) {
937 auto valueRange = getODSOperandIndexAndLength(index);
938 return {std::next(odsOperands.begin(), valueRange.first),
939 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
940 }
941
942 RangeT getOperands() {
943 return getODSOperands(0);
944 }
945
946private:
947 RangeT odsOperands;
948};
949class ReturnOpAdaptor : public ReturnOpGenericAdaptor<::mlir::ValueRange> {
950public:
953
954 ::llvm::LogicalResult verify(::mlir::Location loc);
955};
956class ReturnOp : public ::mlir::Op<ReturnOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::ZeroResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::VariadicOperands, ::mlir::OpTrait::HasParent<::llzk::function::FuncDefOp>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait, ::mlir::OpTrait::MemRefsNormalizable, ::mlir::RegionBranchTerminatorOpInterface::Trait, ::mlir::OpTrait::ReturnLike, ::mlir::OpTrait::IsTerminator> {
957public:
958 using Op::Op;
959 using Op::print;
961 template <typename RangeT>
964 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
965 return {};
966 }
967
968 static constexpr ::llvm::StringLiteral getOperationName() {
969 return ::llvm::StringLiteral("function.return");
970 }
971
972 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index);
973 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
974 auto valueRange = getODSOperandIndexAndLength(index);
975 return {std::next(getOperation()->operand_begin(), valueRange.first),
976 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
977 }
978
979 ::mlir::Operation::operand_range getOperands() {
980 return getODSOperands(0);
981 }
982
983 ::mlir::MutableOperandRange getOperandsMutable();
984 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
985 return {index, 1};
986 }
987
988 ::mlir::Operation::result_range getODSResults(unsigned index) {
989 auto valueRange = getODSResultIndexAndLength(index);
990 return {std::next(getOperation()->result_begin(), valueRange.first),
991 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
992 }
993
994 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState);
995 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::ValueRange operands);
996 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
997 ::llvm::LogicalResult verifyInvariantsImpl();
998 ::llvm::LogicalResult verifyInvariants();
999 ::llvm::LogicalResult verify();
1000 ::mlir::MutableOperandRange getMutableSuccessorOperands(::mlir::RegionBranchPoint point);
1001 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
1002 void print(::mlir::OpAsmPrinter &_odsPrinter);
1003 void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects);
1004public:
1005};
1006} // namespace function
1007} // namespace llzk
1008MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::function::ReturnOp)
1009
1010
1011#endif // GET_OP_CLASSES
1012
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:192
CallOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:150
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:161
CallOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:159
::llvm::SmallVector< RangeT > getMapOperands()
Definition Ops.h.inc:175
CallOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs)
Definition Ops.h.inc:154
CallOpGenericAdaptor(RangeT values, const CallOpGenericAdaptorBase &base)
Definition Ops.h.inc:156
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:165
CallOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:150
CallOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:152
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::SymbolRefAttr callee, ::mlir::ValueRange argOperands={}, ::llvm::ArrayRef<::mlir::Attribute > templateParams={})
bool calleeContainsWitnessGen()
Return true iff the callee function can contain witness generation code (this does not check if the c...
Definition Ops.h.inc:389
void setNumDimsPerMap(::llvm::ArrayRef< int32_t > attrValue)
Definition Ops.cpp.inc:490
bool calleeIsStructConstrain()
Return true iff the callee function name is FUNC_NAME_CONSTRAIN within a StructDefOp.
Definition Ops.cpp:1038
::mlir::StringAttr getTemplateParamsAttrName(::mlir::OperationName name)
Definition Ops.h.inc:243
::mlir::StringAttr getOperandSegmentSizesAttrName()
Definition Ops.h.inc:247
::mlir::CallInterfaceCallable getCallableForCallee()
Return the callee of this operation.
Definition Ops.cpp:1072
::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...
::llzk::component::StructType getSingleResultTypeOfCompute()
Assuming the callee is FUNC_NAME_COMPUTE, return the single StructType result.
Definition Ops.cpp:1061
::mlir::SymbolRefAttr getCalleeAttr()
Definition Ops.h.inc:292
::llvm::LogicalResult verifySymbolUses(::mlir::SymbolTableCollection &symbolTable)
Definition Ops.cpp:960
static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs)
Definition Ops.cpp.inc:432
::mlir::Operation * resolveCallableInTable(::mlir::SymbolTableCollection *symbolTable)
Required by CallOpInterface.
Definition Ops.cpp:1088
::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:443
static llvm::hash_code computePropertiesHash(const Properties &prop)
Definition Ops.cpp.inc:374
bool calleeIsStructCompute()
Return true iff the callee function name is FUNC_NAME_COMPUTE within a StructDefOp.
Definition Ops.cpp:1032
::mlir::StringAttr getNumDimsPerMapAttrName(::mlir::OperationName name)
Definition Ops.h.inc:235
bool calleeIsConstrain()
Return true iff the callee function name is FUNC_NAME_CONSTRAIN (this does not check if the callee fu...
Definition Ops.h.inc:396
static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties)
Definition Ops.cpp.inc:526
::mlir::SymbolRefAttr getCallee()
Definition Ops.cpp.inc:470
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.cpp.inc:235
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:208
::mlir::Operation * resolveCallable()
Required by CallOpInterface.
Definition Ops.cpp:1098
static std::optional< mlir::Attribute > getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name)
Definition Ops.cpp.inc:386
void setMapOpGroupSizesAttr(::mlir::DenseI32ArrayAttr attr)
Definition Ops.h.inc:325
::llvm::LogicalResult setPropertiesFromParsedAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:659
void writeProperties(::mlir::DialectBytecodeWriter &writer)
Definition Ops.cpp:462
void setMapOpGroupSizes(::llvm::ArrayRef< int32_t > attrValue)
Definition Ops.cpp.inc:494
::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:253
::mlir::StringAttr getTemplateParamsAttrName()
Definition Ops.h.inc:239
static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value)
Definition Ops.cpp.inc:402
::mlir::FunctionType getTypeSignature()
Return the FunctionType inferred from the arg operands and result types of this CallOp.
Definition Ops.cpp:1000
bool calleeIsCompute()
Return true iff the callee function name is FUNC_NAME_COMPUTE (this does not check if the callee func...
Definition Ops.h.inc:383
::mlir::StringAttr getCalleeAttrName(::mlir::OperationName name)
Definition Ops.h.inc:219
::llvm::ArrayRef< int32_t > getMapOpGroupSizes()
Definition Ops.cpp.inc:485
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.cpp.inc:214
::mlir::MutableOperandRange getArgOperandsMutable()
Definition Ops.cpp.inc:223
void setTemplateParamsAttr(::mlir::ArrayAttr attr)
Definition Ops.h.inc:316
::llvm::ArrayRef< int32_t > getNumDimsPerMap()
Definition Ops.cpp.inc:480
::mlir::Operation::operand_range getArgOperands()
Definition Ops.h.inc:266
CallOpAdaptor Adaptor
Definition Ops.h.inc:205
::mlir::Value getSelfValueFromConstrain()
Return the "self" value (i.e.
Definition Ops.cpp:1049
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:580
::mlir::StringAttr getMapOpGroupSizesAttrName()
Definition Ops.h.inc:223
::mlir::ArrayAttr getTemplateParamsAttr()
Definition Ops.h.inc:297
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::SymbolRefAttr callee, ::llvm::ArrayRef<::mlir::ValueRange > mapOperands, ::mlir::DenseI32ArrayAttr numDimsPerMap, ::mlir::ValueRange argOperands={}, ::llvm::ArrayRef<::mlir::Attribute > templateParams={})
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:584
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:687
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:255
::mlir::OperandRangeRange getMapOperands()
Definition Ops.h.inc:270
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:1079
::llzk::component::StructType getSingleResultTypeOfWitnessGen()
Assuming the callee contains witness generation code, return the single StructType result.
Definition Ops.cpp:1066
FoldAdaptor::Properties Properties
Definition Ops.h.inc:209
void setCalleeAttr(::mlir::SymbolRefAttr attr)
Definition Ops.h.inc:312
::mlir::DenseI32ArrayAttr getMapOpGroupSizesAttr()
Definition Ops.h.inc:307
::mlir::StringAttr getOperandSegmentSizesAttrName(::mlir::OperationName name)
Definition Ops.h.inc:251
::mlir::Attribute removeTemplateParamsAttr()
Definition Ops.h.inc:330
CallOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:207
::std::optional< ::mlir::ArrayAttr > getTemplateParams()
Definition Ops.cpp.inc:475
::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state)
Definition Ops.cpp:423
void setNumDimsPerMapAttr(::mlir::DenseI32ArrayAttr attr)
Definition Ops.h.inc:320
::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:1004
::mlir::StringAttr getNumDimsPerMapAttrName()
Definition Ops.h.inc:231
::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop)
Definition Ops.cpp.inc:329
::mlir::MutableOperandRangeRange getMapOperandsMutable()
Definition Ops.cpp.inc:229
::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:568
::mlir::StringAttr getMapOpGroupSizesAttrName(::mlir::OperationName name)
Definition Ops.h.inc:227
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:532
::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::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:277
::mlir::StringAttr getCalleeAttrName()
Definition Ops.h.inc:215
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:210
::mlir::Value getSelfValueFromCompute()
Return the "self" value (i.e.
Definition Ops.cpp:1044
void setCalleeFromCallable(::mlir::CallInterfaceCallable callee)
Set the callee for this operation.
Definition Ops.cpp:1075
::mlir::FailureOr<::llzk::SymbolLookupResult<::llzk::function::FuncDefOp > > getCalleeTarget(::mlir::SymbolTableCollection &tables)
Resolve and return the target FuncDefOp for this CallOp.
Definition Ops.cpp:1054
::mlir::DenseI32ArrayAttr getNumDimsPerMapAttr()
Definition Ops.h.inc:302
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:260
FuncDefOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:585
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:747
FuncDefOpGenericAdaptor(RangeT values, const FuncDefOpGenericAdaptorBase &base)
Definition Ops.h.inc:591
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:596
FuncDefOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs=nullptr)
Definition Ops.h.inc:589
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:600
FuncDefOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:585
FuncDefOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:594
FuncDefOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:587
::mlir::StringAttr getFunctionTypeAttrName(::mlir::OperationName name)
Definition Ops.h.inc:646
FuncDefOp clone(::mlir::IRMapping &mapper)
Create a deep copy of this function and all of its blocks, remapping any operands that use values out...
::mlir::StringAttr getResAttrsAttrName(::mlir::OperationName name)
Definition Ops.h.inc:654
static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value)
Definition Ops.cpp.inc:894
void setAllowWitnessAttr(bool newValue=true)
Add (resp. remove) the allow_witness attribute to (resp. from) the function def.
Definition Ops.cpp:218
static llvm::hash_code computePropertiesHash(const Properties &prop)
Definition Ops.cpp.inc:871
FoldAdaptor::Properties Properties
Definition Ops.h.inc:628
::llvm::LogicalResult verifySymbolUses(::mlir::SymbolTableCollection &symbolTable)
Definition Ops.cpp:337
::mlir::Value getSelfValueFromCompute()
Return the "self" value (i.e.
Definition Ops.cpp:363
::mlir::FunctionType getFunctionType()
Definition Ops.cpp.inc:984
void setArgAttrsAttr(::mlir::ArrayAttr attr)
Definition Ops.h.inc:733
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::llvm::StringRef name, ::mlir::FunctionType type, ::llvm::ArrayRef<::mlir::NamedAttribute > attrs={}, ::llvm::ArrayRef<::mlir::DictionaryAttr > argAttrs={})
::mlir::StringAttr getSymNameAttrName()
Definition Ops.h.inc:658
void setAllowNonNativeFieldOpsAttr(bool newValue=true)
Add (resp. remove) the allow_non_native_field_ops attribute to (resp. from) the function def.
Definition Ops.cpp:226
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:684
::llvm::ArrayRef<::mlir::Type > getArgumentTypes()
Required by FunctionOpInterface.
Definition Ops.h.inc:838
void setSymNameAttr(::mlir::StringAttr attr)
Definition Ops.h.inc:723
::mlir::StringAttr getFunctionTypeAttrName()
Definition Ops.h.inc:642
bool hasAllowNonNativeFieldOpsAttr()
Return true iff the function def has the allow_non_native_field_ops attribute.
Definition Ops.h.inc:820
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:1108
::mlir::Value getSelfValueFromConstrain()
Return the "self" value (i.e.
Definition Ops.cpp:382
FuncDefOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:626
static FuncDefOp create(::mlir::Location location, ::llvm::StringRef name, ::mlir::FunctionType type, ::llvm::ArrayRef<::mlir::NamedAttribute > attrs, ::llvm::ArrayRef<::mlir::DictionaryAttr > argAttrs)
static std::optional< mlir::Attribute > getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name)
Definition Ops.cpp.inc:879
void print(::mlir::OpAsmPrinter &p)
Definition Ops.cpp:129
::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state)
Definition Ops.cpp.inc:953
bool nameIsCompute()
Return true iff the function name is FUNC_NAME_COMPUTE (if needed, a check that this FuncDefOp is loc...
Definition Ops.h.inc:853
bool hasAllowWitnessAttr()
Return true iff the function def has the allow_witness attribute.
Definition Ops.h.inc:812
FuncDefOpAdaptor Adaptor
Definition Ops.h.inc:624
void setResAttrsAttr(::mlir::ArrayAttr attr)
Definition Ops.h.inc:737
::llzk::component::StructType getSingleResultTypeOfCompute()
Assuming the name is FUNC_NAME_COMPUTE, return the single StructType result.
Definition Ops.cpp:387
::mlir::Attribute removeResAttrsAttr()
Definition Ops.h.inc:747
::mlir::StringAttr getResAttrsAttrName()
Definition Ops.h.inc:650
::std::optional< ::mlir::ArrayAttr > getResAttrs()
Definition Ops.cpp.inc:994
::mlir::StringAttr getArgAttrsAttrName(::mlir::OperationName name)
Definition Ops.h.inc:638
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp:118
void cloneInto(FuncDefOp dest, ::mlir::IRMapping &mapper)
Clone the internal blocks and attributes from this function into dest.
Definition Ops.cpp:138
::std::optional< ::mlir::ArrayAttr > getArgAttrs()
Definition Ops.cpp.inc:989
bool nameIsProduct()
Return true iff the function name is FUNC_NAME_PRODUCT (if needed, a check that this FuncDefOp is loc...
Definition Ops.h.inc:861
::mlir::ArrayAttr getArgAttrsAttr()
Definition Ops.h.inc:713
::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop)
Definition Ops.cpp.inc:834
static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs)
Definition Ops.cpp.inc:916
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:674
void writeProperties(::mlir::DialectBytecodeWriter &writer)
Definition Ops.cpp.inc:969
::llvm::StringRef getSymName()
Definition Ops.cpp.inc:979
bool nameIsConstrain()
Return true iff the function name is FUNC_NAME_CONSTRAIN (if needed, a check that this FuncDefOp is l...
Definition Ops.h.inc:857
static FuncDefOp create(::mlir::Location location, ::llvm::StringRef name, ::mlir::FunctionType type, ::mlir::Operation::dialect_attr_range attrs)
bool isStructCompute()
Return true iff the function is within a StructDefOp and named FUNC_NAME_COMPUTE.
Definition Ops.h.inc:867
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:670
bool isInStruct()
Return true iff the function is within a StructDefOp.
Definition Ops.h.inc:864
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:680
::mlir::StringAttr getSymNameAttrName(::mlir::OperationName name)
Definition Ops.h.inc:662
void setFunctionType(::mlir::FunctionType attrValue)
Definition Ops.cpp.inc:1003
::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:769
bool isDeclaration()
Required by SymbolOpInterface.
Definition Ops.h.inc:845
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:629
::llvm::ArrayRef<::mlir::Type > getResultTypes()
Required by FunctionOpInterface.
Definition Ops.h.inc:842
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:666
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:627
bool isStructConstrain()
Return true iff the function is within a StructDefOp and named FUNC_NAME_CONSTRAIN.
Definition Ops.h.inc:870
void setAllowConstraintAttr(bool newValue=true)
Add (resp. remove) the allow_constraint attribute to (resp. from) the function def.
Definition Ops.cpp:210
void setSymName(::llvm::StringRef attrValue)
Definition Ops.cpp.inc:999
static FuncDefOp create(::mlir::Location location, ::llvm::StringRef name, ::mlir::FunctionType type, ::llvm::ArrayRef<::mlir::NamedAttribute > attrs={})
::mlir::SymbolRefAttr getFullyQualifiedName(bool requireParent=true)
Return the full name for this function from the root module, including all surrounding symbol table n...
Definition Ops.cpp:353
::mlir::TypeAttr getFunctionTypeAttr()
Definition Ops.h.inc:708
bool hasArgPublicAttr(unsigned index)
Return true iff the argument at the given index has pub attribute.
Definition Ops.cpp:234
::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:926
::mlir::Region * getCallableRegion()
Required by FunctionOpInterface.
Definition Ops.h.inc:834
::llvm::LogicalResult verify()
Definition Ops.cpp:244
::mlir::Region & getBody()
Definition Ops.h.inc:690
::mlir::StringAttr getSymNameAttr()
Definition Ops.h.inc:703
::mlir::ArrayAttr getResAttrsAttr()
Definition Ops.h.inc:718
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:1079
bool isStructProduct()
Return true iff the function is within a StructDefOp and named FUNC_NAME_PRODUCT.
Definition Ops.h.inc:873
bool hasAllowConstraintAttr()
Return true iff the function def has the allow_constraint attribute.
Definition Ops.h.inc:804
void setFunctionTypeAttr(::mlir::TypeAttr attr)
Definition Ops.h.inc:728
::mlir::StringAttr getArgAttrsAttrName()
Definition Ops.h.inc:634
::mlir::Attribute removeArgAttrsAttr()
Definition Ops.h.inc:741
ReturnOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:923
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:1147
ReturnOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:923
ReturnOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:925
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:936
ReturnOpGenericAdaptor(RangeT values, const ReturnOpGenericAdaptorBase &base)
Definition Ops.h.inc:927
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:932
ReturnOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:930
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:1236
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:988
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.cpp.inc:1151
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:1191
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState)
Definition Ops.cpp.inc:1175
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:963
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:973
::mlir::MutableOperandRange getMutableSuccessorOperands(::mlir::RegionBranchPoint point)
Definition Ops.cpp.inc:1251
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:984
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:964
void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect > > &effects)
Definition Ops.cpp.inc:1248
::llvm::LogicalResult verify()
Definition Ops.cpp:396
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:968
ReturnOpAdaptor Adaptor
Definition Ops.h.inc:960
::mlir::MutableOperandRange getOperandsMutable()
Definition Ops.cpp.inc:1169
ReturnOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:962
::mlir::Operation::operand_range getOperands()
Definition Ops.h.inc:979
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:1204
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:1210
CallOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:108
::mlir::DenseI32ArrayAttr getMapOpGroupSizesAttr()
Definition Ops.h.inc:137
::llvm::ArrayRef< int32_t > getMapOpGroupSizes()
Definition Ops.cpp.inc:184
::std::optional< ::mlir::ArrayAttr > getTemplateParams()
Definition Ops.cpp.inc:169
::mlir::DenseI32ArrayAttr getNumDimsPerMapAttr()
Definition Ops.cpp.inc:174
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:104
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.cpp.inc:155
::llvm::ArrayRef< int32_t > getNumDimsPerMap()
Definition Ops.cpp.inc:179
::std::optional< ::mlir::ArrayAttr > getResAttrs()
Definition Ops.cpp.inc:739
::std::optional< ::mlir::ArrayAttr > getArgAttrs()
Definition Ops.cpp.inc:734
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.h.inc:534
FuncDefOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:528
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:524
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:902
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.cpp.inc:1126
ReturnOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:905
constexpr char FUNC_NAME_COMPUTE[]
Symbol name for the witness generation (and resp.
Definition Constants.h:16
constexpr char FUNC_NAME_CONSTRAIN[]
Definition Constants.h:17
mlir::DenseMap< std::pair< mlir::SymbolRefAttr, Side >, mlir::Attribute > UnificationMap
Optional result from type unifications.
Definition TypeHelper.h:186
constexpr char FUNC_NAME_PRODUCT[]
Definition Constants.h:18
void setTemplateParams(const ::mlir::ArrayAttr &propValue)
Definition Ops.h.inc:76
void setOperandSegmentSizes(::llvm::ArrayRef< int32_t > propValue)
Definition Ops.h.inc:85
void setNumDimsPerMap(const ::mlir::DenseI32ArrayAttr &propValue)
Definition Ops.h.inc:66
void setMapOpGroupSizes(const ::mlir::DenseI32ArrayAttr &propValue)
Definition Ops.h.inc:56
void setCallee(const ::mlir::SymbolRefAttr &propValue)
Definition Ops.h.inc:46
::llvm::ArrayRef< int32_t > getOperandSegmentSizes() const
Definition Ops.h.inc:81
void setResAttrs(const ::mlir::ArrayAttr &propValue)
Definition Ops.h.inc:497
void setSymName(const ::mlir::StringAttr &propValue)
Definition Ops.h.inc:507
void setArgAttrs(const ::mlir::ArrayAttr &propValue)
Definition Ops.h.inc:477
void setFunctionType(const ::mlir::TypeAttr &propValue)
Definition Ops.h.inc:487