LLZK 2.0.0
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.
Public Member Functions inherited from llzk::ModuleLikeBuilder< TemplateBuilder >
 ModuleLikeBuilder (mlir::MLIRContext *ctx)
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 300 of file Builders.h.

Constructor & Destructor Documentation

◆ TemplateBuilder()

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

Definition at line 304 of file Builders.h.

Member Function Documentation

◆ getBodyRegion()

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

Definition at line 308 of file Builders.h.

◆ getTemplate()

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

Get the associated template of this builder.

Definition at line 311 of file Builders.h.


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