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

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

#include <Builders.h>

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

Public Member Functions

 ModuleBuilder (mlir::ModuleOp m)
mlir::Region & getBodyRegion ()
 Provide the module body for ModuleLikeBuilder's CRTP dispatch.
mlir::ModuleOp & getModule ()
 Get the associated module of this builder.
mlir::FailureOr< TemplateBuilder * > getTemplate (std::string_view templateName) const
mlir::FailureOr< ModuleBuilder * > getNestedModule (std::string_view moduleName) const
ModuleBuilder & insertTemplate (std::string_view templateName, mlir::Location loc, unsigned numParams=0)
ModuleBuilder & insertTemplate (std::string_view templateName, unsigned numParams=0)
ModuleBuilder & insertNestedModule (std::string_view moduleName, mlir::Location loc)
ModuleBuilder & insertNestedModule (std::string_view moduleName)
Public Member Functions inherited from llzk::ModuleLikeBuilder< ModuleBuilder >
mlir::Region & getBodyRegion ()
mlir::FailureOr< component::StructDefOp > getStruct (std::string_view structName) const
mlir::FailureOr< function::FuncDefOp > getComputeFn (std::string_view structName) const
mlir::FailureOr< function::FuncDefOp > getConstrainFn (std::string_view structName) const
mlir::FailureOr< function::FuncDefOp > getProductFn (std::string_view structName) const
mlir::FailureOr< function::FuncDefOp > getFreeFunc (std::string_view funcName) const
ModuleBuilder & insertEmptyStruct (std::string_view structName, mlir::Location loc)
ModuleBuilder & insertComputeOnlyStruct (std::string_view structName, mlir::Location structLoc, mlir::Location computeLoc)
ModuleBuilder & insertConstrainOnlyStruct (std::string_view structName, mlir::Location structLoc, mlir::Location constrainLoc)
ModuleBuilder & insertFullStruct (std::string_view structName, mlir::Location structLoc, mlir::Location computeLoc, mlir::Location constrainLoc)
ModuleBuilder & insertProductStruct (std::string_view structName, mlir::Location structLoc, mlir::Location productLoc)
ModuleBuilder & insertComputeFn (component::StructDefOp op, mlir::Location loc)
ModuleBuilder & insertConstrainFn (component::StructDefOp op, mlir::Location loc)
ModuleBuilder & insertProductFn (component::StructDefOp op, mlir::Location loc)
ModuleBuilder & insertComputeCall (component::StructDefOp caller, component::StructDefOp callee, mlir::Location callLoc)
 Only requirement for compute is the call itself.
ModuleBuilder & insertConstrainCall (component::StructDefOp caller, component::StructDefOp callee, mlir::Location callLoc, mlir::Location memberDefLoc)
 To call a constraint function, you must:
ModuleBuilder & insertFreeFunc (std::string_view funcName, ::mlir::FunctionType type, mlir::Location loc, llvm::function_ref< void(mlir::OpBuilder &)> fnBody=nullptr)
ModuleBuilder & insertFreeCall (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< ModuleBuilder >
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< ModuleBuilder >
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< ModuleBuilder >
std::unordered_map< std::string_view, function::FuncDefOp > freeFuncMap
std::unordered_map< std::string_view, component::StructDefOp > structMap
std::unordered_map< std::string_view, function::FuncDefOp > computeFnMap
std::unordered_map< std::string_view, function::FuncDefOp > constrainFnMap
std::unordered_map< std::string_view, function::FuncDefOp > productFnMap
Protected Attributes inherited from llzk::BaseBuilder
mlir::MLIRContext * context

Detailed Description

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

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 395 of file Builders.h.

Constructor & Destructor Documentation

◆ ModuleBuilder()

llzk::ModuleBuilder::ModuleBuilder ( mlir::ModuleOp m)
inline

Definition at line 424 of file Builders.h.

Member Function Documentation

◆ getBodyRegion()

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

Provide the module body for ModuleLikeBuilder's CRTP dispatch.

Definition at line 430 of file Builders.h.

◆ getModule()

mlir::ModuleOp & llzk::ModuleBuilder::getModule ( )
inline

Get the associated module of this builder.

Definition at line 433 of file Builders.h.

◆ getNestedModule()

mlir::FailureOr< ModuleBuilder * > llzk::ModuleBuilder::getNestedModule ( std::string_view moduleName) const
inline

Definition at line 443 of file Builders.h.

◆ getTemplate()

mlir::FailureOr< TemplateBuilder * > llzk::ModuleBuilder::getTemplate ( std::string_view templateName) const
inline

Definition at line 435 of file Builders.h.

◆ insertNestedModule() [1/2]

ModuleBuilder & llzk::ModuleBuilder::insertNestedModule ( std::string_view moduleName)
inline

Definition at line 460 of file Builders.h.

◆ insertNestedModule() [2/2]

ModuleBuilder & llzk::ModuleBuilder::insertNestedModule ( std::string_view moduleName,
mlir::Location loc )

◆ insertTemplate() [1/2]

ModuleBuilder & llzk::ModuleBuilder::insertTemplate ( std::string_view templateName,
mlir::Location loc,
unsigned numParams = 0 )

◆ insertTemplate() [2/2]

ModuleBuilder & llzk::ModuleBuilder::insertTemplate ( std::string_view templateName,
unsigned numParams = 0 )
inline

Definition at line 455 of file Builders.h.


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