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

Namespaces

namespace  detail
 Common interface for constant parameter-like symbol operations that can be defined within a TemplateOp.
namespace  impl

Classes

class  ApplyMapOp
class  ApplyMapOpAdaptor
class  ApplyMapOpGenericAdaptor
class  ConstReadOp
class  ConstReadOpAdaptor
class  ConstReadOpGenericAdaptor
struct  FlatteningPassOptions
class  PolymorphicDialect
 LLZK types and operations to support templated/parameterized structs. More...
class  StructSpecializationResolver
 Resolve concrete struct specializations referenced by poly.family metadata. More...
class  TemplateExprOp
class  TemplateExprOpAdaptor
class  TemplateExprOpGenericAdaptor
struct  TemplateMonomorphizationPassOptions
class  TemplateOp
class  TemplateOpAdaptor
class  TemplateOpGenericAdaptor
class  TemplateParamOp
class  TemplateParamOpAdaptor
class  TemplateParamOpGenericAdaptor
class  TemplateSymbolBindingOpInterface
class  TypeVarType
class  UnifiableCastOp
class  UnifiableCastOpAdaptor
class  UnifiableCastOpGenericAdaptor
struct  WildcardArraySpecializationPassOptions
class  YieldOp
class  YieldOpAdaptor
class  YieldOpGenericAdaptor

Concepts

concept  TemplateSymbolBindingOp

Enumerations

enum class  FlatteningCleanupMode : uint32_t {
  Unspecified = 0 , Disabled = 1 , Preimage = 2 , ConcreteAsRoot = 3 ,
  MainAsRoot = 4
}

Functions

bool isInTemplate (Operation *op)
FailureOr< TemplateOp > verifyInTemplate (Operation *op)
std::unique_ptr<::mlir::Pass > createConstraintFlatteningPass ()
std::unique_ptr<::mlir::Pass > createEmptyTemplateRemovalPass ()
std::unique_ptr<::mlir::Pass > createFlatteningPass ()
std::unique_ptr<::mlir::Pass > createFlatteningPass (FlatteningPassOptions options)
std::unique_ptr<::mlir::Pass > createTemplateMonomorphizationPass ()
std::unique_ptr<::mlir::Pass > createTemplateMonomorphizationPass (TemplateMonomorphizationPassOptions options)
std::unique_ptr<::mlir::Pass > createTypeVarInferencePass ()
std::unique_ptr<::mlir::Pass > createWildcardArraySpecializationPass ()
std::unique_ptr<::mlir::Pass > createWildcardArraySpecializationPass (WildcardArraySpecializationPassOptions options)
::llvm::StringRef stringifyFlatteningCleanupMode (FlatteningCleanupMode val)
::std::optional< FlatteningCleanupMode > symbolizeFlatteningCleanupMode (::llvm::StringRef str)
::std::optional< FlatteningCleanupMode > symbolizeFlatteningCleanupMode (uint32_t value)
constexpr unsigned getMaxEnumValForFlatteningCleanupMode ()
inline ::llvm::StringRef stringifyEnum (FlatteningCleanupMode enumValue)
template<typename EnumType>
::std::optional< EnumType > symbolizeEnum (::llvm::StringRef)
template<>
inline ::std::optional< FlatteningCleanupMode > symbolizeEnum< FlatteningCleanupMode > (::llvm::StringRef str)
bool isInTemplate (mlir::Operation *op)
 Return true iff the given Operation is nested somewhere within a TemplateOp.
mlir::FailureOr< TemplateOp > verifyInTemplate (mlir::Operation *op)
 If the given Operation is nested somewhere within a TemplateOp, return a success result containing that TemplateOp.
void registerConstraintFlatteningPass ()
void registerConstraintFlatteningPassPass ()
void registerEmptyTemplateRemovalPass ()
void registerEmptyTemplateRemovalPassPass ()
void registerFlatteningPass ()
void registerFlatteningPassPass ()
void registerTemplateMonomorphizationPass ()
void registerTemplateMonomorphizationPassPass ()
void registerTypeVarInferencePass ()
void registerTypeVarInferencePassPass ()
void registerWildcardArraySpecializationPass ()
void registerWildcardArraySpecializationPassPass ()
void registerTransformationPasses ()
bool hasNextStaticIteration (int64_t current, int64_t upper, int64_t step)
 Whether another signed iteration exists after current, for current < upper and a positive step.

