12 return llvm::isa<NewPodOp>(unwrap(inp));
16 intptr_t count = mlirOperationGetNumOperands(op);
17 assert(count >= 0 &&
"operand count less than start index");
22 return mlirOperationGetOperand(op, 0 + index);
26 intptr_t numOperands = mlirOperationGetNumOperands(op);
27 intptr_t startIdx = 0;
30 if (startIdx < 0 || startIdx > numOperands) {
33 if (count < 0 || count > (std::numeric_limits<intptr_t>::max() - startIdx)) {
37 intptr_t oldCount = numOperands - startIdx;
38 intptr_t newNumOperands = startIdx + count;
40 std::vector<MlirValue> newOperands(newNumOperands);
43 for (intptr_t i = 0; i < startIdx; ++i) {
44 newOperands[i] = mlirOperationGetOperand(op, i);
48 for (intptr_t i = 0; i < count; ++i) {
49 newOperands[startIdx + i] = values[i];
53 for (intptr_t i = startIdx + oldCount; i < numOperands; ++i) {
54 newOperands[i - oldCount + count] = mlirOperationGetOperand(op, i);
57 mlirOperationSetOperands(op, newNumOperands, newOperands.data());
61 intptr_t count = mlirOperationGetNumOperands(op);
62 assert(count >= 1 &&
"operand count less than start index");
67 return mlirOperationGetOperand(op, 1 + index);
71 intptr_t numOperands = mlirOperationGetNumOperands(op);
72 intptr_t startIdx = 1;
75 if (startIdx < 0 || startIdx > numOperands) {
78 if (count < 0 || count > (std::numeric_limits<intptr_t>::max() - startIdx)) {
82 intptr_t oldCount = numOperands - startIdx;
83 intptr_t newNumOperands = startIdx + count;
85 std::vector<MlirValue> newOperands(newNumOperands);
88 for (intptr_t i = 0; i < startIdx; ++i) {
89 newOperands[i] = mlirOperationGetOperand(op, i);
93 for (intptr_t i = 0; i < count; ++i) {
94 newOperands[startIdx + i] = values[i];
98 for (intptr_t i = startIdx + oldCount; i < numOperands; ++i) {
99 newOperands[i - oldCount + count] = mlirOperationGetOperand(op, i);
102 mlirOperationSetOperands(op, newNumOperands, newOperands.data());
106 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"initializedRecords"));
110 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"initializedRecords"), attr);
114 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"numDimsPerMap"));
118 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"numDimsPerMap"), attr);
122 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"mapOpGroupSizes"));
126 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"mapOpGroupSizes"), attr);
130 return mlirOperationGetResult(op, 0);
133MlirOperation
llzkPod_ReadPodOpBuild(MlirOpBuilder builder, MlirLocation location, MlirType resultType, MlirValue pod_ref, MlirAttribute record_name) {
134 MlirOperationState state = mlirOperationStateGet(mlirStringRefCreateFromCString(
"pod.read"), location);
135 mlirOperationStateAddResults(&state, 1, &resultType);
136 mlirOperationStateAddOperands(&state, 1, &pod_ref);
138 llvm::SmallVector<MlirNamedAttribute, 1> attributes;
139 if (!mlirAttributeIsNull(record_name)) {
140 attributes.push_back(mlirNamedAttributeGet(mlirIdentifierGet(ctx, mlirStringRefCreateFromCString(
"record_name")), record_name));
142 mlirOperationStateAddAttributes(&state, attributes.size(), attributes.data());
148 return llvm::isa<ReadPodOp>(unwrap(inp));
152 return mlirOperationGetOperand(op, 0);
156 mlirOperationSetOperand(op, 0, value);
160 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"record_name"));
164 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"record_name"), attr);
168 return mlirOperationGetResult(op, 0);
171MlirOperation
llzkPod_WritePodOpBuild(MlirOpBuilder builder, MlirLocation location, MlirValue pod_ref, MlirValue value, MlirAttribute record_name) {
172 MlirOperationState state = mlirOperationStateGet(mlirStringRefCreateFromCString(
"pod.write"), location);
173 mlirOperationStateAddOperands(&state, 1, &pod_ref);
174 mlirOperationStateAddOperands(&state, 1, &value);
176 llvm::SmallVector<MlirNamedAttribute, 1> attributes;
177 if (!mlirAttributeIsNull(record_name)) {
178 attributes.push_back(mlirNamedAttributeGet(mlirIdentifierGet(ctx, mlirStringRefCreateFromCString(
"record_name")), record_name));
180 mlirOperationStateAddAttributes(&state, attributes.size(), attributes.data());
186 return llvm::isa<WritePodOp>(unwrap(inp));
190 return mlirOperationGetOperand(op, 0);
194 mlirOperationSetOperand(op, 0, value);
198 return mlirOperationGetOperand(op, 1);
202 mlirOperationSetOperand(op, 1, value);
206 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"record_name"));
210 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"record_name"), attr);
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.
void llzkPod_NewPodOpSetMapOperands(MlirOperation op, intptr_t count, MlirValue const *values)
Set MapOperands operands of llzk::pod::NewPodOp 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.
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.
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.