LLZK 2.1.1
An open-source IR for Zero Knowledge (ZK) circuits
Loading...
Searching...
No Matches
llzk::TemplateBuilder Class Reference

Builds out a LLZK-compliant template and provides utilities for populating that template. More...

#include <Builders.h>

Inheritance diagram for llzk::TemplateBuilder:
[legend]
Collaboration diagram for llzk::TemplateBuilder:
[legend]

Public Member Functions

 TemplateBuilder (polymorphic::TemplateOp t)
mlir::Region & getBodyRegion ()
polymorphic::TemplateOpgetTemplate ()
 Get the associated template of this builder.
mlir::FailureOr< polymorphic::TemplateParamOpgetParam (std::string_view name)
mlir::FailureOr< polymorphic::TemplateExprOpgetExpr (std::string_view name)
TemplateBuilderinsertParam (std::string_view name, mlir::Location loc, mlir::TypeAttr type={})
TemplateBuilderinsertParam (std::string_view name)
TemplateBuilderinsertExpr (std::string_view name, mlir::Location loc)
TemplateBuilderinsertExpr (std::string_view name)
Public Member Functions inherited from llzk::ModuleLikeBuilder< TemplateBuilder >
mlir::Region & getBodyRegion ()
mlir::FailureOr< component::StructDefOpgetStruct (std::string_view structName) const
mlir::FailureOr< function::FuncDefOpgetComputeFn (std::string_view structName) const
mlir::FailureOr< function::FuncDefOpgetConstrainFn (std::string_view structName) const
mlir::FailureOr< function::FuncDefOpgetProductFn (std::string_view structName) const
mlir::FailureOr< function::FuncDefOpgetFreeFunc (std::string_view funcName) const
TemplateBuilderinsertEmptyStruct (std::string_view structName, mlir::Location loc)
TemplateBuilderinsertComputeOnlyStruct (std::string_view structName, mlir::Location structLoc, mlir::Location computeLoc)
TemplateBuilderinsertConstrainOnlyStruct (std::string_view structName, mlir::Location structLoc, mlir::Location constrainLoc)
TemplateBuilderinsertFullStruct (std::string_view structName, mlir::Location structLoc, mlir::Location computeLoc, mlir::Location constrainLoc)
TemplateBuilderinsertProductStruct (std::string_view structName, mlir::Location structLoc, mlir::Location productLoc)
TemplateBuilderinsertComputeFn (component::StructDefOp op, mlir::Location loc)
TemplateBuilderinsertConstrainFn (component::StructDefOp op, mlir::Location loc)
TemplateBuilderinsertProductFn (component::StructDefOp op, mlir::Location loc)
TemplateBuilderinsertComputeCall (component::StructDefOp caller, component::StructDefOp callee, mlir::Location callLoc)
 Only requirement for compute is the call itself.
TemplateBuilderinsertConstrainCall (component::StructDefOp caller, component::StructDefOp callee, mlir::Location callLoc, mlir::Location memberDefLoc)
 To call a constraint function, you must:
TemplateBuilderinsertFreeFunc (std::string_view funcName, ::mlir::FunctionType type, mlir::Location loc)
TemplateBuilderinsertFreeCall (function::FuncDefOp caller, std::string_view callee, mlir::Location callLoc)
Public Member Functions inherited from llzk::BaseBuilder
 BaseBuilder (mlir::MLIRContext *ctx)
mlir::Location getUnknownLoc ()

Additional Inherited Members

Static Public Member Functions inherited from llzk::ModuleLikeBuilder< TemplateBuilder >
static function::FuncDefOp buildComputeFn (component::StructDefOp op, mlir::Location loc)
 compute returns the type of the struct that defines it.
static function::FuncDefOp buildConstrainFn (component::StructDefOp op, mlir::Location loc)
 constrain accepts the struct type as the first argument.
static function::FuncDefOp buildProductFn (component::StructDefOp op, mlir::Location loc)
 product returns the type of the struct that defines it.