Variables

constexpr llvm::StringLiteral TEMPLATE_NAME_PATTERN_ATTR = "poly.name_pattern"
 Metadata carried across transformation passes preserving the literal chunks of a partially-instantiated template's logical name.
constexpr llvm::StringLiteral SPECIALIZATION_ID_ATTR = "poly.specialization_id"
 Metadata on concrete struct clones and rolled affine family uses.
constexpr llvm::StringLiteral SPECIALIZATION_ORIGIN_ATTR = "poly.origin"
constexpr llvm::StringLiteral SPECIALIZATION_ARGUMENTS_ATTR = "poly.arguments"
constexpr llvm::StringLiteral FAMILY_ATTR = "poly.family"
constexpr llvm::StringLiteral FAMILY_SPECIALIZATIONS_ATTR = "poly.family_specializations"
constexpr llvm::StringLiteral FAMILY_INDICES_KEY = "indices"
constexpr llvm::StringLiteral FAMILY_SPECIALIZATION_KEY = "specialization"
constexpr llvm::StringLiteral FAMILY_TYPE_KEY = "type"
 The original affine-parameterized struct family, paired with element indices and a concrete specialization ID in each poly.family record.

Enumeration Type Documentation

◆ FlatteningCleanupMode

enum class llzk::polymorphic::FlatteningCleanupMode : uint32_t
strong
Enumerator
Unspecified 
Disabled 
Preimage 
ConcreteAsRoot 
MainAsRoot 

Definition at line 13 of file TransformationPassEnums.h.inc.

Function Documentation

◆ createConstraintFlatteningPass()

std::unique_ptr<::mlir::Pass > llzk::polymorphic::createConstraintFlatteningPass ( )

Definition at line 96 of file ConstraintFlatteningPass.cpp.

◆ createEmptyTemplateRemovalPass()

std::unique_ptr<::mlir::Pass > llzk::polymorphic::createEmptyTemplateRemovalPass ( )

Definition at line 183 of file EmptyTemplateRemovalPass.cpp.

◆ createFlatteningPass() [1/2]

std::unique_ptr<::mlir::Pass > llzk::polymorphic::createFlatteningPass ( )

Definition at line 305 of file FlatteningPass.cpp.

◆ createFlatteningPass() [2/2]

std::unique_ptr<::mlir::Pass > llzk::polymorphic::createFlatteningPass ( FlatteningPassOptions options)

Definition at line 309 of file FlatteningPass.cpp.

◆ createTemplateMonomorphizationPass() [1/2]

std::unique_ptr<::mlir::Pass > llzk::polymorphic::createTemplateMonomorphizationPass ( )

Definition at line 412 of file TemplateMonomorphization.cpp.

◆ createTemplateMonomorphizationPass() [2/2]

std::unique_ptr<::mlir::Pass > llzk::polymorphic::createTemplateMonomorphizationPass ( TemplateMonomorphizationPassOptions options)

Definition at line 416 of file TemplateMonomorphization.cpp.

◆ createTypeVarInferencePass()

std::unique_ptr<::mlir::Pass > llzk::polymorphic::createTypeVarInferencePass ( )

Definition at line 503 of file TypeVarInferencePass.cpp.

◆ createWildcardArraySpecializationPass() [1/2]

std::unique_ptr<::mlir::Pass > llzk::polymorphic::createWildcardArraySpecializationPass ( )

Definition at line 606 of file WildcardArraySpecializationPass.cpp.

◆ createWildcardArraySpecializationPass() [2/2]

std::unique_ptr<::mlir::Pass > llzk::polymorphic::createWildcardArraySpecializationPass ( WildcardArraySpecializationPassOptions options)

Definition at line 610 of file WildcardArraySpecializationPass.cpp.

◆ getMaxEnumValForFlatteningCleanupMode()

unsigned llzk::polymorphic::getMaxEnumValForFlatteningCleanupMode ( )
inlineconstexpr

Definition at line 24 of file TransformationPassEnums.h.inc.

◆ hasNextStaticIteration()

bool llzk::polymorphic::hasNextStaticIteration ( int64_t current,
int64_t upper,
int64_t step )
inline

Whether another signed iteration exists after current, for current < upper and a positive step.

Unsigned subtraction represents the full mathematical distance even when the signed difference would overflow. If another iteration exists, current + step is strictly below upper and cannot overflow.

Definition at line 19 of file StaticLoop.h.

◆ isInTemplate() [1/2]

bool llzk::polymorphic::isInTemplate ( mlir::Operation * op)

Return true iff the given Operation is nested somewhere within a TemplateOp.

◆ isInTemplate() [2/2]

bool llzk::polymorphic::isInTemplate ( Operation * op)

Definition at line 34 of file Ops.cpp.

◆ registerConstraintFlatteningPass()

void llzk::polymorphic::registerConstraintFlatteningPass ( )
inline

Definition at line 630 of file TransformationPasses.h.

◆ registerConstraintFlatteningPassPass()

void llzk::polymorphic::registerConstraintFlatteningPassPass ( )
inline

Definition at line 637 of file TransformationPasses.h.

◆ registerEmptyTemplateRemovalPass()

void llzk::polymorphic::registerEmptyTemplateRemovalPass ( )
inline

Definition at line 651 of file TransformationPasses.h.

◆ registerEmptyTemplateRemovalPassPass()

void llzk::polymorphic::registerEmptyTemplateRemovalPassPass ( )
inline

Definition at line 658 of file TransformationPasses.h.

◆ registerFlatteningPass()

void llzk::polymorphic::registerFlatteningPass ( )
inline

Definition at line 672 of file TransformationPasses.h.

◆ registerFlatteningPassPass()

void llzk::polymorphic::registerFlatteningPassPass ( )
inline

Definition at line 679 of file TransformationPasses.h.

◆ registerTemplateMonomorphizationPass()

void llzk::polymorphic::registerTemplateMonomorphizationPass ( )
inline

Definition at line 693 of file TransformationPasses.h.

◆ registerTemplateMonomorphizationPassPass()

void llzk::polymorphic::registerTemplateMonomorphizationPassPass ( )
inline

Definition at line 700 of file TransformationPasses.h.

◆ registerTransformationPasses()

void llzk::polymorphic::registerTransformationPasses ( )
inline

Definition at line 756 of file TransformationPasses.h.

◆ registerTypeVarInferencePass()

void llzk::polymorphic::registerTypeVarInferencePass ( )
inline

Definition at line 714 of file TransformationPasses.h.

◆ registerTypeVarInferencePassPass()

void llzk::polymorphic::registerTypeVarInferencePassPass ( )
inline

Definition at line 721 of file TransformationPasses.h.

◆ registerWildcardArraySpecializationPass()

void llzk::polymorphic::registerWildcardArraySpecializationPass ( )
inline

Definition at line 735 of file TransformationPasses.h.

◆ registerWildcardArraySpecializationPassPass()

void llzk::polymorphic::registerWildcardArraySpecializationPassPass ( )
inline

Definition at line 742 of file TransformationPasses.h.

◆ stringifyEnum()

inline ::llvm::StringRef llzk::polymorphic::stringifyEnum ( FlatteningCleanupMode enumValue)

Definition at line 29 of file TransformationPassEnums.h.inc.

◆ stringifyFlatteningCleanupMode()

llvm::StringRef llzk::polymorphic::stringifyFlatteningCleanupMode ( FlatteningCleanupMode val)

Definition at line 12 of file TransformationPassEnums.cpp.inc.

◆ symbolizeEnum()

template<typename EnumType>
::std::optional< EnumType > llzk::polymorphic::symbolizeEnum ( ::llvm::StringRef )

◆ symbolizeEnum< FlatteningCleanupMode >()

template<>
inline ::std::optional< FlatteningCleanupMode > llzk::polymorphic::symbolizeEnum< FlatteningCleanupMode > ( ::llvm::StringRef str)

Definition at line 34 of file TransformationPassEnums.h.inc.

◆ symbolizeFlatteningCleanupMode() [1/2]

std::optional< FlatteningCleanupMode > llzk::polymorphic::symbolizeFlatteningCleanupMode ( ::llvm::StringRef str)

Definition at line 23 of file TransformationPassEnums.cpp.inc.

◆ symbolizeFlatteningCleanupMode() [2/2]

std::optional< FlatteningCleanupMode > llzk::polymorphic::symbolizeFlatteningCleanupMode ( uint32_t value)

Definition at line 32 of file TransformationPassEnums.cpp.inc.

◆ verifyInTemplate() [1/2]

mlir::FailureOr< TemplateOp > llzk::polymorphic::verifyInTemplate ( mlir::Operation * op)

If the given Operation is nested somewhere within a TemplateOp, return a success result containing that TemplateOp.

Otherwise emit an error and return a failure result.

◆ verifyInTemplate() [2/2]

FailureOr< TemplateOp > llzk::polymorphic::verifyInTemplate ( Operation * op)

Definition at line 36 of file Ops.cpp.

Variable Documentation

◆ FAMILY_ATTR

llvm::StringLiteral llzk::polymorphic::FAMILY_ATTR = "poly.family"
inlineconstexpr

Definition at line 40 of file Ops.h.

◆ FAMILY_INDICES_KEY

llvm::StringLiteral llzk::polymorphic::FAMILY_INDICES_KEY = "indices"
inlineconstexpr

Definition at line 42 of file Ops.h.

◆ FAMILY_SPECIALIZATION_KEY

llvm::StringLiteral llzk::polymorphic::FAMILY_SPECIALIZATION_KEY = "specialization"
inlineconstexpr

Definition at line 43 of file Ops.h.

◆ FAMILY_SPECIALIZATIONS_ATTR

llvm::StringLiteral llzk::polymorphic::FAMILY_SPECIALIZATIONS_ATTR = "poly.family_specializations"
inlineconstexpr

Definition at line 41 of file Ops.h.

◆ FAMILY_TYPE_KEY

llvm::StringLiteral llzk::polymorphic::FAMILY_TYPE_KEY = "type"
inlineconstexpr

The original affine-parameterized struct family, paired with element indices and a concrete specialization ID in each poly.family record.

Definition at line 46 of file Ops.h.

◆ SPECIALIZATION_ARGUMENTS_ATTR

llvm::StringLiteral llzk::polymorphic::SPECIALIZATION_ARGUMENTS_ATTR = "poly.arguments"
inlineconstexpr

Definition at line 39 of file Ops.h.

◆ SPECIALIZATION_ID_ATTR

llvm::StringLiteral llzk::polymorphic::SPECIALIZATION_ID_ATTR = "poly.specialization_id"
inlineconstexpr

Metadata on concrete struct clones and rolled affine family uses.

Definition at line 37 of file Ops.h.

◆ SPECIALIZATION_ORIGIN_ATTR

llvm::StringLiteral llzk::polymorphic::SPECIALIZATION_ORIGIN_ATTR = "poly.origin"
inlineconstexpr

Definition at line 38 of file Ops.h.

◆ TEMPLATE_NAME_PATTERN_ATTR

llvm::StringLiteral llzk::polymorphic::TEMPLATE_NAME_PATTERN_ATTR = "poly.name_pattern"
inlineconstexpr

Metadata carried across transformation passes preserving the literal chunks of a partially-instantiated template's logical name.

When present, the attribute has P+1 StringAttr chunks around the P current template parameters. The gap between chunks i and i+1 represents current parameter i. The chunks are literal data; later transforms never recover semantic positions from the physical symbol name.

Definition at line 34 of file Ops.h.