17 MlirOperationState state = mlirOperationStateGet(mlirStringRefCreateFromCString(
"verif.contract_end"), location);
23 return llvm::isa<ContractEndOp>(unwrap(inp));
27 return llvm::isa<ContractOp>(unwrap(inp));
31 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"sym_name"));
35 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"sym_name"), attr);
39 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"target"));
43 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"target"), attr);
47 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"function_type"));
51 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"function_type"), attr);
55 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"arg_attrs"));
59 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"arg_attrs"), attr);
63 return mlirOperationGetRegion(op, 0);
67 return llvm::cast<ContractOp>(unwrap(inp)).isDeclaration();
71 return llvm::cast<ContractOp>(unwrap(inp)).hasArgPublicAttr(index);
75 return llvm::cast<ContractOp>(unwrap(inp)).hasFuncTarget();
79 return llvm::cast<ContractOp>(unwrap(inp)).hasStructTarget();
83 return wrap(llvm::cast<ContractOp>(unwrap(inp)).getCallableRegion());
87 return llvm::cast<ContractOp>(unwrap(inp)).hasArgName(index);
91 return wrap(llvm::cast<ContractOp>(unwrap(inp)).getFullyQualifiedName(requireParent));
95 MlirOperationState state = mlirOperationStateGet(mlirStringRefCreateFromCString(
"verif.ensure_compute"), location);
96 mlirOperationStateAddOperands(&state, 1, &condition);
102 return llvm::isa<EnsureComputeOp>(unwrap(inp));
106 auto range = llvm::cast<EnsureComputeOp>(unwrap(op)).getODSOperandIndexAndLength(0);
107 assert(range.second == 1 &&
"expected fixed operand segment size");
109 static_cast<uintptr_t
>(range.first) <=
static_cast<uintptr_t
>(std::numeric_limits<intptr_t>::max()) &&
110 "operand index exceeds intptr_t range"
112 return mlirOperationGetOperand(op,
static_cast<intptr_t
>(range.first));
116 auto range = llvm::cast<EnsureComputeOp>(unwrap(op)).getODSOperandIndexAndLength(0);
117 assert(range.second == 1 &&
"expected fixed operand segment size");
119 static_cast<uintptr_t
>(range.first) <=
static_cast<uintptr_t
>(std::numeric_limits<intptr_t>::max()) &&
120 "operand index exceeds intptr_t range"
122 mlirOperationSetOperand(op,
static_cast<intptr_t
>(range.first), value);
126 MlirOperationState state = mlirOperationStateGet(mlirStringRefCreateFromCString(
"verif.ensure_constrain"), location);
127 mlirOperationStateAddOperands(&state, 1, &condition);
133 return llvm::isa<EnsureConstrainOp>(unwrap(inp));
137 auto range = llvm::cast<EnsureConstrainOp>(unwrap(op)).getODSOperandIndexAndLength(0);
138 assert(range.second == 1 &&
"expected fixed operand segment size");
140 static_cast<uintptr_t
>(range.first) <=
static_cast<uintptr_t
>(std::numeric_limits<intptr_t>::max()) &&
141 "operand index exceeds intptr_t range"
143 return mlirOperationGetOperand(op,
static_cast<intptr_t
>(range.first));
147 auto range = llvm::cast<EnsureConstrainOp>(unwrap(op)).getODSOperandIndexAndLength(0);
148 assert(range.second == 1 &&
"expected fixed operand segment size");
150 static_cast<uintptr_t
>(range.first) <=
static_cast<uintptr_t
>(std::numeric_limits<intptr_t>::max()) &&
151 "operand index exceeds intptr_t range"
153 mlirOperationSetOperand(op,
static_cast<intptr_t
>(range.first), value);
157 return llvm::isa<IncludeOp>(unwrap(inp));
161 auto range = llvm::cast<IncludeOp>(unwrap(op)).getODSOperandIndexAndLength(0);
166 auto range = llvm::cast<IncludeOp>(unwrap(op)).getODSOperandIndexAndLength(0);
167 assert(index >= 0 && index < range.second &&
"variadic operand index out of range");
169 static_cast<uintptr_t
>(range.first) <=
static_cast<uintptr_t
>(std::numeric_limits<intptr_t>::max()) &&
170 "operand index exceeds intptr_t range"
172 return mlirOperationGetOperand(op,
static_cast<intptr_t
>(range.first) + index);
178 ::llvm::SmallVector<::mlir::Value> vals;
179 vals.reserve(
static_cast<size_t>(count));
180 for (intptr_t i = 0; i < count; ++i)
181 vals.push_back(unwrap(values[i]));
182 ::llvm::cast<IncludeOp>(unwrap(op)).getArgOperandsMutable().assign(vals);
186 auto range = llvm::cast<IncludeOp>(unwrap(op)).getODSOperandIndexAndLength(1);
191 auto range = llvm::cast<IncludeOp>(unwrap(op)).getODSOperandIndexAndLength(1);
192 assert(index >= 0 && index < range.second &&
"variadic operand index out of range");
194 static_cast<uintptr_t
>(range.first) <=
static_cast<uintptr_t
>(std::numeric_limits<intptr_t>::max()) &&
195 "operand index exceeds intptr_t range"
197 return mlirOperationGetOperand(op,
static_cast<intptr_t
>(range.first) + index);
204 ::llvm::SmallVector<::mlir::Value> vals;
205 for (intptr_t g = 0; g < groupCount; ++g) {
206 assert(groups[g].size >= 0 &&
"group size must be non-negative");
207 for (intptr_t i = 0; i < groups[g].
size; ++i) {
208 vals.push_back(unwrap(groups[g].values[i]));
211 ::llvm::cast<IncludeOp>(unwrap(op)).getMapOperandsMutable().join().assign(vals);
213 ::llvm::SmallVector<int32_t> newGroupSizes;
214 newGroupSizes.reserve(
static_cast<size_t>(groupCount));
215 for (intptr_t g = 0; g < groupCount; ++g) {
217 groups[g].size <=
static_cast<intptr_t
>(std::numeric_limits<int32_t>::max()) &&
218 "group size exceeds int32_t range"
220 newGroupSizes.push_back(
static_cast<int32_t
>(groups[g].size));
222 MlirContext ctx = mlirOperationGetContext(op);
224 newGroupSizes.size() <=
static_cast<size_t>(std::numeric_limits<intptr_t>::max()) &&
225 "group count exceeds intptr_t range"
227 mlirOperationSetAttributeByName(
228 op, mlirStringRefCreateFromCString(
"mapOpGroupSizes"),
229 mlirDenseI32ArrayGet(ctx,
static_cast<intptr_t
>(newGroupSizes.size()), newGroupSizes.data())
234 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"callee"));
238 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"callee"), attr);
242 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"templateParams"));
246 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"templateParams"), attr);
250 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"numDimsPerMap"));
254 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"numDimsPerMap"), attr);
258 return mlirOperationGetAttributeByName(op, mlirStringRefCreateFromCString(
"mapOpGroupSizes"));
262 mlirOperationSetAttributeByName(op, mlirStringRefCreateFromCString(
"mapOpGroupSizes"), attr);
266 return llvm::cast<IncludeOp>(unwrap(inp)).contractTargetsStruct();
270 return wrap(llvm::cast<IncludeOp>(unwrap(inp)).getSelfValue());
274 return wrap(llvm::cast<IncludeOp>(unwrap(inp)).getTypeSignature());
278 return wrap(llvm::cast<IncludeOp>(unwrap(inp)).resolveCallable());
282 MlirOperationState state = mlirOperationStateGet(mlirStringRefCreateFromCString(
"verif.require_compute"), location);
283 mlirOperationStateAddOperands(&state, 1, &condition);
289 return llvm::isa<RequireComputeOp>(unwrap(inp));
293 auto range = llvm::cast<RequireComputeOp>(unwrap(op)).getODSOperandIndexAndLength(0);
294 assert(range.second == 1 &&
"expected fixed operand segment size");
296 static_cast<uintptr_t
>(range.first) <=
static_cast<uintptr_t
>(std::numeric_limits<intptr_t>::max()) &&
297 "operand index exceeds intptr_t range"
299 return mlirOperationGetOperand(op,
static_cast<intptr_t
>(range.first));
303 auto range = llvm::cast<RequireComputeOp>(unwrap(op)).getODSOperandIndexAndLength(0);
304 assert(range.second == 1 &&
"expected fixed operand segment size");
306 static_cast<uintptr_t
>(range.first) <=
static_cast<uintptr_t
>(std::numeric_limits<intptr_t>::max()) &&
307 "operand index exceeds intptr_t range"
309 mlirOperationSetOperand(op,
static_cast<intptr_t
>(range.first), value);
313 MlirOperationState state = mlirOperationStateGet(mlirStringRefCreateFromCString(
"verif.require_constrain"), location);
314 mlirOperationStateAddOperands(&state, 1, &condition);
320 return llvm::isa<RequireConstrainOp>(unwrap(inp));
324 auto range = llvm::cast<RequireConstrainOp>(unwrap(op)).getODSOperandIndexAndLength(0);
325 assert(range.second == 1 &&
"expected fixed operand segment size");
327 static_cast<uintptr_t
>(range.first) <=
static_cast<uintptr_t
>(std::numeric_limits<intptr_t>::max()) &&
328 "operand index exceeds intptr_t range"
330 return mlirOperationGetOperand(op,
static_cast<intptr_t
>(range.first));
334 auto range = llvm::cast<RequireConstrainOp>(unwrap(op)).getODSOperandIndexAndLength(0);
335 assert(range.second == 1 &&
"expected fixed operand segment size");
337 static_cast<uintptr_t
>(range.first) <=
static_cast<uintptr_t
>(std::numeric_limits<intptr_t>::max()) &&
338 "operand index exceeds intptr_t range"
340 mlirOperationSetOperand(op,
static_cast<intptr_t
>(range.first), value);
MlirOperation mlirOpBuilderInsert(MlirOpBuilder builder, MlirOperation op)
Inserts op at the current insertion point of builder and returns it.
MlirAttribute llzkVerif_IncludeOpGetNumDimsPerMap(MlirOperation op)
Get NumDimsPerMap attribute from llzk::verif::IncludeOp Operation.
intptr_t llzkVerif_IncludeOpGetMapOperandsCount(MlirOperation op)
Get number of MapOperands operands in llzk::verif::IncludeOp Operation.
void llzkVerif_IncludeOpSetTemplateParams(MlirOperation op, MlirAttribute attr)
Set TemplateParams attribute of llzk::verif::IncludeOp Operation.
void llzkVerif_IncludeOpSetMapOpGroupSizes(MlirOperation op, MlirAttribute attr)
Set MapOpGroupSizes attribute of llzk::verif::IncludeOp Operation.
MlirOperation llzkVerif_RequireComputeOpBuild(MlirOpBuilder builder, MlirLocation location, MlirValue condition)
Build a llzk::verif::RequireComputeOp Operation.
void llzkVerif_IncludeOpSetCallee(MlirOperation op, MlirAttribute attr)
Set Callee attribute of llzk::verif::IncludeOp Operation.
MlirOperation llzkVerif_RequireConstrainOpBuild(MlirOpBuilder builder, MlirLocation location, MlirValue condition)
Build a llzk::verif::RequireConstrainOp Operation.
bool llzkVerif_ContractOpHasStructTarget(MlirOperation inp)
Return true iff the contract targets a struct type.
void llzkVerif_RequireConstrainOpSetCondition(MlirOperation op, MlirValue value)
Set Condition operand of llzk::verif::RequireConstrainOp Operation.
MlirRegion llzkVerif_ContractOpGetBody(MlirOperation op)
Get Body region from llzk::verif::ContractOp Operation.
MlirAttribute llzkVerif_IncludeOpGetTemplateParams(MlirOperation op)
Get TemplateParams attribute from llzk::verif::IncludeOp Operation.
bool llzkOperationIsA_Verif_RequireConstrainOp(MlirOperation inp)
Returns true if the Operation is a llzk::verif::RequireConstrainOp.
MlirOperation llzkVerif_EnsureConstrainOpBuild(MlirOpBuilder builder, MlirLocation location, MlirValue condition)
Build a llzk::verif::EnsureConstrainOp Operation.
MlirAttribute llzkVerif_IncludeOpGetMapOpGroupSizes(MlirOperation op)
Get MapOpGroupSizes attribute from llzk::verif::IncludeOp Operation.
MlirOperation llzkVerif_ContractEndOpBuild(MlirOpBuilder builder, MlirLocation location)
Build a llzk::verif::ContractEndOp Operation.
void llzkVerif_EnsureComputeOpSetCondition(MlirOperation op, MlirValue value)
Set Condition operand of llzk::verif::EnsureComputeOp Operation.
bool llzkVerif_ContractOpHasArgPublicAttr(MlirOperation inp, unsigned index)
Return true iff the argument at the given index has pub attribute.
bool llzkOperationIsA_Verif_ContractEndOp(MlirOperation inp)
Returns true if the Operation is a llzk::verif::ContractEndOp.
intptr_t llzkVerif_IncludeOpGetArgOperandsCount(MlirOperation op)
Get number of ArgOperands operands in llzk::verif::IncludeOp Operation.
MlirAttribute llzkVerif_ContractOpGetSymName(MlirOperation op)
Get SymName attribute from llzk::verif::ContractOp Operation.
bool llzkVerif_ContractOpHasArgName(MlirOperation inp, unsigned index)
Return true iff the argument at the given index has a function.arg_name attribute.
bool llzkVerif_IncludeOpContractTargetsStruct(MlirOperation inp)
Return true iff the contract targets a struct type.
bool llzkOperationIsA_Verif_RequireComputeOp(MlirOperation inp)
Returns true if the Operation is a llzk::verif::RequireComputeOp.
MlirAttribute llzkVerif_ContractOpGetTarget(MlirOperation op)
Get Target attribute from llzk::verif::ContractOp Operation.
MlirAttribute llzkVerif_ContractOpGetFunctionType(MlirOperation op)
Get FunctionType attribute from llzk::verif::ContractOp Operation.
bool llzkOperationIsA_Verif_EnsureConstrainOp(MlirOperation inp)
Returns true if the Operation is a llzk::verif::EnsureConstrainOp.
MlirAttribute llzkVerif_ContractOpGetArgAttrs(MlirOperation op)
Get ArgAttrs attribute from llzk::verif::ContractOp Operation.
bool llzkOperationIsA_Verif_EnsureComputeOp(MlirOperation inp)
Returns true if the Operation is a llzk::verif::EnsureComputeOp.
void llzkVerif_IncludeOpSetArgOperands(MlirOperation op, intptr_t count, MlirValue const *values)
Set ArgOperands operands of llzk::verif::IncludeOp Operation.
void llzkVerif_IncludeOpSetNumDimsPerMap(MlirOperation op, MlirAttribute attr)
Set NumDimsPerMap attribute of llzk::verif::IncludeOp Operation.
void llzkVerif_ContractOpSetTarget(MlirOperation op, MlirAttribute attr)
Set Target attribute of llzk::verif::ContractOp Operation.
void llzkVerif_EnsureConstrainOpSetCondition(MlirOperation op, MlirValue value)
Set Condition operand of llzk::verif::EnsureConstrainOp Operation.
MlirAttribute llzkVerif_IncludeOpGetCallee(MlirOperation op)
Get Callee attribute from llzk::verif::IncludeOp Operation.
bool llzkVerif_ContractOpIsDeclaration(MlirOperation inp)
Required by SymbolOpInterface.
MlirValue llzkVerif_IncludeOpGetMapOperandsAt(MlirOperation op, intptr_t index)
Get MapOperands operand at index from llzk::verif::IncludeOp Operation.
void llzkVerif_ContractOpSetArgAttrs(MlirOperation op, MlirAttribute attr)
Set ArgAttrs attribute of llzk::verif::ContractOp Operation.
MlirOperation llzkVerif_EnsureComputeOpBuild(MlirOpBuilder builder, MlirLocation location, MlirValue condition)
Build a llzk::verif::EnsureComputeOp Operation.
MlirValue llzkVerif_RequireComputeOpGetCondition(MlirOperation op)
Get Condition operand from llzk::verif::RequireComputeOp Operation.
bool llzkOperationIsA_Verif_IncludeOp(MlirOperation inp)
Returns true if the Operation is a llzk::verif::IncludeOp.
MlirValue llzkVerif_IncludeOpGetArgOperandsAt(MlirOperation op, intptr_t index)
Get ArgOperands operand at index from llzk::verif::IncludeOp Operation.
void llzkVerif_RequireComputeOpSetCondition(MlirOperation op, MlirValue value)
Set Condition operand of llzk::verif::RequireComputeOp Operation.
void llzkVerif_IncludeOpSetMapOperands(MlirOperation op, intptr_t groupCount, MlirValueRange const *groups)
Set MapOperands operand groups of llzk::verif::IncludeOp Operation.
MlirValue llzkVerif_IncludeOpGetSelfValue(MlirOperation inp)
Return the "self" value (i.e.
MlirType llzkVerif_IncludeOpGetTypeSignature(MlirOperation inp)
Return the FunctionType inferred from the arg operands of this CallOp.
MlirValue llzkVerif_EnsureComputeOpGetCondition(MlirOperation op)
Get Condition operand from llzk::verif::EnsureComputeOp Operation.
MlirValue llzkVerif_EnsureConstrainOpGetCondition(MlirOperation op)
Get Condition operand from llzk::verif::EnsureConstrainOp Operation.
MlirRegion llzkVerif_ContractOpGetCallableRegion(MlirOperation inp)
Required by FunctionOpInterface.
MlirValue llzkVerif_RequireConstrainOpGetCondition(MlirOperation op)
Get Condition operand from llzk::verif::RequireConstrainOp Operation.
bool llzkVerif_ContractOpHasFuncTarget(MlirOperation inp)
Return true iff the contract targets a function.
bool llzkOperationIsA_Verif_ContractOp(MlirOperation inp)
Returns true if the Operation is a llzk::verif::ContractOp.
MlirAttribute llzkVerif_ContractOpGetFullyQualifiedName(MlirOperation inp, bool requireParent)
Return the full name for this contract from the root module, including all surrounding symbol table n...
void llzkVerif_ContractOpSetFunctionType(MlirOperation op, MlirAttribute attr)
Set FunctionType attribute of llzk::verif::ContractOp Operation.
void llzkVerif_ContractOpSetSymName(MlirOperation op, MlirAttribute attr)
Set SymName attribute of llzk::verif::ContractOp Operation.
MlirOperation llzkVerif_IncludeOpResolveCallable(MlirOperation inp)
Required by CallOpInterface.
Representation of an mlir::ValueRange
intptr_t size
Number of values in the range.