LLZK 2.0.0
An open-source IR for Zero Knowledge (ZK) circuits
Loading...
Searching...
No Matches
Ops.cpp.inc
Go to the documentation of this file.
1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* Op Definitions *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* From: Ops.td *|
7|* *|
8\*===----------------------------------------------------------------------===*/
9
10#ifdef GET_OP_LIST
11#undef GET_OP_LIST
12
15#endif // GET_OP_LIST
16
17#ifdef GET_OP_CLASSES
18#undef GET_OP_CLASSES
19
20
21//===----------------------------------------------------------------------===//
22// Local Utility Method Definitions
23//===----------------------------------------------------------------------===//
24
25namespace llzk {
26namespace ram {
27
28static ::llvm::LogicalResult __mlir_ods_local_type_constraint_Ops1(
29 ::mlir::Operation *op, ::mlir::Type type, ::llvm::StringRef valueKind,
30 unsigned valueIndex) {
31 if (!((::llvm::isa<::mlir::IndexType>(type)))) {
32 return op->emitOpError(valueKind) << " #" << valueIndex
33 << " must be index, but got " << type;
34 }
35 return ::mlir::success();
36}
37
38static ::llvm::LogicalResult __mlir_ods_local_type_constraint_Ops2(
39 ::mlir::Operation *op, ::mlir::Type type, ::llvm::StringRef valueKind,
40 unsigned valueIndex) {
41 if (!((::llvm::isa<::llzk::felt::FeltType>(type)))) {
42 return op->emitOpError(valueKind) << " #" << valueIndex
43 << " must be finite field element, but got " << type;
44 }
45 return ::mlir::success();
46}
47} // namespace ram
48} // namespace llzk
49namespace llzk {
50namespace ram {
51
52//===----------------------------------------------------------------------===//
53// ::llzk::ram::LoadOp definitions
54//===----------------------------------------------------------------------===//
55
56namespace detail {
57} // namespace detail
59
60::llvm::LogicalResult LoadOpAdaptor::verify(::mlir::Location loc) {
61 return ::mlir::success();
62}
63
64void LoadOp::build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type val, ::mlir::Value addr) {
65 odsState.addOperands(addr);
66 odsState.addTypes(val);
67}
68
69void LoadOp::build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value addr) {
70 odsState.addOperands(addr);
71 assert(resultTypes.size() == 1u && "mismatched number of results");
72 odsState.addTypes(resultTypes);
73}
74
75void LoadOp::build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes) {
76 assert(operands.size() == 1u && "mismatched number of parameters");
77 odsState.addOperands(operands);
78 odsState.addAttributes(attributes);
79 assert(resultTypes.size() == 1u && "mismatched number of return types");
80 odsState.addTypes(resultTypes);
81}
82
83::llvm::LogicalResult LoadOp::verifyInvariantsImpl() {
84 {
85 unsigned index = 0; (void)index;
86 auto valueGroup0 = getODSOperands(0);
87
88 for (auto v : valueGroup0) {
89 if (::mlir::failed(__mlir_ods_local_type_constraint_Ops1(*this, v.getType(), "operand", index++)))
90 return ::mlir::failure();
91 }
92 }
93 {
94 unsigned index = 0; (void)index;
95 auto valueGroup0 = getODSResults(0);
96
97 for (auto v : valueGroup0) {
98 if (::mlir::failed(__mlir_ods_local_type_constraint_Ops2(*this, v.getType(), "result", index++)))
99 return ::mlir::failure();
100 }
101 }
102 return ::mlir::success();
103}
104
105::llvm::LogicalResult LoadOp::verifyInvariants() {
106 return verifyInvariantsImpl();
107}
108
109::mlir::ParseResult LoadOp::parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result) {
110 ::mlir::OpAsmParser::UnresolvedOperand addrRawOperand{};
111 ::llvm::ArrayRef<::mlir::OpAsmParser::UnresolvedOperand> addrOperands(&addrRawOperand, 1); ::llvm::SMLoc addrOperandsLoc;
112 (void)addrOperandsLoc;
113 ::mlir::Type valRawType{};
114 ::llvm::ArrayRef<::mlir::Type> valTypes(&valRawType, 1);
115
116 addrOperandsLoc = parser.getCurrentLocation();
117 if (parser.parseOperand(addrRawOperand))
118 return ::mlir::failure();
119 if (parser.parseColon())
120 return ::mlir::failure();
121
122 {
124 if (parser.parseCustomTypeWithFallback(type))
125 return ::mlir::failure();
126 valRawType = type;
127 }
128 {
129 auto loc = parser.getCurrentLocation();(void)loc;
130 if (parser.parseOptionalAttrDict(result.attributes))
131 return ::mlir::failure();
132 }
133 ::mlir::Type odsBuildableType0 = parser.getBuilder().getIndexType();
134 result.addTypes(valTypes);
135 if (parser.resolveOperands(addrOperands, odsBuildableType0, addrOperandsLoc, result.operands))
136 return ::mlir::failure();
137 return ::mlir::success();
138}
139
140void LoadOp::print(::mlir::OpAsmPrinter &_odsPrinter) {
141 _odsPrinter << ' ';
142 _odsPrinter << getAddr();
143 _odsPrinter << ' ' << ":";
144 _odsPrinter << ' ';
145 {
146 auto type = getVal().getType();
147 if (auto validType = ::llvm::dyn_cast<::llzk::felt::FeltType>(type))
148 _odsPrinter.printStrippedAttrOrType(validType);
149 else
150 _odsPrinter << type;
151 }
152 ::llvm::SmallVector<::llvm::StringRef, 2> elidedAttrs;
153 _odsPrinter.printOptionalAttrDict((*this)->getAttrs(), elidedAttrs);
154}
155
156void LoadOp::getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects) {
157 effects.emplace_back(::mlir::MemoryEffects::Read::get(), 0, false, ::mlir::SideEffects::DefaultResource::get());
158}
159
160} // namespace ram
161} // namespace llzk
162MLIR_DEFINE_EXPLICIT_TYPE_ID(::llzk::ram::LoadOp)
163
164namespace llzk {
165namespace ram {
166
167//===----------------------------------------------------------------------===//
168// ::llzk::ram::StoreOp definitions
169//===----------------------------------------------------------------------===//
170
171namespace detail {
172} // namespace detail
174
175::llvm::LogicalResult StoreOpAdaptor::verify(::mlir::Location loc) {
176 return ::mlir::success();
177}
178
179void StoreOp::build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value addr, ::mlir::Value val) {
180 odsState.addOperands(addr);
181 odsState.addOperands(val);
182}
183
184void StoreOp::build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value addr, ::mlir::Value val) {
185 odsState.addOperands(addr);
186 odsState.addOperands(val);
187 assert(resultTypes.size() == 0u && "mismatched number of results");
188 odsState.addTypes(resultTypes);
189}
190
191void StoreOp::build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes) {
192 assert(operands.size() == 2u && "mismatched number of parameters");
193 odsState.addOperands(operands);
194 odsState.addAttributes(attributes);
195 assert(resultTypes.size() == 0u && "mismatched number of return types");
196 odsState.addTypes(resultTypes);
197}
198
199::llvm::LogicalResult StoreOp::verifyInvariantsImpl() {
200 {
201 unsigned index = 0; (void)index;
202 auto valueGroup0 = getODSOperands(0);
203
204 for (auto v : valueGroup0) {
205 if (::mlir::failed(__mlir_ods_local_type_constraint_Ops1(*this, v.getType(), "operand", index++)))
206 return ::mlir::failure();
207 }
208 auto valueGroup1 = getODSOperands(1);
209
210 for (auto v : valueGroup1) {
211 if (::mlir::failed(__mlir_ods_local_type_constraint_Ops2(*this, v.getType(), "operand", index++)))
212 return ::mlir::failure();
213 }
214 }
215 return ::mlir::success();
216}
217
218::llvm::LogicalResult StoreOp::verifyInvariants() {
219 return verifyInvariantsImpl();
220}
221
222::mlir::ParseResult StoreOp::parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result) {
223 ::mlir::OpAsmParser::UnresolvedOperand addrRawOperand{};
224 ::llvm::ArrayRef<::mlir::OpAsmParser::UnresolvedOperand> addrOperands(&addrRawOperand, 1); ::llvm::SMLoc addrOperandsLoc;
225 (void)addrOperandsLoc;
226 ::mlir::OpAsmParser::UnresolvedOperand valRawOperand{};
227 ::llvm::ArrayRef<::mlir::OpAsmParser::UnresolvedOperand> valOperands(&valRawOperand, 1); ::llvm::SMLoc valOperandsLoc;
228 (void)valOperandsLoc;
229 ::mlir::Type valRawType{};
230 ::llvm::ArrayRef<::mlir::Type> valTypes(&valRawType, 1);
231
232 addrOperandsLoc = parser.getCurrentLocation();
233 if (parser.parseOperand(addrRawOperand))
234 return ::mlir::failure();
235 if (parser.parseComma())
236 return ::mlir::failure();
237
238 valOperandsLoc = parser.getCurrentLocation();
239 if (parser.parseOperand(valRawOperand))
240 return ::mlir::failure();
241 if (parser.parseColon())
242 return ::mlir::failure();
243
244 {
246 if (parser.parseCustomTypeWithFallback(type))
247 return ::mlir::failure();
248 valRawType = type;
249 }
250 {
251 auto loc = parser.getCurrentLocation();(void)loc;
252 if (parser.parseOptionalAttrDict(result.attributes))
253 return ::mlir::failure();
254 }
255 ::mlir::Type odsBuildableType0 = parser.getBuilder().getIndexType();
256 if (parser.resolveOperands(addrOperands, odsBuildableType0, addrOperandsLoc, result.operands))
257 return ::mlir::failure();
258 if (parser.resolveOperands(valOperands, valTypes, valOperandsLoc, result.operands))
259 return ::mlir::failure();
260 return ::mlir::success();
261}
262
263void StoreOp::print(::mlir::OpAsmPrinter &_odsPrinter) {
264 _odsPrinter << ' ';
265 _odsPrinter << getAddr();
266 _odsPrinter << ",";
267 _odsPrinter << ' ';
268 _odsPrinter << getVal();
269 _odsPrinter << ' ' << ":";
270 _odsPrinter << ' ';
271 {
272 auto type = getVal().getType();
273 if (auto validType = ::llvm::dyn_cast<::llzk::felt::FeltType>(type))
274 _odsPrinter.printStrippedAttrOrType(validType);
275 else
276 _odsPrinter << type;
277 }
278 ::llvm::SmallVector<::llvm::StringRef, 2> elidedAttrs;
279 _odsPrinter.printOptionalAttrDict((*this)->getAttrs(), elidedAttrs);
280}
281
282void StoreOp::getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects) {
283 effects.emplace_back(::mlir::MemoryEffects::Write::get(), 0, false, ::mlir::SideEffects::DefaultResource::get());
284}
285
286} // namespace ram
287} // namespace llzk
288MLIR_DEFINE_EXPLICIT_TYPE_ID(::llzk::ram::StoreOp)
289
290
291#endif // GET_OP_CLASSES
292
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:60
LoadOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:59
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:105
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:83
void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect > > &effects)
Definition Ops.cpp.inc:156
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:140
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:135
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:109
::mlir::TypedValue<::llzk::felt::FeltType > getVal()
Definition Ops.h.inc:141
::mlir::TypedValue<::mlir::IndexType > getAddr()
Definition Ops.h.inc:122
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:116
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type val, ::mlir::Value addr)
Definition Ops.cpp.inc:64
StoreOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:195
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:175
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value addr, ::mlir::Value val)
Definition Ops.cpp.inc:179
::mlir::TypedValue<::llzk::felt::FeltType > getVal()
Definition Ops.h.inc:266
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:256
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:263
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:222
::mlir::TypedValue<::mlir::IndexType > getAddr()
Definition Ops.h.inc:262
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:218
void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect > > &effects)
Definition Ops.cpp.inc:282
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:199