17 return llvm::isa<NewPodOp>(unwrap(inp));
21 auto range = llvm::cast<NewPodOp>(unwrap(op)).getODSOperandIndexAndLength(0);
26 auto range = llvm::cast<NewPodOp>(unwrap(op)).getODSOperandIndexAndLength(0);
27 assert(index >= 0 && index < range.second &&
"variadic operand index out of range");
29 static_cast<uintptr_t
>(range.first) <=
static_cast<uintptr_t
>(std::numeric_limits<intptr_t>::max()) &&
30 "operand index exceeds intptr_t range"
32 return mlirOperationGetOperand(op,
static_cast<intptr_t
>(range.first) + index);
38 ::llvm::SmallVector<::mlir::Value> vals;
39 vals.reserve(
static_cast<size_t>(count));
40 for (intptr_t i = 0; i < count; ++i)
41 vals.push_back(unwrap(values[i]));
42 ::llvm::cast<NewPodOp>(unwrap(op)).getInitialValuesMutable().assign(vals);
46 auto range = llvm::cast<NewPodOp>(unwrap(op)).getODSOperandIndexAndLength(1);
51 auto range = llvm::cast<NewPodOp>(unwrap(op)).getODSOperandIndexAndLength(1);
52 assert(index >= 0 && index < range.second &&
"variadic operand index out of range");
54 static_cast<uintptr_t
>(range.first) <=
static_cast<uintptr_t
>(std::numeric_limits<intptr_t>::max()) &&
55 "operand index exceeds intptr_t range"
57 return mlirOperationGetOperand(op,
static_cast<intptr_t
>(range.first) + index);
64 ::llvm::SmallVector<::mlir::Value> vals;
65 for (intptr_t g = 0; g < groupCount; ++g) {
66 assert(groups[g].size >= 0 &&
"group size must be non-negative");
67 for (intptr_t i = 0; i < groups[g].
size; ++i) {
68 vals.push_back(unwrap(groups[g].values[i]));
71 ::llvm::cast<NewPodOp>(unwrap(op)).getMapOperandsMutable().join().assign(vals);
73 ::llvm::SmallVector<int32_t> newGroupSizes;
74 newGroupSizes.reserve(
static_cast<size_t>(groupCount));
75 for (intptr_t g = 0; g < groupCount; ++g) {
77 groups[g].size <=
static_cast<intptr_t
>(std::numeric_limits<int32_t>::max()) &&
78 "group size exceeds int32_t range"
80 newGroupSizes.push_back(
static_cast<int32_t
>(groups[g].size));
82 MlirContext ctx = mlirOperationGetContext(op);
84 newGroupSizes.size() <=
static_cast<size_t>(std::numeric_limits<intptr_t>::max()) &&
85 "group count exceeds intptr_t range"
87 mlirOperationSetAttributeByName(
88 op, mlirStringRefCreateFromCString(
"mapOpGroupSizes"),
89 mlirDenseI32ArrayGet(ctx,
static_cast<intptr_t
>(newGroupSizes.size()), newGroupSizes.data())
94 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"initializedRecords"));
98 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"initializedRecords"), attr);
102 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"numDimsPerMap"));
106 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"numDimsPerMap"), attr);
110 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"mapOpGroupSizes"));
114 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"mapOpGroupSizes"), attr);
118 return mlirOperationGetResult(op, 0);
121MlirOperation
llzkPod_ReadPodOpBuild(MlirOpBuilder builder, MlirLocation location, MlirType resultType, MlirValue pod_ref, MlirAttribute record_name) {
122 MlirOperationState state = mlirOperationStateGet(mlirStringRefCreateFromCString(
"pod.read"), location);
123 mlirOperationStateAddResults(&state, 1, &resultType);
124 mlirOperationStateAddOperands(&state, 1, &pod_ref);
126 llvm::SmallVector<MlirNamedAttribute, 1> attributes;
127 if (!mlirAttributeIsNull(record_name)) {
128 attributes.push_back(mlirNamedAttributeGet(mlirIdentifierGet(ctx, mlirStringRefCreateFromCString(
"record_name")), record_name));
130 mlirOperationStateAddAttributes(&state, attributes.size(), attributes.data());
136 return llvm::isa<ReadPodOp>(unwrap(inp));
140 auto range = llvm::cast<ReadPodOp>(unwrap(op)).getODSOperandIndexAndLength(0);
141 assert(range.second == 1 &&
"expected fixed operand segment size");
143 static_cast<uintptr_t
>(range.first) <=
static_cast<uintptr_t
>(std::numeric_limits<intptr_t>::max()) &&
144 "operand index exceeds intptr_t range"
146 return mlirOperationGetOperand(op,
static_cast<intptr_t
>(range.first));
150 auto range = llvm::cast<ReadPodOp>(unwrap(op)).getODSOperandIndexAndLength(0);
151 assert(range.second == 1 &&
"expected fixed operand segment size");
153 static_cast<uintptr_t
>(range.first) <=
static_cast<uintptr_t
>(std::numeric_limits<intptr_t>::max()) &&
154 "operand index exceeds intptr_t range"
156 mlirOperationSetOperand(op,
static_cast<intptr_t
>(range.first), value);
160 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"record_name"));
164 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"record_name"), attr);
168 return mlirOperationGetResult(op, 0);
172 return wrap(llvm::cast<ReadPodOp>(unwrap(inp)).getPodRefType());
175MlirOperation
llzkPod_WritePodOpBuild(MlirOpBuilder builder, MlirLocation location, MlirValue pod_ref, MlirValue value, MlirAttribute record_name) {
176 MlirOperationState state = mlirOperationStateGet(mlirStringRefCreateFromCString(
"pod.write"), location);
177 mlirOperationStateAddOperands(&state, 1, &pod_ref);
178 mlirOperationStateAddOperands(&state, 1, &value);
180 llvm::SmallVector<MlirNamedAttribute, 1> attributes;
181 if (!mlirAttributeIsNull(record_name)) {
182 attributes.push_back(mlirNamedAttributeGet(mlirIdentifierGet(ctx, mlirStringRefCreateFromCString(
"record_name")), record_name));
184 mlirOperationStateAddAttributes(&state, attributes.size(), attributes.data());
190 return llvm::isa<WritePodOp>(unwrap(inp));
194 auto range = llvm::cast<WritePodOp>(unwrap(op)).getODSOperandIndexAndLength(0);
195 assert(range.second == 1 &&
"expected fixed operand segment size");
197 static_cast<uintptr_t
>(range.first) <=
static_cast<uintptr_t
>(std::numeric_limits<intptr_t>::max()) &&
198 "operand index exceeds intptr_t range"
200 return mlirOperationGetOperand(op,
static_cast<intptr_t
>(range.first));
204 auto range = llvm::cast<WritePodOp>(unwrap(op)).getODSOperandIndexAndLength(0);
205 assert(range.second == 1 &&
"expected fixed operand segment size");
207 static_cast<uintptr_t
>(range.first) <=
static_cast<uintptr_t
>(std::numeric_limits<intptr_t>::max()) &&
208 "operand index exceeds intptr_t range"
210 mlirOperationSetOperand(op,
static_cast<intptr_t
>(range.first), value);
214 auto range = llvm::cast<WritePodOp>(unwrap(op)).getODSOperandIndexAndLength(1);
215 assert(range.second == 1 &&
"expected fixed operand segment size");
217 static_cast<uintptr_t
>(range.first) <=
static_cast<uintptr_t
>(std::numeric_limits<intptr_t>::max()) &&
218 "operand index exceeds intptr_t range"
220 return mlirOperationGetOperand(op,
static_cast<intptr_t
>(range.first));
224 auto range = llvm::cast<WritePodOp>(unwrap(op)).getODSOperandIndexAndLength(1);
225 assert(range.second == 1 &&
"expected fixed operand segment size");
227 static_cast<uintptr_t
>(range.first) <=
static_cast<uintptr_t
>(std::numeric_limits<intptr_t>::max()) &&
228 "operand index exceeds intptr_t range"
230 mlirOperationSetOperand(op,
static_cast<intptr_t
>(range.first), value);
234 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"record_name"));
238 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"record_name"), attr);
242 return wrap(llvm::cast<WritePodOp>(unwrap(inp)).getPodRefType());
MlirContext mlirOpBuilderGetContext(MlirOpBuilder builder)
Returns the MLIR context associated with builder.
MlirOperation mlirOpBuilderInsert(MlirOpBuilder builder, MlirOperation op)
Inserts op at the current insertion point of builder and returns it.
void llzkPod_WritePodOpSetRecordName(MlirOperation op, MlirAttribute attr)
Set RecordName attribute of llzk::pod::WritePodOp Operation.
MlirValue llzkPod_ReadPodOpGetResult(MlirOperation op)
Get Result result from llzk::pod::ReadPodOp Operation.
void llzkPod_NewPodOpSetMapOpGroupSizes(MlirOperation op, MlirAttribute attr)
Set MapOpGroupSizes attribute of llzk::pod::NewPodOp Operation.
void llzkPod_NewPodOpSetInitialValues(MlirOperation op, intptr_t count, MlirValue const *values)
Set InitialValues operands of llzk::pod::NewPodOp Operation.
bool llzkOperationIsA_Pod_ReadPodOp(MlirOperation inp)
Returns true if the Operation is a llzk::pod::ReadPodOp.
void llzkPod_ReadPodOpSetPodRef(MlirOperation op, MlirValue value)
Set PodRef operand of llzk::pod::ReadPodOp Operation.
MlirOperation llzkPod_ReadPodOpBuild(MlirOpBuilder builder, MlirLocation location, MlirType resultType, MlirValue pod_ref, MlirAttribute record_name)
Build a llzk::pod::ReadPodOp Operation.
MlirValue llzkPod_WritePodOpGetPodRef(MlirOperation op)
Get PodRef operand from llzk::pod::WritePodOp Operation.
MlirAttribute llzkPod_WritePodOpGetRecordName(MlirOperation op)
Get RecordName attribute from llzk::pod::WritePodOp Operation.
MlirType llzkPod_WritePodOpGetPodRefType(MlirOperation inp)
Gets the type of the referenced pod.
void llzkPod_NewPodOpSetMapOperands(MlirOperation op, intptr_t groupCount, MlirValueRange const *groups)
Set MapOperands operand groups of llzk::pod::NewPodOp Operation.
MlirAttribute llzkPod_ReadPodOpGetRecordName(MlirOperation op)
Get RecordName attribute from llzk::pod::ReadPodOp Operation.
intptr_t llzkPod_NewPodOpGetMapOperandsCount(MlirOperation op)
Get number of MapOperands operands in llzk::pod::NewPodOp Operation.
void llzkPod_WritePodOpSetValue(MlirOperation op, MlirValue value)
Set Value operand of llzk::pod::WritePodOp Operation.
MlirAttribute llzkPod_NewPodOpGetMapOpGroupSizes(MlirOperation op)
Get MapOpGroupSizes attribute from llzk::pod::NewPodOp Operation.
void llzkPod_WritePodOpSetPodRef(MlirOperation op, MlirValue value)
Set PodRef operand of llzk::pod::WritePodOp Operation.
MlirValue llzkPod_ReadPodOpGetPodRef(MlirOperation op)
Get PodRef operand from llzk::pod::ReadPodOp Operation.
MlirValue llzkPod_NewPodOpGetResult(MlirOperation op)
Get Result result from llzk::pod::NewPodOp Operation.
bool llzkOperationIsA_Pod_NewPodOp(MlirOperation inp)
Returns true if the Operation is a llzk::pod::NewPodOp.
MlirOperation llzkPod_WritePodOpBuild(MlirOpBuilder builder, MlirLocation location, MlirValue pod_ref, MlirValue value, MlirAttribute record_name)
Build a llzk::pod::WritePodOp Operation.
void llzkPod_NewPodOpSetNumDimsPerMap(MlirOperation op, MlirAttribute attr)
Set NumDimsPerMap attribute of llzk::pod::NewPodOp Operation.
void llzkPod_ReadPodOpSetRecordName(MlirOperation op, MlirAttribute attr)
Set RecordName attribute of llzk::pod::ReadPodOp Operation.
MlirType llzkPod_ReadPodOpGetPodRefType(MlirOperation inp)
Gets the type of the referenced pod.
MlirAttribute llzkPod_NewPodOpGetInitializedRecords(MlirOperation op)
Get InitializedRecords attribute from llzk::pod::NewPodOp Operation.
MlirValue llzkPod_WritePodOpGetValue(MlirOperation op)
Get Value operand from llzk::pod::WritePodOp Operation.
MlirAttribute llzkPod_NewPodOpGetNumDimsPerMap(MlirOperation op)
Get NumDimsPerMap attribute from llzk::pod::NewPodOp Operation.
intptr_t llzkPod_NewPodOpGetInitialValuesCount(MlirOperation op)
Get number of InitialValues operands in llzk::pod::NewPodOp Operation.
bool llzkOperationIsA_Pod_WritePodOp(MlirOperation inp)
Returns true if the Operation is a llzk::pod::WritePodOp.
void llzkPod_NewPodOpSetInitializedRecords(MlirOperation op, MlirAttribute attr)
Set InitializedRecords attribute of llzk::pod::NewPodOp Operation.
MlirValue llzkPod_NewPodOpGetInitialValuesAt(MlirOperation op, intptr_t index)
Get InitialValues operand at index from llzk::pod::NewPodOp Operation.
MlirValue llzkPod_NewPodOpGetMapOperandsAt(MlirOperation op, intptr_t index)
Get MapOperands operand at index from llzk::pod::NewPodOp Operation.
Representation of an mlir::ValueRange
intptr_t size
Number of values in the range.