Protected Member Functions inherited from llzk::ModuleLikeBuilder< TemplateBuilder >
void ensureNoSuchFreeFunc (std::string_view funcName)
 Ensure that a global function with the given funcName has not been added, reporting a fatal error otherwise.
void ensureFreeFnExists (std::string_view funcName)
 Ensure that a global function with the given funcName has been added, reporting a fatal error otherwise.
void ensureNoSuchStruct (std::string_view structName)
 Ensure that a struct with the given structName has not been added, reporting a fatal error otherwise.
void ensureStructExists (std::string_view structName)
 Ensure that a struct with the given structName exists, reporting a fatal error otherwise.
void ensureNoSuchComputeFn (std::string_view structName)
 Ensure that the given struct does not have a compute function, reporting a fatal error otherwise.
void ensureComputeFnExists (std::string_view structName)
 Ensure that the given struct has a compute function, reporting a fatal error otherwise.
void ensureNoSuchConstrainFn (std::string_view structName)
 Ensure that the given struct does not have a constrain function, reporting a fatal error otherwise.
void ensureConstrainFnExists (std::string_view structName)
 Ensure that the given struct has a constrain function, reporting a fatal error otherwise.
void ensureNoSuchProductFn (std::string_view structName)
 Ensure that the given struct does not have a product function, reporting a fatal error otherwise.
void ensureProductFnExists (std::string_view structName)
 Ensure that the given struct has a product function, reporting a fatal error otherwise.
Protected Attributes inherited from llzk::ModuleLikeBuilder< TemplateBuilder >
std::unordered_map< std::string_view, function::FuncDefOpfreeFuncMap
std::unordered_map< std::string_view, component::StructDefOpstructMap
std::unordered_map< std::string_view, function::FuncDefOpcomputeFnMap
std::unordered_map< std::string_view, function::FuncDefOpconstrainFnMap
std::unordered_map< std::string_view, function::FuncDefOpproductFnMap
Protected Attributes inherited from llzk::BaseBuilder
mlir::MLIRContext * context

Detailed Description

Builds out a LLZK-compliant template and provides utilities for populating that template.

This class is designed to be used by front-ends looking to generate LLZK IR programmatically and is also a useful unit testing facility.

Definition at line 303 of file Builders.h.

Constructor & Destructor Documentation

◆ TemplateBuilder()

llzk::TemplateBuilder::TemplateBuilder ( polymorphic::TemplateOp t)
inline

Definition at line 307 of file Builders.h.

Member Function Documentation

◆ getBodyRegion()

mlir::Region & llzk::TemplateBuilder::getBodyRegion ( )
inline

Definition at line 311 of file Builders.h.

◆ getExpr()

mlir::FailureOr< polymorphic::TemplateExprOp > llzk::TemplateBuilder::getExpr ( std::string_view name)
inline

Definition at line 324 of file Builders.h.

◆ getParam()

mlir::FailureOr< polymorphic::TemplateParamOp > llzk::TemplateBuilder::getParam ( std::string_view name)
inline

Definition at line 316 of file Builders.h.

◆ getTemplate()

polymorphic::TemplateOp & llzk::TemplateBuilder::getTemplate ( )
inline

Get the associated template of this builder.

Definition at line 314 of file Builders.h.

◆ insertExpr() [1/2]

TemplateBuilder & llzk::TemplateBuilder::insertExpr ( std::string_view name)
inline

Definition at line 379 of file Builders.h.

◆ insertExpr() [2/2]

TemplateBuilder & llzk::TemplateBuilder::insertExpr ( std::string_view name,
mlir::Location loc )
inline

Definition at line 358 of file Builders.h.

◆ insertParam() [1/2]

TemplateBuilder & llzk::TemplateBuilder::insertParam ( std::string_view name)
inline

Definition at line 354 of file Builders.h.

◆ insertParam() [2/2]

TemplateBuilder & llzk::TemplateBuilder::insertParam ( std::string_view name,
mlir::Location loc,
mlir::TypeAttr type = {} )
inline

Definition at line 333 of file Builders.h.


The documentation for this class was generated from the following file: