12 return llvm::isa<ApplyMapOp>(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 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"map"));
65 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"map"), attr);
69 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"numDims"));
73 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"numDims"), attr);
77 return mlirOperationGetResult(op, 0);
81 return wrap(llvm::cast<ApplyMapOp>(unwrap(inp)).getAffineMap());
85 MlirOperationState state = mlirOperationStateGet(mlirStringRefCreateFromCString(
"poly.read_const"), location);
86 mlirOperationStateAddResults(&state, 1, &valType);
88 llvm::SmallVector<MlirNamedAttribute, 1> attributes;
89 if (!mlirAttributeIsNull(const_name)) {
90 attributes.push_back(mlirNamedAttributeGet(mlirIdentifierGet(ctx, mlirStringRefCreateFromCString(
"const_name")), const_name));
92 mlirOperationStateAddAttributes(&state, attributes.size(), attributes.data());
98 return llvm::isa<ConstReadOp>(unwrap(inp));
102 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"const_name"));
106 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"const_name"), attr);
110 return mlirOperationGetResult(op, 0);
114 MlirOperationState state = mlirOperationStateGet(mlirStringRefCreateFromCString(
"poly.expr"), location);
116 llvm::SmallVector<MlirNamedAttribute, 1> attributes;
117 if (!mlirAttributeIsNull(
reinterpret_cast<MlirAttribute&
>(sym_name))) {
118 attributes.push_back(mlirNamedAttributeGet(mlirIdentifierGet(ctx, mlirStringRefCreateFromCString(
"sym_name")),
reinterpret_cast<MlirAttribute&
>(sym_name)));
120 mlirOperationStateAddAttributes(&state, attributes.size(), attributes.data());
121 llvm::SmallVector<MlirRegion, 1> regions;
122 regions.push_back(mlirRegionCreate());
123 mlirOperationStateAddOwnedRegions(&state, regions.size(), regions.data());
129 return llvm::isa<TemplateExprOp>(unwrap(inp));
133 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"sym_name"));
137 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"sym_name"), attr);
141 return mlirOperationGetRegion(op, 0);
145 return wrap(llvm::cast<TemplateExprOp>(unwrap(inp)).getType());
149 MlirOperationState state = mlirOperationStateGet(mlirStringRefCreateFromCString(
"poly.template"), location);
151 llvm::SmallVector<MlirNamedAttribute, 1> attributes;
152 if (!mlirAttributeIsNull(
reinterpret_cast<MlirAttribute&
>(sym_name))) {
153 attributes.push_back(mlirNamedAttributeGet(mlirIdentifierGet(ctx, mlirStringRefCreateFromCString(
"sym_name")),
reinterpret_cast<MlirAttribute&
>(sym_name)));
155 mlirOperationStateAddAttributes(&state, attributes.size(), attributes.data());
156 llvm::SmallVector<MlirRegion, 1> regions;
157 regions.push_back(mlirRegionCreate());
158 mlirOperationStateAddOwnedRegions(&state, regions.size(), regions.data());
164 return llvm::isa<TemplateOp>(unwrap(inp));
168 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"sym_name"));
172 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"sym_name"), attr);
176 return mlirOperationGetRegion(op, 0);
180 MlirOperationState state = mlirOperationStateGet(mlirStringRefCreateFromCString(
"poly.param"), location);
182 llvm::SmallVector<MlirNamedAttribute, 2> attributes;
183 if (!mlirAttributeIsNull(
reinterpret_cast<MlirAttribute&
>(sym_name))) {
184 attributes.push_back(mlirNamedAttributeGet(mlirIdentifierGet(ctx, mlirStringRefCreateFromCString(
"sym_name")),
reinterpret_cast<MlirAttribute&
>(sym_name)));
186 if (!mlirAttributeIsNull(type_opt)) {
187 attributes.push_back(mlirNamedAttributeGet(mlirIdentifierGet(ctx, mlirStringRefCreateFromCString(
"type_opt")), type_opt));
189 mlirOperationStateAddAttributes(&state, attributes.size(), attributes.data());
195 return llvm::isa<TemplateParamOp>(unwrap(inp));
199 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"sym_name"));
203 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"sym_name"), attr);
207 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"type_opt"));
211 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"type_opt"), attr);
215 MlirOperationState state = mlirOperationStateGet(mlirStringRefCreateFromCString(
"poly.unifiable_cast"), location);
216 mlirOperationStateAddResults(&state, 1, &resultType);
217 mlirOperationStateAddOperands(&state, 1, &input);
223 return llvm::isa<UnifiableCastOp>(unwrap(inp));
227 return mlirOperationGetOperand(op, 0);
231 mlirOperationSetOperand(op, 0, value);
235 return mlirOperationGetResult(op, 0);
239 MlirOperationState state = mlirOperationStateGet(mlirStringRefCreateFromCString(
"poly.yield"), location);
240 mlirOperationStateAddOperands(&state, 1, &val);
246 return llvm::isa<YieldOp>(unwrap(inp));
250 return mlirOperationGetOperand(op, 0);
254 mlirOperationSetOperand(op, 0, value);
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 llzkPoly_TemplateExprOpSetSymName(MlirOperation op, MlirAttribute attr)
Set SymName attribute of llzk::polymorphic::TemplateExprOp Operation.
void llzkPoly_TemplateParamOpSetSymName(MlirOperation op, MlirAttribute attr)
Set SymName attribute of llzk::polymorphic::TemplateParamOp Operation.
MlirRegion llzkPoly_TemplateOpGetBodyRegion(MlirOperation op)
Get BodyRegion region from llzk::polymorphic::TemplateOp Operation.
void llzkPoly_UnifiableCastOpSetInput(MlirOperation op, MlirValue value)
Set Input operand of llzk::polymorphic::UnifiableCastOp Operation.
bool llzkOperationIsA_Poly_TemplateExprOp(MlirOperation inp)
Returns true if the Operation is a llzk::polymorphic::TemplateExprOp.
MlirAttribute llzkPoly_ConstReadOpGetConstName(MlirOperation op)
Get ConstName attribute from llzk::polymorphic::ConstReadOp Operation.
MlirValue llzkPoly_UnifiableCastOpGetResult(MlirOperation op)
Get Result result from llzk::polymorphic::UnifiableCastOp Operation.
MlirValue llzkPoly_YieldOpGetVal(MlirOperation op)
Get Val operand from llzk::polymorphic::YieldOp Operation.
void llzkPoly_YieldOpSetVal(MlirOperation op, MlirValue value)
Set Val operand of llzk::polymorphic::YieldOp Operation.
bool llzkOperationIsA_Poly_TemplateParamOp(MlirOperation inp)
Returns true if the Operation is a llzk::polymorphic::TemplateParamOp.
MlirValue llzkPoly_UnifiableCastOpGetInput(MlirOperation op)
Get Input operand from llzk::polymorphic::UnifiableCastOp Operation.
MlirOperation llzkPoly_TemplateOpBuild(MlirOpBuilder builder, MlirLocation location, MlirIdentifier sym_name)
Build a llzk::polymorphic::TemplateOp Operation.
MlirValue llzkPoly_ApplyMapOpGetMapOperandsAt(MlirOperation op, intptr_t index)
Get MapOperands operand at index from llzk::polymorphic::ApplyMapOp Operation.
MlirAttribute llzkPoly_TemplateExprOpGetSymName(MlirOperation op)
Get SymName attribute from llzk::polymorphic::TemplateExprOp Operation.
void llzkPoly_ApplyMapOpSetMapOperands(MlirOperation op, intptr_t count, MlirValue const *values)
Set MapOperands operands of llzk::polymorphic::ApplyMapOp Operation.
MlirAffineMap llzkPoly_ApplyMapOpGetAffineMap(MlirOperation inp)
Returns the affine map to be applied by this operation.
MlirAttribute llzkPoly_TemplateParamOpGetSymName(MlirOperation op)
Get SymName attribute from llzk::polymorphic::TemplateParamOp Operation.
void llzkPoly_ApplyMapOpSetNumDims(MlirOperation op, MlirAttribute attr)
Set NumDims attribute of llzk::polymorphic::ApplyMapOp Operation.
intptr_t llzkPoly_ApplyMapOpGetMapOperandsCount(MlirOperation op)
Get number of MapOperands operands in llzk::polymorphic::ApplyMapOp Operation.
MlirType llzkPoly_TemplateExprOpGetType(MlirOperation inp)
Returns the type of the poly.yield op in the initializer region.
MlirAttribute llzkPoly_ApplyMapOpGetMap(MlirOperation op)
Get Map attribute from llzk::polymorphic::ApplyMapOp Operation.
MlirAttribute llzkPoly_ApplyMapOpGetNumDims(MlirOperation op)
Get NumDims attribute from llzk::polymorphic::ApplyMapOp Operation.
MlirOperation llzkPoly_UnifiableCastOpBuild(MlirOpBuilder builder, MlirLocation location, MlirType resultType, MlirValue input)
Build a llzk::polymorphic::UnifiableCastOp Operation.
void llzkPoly_ConstReadOpSetConstName(MlirOperation op, MlirAttribute attr)
Set ConstName attribute of llzk::polymorphic::ConstReadOp Operation.
MlirAttribute llzkPoly_TemplateOpGetSymName(MlirOperation op)
Get SymName attribute from llzk::polymorphic::TemplateOp Operation.
void llzkPoly_ApplyMapOpSetMap(MlirOperation op, MlirAttribute attr)
Set Map attribute of llzk::polymorphic::ApplyMapOp Operation.
MlirValue llzkPoly_ConstReadOpGetVal(MlirOperation op)
Get Val result from llzk::polymorphic::ConstReadOp Operation.
bool llzkOperationIsA_Poly_ApplyMapOp(MlirOperation inp)
Returns true if the Operation is a llzk::polymorphic::ApplyMapOp.
bool llzkOperationIsA_Poly_TemplateOp(MlirOperation inp)
Returns true if the Operation is a llzk::polymorphic::TemplateOp.
MlirValue llzkPoly_ApplyMapOpGetResult0(MlirOperation op)
Get Result0 result from llzk::polymorphic::ApplyMapOp Operation.
void llzkPoly_TemplateOpSetSymName(MlirOperation op, MlirAttribute attr)
Set SymName attribute of llzk::polymorphic::TemplateOp Operation.
MlirOperation llzkPoly_ConstReadOpBuild(MlirOpBuilder builder, MlirLocation location, MlirType valType, MlirAttribute const_name)
Build a llzk::polymorphic::ConstReadOp Operation.
MlirOperation llzkPoly_TemplateParamOpBuild(MlirOpBuilder builder, MlirLocation location, MlirIdentifier sym_name, MlirAttribute type_opt)
Build a llzk::polymorphic::TemplateParamOp Operation.
MlirAttribute llzkPoly_TemplateParamOpGetTypeOpt(MlirOperation op)
Get TypeOpt attribute from llzk::polymorphic::TemplateParamOp Operation.
bool llzkOperationIsA_Poly_YieldOp(MlirOperation inp)
Returns true if the Operation is a llzk::polymorphic::YieldOp.
void llzkPoly_TemplateParamOpSetTypeOpt(MlirOperation op, MlirAttribute attr)
Set TypeOpt attribute of llzk::polymorphic::TemplateParamOp Operation.
MlirRegion llzkPoly_TemplateExprOpGetInitializerRegion(MlirOperation op)
Get InitializerRegion region from llzk::polymorphic::TemplateExprOp Operation.
bool llzkOperationIsA_Poly_UnifiableCastOp(MlirOperation inp)
Returns true if the Operation is a llzk::polymorphic::UnifiableCastOp.
MlirOperation llzkPoly_YieldOpBuild(MlirOpBuilder builder, MlirLocation location, MlirValue val)
Build a llzk::polymorphic::YieldOp Operation.
MlirOperation llzkPoly_TemplateExprOpBuild(MlirOpBuilder builder, MlirLocation location, MlirIdentifier sym_name)
Build a llzk::polymorphic::TemplateExprOp Operation.
bool llzkOperationIsA_Poly_ConstReadOp(MlirOperation inp)
Returns true if the Operation is a llzk::polymorphic::ConstReadOp.