LLZK 0.1.0
Veridise's ZK Language IR
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 array {
12class ArrayLengthOp;
13} // namespace array
14} // namespace llzk
15namespace llzk {
16namespace array {
17class CreateArrayOp;
18} // namespace array
19} // namespace llzk
20namespace llzk {
21namespace array {
22class ExtractArrayOp;
23} // namespace array
24} // namespace llzk
25namespace llzk {
26namespace array {
27class InsertArrayOp;
28} // namespace array
29} // namespace llzk
30namespace llzk {
31namespace array {
32class ReadArrayOp;
33} // namespace array
34} // namespace llzk
35namespace llzk {
36namespace array {
37class WriteArrayOp;
38} // namespace array
39} // namespace llzk
40#ifdef GET_OP_CLASSES
41#undef GET_OP_CLASSES
42
43namespace llzk {
44namespace array {
45
46//===----------------------------------------------------------------------===//
47// ::llzk::array::ArrayLengthOp declarations
48//===----------------------------------------------------------------------===//
49
50namespace detail {
52public:
53protected:
54 ::mlir::DictionaryAttr odsAttrs;
55 ::std::optional<::mlir::OperationName> odsOpName;
56 ::mlir::RegionRange odsRegions;
57public:
58 ArrayLengthOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
59 odsOpName.emplace("array.len", odsAttrs.getContext());
60 }
61
62 ArrayLengthOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
63
64 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) {
65 return {index, 1};
66 }
67
68 ::mlir::DictionaryAttr getAttributes() {
69 return odsAttrs;
70 }
71
72};
73} // namespace detail
74template <typename RangeT>
76 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
78public:
79 ArrayLengthOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
80
81 ArrayLengthOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : ArrayLengthOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
82
83 ArrayLengthOpGenericAdaptor(RangeT values, const ArrayLengthOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
84
85 template <typename LateInst = ArrayLengthOp, typename = std::enable_if_t<std::is_same_v<LateInst, ArrayLengthOp>>>
86 ArrayLengthOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
87
88 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
89 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
90 }
91
92 RangeT getODSOperands(unsigned index) {
93 auto valueRange = getODSOperandIndexAndLength(index);
94 return {std::next(odsOperands.begin(), valueRange.first),
95 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
96 }
97
98 ValueT getArrRef() {
99 return (*getODSOperands(0).begin());
100 }
101
102 ValueT getDim() {
103 return (*getODSOperands(1).begin());
104 }
105
106 RangeT getOperands() {
107 return odsOperands;
108 }
109
110private:
111 RangeT odsOperands;
112};
113class ArrayLengthOpAdaptor : public ArrayLengthOpGenericAdaptor<::mlir::ValueRange> {
114public:
117
118 ::llvm::LogicalResult verify(::mlir::Location loc);
119};
120class ArrayLengthOp : public ::mlir::Op<ArrayLengthOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::OneResult, ::mlir::OpTrait::OneTypedResult<::mlir::IndexType>::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait, ::mlir::SymbolUserOpInterface::Trait, ::llzk::array::ArrayRefOpInterface::Trait, ::mlir::InferTypeOpInterface::Trait> {
121public:
122 using Op::Op;
123 using Op::print;
125 template <typename RangeT>
128 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
129 return {};
130 }
131
132 static constexpr ::llvm::StringLiteral getOperationName() {
133 return ::llvm::StringLiteral("array.len");
134 }
135
136 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
137 return {index, 1};
138 }
139
140 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
141 auto valueRange = getODSOperandIndexAndLength(index);
142 return {std::next(getOperation()->operand_begin(), valueRange.first),
143 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
144 }
145
146 ::mlir::TypedValue<::llzk::array::ArrayType> getArrRef() {
147 return ::llvm::cast<::mlir::TypedValue<::llzk::array::ArrayType>>(*getODSOperands(0).begin());
148 }
149
150 ::mlir::TypedValue<::mlir::IndexType> getDim() {
151 return ::llvm::cast<::mlir::TypedValue<::mlir::IndexType>>(*getODSOperands(1).begin());
152 }
153
154 ::mlir::OpOperand &getArrRefMutable() {
155 auto range = getODSOperandIndexAndLength(0);
156 return getOperation()->getOpOperand(range.first);
157 }
158
159 ::mlir::OpOperand &getDimMutable() {
160 auto range = getODSOperandIndexAndLength(1);
161 return getOperation()->getOpOperand(range.first);
162 }
163
164 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
165 return {index, 1};
166 }
167
168 ::mlir::Operation::result_range getODSResults(unsigned index) {
169 auto valueRange = getODSResultIndexAndLength(index);
170 return {std::next(getOperation()->result_begin(), valueRange.first),
171 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
172 }
173
174 ::mlir::TypedValue<::mlir::IndexType> getLength() {
175 return ::llvm::cast<::mlir::TypedValue<::mlir::IndexType>>(*getODSResults(0).begin());
176 }
177
178 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type length, ::mlir::Value arr_ref, ::mlir::Value dim);
179 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value arr_ref, ::mlir::Value dim);
180 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value arr_ref, ::mlir::Value dim);
181 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
182 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
183 ::llvm::LogicalResult verifyInvariantsImpl();
184 ::llvm::LogicalResult verifyInvariants();
185 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);
186 ::llvm::LogicalResult verifySymbolUses(::mlir::SymbolTableCollection &symbolTable);
187 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
188 void print(::mlir::OpAsmPrinter &_odsPrinter);
189 void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects);
190public:
192 inline ::llzk::array::ArrayType getArrRefType() {
193 return ::llvm::cast<ArrayRefOpInterface>(getOperation()).getArrRefType();
194 }
195};
196} // namespace array
197} // namespace llzk
198MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::array::ArrayLengthOp)
199
200namespace llzk {
201namespace array {
202
203//===----------------------------------------------------------------------===//
204// ::llzk::array::CreateArrayOp declarations
205//===----------------------------------------------------------------------===//
206
207namespace detail {
209public:
210 struct Properties {
211 using mapOpGroupSizesTy = ::mlir::DenseI32ArrayAttr;
213
215 auto &propStorage = this->mapOpGroupSizes;
216 return ::llvm::cast<::mlir::DenseI32ArrayAttr>(propStorage);
217 }
218 void setMapOpGroupSizes(const ::mlir::DenseI32ArrayAttr &propValue) {
219 this->mapOpGroupSizes = propValue;
220 }
221 using numDimsPerMapTy = ::mlir::DenseI32ArrayAttr;
223
225 auto &propStorage = this->numDimsPerMap;
226 return ::llvm::dyn_cast_or_null<::mlir::DenseI32ArrayAttr>(propStorage);
227 }
228 void setNumDimsPerMap(const ::mlir::DenseI32ArrayAttr &propValue) {
229 this->numDimsPerMap = propValue;
230 }
231 using operandSegmentSizesTy = std::array<int32_t, 2>;
233 ::llvm::ArrayRef<int32_t> getOperandSegmentSizes() const {
234 auto &propStorage = this->operandSegmentSizes;
235 return propStorage;
236 }
237 void setOperandSegmentSizes(::llvm::ArrayRef<int32_t> propValue) {
238 auto &propStorage = this->operandSegmentSizes;
239 ::llvm::copy(propValue, propStorage.begin());
240 }
241 bool operator==(const Properties &rhs) const {
242 return
243 rhs.mapOpGroupSizes == this->mapOpGroupSizes &&
244 rhs.numDimsPerMap == this->numDimsPerMap &&
245 rhs.operandSegmentSizes == this->operandSegmentSizes &&
246 true;
247 }
248 bool operator!=(const Properties &rhs) const {
249 return !(*this == rhs);
250 }
251 };
252protected:
253 ::mlir::DictionaryAttr odsAttrs;
254 ::std::optional<::mlir::OperationName> odsOpName;
256 ::mlir::RegionRange odsRegions;
257public:
258 CreateArrayOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs)
259 odsOpName.emplace("array.new", odsAttrs.getContext());
260 }
261
263
264 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize);
266 return properties;
267 }
268
269 ::mlir::DictionaryAttr getAttributes() {
270 return odsAttrs;
271 }
272
273 ::mlir::DenseI32ArrayAttr getNumDimsPerMapAttr();
274 ::llvm::ArrayRef<int32_t> getNumDimsPerMap();
275 ::mlir::DenseI32ArrayAttr getMapOpGroupSizesAttr() {
276 auto attr = ::llvm::cast<::mlir::DenseI32ArrayAttr>(getProperties().mapOpGroupSizes);
277 return attr;
278 }
279
280 ::llvm::ArrayRef<int32_t> getMapOpGroupSizes();
281};
282} // namespace detail
283template <typename RangeT>
285 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
287public:
288 CreateArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
289
290 CreateArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : CreateArrayOpGenericAdaptor(values, attrs, (properties ? *properties.as<Properties *>() : Properties{}), regions) {}
291
292 CreateArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs) : CreateArrayOpGenericAdaptor(values, attrs, Properties{}, {}) {}
293
294 CreateArrayOpGenericAdaptor(RangeT values, const CreateArrayOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
295
296 template <typename LateInst = CreateArrayOp, typename = std::enable_if_t<std::is_same_v<LateInst, CreateArrayOp>>>
297 CreateArrayOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
298
299 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
300 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
301 }
302
303 RangeT getODSOperands(unsigned index) {
304 auto valueRange = getODSOperandIndexAndLength(index);
305 return {std::next(odsOperands.begin(), valueRange.first),
306 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
307 }
308
309 RangeT getElements() {
310 return getODSOperands(0);
311 }
312
313 ::llvm::SmallVector<RangeT> getMapOperands() {
314 auto tblgenTmpOperands = getODSOperands(1);
315 auto sizes = getMapOpGroupSizes();
316
317 ::llvm::SmallVector<RangeT> tblgenTmpOperandGroups;
318 for (int i = 0, e = sizes.size(); i < e; ++i) {
319 tblgenTmpOperandGroups.push_back(tblgenTmpOperands.take_front(sizes[i]));
320 tblgenTmpOperands = tblgenTmpOperands.drop_front(sizes[i]);
321 }
322 return tblgenTmpOperandGroups;
323 }
324
325 RangeT getOperands() {
326 return odsOperands;
327 }
328
329private:
330 RangeT odsOperands;
331};
332class CreateArrayOpAdaptor : public CreateArrayOpGenericAdaptor<::mlir::ValueRange> {
333public:
336
337 ::llvm::LogicalResult verify(::mlir::Location loc);
338};
339class CreateArrayOp : public ::mlir::Op<CreateArrayOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::OneResult, ::mlir::OpTrait::OneTypedResult<::llzk::array::ArrayType>::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::VariadicOperands, ::mlir::OpTrait::AttrSizedOperandSegments, ::llzk::VerifySizesForMultiAffineOps<1>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait, ::mlir::SymbolUserOpInterface::Trait, ::mlir::OpAsmOpInterface::Trait, ::mlir::PromotableAllocationOpInterface::Trait, ::mlir::DestructurableAllocationOpInterface::Trait> {
340public:
341 using Op::Op;
342 using Op::print;
344 template <typename RangeT>
348 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
349 static ::llvm::StringRef attrNames[] = {::llvm::StringRef("mapOpGroupSizes"), ::llvm::StringRef("numDimsPerMap"), ::llvm::StringRef("operandSegmentSizes")};
350 return ::llvm::ArrayRef(attrNames);
351 }
352
353 ::mlir::StringAttr getMapOpGroupSizesAttrName() {
354 return getAttributeNameForIndex(0);
355 }
356
357 static ::mlir::StringAttr getMapOpGroupSizesAttrName(::mlir::OperationName name) {
358 return getAttributeNameForIndex(name, 0);
359 }
360
361 ::mlir::StringAttr getNumDimsPerMapAttrName() {
362 return getAttributeNameForIndex(1);
363 }
364
365 static ::mlir::StringAttr getNumDimsPerMapAttrName(::mlir::OperationName name) {
366 return getAttributeNameForIndex(name, 1);
367 }
368
369 ::mlir::StringAttr getOperandSegmentSizesAttrName() {
370 return (*this)->getName().getAttributeNames().back();
371 }
372
373 static ::mlir::StringAttr getOperandSegmentSizesAttrName(::mlir::OperationName name) {
374 return name.getAttributeNames().back();
375 }
376
377 static constexpr ::llvm::StringLiteral getOperationName() {
378 return ::llvm::StringLiteral("array.new");
379 }
380
381 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index);
382 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
383 auto valueRange = getODSOperandIndexAndLength(index);
384 return {std::next(getOperation()->operand_begin(), valueRange.first),
385 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
386 }
387
388 ::mlir::Operation::operand_range getElements() {
389 return getODSOperands(0);
390 }
391
392 ::mlir::OperandRangeRange getMapOperands() {
393 return getODSOperands(1).split(getMapOpGroupSizesAttr());
394 }
395
396 ::mlir::MutableOperandRange getElementsMutable();
397 ::mlir::MutableOperandRangeRange getMapOperandsMutable();
398 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
399 return {index, 1};
400 }
401
402 ::mlir::Operation::result_range getODSResults(unsigned index) {
403 auto valueRange = getODSResultIndexAndLength(index);
404 return {std::next(getOperation()->result_begin(), valueRange.first),
405 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
406 }
407
408 ::mlir::TypedValue<::llzk::array::ArrayType> getResult() {
409 return ::llvm::cast<::mlir::TypedValue<::llzk::array::ArrayType>>(*getODSResults(0).begin());
410 }
411
412 static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError);
413 static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop);
414 static llvm::hash_code computePropertiesHash(const Properties &prop);
415 static std::optional<mlir::Attribute> getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name);
416 static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value);
417 static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs);
418 static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError);
419 static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state);
420 void writeProperties(::mlir::DialectBytecodeWriter &writer);
421 ::mlir::DenseI32ArrayAttr getNumDimsPerMapAttr() {
422 return ::llvm::dyn_cast_or_null<::mlir::DenseI32ArrayAttr>(getProperties().numDimsPerMap);
423 }
424
425 ::llvm::ArrayRef<int32_t> getNumDimsPerMap();
426 ::mlir::DenseI32ArrayAttr getMapOpGroupSizesAttr() {
427 return ::llvm::cast<::mlir::DenseI32ArrayAttr>(getProperties().mapOpGroupSizes);
428 }
429
430 ::llvm::ArrayRef<int32_t> getMapOpGroupSizes();
431 void setNumDimsPerMapAttr(::mlir::DenseI32ArrayAttr attr) {
432 getProperties().numDimsPerMap = attr;
433 }
434
435 void setNumDimsPerMap(::llvm::ArrayRef<int32_t> attrValue);
436 void setMapOpGroupSizesAttr(::mlir::DenseI32ArrayAttr attr) {
437 getProperties().mapOpGroupSizes = attr;
438 }
439
440 void setMapOpGroupSizes(::llvm::ArrayRef<int32_t> attrValue);
441 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::llzk::array::ArrayType result, ::mlir::ValueRange elements = {});
442 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::llzk::array::ArrayType result, ::llvm::ArrayRef<::mlir::ValueRange> mapOperands, ::mlir::DenseI32ArrayAttr numDimsPerMap);
443 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::llzk::array::ArrayType result, ::llvm::ArrayRef<::mlir::ValueRange> mapOperands, ::llvm::ArrayRef<int32_t> numDimsPerMap);
444 static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties);
445 ::llvm::LogicalResult verifyInvariantsImpl();
446 ::llvm::LogicalResult verifyInvariants();
447 ::llvm::LogicalResult verify();
448 ::llvm::LogicalResult verifySymbolUses(::mlir::SymbolTableCollection &symbolTable);
449 void getAsmResultNames(::mlir::OpAsmSetValueNameFn setNameFn);
450 ::llvm::SmallVector<::mlir::MemorySlot> getPromotableSlots();
451 ::mlir::Value getDefaultValue(const ::mlir::MemorySlot &slot, ::mlir::OpBuilder &builder);
452 void handleBlockArgument(const ::mlir::MemorySlot &slot, ::mlir::BlockArgument argument, ::mlir::OpBuilder &builder);
453 ::std::optional<::mlir::PromotableAllocationOpInterface> handlePromotionComplete(const ::mlir::MemorySlot &slot, ::mlir::Value defaultValue, ::mlir::OpBuilder &builder);
454 ::llvm::SmallVector<::mlir::DestructurableMemorySlot> getDestructurableSlots();
455 ::llvm::DenseMap<::mlir::Attribute, ::mlir::MemorySlot> destructure(const ::mlir::DestructurableMemorySlot &slot, const ::llvm::SmallPtrSetImpl<::mlir::Attribute> &usedIndices, ::mlir::OpBuilder &builder, ::mlir::SmallVectorImpl<::mlir::DestructurableAllocationOpInterface> &newAllocators);
456 ::std::optional<::mlir::DestructurableAllocationOpInterface> handleDestructuringComplete(const ::mlir::DestructurableMemorySlot &slot, ::mlir::OpBuilder &builder);
457 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
458 static ::llvm::LogicalResult setPropertiesFromParsedAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError);
459 void print(::mlir::OpAsmPrinter &_odsPrinter);
460 void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects);
461private:
462 ::mlir::StringAttr getAttributeNameForIndex(unsigned index) {
463 return getAttributeNameForIndex((*this)->getName(), index);
464 }
465
466 static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) {
467 assert(index < 2 && "invalid attribute index");
468 assert(name.getStringRef() == getOperationName() && "invalid operation name");
469 assert(name.isRegistered() && "Operation isn't registered, missing a "
470 "dependent dialect loading?");
471 return name.getAttributeNames()[index];
472 }
473
474public:
475 private:
476 static ::mlir::ParseResult parseInferredArrayType(::mlir::OpAsmParser &parser,
477 ::llvm::SmallVector<::mlir::Type,1> &elementsTypes,
478 ::mlir::ArrayRef<::mlir::OpAsmParser::UnresolvedOperand> elements,
479 ::mlir::Type resultType
480 );
481
482 static void printInferredArrayType(::mlir::OpAsmPrinter &printer, CreateArrayOp,
483 ::mlir::TypeRange, ::mlir::OperandRange, ::mlir::Type
484 );
485
486 static ::llvm::SmallVector<::mlir::Type> resultTypeToElementsTypes(::mlir::Type resultType);
487};
488} // namespace array
489} // namespace llzk
490MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::array::CreateArrayOp)
491
492namespace llzk {
493namespace array {
494
495//===----------------------------------------------------------------------===//
496// ::llzk::array::ExtractArrayOp declarations
497//===----------------------------------------------------------------------===//
498
499namespace detail {
501public:
502protected:
503 ::mlir::DictionaryAttr odsAttrs;
504 ::std::optional<::mlir::OperationName> odsOpName;
505 ::mlir::RegionRange odsRegions;
506public:
507 ExtractArrayOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
508 odsOpName.emplace("array.extract", odsAttrs.getContext());
509 }
510
511 ExtractArrayOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
512
513 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize);
514 ::mlir::DictionaryAttr getAttributes() {
515 return odsAttrs;
516 }
517
518};
519} // namespace detail
520template <typename RangeT>
522 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
524public:
525 ExtractArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
526
527 ExtractArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : ExtractArrayOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
528
529 ExtractArrayOpGenericAdaptor(RangeT values, const ExtractArrayOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
530
531 template <typename LateInst = ExtractArrayOp, typename = std::enable_if_t<std::is_same_v<LateInst, ExtractArrayOp>>>
532 ExtractArrayOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
533
534 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
535 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
536 }
537
538 RangeT getODSOperands(unsigned index) {
539 auto valueRange = getODSOperandIndexAndLength(index);
540 return {std::next(odsOperands.begin(), valueRange.first),
541 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
542 }
543
544 ValueT getArrRef() {
545 return (*getODSOperands(0).begin());
546 }
547
548 RangeT getIndices() {
549 return getODSOperands(1);
550 }
551
552 RangeT getOperands() {
553 return odsOperands;
554 }
555
556private:
557 RangeT odsOperands;
558};
559class ExtractArrayOpAdaptor : public ExtractArrayOpGenericAdaptor<::mlir::ValueRange> {
560public:
563
564 ::llvm::LogicalResult verify(::mlir::Location loc);
565};
566class ExtractArrayOp : public ::mlir::Op<ExtractArrayOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::OneResult, ::mlir::OpTrait::OneTypedResult<::llzk::array::ArrayType>::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::AtLeastNOperands<1>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::InferTypeOpInterface::Trait, ::mlir::OpTrait::InferTypeOpAdaptor, ::mlir::SymbolUserOpInterface::Trait, ::llzk::array::ArrayRefOpInterface::Trait, ::llzk::array::ArrayAccessOpInterface::Trait> {
567public:
568 using Op::Op;
569 using Op::print;
571 template <typename RangeT>
574 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
575 return {};
576 }
577
578 static constexpr ::llvm::StringLiteral getOperationName() {
579 return ::llvm::StringLiteral("array.extract");
580 }
581
582 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index);
583 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
584 auto valueRange = getODSOperandIndexAndLength(index);
585 return {std::next(getOperation()->operand_begin(), valueRange.first),
586 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
587 }
588
589 ::mlir::TypedValue<::llzk::array::ArrayType> getArrRef() {
590 return ::llvm::cast<::mlir::TypedValue<::llzk::array::ArrayType>>(*getODSOperands(0).begin());
591 }
592
593 ::mlir::Operation::operand_range getIndices() {
594 return getODSOperands(1);
595 }
596
597 ::mlir::OpOperand &getArrRefMutable() {
598 auto range = getODSOperandIndexAndLength(0);
599 return getOperation()->getOpOperand(range.first);
600 }
601
602 ::mlir::MutableOperandRange getIndicesMutable();
603 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
604 return {index, 1};
605 }
606
607 ::mlir::Operation::result_range getODSResults(unsigned index) {
608 auto valueRange = getODSResultIndexAndLength(index);
609 return {std::next(getOperation()->result_begin(), valueRange.first),
610 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
611 }
612
613 ::mlir::TypedValue<::llzk::array::ArrayType> getResult() {
614 return ::llvm::cast<::mlir::TypedValue<::llzk::array::ArrayType>>(*getODSResults(0).begin());
615 }
616
617 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type result, ::mlir::Value arr_ref, ::mlir::ValueRange indices);
618 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value arr_ref, ::mlir::ValueRange indices);
619 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value arr_ref, ::mlir::ValueRange indices);
620 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
621 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
622 ::llvm::LogicalResult verifyInvariantsImpl();
623 ::llvm::LogicalResult verifyInvariants();
624 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);
625 ::llvm::LogicalResult verifySymbolUses(::mlir::SymbolTableCollection &symbolTable);
626 bool isRead();
627 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
628 void print(::mlir::OpAsmPrinter &_odsPrinter);
629public:
630 static ::llvm::LogicalResult
631 inferReturnTypes(::mlir::MLIRContext *context,
632 std::optional<::mlir::Location> location,
633 Adaptor adaptor,
634 ::llvm::SmallVectorImpl<::mlir::Type> &inferredReturnTypes);
635
636 static bool isCompatibleReturnTypes(::mlir::TypeRange l, ::mlir::TypeRange r);
637
638
640 inline ::llzk::array::ArrayType getArrRefType() {
641 return ::llvm::cast<ArrayAccessOpInterface>(getOperation()).getArrRefType();
642 }
643};
644} // namespace array
645} // namespace llzk
646MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::array::ExtractArrayOp)
647
648namespace llzk {
649namespace array {
650
651//===----------------------------------------------------------------------===//
652// ::llzk::array::InsertArrayOp declarations
653//===----------------------------------------------------------------------===//
654
655namespace detail {
657public:
658protected:
659 ::mlir::DictionaryAttr odsAttrs;
660 ::std::optional<::mlir::OperationName> odsOpName;
661 ::mlir::RegionRange odsRegions;
662public:
663 InsertArrayOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
664 odsOpName.emplace("array.insert", odsAttrs.getContext());
665 }
666
667 InsertArrayOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
668
669 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize);
670 ::mlir::DictionaryAttr getAttributes() {
671 return odsAttrs;
672 }
673
674};
675} // namespace detail
676template <typename RangeT>
678 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
680public:
681 InsertArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
682
683 InsertArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : InsertArrayOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
684
685 InsertArrayOpGenericAdaptor(RangeT values, const InsertArrayOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
686
687 template <typename LateInst = InsertArrayOp, typename = std::enable_if_t<std::is_same_v<LateInst, InsertArrayOp>>>
688 InsertArrayOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
689
690 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
691 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
692 }
693
694 RangeT getODSOperands(unsigned index) {
695 auto valueRange = getODSOperandIndexAndLength(index);
696 return {std::next(odsOperands.begin(), valueRange.first),
697 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
698 }
699
700 ValueT getArrRef() {
701 return (*getODSOperands(0).begin());
702 }
703
704 RangeT getIndices() {
705 return getODSOperands(1);
706 }
707
708 ValueT getRvalue() {
709 return (*getODSOperands(2).begin());
710 }
711
712 RangeT getOperands() {
713 return odsOperands;
714 }
715
716private:
717 RangeT odsOperands;
718};
719class InsertArrayOpAdaptor : public InsertArrayOpGenericAdaptor<::mlir::ValueRange> {
720public:
723
724 ::llvm::LogicalResult verify(::mlir::Location loc);
725};
726class InsertArrayOp : public ::mlir::Op<InsertArrayOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::ZeroResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::AtLeastNOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::SymbolUserOpInterface::Trait, ::llzk::array::ArrayRefOpInterface::Trait, ::llzk::array::ArrayAccessOpInterface::Trait> {
727public:
728 using Op::Op;
729 using Op::print;
731 template <typename RangeT>
734 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
735 return {};
736 }
737
738 static constexpr ::llvm::StringLiteral getOperationName() {
739 return ::llvm::StringLiteral("array.insert");
740 }
741
742 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index);
743 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
744 auto valueRange = getODSOperandIndexAndLength(index);
745 return {std::next(getOperation()->operand_begin(), valueRange.first),
746 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
747 }
748
749 ::mlir::TypedValue<::llzk::array::ArrayType> getArrRef() {
750 return ::llvm::cast<::mlir::TypedValue<::llzk::array::ArrayType>>(*getODSOperands(0).begin());
751 }
752
753 ::mlir::Operation::operand_range getIndices() {
754 return getODSOperands(1);
755 }
756
757 ::mlir::TypedValue<::llzk::array::ArrayType> getRvalue() {
758 return ::llvm::cast<::mlir::TypedValue<::llzk::array::ArrayType>>(*getODSOperands(2).begin());
759 }
760
761 ::mlir::OpOperand &getArrRefMutable() {
762 auto range = getODSOperandIndexAndLength(0);
763 return getOperation()->getOpOperand(range.first);
764 }
765
766 ::mlir::MutableOperandRange getIndicesMutable();
767 ::mlir::OpOperand &getRvalueMutable() {
768 auto range = getODSOperandIndexAndLength(2);
769 return getOperation()->getOpOperand(range.first);
770 }
771
772 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
773 return {index, 1};
774 }
775
776 ::mlir::Operation::result_range getODSResults(unsigned index) {
777 auto valueRange = getODSResultIndexAndLength(index);
778 return {std::next(getOperation()->result_begin(), valueRange.first),
779 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
780 }
781
782 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value arr_ref, ::mlir::ValueRange indices, ::mlir::Value rvalue);
783 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value arr_ref, ::mlir::ValueRange indices, ::mlir::Value rvalue);
784 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
785 ::llvm::LogicalResult verifyInvariantsImpl();
786 ::llvm::LogicalResult verifyInvariants();
787 ::llvm::LogicalResult verify();
788 ::llvm::LogicalResult verifySymbolUses(::mlir::SymbolTableCollection &symbolTable);
789 bool isRead();
790 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
791 void print(::mlir::OpAsmPrinter &_odsPrinter);
792public:
794 inline ::llzk::array::ArrayType getArrRefType() {
795 return ::llvm::cast<ArrayAccessOpInterface>(getOperation()).getArrRefType();
796 }
797};
798} // namespace array
799} // namespace llzk
800MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::array::InsertArrayOp)
801
802namespace llzk {
803namespace array {
804
805//===----------------------------------------------------------------------===//
806// ::llzk::array::ReadArrayOp declarations
807//===----------------------------------------------------------------------===//
808
809namespace detail {
811public:
812protected:
813 ::mlir::DictionaryAttr odsAttrs;
814 ::std::optional<::mlir::OperationName> odsOpName;
815 ::mlir::RegionRange odsRegions;
816public:
817 ReadArrayOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
818 odsOpName.emplace("array.read", odsAttrs.getContext());
819 }
820
821 ReadArrayOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
822
823 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize);
824 ::mlir::DictionaryAttr getAttributes() {
825 return odsAttrs;
826 }
827
828};
829} // namespace detail
830template <typename RangeT>
832 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
834public:
835 ReadArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
836
837 ReadArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : ReadArrayOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
838
839 ReadArrayOpGenericAdaptor(RangeT values, const ReadArrayOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
840
841 template <typename LateInst = ReadArrayOp, typename = std::enable_if_t<std::is_same_v<LateInst, ReadArrayOp>>>
842 ReadArrayOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
843
844 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
845 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
846 }
847
848 RangeT getODSOperands(unsigned index) {
849 auto valueRange = getODSOperandIndexAndLength(index);
850 return {std::next(odsOperands.begin(), valueRange.first),
851 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
852 }
853
854 ValueT getArrRef() {
855 return (*getODSOperands(0).begin());
856 }
857
858 RangeT getIndices() {
859 return getODSOperands(1);
860 }
861
862 RangeT getOperands() {
863 return odsOperands;
864 }
865
866private:
867 RangeT odsOperands;
868};
869class ReadArrayOpAdaptor : public ReadArrayOpGenericAdaptor<::mlir::ValueRange> {
870public:
873
874 ::llvm::LogicalResult verify(::mlir::Location loc);
875};
876class ReadArrayOp : public ::mlir::Op<ReadArrayOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::OneResult, ::mlir::OpTrait::OneTypedResult<::mlir::Type>::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::AtLeastNOperands<1>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::InferTypeOpInterface::Trait, ::mlir::OpTrait::InferTypeOpAdaptor, ::mlir::DestructurableAccessorOpInterface::Trait, ::mlir::PromotableMemOpInterface::Trait, ::mlir::SymbolUserOpInterface::Trait, ::llzk::array::ArrayRefOpInterface::Trait, ::llzk::array::ArrayAccessOpInterface::Trait> {
877public:
878 using Op::Op;
879 using Op::print;
881 template <typename RangeT>
884 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
885 return {};
886 }
887
888 static constexpr ::llvm::StringLiteral getOperationName() {
889 return ::llvm::StringLiteral("array.read");
890 }
891
892 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index);
893 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
894 auto valueRange = getODSOperandIndexAndLength(index);
895 return {std::next(getOperation()->operand_begin(), valueRange.first),
896 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
897 }
898
899 ::mlir::TypedValue<::llzk::array::ArrayType> getArrRef() {
900 return ::llvm::cast<::mlir::TypedValue<::llzk::array::ArrayType>>(*getODSOperands(0).begin());
901 }
902
903 ::mlir::Operation::operand_range getIndices() {
904 return getODSOperands(1);
905 }
906
907 ::mlir::OpOperand &getArrRefMutable() {
908 auto range = getODSOperandIndexAndLength(0);
909 return getOperation()->getOpOperand(range.first);
910 }
911
912 ::mlir::MutableOperandRange getIndicesMutable();
913 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
914 return {index, 1};
915 }
916
917 ::mlir::Operation::result_range getODSResults(unsigned index) {
918 auto valueRange = getODSResultIndexAndLength(index);
919 return {std::next(getOperation()->result_begin(), valueRange.first),
920 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
921 }
922
923 ::mlir::TypedValue<::mlir::Type> getResult() {
924 return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin());
925 }
926
927 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type result, ::mlir::Value arr_ref, ::mlir::ValueRange indices);
928 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value arr_ref, ::mlir::ValueRange indices);
929 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value arr_ref, ::mlir::ValueRange indices);
930 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
931 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
932 ::llvm::LogicalResult verifyInvariantsImpl();
933 ::llvm::LogicalResult verifyInvariants();
934 ::llvm::LogicalResult verify();
935 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);
936 bool canRewire(const ::mlir::DestructurableMemorySlot &slot, ::llvm::SmallPtrSetImpl<::mlir::Attribute> &usedIndices, ::mlir::SmallVectorImpl<::mlir::MemorySlot> &mustBeSafelyUsed, const ::mlir::DataLayout &dataLayout);
937 ::mlir::DeletionKind rewire(const ::mlir::DestructurableMemorySlot &slot, ::llvm::DenseMap<::mlir::Attribute, ::mlir::MemorySlot> &subslots, ::mlir::OpBuilder &builder, const ::mlir::DataLayout &dataLayout);
938 bool loadsFrom(const ::mlir::MemorySlot &slot);
939 bool storesTo(const ::mlir::MemorySlot &slot);
940 ::mlir::Value getStored(const ::mlir::MemorySlot &slot, ::mlir::OpBuilder &builder, ::mlir::Value reachingDef, const ::mlir::DataLayout &dataLayout);
941 bool canUsesBeRemoved(const ::mlir::MemorySlot &slot, const ::llvm::SmallPtrSetImpl<::mlir::OpOperand *> &blockingUses, ::llvm::SmallVectorImpl<::mlir::OpOperand *> &newBlockingUses, const ::mlir::DataLayout &datalayout);
942 ::mlir::DeletionKind removeBlockingUses(const ::mlir::MemorySlot &slot, const ::llvm::SmallPtrSetImpl<mlir::OpOperand *> &blockingUses, ::mlir::OpBuilder &builder, ::mlir::Value reachingDefinition, const ::mlir::DataLayout &dataLayout);
943 ::llvm::LogicalResult verifySymbolUses(::mlir::SymbolTableCollection &symbolTable);
944 bool isRead();
945 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
946 void print(::mlir::OpAsmPrinter &_odsPrinter);
947public:
948 static ::llvm::LogicalResult
949 inferReturnTypes(::mlir::MLIRContext *context,
950 std::optional<::mlir::Location> location,
951 Adaptor adaptor,
952 ::llvm::SmallVectorImpl<::mlir::Type> &inferredReturnTypes);
953
954 static bool isCompatibleReturnTypes(::mlir::TypeRange l, ::mlir::TypeRange r);
955
956
958 inline ::llzk::array::ArrayType getArrRefType() {
959 return ::llvm::cast<ArrayAccessOpInterface>(getOperation()).getArrRefType();
960 }
961};
962} // namespace array
963} // namespace llzk
964MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::array::ReadArrayOp)
965
966namespace llzk {
967namespace array {
968
969//===----------------------------------------------------------------------===//
970// ::llzk::array::WriteArrayOp declarations
971//===----------------------------------------------------------------------===//
972
973namespace detail {
975public:
976protected:
977 ::mlir::DictionaryAttr odsAttrs;
978 ::std::optional<::mlir::OperationName> odsOpName;
979 ::mlir::RegionRange odsRegions;
980public:
981 WriteArrayOpGenericAdaptorBase(::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), odsRegions(regions) { if (odsAttrs)
982 odsOpName.emplace("array.write", odsAttrs.getContext());
983 }
984
985 WriteArrayOpGenericAdaptorBase(::mlir::Operation *op) : odsAttrs(op->getRawDictionaryAttrs()), odsOpName(op->getName()), odsRegions(op->getRegions()) {}
986
987 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize);
988 ::mlir::DictionaryAttr getAttributes() {
989 return odsAttrs;
990 }
991
992};
993} // namespace detail
994template <typename RangeT>
996 using ValueT = ::llvm::detail::ValueOfRange<RangeT>;
998public:
999 WriteArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = {}, const ::mlir::EmptyProperties &properties = {}, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {}
1000
1001 WriteArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions = {}) : WriteArrayOpGenericAdaptor(values, attrs, (properties ? *properties.as<::mlir::EmptyProperties *>() : ::mlir::EmptyProperties{}), regions) {}
1002
1003 WriteArrayOpGenericAdaptor(RangeT values, const WriteArrayOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {}
1004
1005 template <typename LateInst = WriteArrayOp, typename = std::enable_if_t<std::is_same_v<LateInst, WriteArrayOp>>>
1006 WriteArrayOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {}
1007
1008 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index) {
1009 return Base::getODSOperandIndexAndLength(index, odsOperands.size());
1010 }
1011
1012 RangeT getODSOperands(unsigned index) {
1013 auto valueRange = getODSOperandIndexAndLength(index);
1014 return {std::next(odsOperands.begin(), valueRange.first),
1015 std::next(odsOperands.begin(), valueRange.first + valueRange.second)};
1016 }
1017
1018 ValueT getArrRef() {
1019 return (*getODSOperands(0).begin());
1020 }
1021
1022 RangeT getIndices() {
1023 return getODSOperands(1);
1024 }
1025
1026 ValueT getRvalue() {
1027 return (*getODSOperands(2).begin());
1028 }
1029
1030 RangeT getOperands() {
1031 return odsOperands;
1032 }
1033
1034private:
1035 RangeT odsOperands;
1036};
1037class WriteArrayOpAdaptor : public WriteArrayOpGenericAdaptor<::mlir::ValueRange> {
1038public:
1041
1042 ::llvm::LogicalResult verify(::mlir::Location loc);
1043};
1044class WriteArrayOp : public ::mlir::Op<WriteArrayOp, ::mlir::OpTrait::ZeroRegions, ::mlir::OpTrait::ZeroResults, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::AtLeastNOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::DestructurableAccessorOpInterface::Trait, ::mlir::PromotableMemOpInterface::Trait, ::mlir::SymbolUserOpInterface::Trait, ::llzk::array::ArrayRefOpInterface::Trait, ::llzk::array::ArrayAccessOpInterface::Trait> {
1045public:
1046 using Op::Op;
1047 using Op::print;
1049 template <typename RangeT>
1052 static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() {
1053 return {};
1054 }
1055
1056 static constexpr ::llvm::StringLiteral getOperationName() {
1057 return ::llvm::StringLiteral("array.write");
1058 }
1059
1060 std::pair<unsigned, unsigned> getODSOperandIndexAndLength(unsigned index);
1061 ::mlir::Operation::operand_range getODSOperands(unsigned index) {
1062 auto valueRange = getODSOperandIndexAndLength(index);
1063 return {std::next(getOperation()->operand_begin(), valueRange.first),
1064 std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)};
1065 }
1066
1067 ::mlir::TypedValue<::llzk::array::ArrayType> getArrRef() {
1068 return ::llvm::cast<::mlir::TypedValue<::llzk::array::ArrayType>>(*getODSOperands(0).begin());
1069 }
1070
1071 ::mlir::Operation::operand_range getIndices() {
1072 return getODSOperands(1);
1073 }
1074
1075 ::mlir::TypedValue<::mlir::Type> getRvalue() {
1076 return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin());
1077 }
1078
1079 ::mlir::OpOperand &getArrRefMutable() {
1080 auto range = getODSOperandIndexAndLength(0);
1081 return getOperation()->getOpOperand(range.first);
1082 }
1083
1084 ::mlir::MutableOperandRange getIndicesMutable();
1085 ::mlir::OpOperand &getRvalueMutable() {
1086 auto range = getODSOperandIndexAndLength(2);
1087 return getOperation()->getOpOperand(range.first);
1088 }
1089
1090 std::pair<unsigned, unsigned> getODSResultIndexAndLength(unsigned index) {
1091 return {index, 1};
1092 }
1093
1094 ::mlir::Operation::result_range getODSResults(unsigned index) {
1095 auto valueRange = getODSResultIndexAndLength(index);
1096 return {std::next(getOperation()->result_begin(), valueRange.first),
1097 std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)};
1098 }
1099
1100 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value arr_ref, ::mlir::ValueRange indices, ::mlir::Value rvalue);
1101 static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value arr_ref, ::mlir::ValueRange indices, ::mlir::Value rvalue);
1102 static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {});
1103 ::llvm::LogicalResult verifyInvariantsImpl();
1104 ::llvm::LogicalResult verifyInvariants();
1105 ::llvm::LogicalResult verify();
1106 bool canRewire(const ::mlir::DestructurableMemorySlot &slot, ::llvm::SmallPtrSetImpl<::mlir::Attribute> &usedIndices, ::mlir::SmallVectorImpl<::mlir::MemorySlot> &mustBeSafelyUsed, const ::mlir::DataLayout &dataLayout);
1107 ::mlir::DeletionKind rewire(const ::mlir::DestructurableMemorySlot &slot, ::llvm::DenseMap<::mlir::Attribute, ::mlir::MemorySlot> &subslots, ::mlir::OpBuilder &builder, const ::mlir::DataLayout &dataLayout);
1108 bool loadsFrom(const ::mlir::MemorySlot &slot);
1109 bool storesTo(const ::mlir::MemorySlot &slot);
1110 ::mlir::Value getStored(const ::mlir::MemorySlot &slot, ::mlir::OpBuilder &builder, ::mlir::Value reachingDef, const ::mlir::DataLayout &dataLayout);
1111 bool canUsesBeRemoved(const ::mlir::MemorySlot &slot, const ::llvm::SmallPtrSetImpl<::mlir::OpOperand *> &blockingUses, ::llvm::SmallVectorImpl<::mlir::OpOperand *> &newBlockingUses, const ::mlir::DataLayout &datalayout);
1112 ::mlir::DeletionKind removeBlockingUses(const ::mlir::MemorySlot &slot, const ::llvm::SmallPtrSetImpl<mlir::OpOperand *> &blockingUses, ::mlir::OpBuilder &builder, ::mlir::Value reachingDefinition, const ::mlir::DataLayout &dataLayout);
1113 ::llvm::LogicalResult verifySymbolUses(::mlir::SymbolTableCollection &symbolTable);
1114 bool isRead();
1115 static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result);
1116 void print(::mlir::OpAsmPrinter &_odsPrinter);
1117public:
1119 inline ::llzk::array::ArrayType getArrRefType() {
1120 return ::llvm::cast<ArrayAccessOpInterface>(getOperation()).getArrRefType();
1121 }
1122};
1123} // namespace array
1124} // namespace llzk
1125MLIR_DECLARE_EXPLICIT_TYPE_ID(::llzk::array::WriteArrayOp)
1126
1127
1128#endif // GET_OP_CLASSES
1129
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:108
ArrayLengthOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:79
ArrayLengthOpAdaptor(ArrayLengthOp op)
Definition Ops.cpp.inc:106
ArrayLengthOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:79
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:92
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:88
ArrayLengthOpGenericAdaptor(RangeT values, const ArrayLengthOpGenericAdaptorBase &base)
Definition Ops.h.inc:83
ArrayLengthOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:86
ArrayLengthOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:81
::mlir::TypedValue<::mlir::IndexType > getLength()
Definition Ops.h.inc:174
inline ::llzk::array::ArrayType getArrRefType()
Gets the type of the referenced base array.
Definition Ops.h.inc:192
::mlir::OpOperand & getArrRefMutable()
Definition Ops.h.inc:154
::mlir::TypedValue<::llzk::array::ArrayType > getArrRef()
Definition Ops.h.inc:146
::llvm::LogicalResult verifySymbolUses(::mlir::SymbolTableCollection &symbolTable)
Definition Ops.cpp:468
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:168
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:164
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:132
::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:199
void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect > > &effects)
Definition Ops.cpp.inc:268
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:249
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:140
::mlir::OpOperand & getDimMutable()
Definition Ops.h.inc:159
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type length, ::mlir::Value arr_ref, ::mlir::Value dim)
Definition Ops.cpp.inc:112
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:195
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:207
ArrayLengthOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:126
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:167
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:127
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:128
ArrayLengthOpAdaptor Adaptor
Definition Ops.h.inc:124
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:136
::mlir::TypedValue<::mlir::IndexType > getDim()
Definition Ops.h.inc:150
CreateArrayOpAdaptor(CreateArrayOp op)
Definition Ops.cpp.inc:310
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:312
CreateArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:288
CreateArrayOpGenericAdaptor(RangeT values, const CreateArrayOpGenericAdaptorBase &base)
Definition Ops.h.inc:294
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:299
CreateArrayOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:297
CreateArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:288
::llvm::SmallVector< RangeT > getMapOperands()
Definition Ops.h.inc:313
CreateArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs)
Definition Ops.h.inc:292
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:303
CreateArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:290
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::llzk::array::ArrayType result, ::llvm::ArrayRef<::mlir::ValueRange > mapOperands, ::mlir::DenseI32ArrayAttr numDimsPerMap)
void writeProperties(::mlir::DialectBytecodeWriter &writer)
Definition Ops.cpp.inc:521
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.cpp.inc:325
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:398
static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs)
Definition Ops.cpp.inc:465
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:706
CreateArrayOpAdaptor Adaptor
Definition Ops.h.inc:343
void setNumDimsPerMapAttr(::mlir::DenseI32ArrayAttr attr)
Definition Ops.h.inc:431
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::llzk::array::ArrayType result, ::mlir::ValueRange elements={})
::mlir::StringAttr getOperandSegmentSizesAttrName(::mlir::OperationName name)
Definition Ops.h.inc:373
void setMapOpGroupSizesAttr(::mlir::DenseI32ArrayAttr attr)
Definition Ops.h.inc:436
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:348
void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect > > &effects)
Definition Ops.cpp.inc:729
::mlir::TypedValue<::llzk::array::ArrayType > getResult()
Definition Ops.h.inc:408
::llvm::LogicalResult setPropertiesFromParsedAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:678
::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:472
::llvm::SmallVector<::mlir::DestructurableMemorySlot > getDestructurableSlots()
Required by DestructurableAllocationOpInterface / SROA pass.
Definition Ops.cpp:119
::mlir::MutableOperandRangeRange getMapOperandsMutable()
Definition Ops.cpp.inc:340
::std::optional<::mlir::PromotableAllocationOpInterface > handlePromotionComplete(const ::mlir::MemorySlot &slot, ::mlir::Value defaultValue, ::mlir::OpBuilder &builder)
Required by PromotableAllocationOpInterface / mem2reg pass.
Definition Ops.cpp:193
void setNumDimsPerMap(::llvm::ArrayRef< int32_t > attrValue)
Definition Ops.cpp.inc:551
static std::optional< mlir::Attribute > getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name)
Definition Ops.cpp.inc:435
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:570
::mlir::StringAttr getNumDimsPerMapAttrName()
Definition Ops.h.inc:361
::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
Definition Ops.cpp.inc:346
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:402
::std::optional<::mlir::DestructurableAllocationOpInterface > handleDestructuringComplete(const ::mlir::DestructurableMemorySlot &slot, ::mlir::OpBuilder &builder)
Required by DestructurableAllocationOpInterface / SROA pass.
Definition Ops.cpp:162
static llvm::hash_code computePropertiesHash(const Properties &prop)
Definition Ops.cpp.inc:425
::llvm::LogicalResult verify()
Definition Ops.cpp:100
::mlir::StringAttr getOperandSegmentSizesAttrName()
Definition Ops.h.inc:369
::mlir::StringAttr getMapOpGroupSizesAttrName(::mlir::OperationName name)
Definition Ops.h.inc:357
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:346
::mlir::Value getDefaultValue(const ::mlir::MemorySlot &slot, ::mlir::OpBuilder &builder)
Required by PromotableAllocationOpInterface / mem2reg pass.
Definition Ops.cpp:185
::llvm::SmallVector<::mlir::MemorySlot > getPromotableSlots()
Required by PromotableAllocationOpInterface / mem2reg pass.
Definition Ops.cpp:171
::llvm::DenseMap<::mlir::Attribute, ::mlir::MemorySlot > destructure(const ::mlir::DestructurableMemorySlot &slot, const ::llvm::SmallPtrSetImpl<::mlir::Attribute > &usedIndices, ::mlir::OpBuilder &builder, ::mlir::SmallVectorImpl<::mlir::DestructurableAllocationOpInterface > &newAllocators)
Required by DestructurableAllocationOpInterface / SROA pass.
Definition Ops.cpp:132
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:382
::mlir::StringAttr getNumDimsPerMapAttrName(::mlir::OperationName name)
Definition Ops.h.inc:365
::mlir::DenseI32ArrayAttr getNumDimsPerMapAttr()
Definition Ops.h.inc:421
::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state)
Definition Ops.cpp.inc:487
::llvm::ArrayRef< int32_t > getNumDimsPerMap()
Definition Ops.cpp.inc:541
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:377
void getAsmResultNames(::mlir::OpAsmSetValueNameFn setNameFn)
Definition Ops.cpp:71
::llvm::ArrayRef< int32_t > getMapOpGroupSizes()
Definition Ops.cpp.inc:546
::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop)
Definition Ops.cpp.inc:394
void handleBlockArgument(const ::mlir::MemorySlot &slot, ::mlir::BlockArgument argument, ::mlir::OpBuilder &builder)
Required by PromotableAllocationOpInterface / mem2reg pass.
Definition Ops.cpp:190
::mlir::OperandRangeRange getMapOperands()
Definition Ops.h.inc:392
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:611
FoldAdaptor::Properties Properties
Definition Ops.h.inc:347
::mlir::StringAttr getMapOpGroupSizesAttrName()
Definition Ops.h.inc:353
::mlir::DenseI32ArrayAttr getMapOpGroupSizesAttr()
Definition Ops.h.inc:426
::mlir::MutableOperandRange getElementsMutable()
Definition Ops.cpp.inc:334
::mlir::Operation::operand_range getElements()
Definition Ops.h.inc:388
::llvm::LogicalResult verifySymbolUses(::mlir::SymbolTableCollection &symbolTable)
Definition Ops.cpp:66
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:617
static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value)
Definition Ops.cpp.inc:445
static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties)
Definition Ops.cpp.inc:564
void setMapOpGroupSizes(::llvm::ArrayRef< int32_t > attrValue)
Definition Ops.cpp.inc:555
CreateArrayOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:345
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:765
ExtractArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:525
ExtractArrayOpAdaptor(ExtractArrayOp op)
Definition Ops.cpp.inc:763
ExtractArrayOpGenericAdaptor(RangeT values, const ExtractArrayOpGenericAdaptorBase &base)
Definition Ops.h.inc:529
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:534
ExtractArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:525
ExtractArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:527
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:538
ExtractArrayOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:532
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:607
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type result, ::mlir::Value arr_ref, ::mlir::ValueRange indices)
Definition Ops.cpp.inc:793
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:603
static bool isCompatibleReturnTypes(::mlir::TypeRange l, ::mlir::TypeRange r)
Definition Ops.cpp:418
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:880
::llvm::LogicalResult verifySymbolUses(::mlir::SymbolTableCollection &symbolTable)
Definition Ops.cpp:381
::mlir::MutableOperandRange getIndicesMutable()
Definition Ops.cpp.inc:787
bool isRead()
Return true if the op is a read, false if it's a write.
Definition Ops.cpp.inc:964
ExtractArrayOpAdaptor Adaptor
Definition Ops.h.inc:570
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:574
ExtractArrayOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:572
::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)
::llvm::LogicalResult inferReturnTypes(::mlir::MLIRContext *context, std::optional<::mlir::Location > location, Adaptor adaptor, ::llvm::SmallVectorImpl<::mlir::Type > &inferredReturnTypes)
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:848
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:573
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:876
inline ::llzk::array::ArrayType getArrRefType()
Gets the type of the referenced base array.
Definition Ops.h.inc:640
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:932
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.cpp.inc:769
::mlir::Operation::operand_range getIndices()
Definition Ops.h.inc:593
::mlir::TypedValue<::llzk::array::ArrayType > getResult()
Definition Ops.h.inc:613
::mlir::TypedValue<::llzk::array::ArrayType > getArrRef()
Definition Ops.h.inc:589
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:583
::mlir::OpOperand & getArrRefMutable()
Definition Ops.h.inc:597
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:578
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:1000
InsertArrayOpAdaptor(InsertArrayOp op)
Definition Ops.cpp.inc:998
InsertArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:681
InsertArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:683
InsertArrayOpGenericAdaptor(RangeT values, const InsertArrayOpGenericAdaptorBase &base)
Definition Ops.h.inc:685
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:690
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:694
InsertArrayOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:688
InsertArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:681
inline ::llzk::array::ArrayType getArrRefType()
Gets the type of the referenced base array.
Definition Ops.h.inc:794
::mlir::Operation::operand_range getIndices()
Definition Ops.h.inc:753
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:1050
bool isRead()
Return true if the op is a read, false if it's a write.
Definition Ops.cpp.inc:1178
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:1075
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:738
::llvm::LogicalResult verify()
Definition Ops.cpp:433
::mlir::TypedValue<::llzk::array::ArrayType > getRvalue()
Definition Ops.h.inc:757
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:743
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:1081
::mlir::OpOperand & getArrRefMutable()
Definition Ops.h.inc:761
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:1146
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:733
::mlir::TypedValue<::llzk::array::ArrayType > getArrRef()
Definition Ops.h.inc:749
::mlir::OpOperand & getRvalueMutable()
Definition Ops.h.inc:767
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:734
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.cpp.inc:1004
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:772
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value arr_ref, ::mlir::ValueRange indices, ::mlir::Value rvalue)
Definition Ops.cpp.inc:1028
InsertArrayOpAdaptor Adaptor
Definition Ops.h.inc:730
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:776
::llvm::LogicalResult verifySymbolUses(::mlir::SymbolTableCollection &symbolTable)
Definition Ops.cpp:426
InsertArrayOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:732
::mlir::MutableOperandRange getIndicesMutable()
Definition Ops.cpp.inc:1022
ReadArrayOpAdaptor(ReadArrayOp op)
Definition Ops.cpp.inc:1212
ReadArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:835
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:1214
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:848
ReadArrayOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:842
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:844
ReadArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:835
ReadArrayOpGenericAdaptor(RangeT values, const ReadArrayOpGenericAdaptorBase &base)
Definition Ops.h.inc:839
ReadArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:837
::mlir::OpOperand & getArrRefMutable()
Definition Ops.h.inc:907
::mlir::Value getStored(const ::mlir::MemorySlot &slot, ::mlir::OpBuilder &builder, ::mlir::Value reachingDef, const ::mlir::DataLayout &dataLayout)
Required by PromotableAllocationOpInterface / mem2reg pass.
Definition Ops.cpp.inc:1456
::mlir::DeletionKind removeBlockingUses(const ::mlir::MemorySlot &slot, const ::llvm::SmallPtrSetImpl< mlir::OpOperand * > &blockingUses, ::mlir::OpBuilder &builder, ::mlir::Value reachingDefinition, const ::mlir::DataLayout &dataLayout)
Required by PromotableMemOpInterface / mem2reg pass.
Definition Ops.cpp:332
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:1297
::mlir::DeletionKind rewire(const ::mlir::DestructurableMemorySlot &slot, ::llvm::DenseMap<::mlir::Attribute, ::mlir::MemorySlot > &subslots, ::mlir::OpBuilder &builder, const ::mlir::DataLayout &dataLayout)
Required by DestructurableAllocationOpInterface / SROA pass.
Definition Ops.cpp.inc:1438
inline ::llzk::array::ArrayType getArrRefType()
Gets the type of the referenced base array.
Definition Ops.h.inc:958
::llvm::LogicalResult inferReturnTypes(::mlir::MLIRContext *context, std::optional<::mlir::Location > location, Adaptor adaptor, ::llvm::SmallVectorImpl<::mlir::Type > &inferredReturnTypes)
::mlir::TypedValue<::mlir::Type > getResult()
Definition Ops.h.inc:923
::mlir::TypedValue<::llzk::array::ArrayType > getArrRef()
Definition Ops.h.inc:899
bool storesTo(const ::mlir::MemorySlot &slot)
Required by PromotableMemOpInterface / mem2reg pass.
Definition Ops.cpp.inc:1451
::mlir::Operation::operand_range getIndices()
Definition Ops.h.inc:903
::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)
bool loadsFrom(const ::mlir::MemorySlot &slot)
Required by PromotableMemOpInterface / mem2reg pass.
Definition Ops.cpp.inc:1446
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:1333
bool isRead()
Return true if the op is a read, false if it's a write.
Definition Ops.cpp.inc:1462
::llvm::LogicalResult verify()
Definition Ops.cpp:313
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:884
::llvm::LogicalResult verifySymbolUses(::mlir::SymbolTableCollection &symbolTable)
Definition Ops.cpp:293
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type result, ::mlir::Value arr_ref, ::mlir::ValueRange indices)
Definition Ops.cpp.inc:1242
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:883
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:913
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:1388
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:917
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:893
bool canRewire(const ::mlir::DestructurableMemorySlot &slot, ::llvm::SmallPtrSetImpl<::mlir::Attribute > &usedIndices, ::mlir::SmallVectorImpl<::mlir::MemorySlot > &mustBeSafelyUsed, const ::mlir::DataLayout &dataLayout)
Required by DestructurableAllocationOpInterface / SROA pass.
Definition Ops.cpp.inc:1429
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:888
static bool isCompatibleReturnTypes(::mlir::TypeRange l, ::mlir::TypeRange r)
Definition Ops.cpp:309
ReadArrayOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:882
bool canUsesBeRemoved(const ::mlir::MemorySlot &slot, const ::llvm::SmallPtrSetImpl<::mlir::OpOperand * > &blockingUses, ::llvm::SmallVectorImpl<::mlir::OpOperand * > &newBlockingUses, const ::mlir::DataLayout &datalayout)
Required by PromotableMemOpInterface / mem2reg pass.
Definition Ops.cpp:319
ReadArrayOpAdaptor Adaptor
Definition Ops.h.inc:880
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.cpp.inc:1218
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:1327
::mlir::MutableOperandRange getIndicesMutable()
Definition Ops.cpp.inc:1236
::llvm::LogicalResult verify(::mlir::Location loc)
Definition Ops.cpp.inc:1498
WriteArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:999
WriteArrayOpAdaptor(WriteArrayOp op)
Definition Ops.cpp.inc:1496
RangeT getODSOperands(unsigned index)
Definition Ops.h.inc:1012
WriteArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:999
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.h.inc:1008
WriteArrayOpGenericAdaptor(RangeT values, LateInst op)
Definition Ops.h.inc:1006
WriteArrayOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::OpaqueProperties properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:1001
WriteArrayOpGenericAdaptor(RangeT values, const WriteArrayOpGenericAdaptorBase &base)
Definition Ops.h.inc:1003
::mlir::OpOperand & getRvalueMutable()
Definition Ops.h.inc:1085
::mlir::DeletionKind rewire(const ::mlir::DestructurableMemorySlot &slot, ::llvm::DenseMap<::mlir::Attribute, ::mlir::MemorySlot > &subslots, ::mlir::OpBuilder &builder, const ::mlir::DataLayout &dataLayout)
Required by DestructurableAllocationOpInterface / SROA pass.
Definition Ops.cpp.inc:1687
bool isRead()
Return true if the op is a read, false if it's a write.
Definition Ops.cpp.inc:1711
bool loadsFrom(const ::mlir::MemorySlot &slot)
Required by PromotableMemOpInterface / mem2reg pass.
Definition Ops.cpp.inc:1695
WriteArrayOpAdaptor Adaptor
Definition Ops.h.inc:1048
::llvm::LogicalResult verifyInvariants()
Definition Ops.cpp.inc:1575
::mlir::Operation::result_range getODSResults(unsigned index)
Definition Ops.h.inc:1094
::llvm::LogicalResult verify()
Definition Ops.cpp:352
::mlir::Operation::operand_range getIndices()
Definition Ops.h.inc:1071
::mlir::Value getStored(const ::mlir::MemorySlot &slot, ::mlir::OpBuilder &builder, ::mlir::Value reachingDef, const ::mlir::DataLayout &dataLayout)
Required by PromotableAllocationOpInterface / mem2reg pass.
Definition Ops.cpp.inc:1705
void print(::mlir::OpAsmPrinter &_odsPrinter)
Definition Ops.cpp.inc:1646
bool canRewire(const ::mlir::DestructurableMemorySlot &slot, ::llvm::SmallPtrSetImpl<::mlir::Attribute > &usedIndices, ::mlir::SmallVectorImpl<::mlir::MemorySlot > &mustBeSafelyUsed, const ::mlir::DataLayout &dataLayout)
Required by DestructurableAllocationOpInterface / SROA pass.
Definition Ops.cpp.inc:1678
::llvm::LogicalResult verifyInvariantsImpl()
Definition Ops.cpp.inc:1548
WriteArrayOpGenericAdaptor< RangeT > GenericAdaptor
Definition Ops.h.inc:1050
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
Definition Ops.cpp.inc:1581
static constexpr ::llvm::StringLiteral getOperationName()
Definition Ops.h.inc:1056
static ::llvm::ArrayRef<::llvm::StringRef > getAttributeNames()
Definition Ops.h.inc:1052
inline ::llzk::array::ArrayType getArrRefType()
Gets the type of the referenced base array.
Definition Ops.h.inc:1119
GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute > > FoldAdaptor
Definition Ops.h.inc:1051
bool storesTo(const ::mlir::MemorySlot &slot)
Required by PromotableMemOpInterface / mem2reg pass.
Definition Ops.cpp.inc:1700
bool canUsesBeRemoved(const ::mlir::MemorySlot &slot, const ::llvm::SmallPtrSetImpl<::mlir::OpOperand * > &blockingUses, ::llvm::SmallVectorImpl<::mlir::OpOperand * > &newBlockingUses, const ::mlir::DataLayout &datalayout)
Required by PromotableMemOpInterface / mem2reg pass.
Definition Ops.cpp:358
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value arr_ref, ::mlir::ValueRange indices, ::mlir::Value rvalue)
Definition Ops.cpp.inc:1526
::mlir::DeletionKind removeBlockingUses(const ::mlir::MemorySlot &slot, const ::llvm::SmallPtrSetImpl< mlir::OpOperand * > &blockingUses, ::mlir::OpBuilder &builder, ::mlir::Value reachingDefinition, const ::mlir::DataLayout &dataLayout)
Required by PromotableMemOpInterface / mem2reg pass.
Definition Ops.cpp:371
std::pair< unsigned, unsigned > getODSResultIndexAndLength(unsigned index)
Definition Ops.h.inc:1090
::mlir::MutableOperandRange getIndicesMutable()
Definition Ops.cpp.inc:1520
::mlir::OpOperand & getArrRefMutable()
Definition Ops.h.inc:1079
::mlir::Operation::operand_range getODSOperands(unsigned index)
Definition Ops.h.inc:1061
::mlir::TypedValue<::llzk::array::ArrayType > getArrRef()
Definition Ops.h.inc:1067
::llvm::LogicalResult verifySymbolUses(::mlir::SymbolTableCollection &symbolTable)
Definition Ops.cpp:345
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index)
Definition Ops.cpp.inc:1502
::mlir::TypedValue<::mlir::Type > getRvalue()
Definition Ops.h.inc:1075
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.h.inc:64
ArrayLengthOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:58
ArrayLengthOpGenericAdaptorBase(::mlir::Operation *op)
Definition Ops.h.inc:62
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:55
::mlir::DenseI32ArrayAttr getMapOpGroupSizesAttr()
Definition Ops.h.inc:275
::llvm::ArrayRef< int32_t > getMapOpGroupSizes()
Definition Ops.cpp.inc:304
::llvm::ArrayRef< int32_t > getNumDimsPerMap()
Definition Ops.cpp.inc:299
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.cpp.inc:285
CreateArrayOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
Definition Ops.h.inc:258
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:254
ExtractArrayOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:507
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:504
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.cpp.inc:744
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.cpp.inc:979
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:660
InsertArrayOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:663
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:814
ReadArrayOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:817
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.cpp.inc:1193
ReadArrayOpGenericAdaptorBase(::mlir::Operation *op)
Definition Ops.h.inc:821
std::pair< unsigned, unsigned > getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize)
Definition Ops.cpp.inc:1477
WriteArrayOpGenericAdaptorBase(::mlir::Operation *op)
Definition Ops.h.inc:985
WriteArrayOpGenericAdaptorBase(::mlir::DictionaryAttr attrs={}, const ::mlir::EmptyProperties &properties={}, ::mlir::RegionRange regions={})
Definition Ops.h.inc:981
::std::optional<::mlir::OperationName > odsOpName
Definition Ops.h.inc:978
llvm::StringLiteral getOperationName()
Get the operation name, like "constrain.eq" for the given OpClass.
Definition OpHelpers.h:27
void setMapOpGroupSizes(const ::mlir::DenseI32ArrayAttr &propValue)
Definition Ops.h.inc:218
::llvm::ArrayRef< int32_t > getOperandSegmentSizes() const
Definition Ops.h.inc:233
void setNumDimsPerMap(const ::mlir::DenseI32ArrayAttr &propValue)
Definition Ops.h.inc:228
void setOperandSegmentSizes(::llvm::ArrayRef< int32_t > propValue)
Definition Ops.h.inc:237