|
LLZK 3.0.0
An open-source IR for Zero Knowledge (ZK) circuits
|
Namespaces | |
| namespace | affineMapHelpers |
| Group together all implementation related to AffineMap type parameters. | |
| namespace | alignmentHelpers |
| namespace | array |
| namespace | boolean |
| namespace | cast |
| namespace | component |
| namespace | constrain |
| namespace | dataflow |
| namespace | debug |
| namespace | detail |
| Provides the necessary information to the RemoveUnusedDiscardableAllocations pass about operations that load or store values from the result of an allocator op marked with the MemAlloc<DiscardableAllocationResource> memory effect so unused allocators and stores can be removed. | |
| namespace | felt |
| namespace | function |
| namespace | global |
| namespace | impl |
| namespace | include |
| namespace | mlir_patch |
| Replace mlir::registerTransformsPasses() to register a custom remove-dead-values pass because MLIR version 23.1.0 has a bug where the pass tracks poison values that it created during its current invocation only and may end up leaving behind dead poison values. | |
| namespace | pod |
| namespace | polymorphic |
| namespace | ram |
| namespace | smt_info |
| namespace | string |
| namespace | verif |
| namespace | witgen |
Classes | |
| struct | AuxAssignment |
| class | BaseBuilder |
| class | BinaryBuffer |
| Accumulate fixed-width integers and field elements in little-endian order. More... | |
| class | BuildShortTypeString |
| Note: If any symbol refs in an input Type/Attribute use any of the special characters that this class generates, they are not escaped. More... | |
| class | CallGraph |
| This is a port of mlir::CallGraph that has been adapted to use the custom symbol lookup helpers (see SymbolHelper.h). More... | |
| class | CallGraphAnalysis |
An analysis wrapper to compute the CallGraph for a Module. More... | |
| class | CallGraphNode |
| This is a simple port of the mlir::CallGraphNode with llzk::CallGraph as a friend class, for mlir::CallGraphNode has a private constructor and can only be constructed by mlir::CallGraph. More... | |
| struct | CallGraphPrinterPassOptions |
| class | CallGraphReachabilityAnalysis |
| Lazily-constructed reachability analysis. More... | |
| struct | CallGraphSCCsPrinterPassOptions |
| struct | CDGAnalysisContext |
| Parameters and shared objects to pass to child analyses. More... | |
| struct | CommutativeMatcher |
| This matcher will either match on lhs op rhs or rhs op lhs. More... | |
| struct | ComputeConstrainToProductPassOptions |
| struct | ConstantCapture |
| Matches and optionally captures a felt constant. More... | |
| class | ConstraintDependencyGraph |
| A dependency graph of constraints enforced by an LLZK struct. More... | |
| class | ConstraintDependencyGraphModuleAnalysis |
| A module-level analysis for constructing ConstraintDependencyGraph objects for all structs in the given LLZK module. More... | |
| struct | ConstraintDependencyGraphPrinterPassOptions |
| class | ConstraintDependencyGraphStructAnalysis |
| An analysis wrapper around the ConstraintDependencyGraph for a given struct. More... | |
| class | DiscardableAllocationAccessorOpInterface |
| struct | DiscardableAllocationResource |
| Memory resource for allocations that may be erased when no stored value is ever read. More... | |
| class | DynamicAPIntValue |
| Attribute storage adapter providing numeric hashing for DynamicAPInt. More... | |
| class | ExpressionValue |
| Tracks a solver expression and an interval range for that expression. More... | |
| class | Field |
| Information about the prime finite field used for the interval analysis. More... | |
| struct | FileLineColLocComparator |
| class | filtered_raw_ostream |
| Wrapper for llvm::raw_ostream that filters out certain characters selected by a function. More... | |
| struct | FullPolyLoweringConfig |
| Pure C++ configuration for the full polynomial lowering pipeline. More... | |
| struct | FullPolyLoweringOptions |
| CLI Option configuration for the full polynomial lowering pipeline. More... | |
| struct | FullStructInliningConfig |
| Pure C++ configuration for the full struct inlining pipeline. More... | |
| struct | FullStructInliningOptions |
| CLI Option configuration for the full struct inlining pipeline. More... | |
| class | FunctionTypeConverter |
| General helper for converting a FuncDefOp by changing its input and/or result types and the associated attributes for those types. More... | |
| class | FuzzySet |
| Represents a set where the membership predicate can take three values: true, false, and "unknown". More... | |
| class | GlobalSourceMgr |
| class | InFlightDiagnosticWrapper |
| Wrapper around InFlightDiagnostic that can either be a regular InFlightDiagnostic or a special version that asserts false after reporting the diagnostic. More... | |
| class | Interval |
| Intervals over a finite field. More... | |
| struct | IntervalAnalysisContext |
| Parameters and shared objects to pass to child analyses. More... | |
| class | IntervalAnalysisLattice |
| class | IntervalAnalysisLatticeValue |
| struct | IntervalAnalysisPrinterPassOptions |
| class | IntervalDataFlowAnalysis |
| class | KnownTargetVerifier |
| Shared signature and template-instantiation checks for a resolved call-like target. More... | |
| class | LightweightSignalEquivalenceAnalysis |
| class | LLZKCallLikeOpInterface |
| class | LLZKDialect |
| Common LLZK attributes. More... | |
| struct | LLZKDialectBytecodeInterface |
| This implements the bytecode interface for the LLZK dialect. More... | |
| struct | LLZKDialectVersion |
| struct | LLZKLayout |
| Logical felt-signal paths in a monomorphized LLZK circuit. More... | |
| class | LLZKSymbolTableImplTrait |
| See LLZKSymbolTable ODS documentation for details. More... | |
| struct | LLZKTypeSwitch |
| Template pattern for performing some operation by cases based on a given LLZK type. More... | |
| struct | LocationComparator |
| class | MemberOverwriteAnalysis |
| class | MemberOverwriteLattice |
| class | ModuleAnalysis |
| An analysis wrapper that runs the given StructAnalysisTy struct analysis over all of the struct contained within the module. More... | |
| class | ModuleBuilder |
| Builds out a LLZK-compliant module and provides utilities for populating that module. More... | |
| class | ModuleIntervalAnalysis |
| class | ModuleLikeBuilder |
| struct | NamedOpLocationLess |
| Order named operations by source location, using the symbol name to break ties or when source locations cannot be compared. More... | |
| struct | NestedPassOptions |
| Stores textual options for a constituent pass after validating them against that pass' native MLIR option parser. More... | |
| struct | NestedPipelineOptions |
| Stores textual options for a constituent pipeline after validating them against that pipeline's native MLIR option parser. More... | |
| struct | NoContext |
| An empty struct that is used for convenience for analyses that do not require any context. More... | |
| class | NonDetOp |
| class | NonDetOpAdaptor |
| class | NonDetOpGenericAdaptor |
| struct | OpClassesWithStructTypes |
| Lists all LLZK op classes that may contain a StructType in their results or attributes. More... | |
| struct | OpHash |
| struct | OpLocationLess |
| struct | PolyLoweringPassOptions |
| class | PredecessorAnalysis |
| class | PredecessorLattice |
| struct | PredecessorPrinterPassOptions |
| class | ProductAligner |
| struct | RefValueCapture |
| Matches and optionally captures a SourceRef base value, which is either a member read or a block argument (i.e., an input to a @constrain or @compute function). More... | |
| struct | RemoveUnusedDiscardableAllocationsPassOptions |
| class | SourceRef |
| A reference to a "source", which is the base value from which other SSA values are derived. More... | |
| class | SourceRefAnalysis |
| The dataflow analysis that computes the set of references that LLZK operations use and produce. More... | |
| class | SourceRefIndex |
| Defines an index into an LLZK object. More... | |
| class | SourceRefLattice |
| Sparse SSA-value lattice for SourceRef propagation. More... | |
| class | SourceRefLatticeValue |
| A value at a given point of the SourceRefLattice. More... | |
| class | SourceRefSet |
| struct | SpecializedMem2Reg |
A variant of the MLIR mem2reg pass that only promotes memory slots belonging to allocators of type AllocOpTy (which must implement mlir::PromotableAllocationOpInterface). More... | |
| struct | SpecializedSROA |
A variant of the MLIR sroa pass that only destructures memory slots belonging to allocators of type AllocOpTy (which must implement mlir::DestructurableAllocationOpInterface). More... | |
| class | SplitAggregateInMemberRefOp |
| Common implementation for handling MemberWriteOp and MemberReadOp while destructuring an aggregate type (e.g., ArrayType or PodType) stored in a struct member. More... | |
| struct | SplitFunctionNameInfo |
| Cached function arg/result names and split suffixes used while rewriting a function signature. More... | |
| class | StructAnalysis |
| This is the base class for a dataflow analysis designed to run on a single struct (i.e., a single component). More... | |
| struct | StructInliningFlatteningOptions |
| Typed nested options for the flattening pass when used inside the full struct-inlining and full poly-lowering pipelines. More... | |
| class | StructIntervalAnalysis |
| class | StructIntervals |
| class | SymbolDefTree |
| Builds a tree structure representing the symbol table structure. More... | |
| class | SymbolDefTreeNode |
| struct | SymbolDefTreePrinterPassOptions |
| class | SymbolLookupResult |
| class | SymbolLookupResultUntyped |
| class | SymbolUseGraph |
| Builds a graph structure representing the relationships between symbols and their uses. More... | |
| class | SymbolUseGraphNode |
| struct | SymbolUseGraphPrinterPassOptions |
| class | TemplateBuilder |
| Builds out a LLZK-compliant template and provides utilities for populating that template. More... | |
| class | UnreducedInterval |
| An inclusive interval [a, b] where a and b are arbitrary integers not necessarily bound to a given field. More... | |
| struct | UnusedDeclarationEliminationPassOptions |
| class | ValueCopyDialectInterface |
| Dialect hook for materializing independent storage for mutable value types. More... | |
| struct | VerifySizesForMultiAffineOps |
| Produces errors if there is an inconsistency in the various attributes/values that are used to support affine map instantiation in the Op marked with this Trait. More... | |
| class | Within |
Concepts | |
| concept | ContextType |
| concept | NamedOpComparable |
| concept | OpComparable |
| concept | OpHashable |
| concept | StructAnalysisType |
| Any type that is a subclass of StructAnalysis and provided a Context that matches ContextType. | |
Typedefs | |
| using | SourceRefRemappings = std::vector<std::pair<SourceRef, SourceRefLatticeValue>> |
| using | Overwrite = std::pair<component::MemberWriteOp, component::MemberWriteOp> |
| using | TranslationMap = std::unordered_map<SourceRef, SourceRefLatticeValue, SourceRef::Hash> |
| using | EmitErrorFn = llvm::function_ref<InFlightDiagnosticWrapper()> |
| Callback to produce an error diagnostic. | |
| using | OwningEmitErrorFn = std::function<InFlightDiagnosticWrapper()> |
| This type is required in cases like the functions below to take ownership of the lambda so it is not destroyed upon return from the function. | |
| using | FieldRef = std::reference_wrapper<const Field> |
| Typealias for a stable reference to a known Field. | |
| using | FieldSet = llvm::SmallSet<FieldRef, 2> |
| Typealias for a set of Fields. | |
| using | ManagedResources |
| using | UnificationMap = mlir::DenseMap<std::pair<mlir::SymbolRefAttr, Side>, mlir::Attribute> |
| Optional result from type unifications. | |
Enumerations | |
| enum class | OutputStream : uint32_t { Outs = 1 , Errs = 2 , Dbgs = 3 } |
| enum class | AttrConcreteness : std::uint8_t { NonConcrete , Concrete , Wildcard } |
| Concreteness classification for an argument to a parameterized struct type. More... | |
| enum class | Side : std::uint8_t { LHS , RHS } |
Functions | |
| llvm::raw_ostream & | toStream (OutputStream val) |
| std::unique_ptr<::mlir::Pass > | createCallGraphPrinterPass () |
| std::unique_ptr<::mlir::Pass > | createCallGraphPrinterPass (CallGraphPrinterPassOptions options) |
| std::unique_ptr<::mlir::Pass > | createCallGraphSCCsPrinterPass () |
| std::unique_ptr<::mlir::Pass > | createCallGraphSCCsPrinterPass (CallGraphSCCsPrinterPassOptions options) |
| std::unique_ptr<::mlir::Pass > | createConstraintDependencyGraphPrinterPass () |
| std::unique_ptr<::mlir::Pass > | createConstraintDependencyGraphPrinterPass (ConstraintDependencyGraphPrinterPassOptions options) |
| llvm::SMTExprRef | createFieldInverseExpr (const llvm::SMTSolverRef &solver, Operation *op, const ExpressionValue &val, StringRef suffix="") |
| ExpressionValue | boolToFelt (const llvm::SMTSolverRef &solver, const ExpressionValue &expr, unsigned bitwidth) |
| ExpressionValue | selectValue (const llvm::SMTSolverRef &solver, const ExpressionValue &cond, const ExpressionValue &trueVal, const ExpressionValue &falseVal) |
| ExpressionValue | intersection (const llvm::SMTSolverRef &solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
| ExpressionValue | add (const llvm::SMTSolverRef &solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
| ExpressionValue | sub (const llvm::SMTSolverRef &solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
| ExpressionValue | mul (const llvm::SMTSolverRef &solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
| ExpressionValue | div (const llvm::SMTSolverRef &solver, Operation *op, const ExpressionValue &lhs, const ExpressionValue &rhs) |
| ExpressionValue | uintDiv (const llvm::SMTSolverRef &solver, Operation *op, const ExpressionValue &lhs, const ExpressionValue &rhs) |
| ExpressionValue | sintDiv (const llvm::SMTSolverRef &solver, Operation *op, const ExpressionValue &lhs, const ExpressionValue &rhs) |
| ExpressionValue | mod (const llvm::SMTSolverRef &solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
| ExpressionValue | sintMod (const llvm::SMTSolverRef &solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
| ExpressionValue | bitAnd (const llvm::SMTSolverRef &solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
| ExpressionValue | bitOr (const llvm::SMTSolverRef &solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
| ExpressionValue | bitXor (const llvm::SMTSolverRef &solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
| ExpressionValue | shiftLeft (const llvm::SMTSolverRef &solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
| ExpressionValue | shiftRight (const llvm::SMTSolverRef &solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
| ExpressionValue | cmp (const llvm::SMTSolverRef &solver, boolean::CmpOp op, const ExpressionValue &lhs, const ExpressionValue &rhs) |
| ExpressionValue | boolAnd (const llvm::SMTSolverRef &solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
| ExpressionValue | boolOr (const llvm::SMTSolverRef &solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
| ExpressionValue | boolXor (const llvm::SMTSolverRef &solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
| ExpressionValue | neg (const llvm::SMTSolverRef &solver, const ExpressionValue &val) |
| ExpressionValue | notOp (const llvm::SMTSolverRef &solver, const ExpressionValue &val) |
| ExpressionValue | boolNot (const llvm::SMTSolverRef &solver, const ExpressionValue &val) |
| ExpressionValue | fallbackUnaryOp (const llvm::SMTSolverRef &solver, Operation *op, const ExpressionValue &val) |
| std::unique_ptr<::mlir::Pass > | createIntervalAnalysisPrinterPass () |
| std::unique_ptr<::mlir::Pass > | createIntervalAnalysisPrinterPass (IntervalAnalysisPrinterPassOptions options) |
| UnreducedInterval | operator+ (const UnreducedInterval &lhs, const UnreducedInterval &rhs) |
| UnreducedInterval | operator- (const UnreducedInterval &lhs, const UnreducedInterval &rhs) |
| UnreducedInterval | operator* (const UnreducedInterval &lhs, const UnreducedInterval &rhs) |
| std::strong_ordering | operator<=> (const UnreducedInterval &lhs, const UnreducedInterval &rhs) |
| const Field & | checkFields (const Interval &lhs, const Interval &rhs) |
| Interval | operator+ (const Interval &lhs, const Interval &rhs) |
| Interval | operator- (const Interval &lhs, const Interval &rhs) |
| Interval | operator* (const Interval &lhs, const Interval &rhs) |
| FailureOr< Interval > | feltDiv (const Interval &lhs, const Interval &rhs) |
| Computes finite-field division by multiplying the dividend by the multiplicative inverse of the divisor. | |
| FailureOr< Interval > | unsignedIntDiv (const Interval &lhs, const Interval &rhs) |
| Computes unsigned integer division with possibly non-Degenerate divisors. | |
| FailureOr< Interval > | signedIntDiv (const Interval &lhs, const Interval &rhs) |
| Computes signed integer division with possibly non-Degenerate divisors. | |
| Interval | signedMod (const Interval &lhs, const Interval &rhs) |
| Computes signed integer remainder with possibly non-Degenerate divisors. | |
| Interval | operator% (const Interval &lhs, const Interval &rhs) |
| Interval | operator& (const Interval &lhs, const Interval &rhs) |
| Interval | operator| (const Interval &lhs, const Interval &rhs) |
| Interval | operator^ (const Interval &lhs, const Interval &rhs) |
| Interval | operator<< (const Interval &lhs, const Interval &rhs) |
| Interval | operator>> (const Interval &lhs, const Interval &rhs) |
| Interval | boolAnd (const Interval &lhs, const Interval &rhs) |
| Interval | boolOr (const Interval &lhs, const Interval &rhs) |
| Interval | boolXor (const Interval &lhs, const Interval &rhs) |
| Interval | boolNot (const Interval &iv) |
| Value | replaceReadWithWrite (Value v) |
| llvm::raw_ostream & | operator<< (llvm::raw_ostream &os, const MemberOverwriteLattice &lat) |
| llvm::FailureOr< std::pair< llvm::SetVector< Overwrite >, FuzzySet > > | analyzeStruct (component::StructDefOp structDef) |
| std::unique_ptr<::mlir::Pass > | createPredecessorPrinterPass () |
| std::unique_ptr<::mlir::Pass > | createPredecessorPrinterPass (PredecessorPrinterPassOptions options) |
| raw_ostream & | printRegionless (raw_ostream &os, Operation *op, bool withParent=false) |
| Prints op without region. | |
| SymbolLookupResult< StructDefOp > | getStructDef (SymbolTableCollection &tables, ModuleOp mod, StructType ty) |
| Lookup a StructDefOp from a given StructType. | |
| std::vector< SourceRef > | getAllChildren (SymbolTableCollection &, ModuleOp, ArrayType arrayTy, const SourceRef &root) |
| std::vector< SourceRef > | getAllChildren (SymbolTableCollection &tables, ModuleOp mod, SymbolLookupResult< StructDefOp > structDefRes, const SourceRef &root) |
| std::vector< SourceRef > | getAllChildren (pod::PodType podTy, const SourceRef &root) |
| raw_ostream & | operator<< (raw_ostream &os, const SourceRef &rhs) |
| raw_ostream & | operator<< (raw_ostream &os, const SourceRefSet &rhs) |
| mlir::raw_ostream & | operator<< (mlir::raw_ostream &os, const SourceRefLatticeValue &v) |
| std::unique_ptr<::mlir::Pass > | createSymbolDefTreePrinterPass () |
| std::unique_ptr<::mlir::Pass > | createSymbolDefTreePrinterPass (SymbolDefTreePrinterPassOptions options) |
| std::unique_ptr<::mlir::Pass > | createSymbolUseGraphPrinterPass () |
| std::unique_ptr<::mlir::Pass > | createSymbolUseGraphPrinterPass (SymbolUseGraphPrinterPassOptions options) |
| void | registerDialects (mlir::DialectRegistry ®istry) |
Register core LLZK dialects, the MLIR arith, scf, and smt dialects, and verification extensions in registry. | |
| void | registerPasses (mlir::DialectRegistry ®istry) |
| Register LLZK analysis, validation, and transformation passes and pipelines, SMT conversion passes, and MLIR transformation passes in the global pass registry. | |
| void | printAttrs (AsmPrinter &printer, ArrayRef< Attribute > attrs, const StringRef &separator) |
| FailureOr< StructType > | getTypeFromLlzkMainAttr (ModuleOp op, Attribute attr) |
| OwningOpRef< ModuleOp > | createLLZKModule (MLIRContext *, Location loc) |
| void | addLangAttrForLLZKDialect (ModuleOp mod) |
| bool | requiresValueCopy (Type type) |
| bool | canMaterializeValueCopy (Type type) |
| std::string | getValueCopyFailureReason (Type type) |
| FailureOr< Value > | materializeValueCopy (OpBuilder &builder, Location loc, Value source) |
| std::unique_ptr<::mlir::Pass > | createComputeConstrainToProductPass () |
| std::unique_ptr<::mlir::Pass > | createComputeConstrainToProductPass (ComputeConstrainToProductPassOptions options) |
| std::unique_ptr<::mlir::Pass > | createEnforceNoMemberOverwritePass () |
| std::unique_ptr<::mlir::Pass > | createFuseProductControlFlowPass () |
| std::unique_ptr<::mlir::Pass > | createInlineFreeFunctionsPass () |
| void | registerInliningExtensions (DialectRegistry ®istry) |
| Value | rebuildExprInCompute (Value val, FuncDefOp computeFunc, OpBuilder &builder, DenseMap< Value, Value > &memo) |
| LogicalResult | checkForAuxMemberConflicts (StructDefOp structDef, StringRef prefix) |
| LogicalResult | checkFuncBodyIsStraightLine (FuncDefOp func, StringRef passName) |
| void | replaceSubsequentUsesWith (Value oldVal, Value newVal, Operation *afterOp) |
| MemberDefOp | addAuxMember (StructDefOp structDef, StringRef name, Type type) |
| unsigned | getFeltDegree (Value val, DenseMap< Value, unsigned > &memo) |
| std::unique_ptr<::mlir::Pass > | createPolyLoweringPass () |
| std::unique_ptr<::mlir::Pass > | createPolyLoweringPass (PolyLoweringPassOptions options) |
| std::unique_ptr<::mlir::Pass > | createRedundantOperationEliminationPass () |
| std::unique_ptr<::mlir::Pass > | createRedundantReadAndWriteEliminationPass () |
| std::unique_ptr<::mlir::Pass > | createRemoveUnusedDiscardableAllocationsPass () |
| std::unique_ptr<::mlir::Pass > | createRemoveUnusedDiscardableAllocationsPass (RemoveUnusedDiscardableAllocationsPassOptions options) |
| void | buildRemoveUnnecessaryOpsPipeline (mlir::OpPassManager &pm) |
| void | buildRemoveUnnecessaryOpsAndDefsPipeline (mlir::OpPassManager &pm) |
| void | buildProductProgramPipeline (OpPassManager &pm) |
| void | buildFullStructInliningPipeline (OpPassManager &pm, const FullStructInliningConfig &cfg) |
| void | buildFullInliningPipeline (OpPassManager &pm, const FullStructInliningConfig &cfg) |
| void | buildFullPolyLoweringPipeline (OpPassManager &pm, const FullPolyLoweringConfig &cfg) |
| void | buildConstraintFlatteningPipeline (OpPassManager &pm) |
| void | registerTransformationPassPipelines () |
| std::unique_ptr<::mlir::Pass > | createUnusedDeclarationEliminationPass () |
| std::unique_ptr<::mlir::Pass > | createUnusedDeclarationEliminationPass (UnusedDeclarationEliminationPassOptions options) |
| std::unique_ptr<::mlir::Pass > | createWhileToForPass () |
| DynamicAPInt | toSignedDynamicAPInt (ArrayRef< uint64_t > parts) |
| Expected< DynamicAPInt > | parseDynamicAPInt (StringRef str) |
| hash_code | hashDynamicAPInt (const DynamicAPInt &value) |
| Expected< APInt > | checkedToAPInt (const DynamicAPInt &value, unsigned bitWidth, bool isSigned) |
| Expected< int64_t > | checkedToInt64 (const DynamicAPInt &value) |
| Expected< uint64_t > | checkedToUInt64 (const DynamicAPInt &value) |
| Expected< size_t > | checkedToSize (const DynamicAPInt &value, const Twine &context) |
| DynamicAPInt | operator& (const DynamicAPInt &lhs, const DynamicAPInt &rhs) |
| DynamicAPInt | operator| (const DynamicAPInt &lhs, const DynamicAPInt &rhs) |
| DynamicAPInt | operator^ (const DynamicAPInt &lhs, const DynamicAPInt &rhs) |
| DynamicAPInt | operator<< (const DynamicAPInt &lhs, const DynamicAPInt &rhs) |
| DynamicAPInt | operator<< (const DynamicAPInt &lhs, int64_t rhs) |
| DynamicAPInt | operator>> (const DynamicAPInt &lhs, const DynamicAPInt &rhs) |
| DynamicAPInt | operator>> (const DynamicAPInt &lhs, int64_t rhs) |
| DynamicAPInt | toDynamicAPInt (StringRef str) |
| DynamicAPInt | toDynamicAPInt (const APSInt &i) |
| DynamicAPInt | toDynamicAPInt (const APInt &i) |
| APSInt | toAPSInt (const DynamicAPInt &i) |
| DynamicAPInt | modExp (const DynamicAPInt &base, const DynamicAPInt &exp, const DynamicAPInt &mod) |
| DynamicAPInt | modInversePrime (const DynamicAPInt &f, const DynamicAPInt &p) |
| LogicalResult | addSpecifiedFields (ModuleOp modOp) |
| void | eraseEmptyNestedModules (ModuleOp rootModule) |
| llvm::SmallVector< StringRef > | getNames (SymbolRefAttr ref) |
| llvm::SmallVector< FlatSymbolRefAttr > | getPieces (SymbolRefAttr ref) |
| SymbolRefAttr | replaceLeaf (SymbolRefAttr orig, FlatSymbolRefAttr newLeaf) |
| SymbolRefAttr | appendLeaf (SymbolRefAttr orig, FlatSymbolRefAttr newLeaf) |
| SymbolRefAttr | appendLeafName (SymbolRefAttr orig, const Twine &newLeafSuffix) |
| FailureOr< SymbolRefAttr > | getPathRelativeToAncestor (SymbolOpInterface symbol, ModuleOp ancestor, llvm::function_ref< InFlightDiagnostic()> emitError) |
| FailureOr< ModuleOp > | getRootModule (Operation *from) |
| FailureOr< SymbolRefAttr > | getPathFromRoot (SymbolOpInterface to, ModuleOp *foundRoot) |
| FailureOr< SymbolRefAttr > | getPathFromRoot (TemplateOp &to, ModuleOp *foundRoot) |
| FailureOr< SymbolRefAttr > | getPathFromRoot (StructDefOp &to, ModuleOp *foundRoot) |
| FailureOr< SymbolRefAttr > | getPathFromRoot (MemberDefOp &to, ModuleOp *foundRoot) |
| FailureOr< SymbolRefAttr > | getPathFromRoot (FuncDefOp &to, ModuleOp *foundRoot) |
| FailureOr< ModuleOp > | getTopRootModule (Operation *from) |
| FailureOr< SymbolRefAttr > | getPathFromTopRoot (SymbolOpInterface to, ModuleOp *foundRoot) |
| FailureOr< SymbolRefAttr > | getPathFromTopRoot (TemplateOp &to, ModuleOp *foundRoot) |
| FailureOr< SymbolRefAttr > | getPathFromTopRoot (StructDefOp &to, ModuleOp *foundRoot) |
| FailureOr< SymbolRefAttr > | getPathFromTopRoot (MemberDefOp &to, ModuleOp *foundRoot) |
| FailureOr< SymbolRefAttr > | getPathFromTopRoot (FuncDefOp &to, ModuleOp *foundRoot) |
| FailureOr< StructType > | getMainInstanceType (Operation *lookupFrom) |
| FailureOr< SymbolLookupResult< StructDefOp > > | getMainInstanceDef (SymbolTableCollection &symbolTable, Operation *lookupFrom) |
| FailureOr< SymbolLookupResult< StructDefOp > > | getRootStructDef (SymbolTableCollection &tables, Operation *lookupFrom, StringRef symbolPath) |
| FailureOr< TemplateOp > | getConstResolutionTemplate (SymbolTableCollection &tables, Operation *origin) |
| LogicalResult | verifyTemplateParamSymbol (SymbolTableCollection &tables, SymbolRefAttr symbol, Operation *origin) |
| LogicalResult | verifyTemplateParamValueCompatibility (Operation *origin, Attribute value, TemplateParamOp targetParam) |
| LogicalResult | verifyTemplateParamValuesCompatibility (Operation *origin, ArrayAttr explicitParams, llvm::iterator_range< Region::op_iterator< TemplateParamOp > > targetParamDefs) |
| LogicalResult | verifyTemplateParamsMatchInferred (Operation *origin, ArrayAttr explicitParams, llvm::iterator_range< Region::op_iterator< TemplateParamOp > > targetParamDefs, const UnificationMap &unifications) |
| LogicalResult | verifyParamOfType (SymbolTableCollection &tables, SymbolRefAttr param, Type parameterizedType, Operation *origin, std::optional< Type > requiredParamType) |
| LogicalResult | verifyParamsOfType (SymbolTableCollection &tables, ArrayRef< Attribute > tyParams, Type parameterizedType, Operation *origin, std::optional< Type > requiredParamType) |
| FailureOr< StructDefOp > | verifyStructTypeResolution (SymbolTableCollection &tables, StructType ty, Operation *origin) |
| LogicalResult | verifyTypeResolution (SymbolTableCollection &tables, Operation *origin, Type ty) |
| bool | isValidType (Type type) |
| bool | isValidColumnType (Type type, SymbolTableCollection &symbolTable, Operation *op) |
| bool | isValidGlobalType (Type type) |
| bool | isValidEmitEqType (Type type) |
| bool | isValidConstReadType (Type type) |
| bool | isValidArrayElemType (Type type) |
| bool | isValidArrayType (Type type) |
| bool | isConcreteType (Type type, bool allowStructParams) |
| bool | isTypeVarFreeType (Type type) |
| AttrConcreteness | classifyAttrConcreteness (Attribute attr, bool allowStructParams) |
| bool | hasAffineMapAttr (Type type) |
| bool | isDynamic (IntegerAttr intAttr) |
| ArrayType | flattenArrayElementType (ArrayType outerArrTy, Type elementType) |
| uint64_t | computeEmitEqCardinality (Type type) |
| bool | typeParamsUnify (const ArrayRef< Attribute > &lhsParams, const ArrayRef< Attribute > &rhsParams, UnificationMap *unifications) |
| bool | typeParamsUnify (const ArrayAttr &lhsParams, const ArrayAttr &rhsParams, UnificationMap *unifications) |
| Return true iff the two ArrayAttr instances containing StructType or ArrayType parameters are equivalent or could be equivalent after full instantiation of struct parameters. | |
| bool | arrayTypesUnify (ArrayType lhs, ArrayType rhs, ArrayRef< StringRef > rhsReversePrefix, UnificationMap *unifications) |
| bool | structTypesUnify (StructType lhs, StructType rhs, ArrayRef< StringRef > rhsReversePrefix, UnificationMap *unifications) |
| bool | podTypesUnify (PodType lhs, PodType rhs, ArrayRef< StringRef > rhsReversePrefix, UnificationMap *unifications) |
| bool | functionTypesUnify (FunctionType lhs, FunctionType rhs, ArrayRef< StringRef > rhsReversePrefix, UnificationMap *unifications) |
| bool | typesUnify (Type lhs, Type rhs, ArrayRef< StringRef > rhsReversePrefix, UnificationMap *unifications) |
| bool | isMoreConcreteUnification (Type oldTy, Type newTy, llvm::function_ref< bool(Type oldTy, Type newTy)> knownOldToNew) |
| FailureOr< IntegerAttr > | forceIntType (IntegerAttr attr, EmitErrorFn emitError) |
| FailureOr< Attribute > | forceIntAttrType (Attribute attr, EmitErrorFn emitError) |
| FailureOr< SmallVector< Attribute > > | forceIntAttrTypes (ArrayRef< Attribute > attrList, EmitErrorFn emitError) |
| LogicalResult | verifyIntAttrType (EmitErrorFn emitError, Attribute in) |
| LogicalResult | verifyAffineMapAttrType (EmitErrorFn emitError, Attribute in) |
| LogicalResult | verifyStructTypeParams (EmitErrorFn emitError, ArrayAttr params) |
| LogicalResult | verifyArrayDimSizes (EmitErrorFn emitError, ArrayRef< Attribute > dimensionSizes) |
| LogicalResult | verifyArrayType (EmitErrorFn emitError, Type elementType, ArrayRef< Attribute > dimensionSizes) |
| void | assertValidAttrForParamOfType (Attribute attr) |
| LogicalResult | verifySubArrayType (EmitErrorFn emitError, array::ArrayType arrayType, array::ArrayType subArrayType) |
| Determine if the subArrayType is a valid subarray of arrayType. | |
| LogicalResult | verifySubArrayOrElementType (EmitErrorFn emitError, ArrayType arrayType, Type subArrayOrElemType) |
| bool | isFeltOrSimpleFeltAggregate (Type ty) |
| bool | isValidMainSignalType (Type pType) |
| std::unique_ptr<::mlir::Pass > | createMemberWriteValidatorPass () |
| void | registerCAPIOptions () |
| Register shared C API options before command-line parsing. | |
| void | registerAttrCAPIGenerators () |
| Register the attribute C API generators before command-line parsing. | |
| void | registerAttrCAPITestGenerator () |
| Register the attribute C API test generator before command-line parsing. | |
| void | registerTypeCAPIGenerators () |
| Register the type C API generators before command-line parsing. | |
| void | registerTypeCAPITestGenerator () |
| Register the type C API test generator before command-line parsing. | |
| void | registerEnumCAPIGenerators () |
| Register the enum C API generators before command-line parsing. | |
| void | registerEnumCAPITestGenerator () |
| Register the enum C API test generator before command-line parsing. | |
| void | registerOpCAPIGenerators () |
| Register the operation C API generators before command-line parsing. | |
| void | registerOpCAPITestGenerator () |
| Register the operation C API test generator before command-line parsing. | |
| void | registerDialectCAPITestGenerator () |
| Register the dialect C API test generator before command-line parsing. | |
| ::llvm::StringRef | stringifyOutputStream (OutputStream val) |
| ::std::optional< OutputStream > | symbolizeOutputStream (::llvm::StringRef str) |
| ::std::optional< OutputStream > | symbolizeOutputStream (uint32_t value) |
| constexpr unsigned | getMaxEnumValForOutputStream () |
| inline ::llvm::StringRef | stringifyEnum (OutputStream enumValue) |
| template<typename EnumType> | |
| ::std::optional< EnumType > | symbolizeEnum (::llvm::StringRef) |
| template<> | |
| inline ::std::optional< OutputStream > | symbolizeEnum< OutputStream > (::llvm::StringRef str) |
| llvm::raw_ostream & | toStream (mlir::Pass::Option< OutputStream > &val) |
| void | registerCallGraphPrinterPass () |
| void | registerCallGraphPrinterPassPass () |
| void | registerCallGraphSCCsPrinterPass () |
| void | registerCallGraphSCCsPrinterPassPass () |
| void | registerConstraintDependencyGraphPrinterPass () |
| void | registerConstraintDependencyGraphPrinterPassPass () |
| void | registerIntervalAnalysisPrinterPass () |
| void | registerIntervalAnalysisPrinterPassPass () |
| void | registerPredecessorPrinterPass () |
| void | registerPredecessorPrinterPassPass () |
| void | registerSymbolDefTreePrinterPass () |
| void | registerSymbolDefTreePrinterPassPass () |
| void | registerSymbolUseGraphPrinterPass () |
| void | registerSymbolUseGraphPrinterPassPass () |
| void | registerAnalysisPasses () |
| template<typename GraphT> | |
| bool | hasCycle (const GraphT &G) |
| template<typename OpType, typename LhsMatcher, typename RhsMatcher> | |
| auto | m_CommutativeOp (LhsMatcher lhs, RhsMatcher rhs) |
| RefValueCapture | m_RefValue () |
| RefValueCapture | m_RefValue (mlir::Value *capture) |
| ConstantCapture | m_Constant () |
| ConstantCapture | m_Constant (felt::FeltConstantOp *capture) |
| llvm::raw_ostream & | operator<< (llvm::raw_ostream &os, const FuzzySet &set) |
| mlir::raw_ostream & | operator<< (mlir::raw_ostream &os, const SourceRef &rhs) |
| template<typename OpT> | |
| mlir::RegisteredOperationName | getCheckRegisteredInfo (mlir::MLIRContext *ctx) |
| template<typename OpTy, typename... Args> | |
| mlir::Operation * | create (MlirOpBuilder cBuilder, MlirLocation cLocation, Args &&...args) |
| Creates a new operation using an ODS build method. | |
| mlir::FailureOr< DynamicAPIntValue > | parseDynamicAPIntValue (mlir::AsmParser &parser) |
| Parse MLIR's signed integer literal and discard its encoding width. | |
| llvm::DynamicAPInt | integerAttrToDynamicAPInt (mlir::IntegerAttr attr) |
| Decode an MLIR integer using its signedness; signless i1 denotes a boolean. | |
| int64_t | fromAPInt (const llvm::APInt &i) |
| Extract a verified MLIR index value; malformed internal IR is a fatal error. | |
| bool | isNullOrEmpty (mlir::ArrayAttr a) |
| bool | isNullOrEmpty (mlir::DenseArrayAttr a) |
| bool | isNullOrEmpty (mlir::DictionaryAttr a) |
| void | appendWithoutType (mlir::raw_ostream &os, mlir::Attribute a) |
| std::string | stringWithoutType (mlir::Attribute a) |
| void | printAttrs (mlir::AsmPrinter &printer, mlir::ArrayRef< mlir::Attribute > attrs, const mlir::StringRef &separator) |
| mlir::FailureOr< component::StructType > | getTypeFromLlzkMainAttr (mlir::ModuleOp op, mlir::Attribute attr) |
| void | writeDynamicAPInt (mlir::DialectBytecodeWriter &writer, const llvm::DynamicAPInt &value) |
| Write the minimal signed two's-complement encoding of a mathematical integer. | |
| mlir::FailureOr< llvm::DynamicAPInt > | readDynamicAPInt (mlir::DialectBytecodeReader &reader) |
| Decode a signed integer, rejecting invalid widths before allocating storage. | |
| mlir::Location | getUnknownLoc (mlir::MLIRContext *context) |
| mlir::OwningOpRef< mlir::ModuleOp > | createLLZKModule (mlir::MLIRContext *context, mlir::Location loc) |
| mlir::OwningOpRef< mlir::ModuleOp > | createLLZKModule (mlir::MLIRContext *context) |
| void | addLangAttrForLLZKDialect (mlir::ModuleOp mod) |
| template<typename OpClass> | |
| llvm::StringLiteral | getOperationName () |
| Get the operation name, like "constrain.eq" for the given OpClass. | |
| template<typename OpClass> | |
| OpClass | getSelfOrParentOfType (mlir::Operation *op) |
| Return the closest surrounding parent/ancestor operation that is of type 'OpClass', either the op itself or an ancestor. | |
| template<typename OpClass> | |
| OpClass | getParentOfType (mlir::Operation *op) |
| Return the closest surrounding parent/ancestor operation that is of type 'OpClass'. | |
| template<unsigned N> | |
| mlir::ParseResult | parseDimAndSymbolList (mlir::OpAsmParser &parser, mlir::SmallVector< mlir::OpAsmParser::UnresolvedOperand, N > &mapOperands, mlir::IntegerAttr &numDims) |
| void | printDimAndSymbolList (mlir::OpAsmPrinter &printer, mlir::Operation *op, mlir::OperandRange mapOperands, mlir::IntegerAttr numDims) |
| mlir::ParseResult | parseMultiDimAndSymbolList (mlir::OpAsmParser &parser, mlir::SmallVector< mlir::SmallVector< mlir::OpAsmParser::UnresolvedOperand > > &multiMapOperands, mlir::DenseI32ArrayAttr &numDimsPerMap) |
| void | printMultiDimAndSymbolList (mlir::OpAsmPrinter &printer, mlir::Operation *op, mlir::OperandRangeRange multiMapOperands, mlir::DenseI32ArrayAttr numDimsPerMap) |
| mlir::ParseResult | parseAttrDictWithWarnings (mlir::OpAsmParser &parser, mlir::NamedAttrList &extraAttrs, mlir::OperationState &state) |
| template<typename ConcreteOp> | |
| void | printAttrDictWithWarnings (mlir::OpAsmPrinter &printer, ConcreteOp op, mlir::DictionaryAttr extraAttrs, typename mlir::PropertiesSelector< ConcreteOp >::type state) |
| mlir::ParseResult | parseTemplateParams (mlir::AsmParser &parser, mlir::ArrayAttr &value) |
| void | printTemplateParams (mlir::AsmPrinter &printer, mlir::ArrayAttr value) |
| void | printTemplateParams (mlir::AsmPrinter &printer, void *, mlir::ArrayAttr value) |
| bool | requiresValueCopy (mlir::Type type) |
| Return whether copying type requires the checked materialization path. | |
| bool | canMaterializeValueCopy (mlir::Type type) |
| Return whether type has supported value-copy semantics. | |
| bool | requiresUnsupportedValueCopy (mlir::Type type) |
| Return whether type requires a value copy that cannot currently be materialized. | |
| std::string | getValueCopyFailureReason (mlir::Type type) |
| Explain the unsupported type or recursive copy requirement. | |
| mlir::FailureOr< mlir::Value > | materializeValueCopy (mlir::OpBuilder &builder, mlir::Location loc, mlir::Value source) |
| Return source for immutable scalar values, identity-bearing handles, and aggregates without mutable payload, or materialize recursively independent storage for a supported mutable aggregate. | |
| template<typename OpTy> | |
| OpTy | preserveDiscardableAttrs (mlir::Operation *src, OpTy dst) |
| Copy discardable attributes from src to dst. | |
| template<typename OpTy> | |
| OpTy | preserveDiscardableAttrsExcept (mlir::Operation *src, OpTy dst, mlir::StringRef excludedAttr) |
| Copy discardable attributes from src to dst while omitting one internal attr. | |
| template<typename OpClass, typename Rewriter, typename... Args> | |
| OpClass | replaceOpWithNewOp (Rewriter &rewriter, mlir::Operation *op, Args &&...args) |
| Wrapper for RewriterBase::replaceOpWithNewOp() that automatically copies discardable attributes (i.e., attributes other than those specifically defined as part of the op in ODS). | |
| mlir::DictionaryAttr | withFunctionNameAttr (mlir::DictionaryAttr attrs, llvm::StringRef attrName, llvm::StringRef name) |
| Return a copy of the given function argument/result attribute dictionary with attrName set to name. | |
| mlir::DictionaryAttr | withFunctionArgNameAttr (mlir::DictionaryAttr attrs, llvm::StringRef name) |
| Return a copy of the given argument attribute dictionary with function.arg_name set to name. | |
| mlir::DictionaryAttr | withFunctionResNameAttr (mlir::DictionaryAttr attrs, llvm::StringRef name) |
| Return a copy of the given result attribute dictionary with function.res_name set to name. | |
| std::string | reserveUniqueAttrName (llvm::StringSet<> &usedNames, llvm::StringRef desiredName) |
| Reserve and return a unique function argument/result name based on desiredName. | |
| std::optional< mlir::StringAttr > | getAttrAtIndexWithName (mlir::ArrayAttr attrs, unsigned index, llvm::StringRef attrName) |
| Return the function arg/result attribute at index for the given name, if present. | |
| template<typename GetNameAttrFn, typename GetSplitSuffixesFn> | |
| SplitFunctionNameInfo | collectSplitFunctionNameInfo (mlir::ArrayRef< mlir::Type > origTypes, GetNameAttrFn &&getNameAttr, GetSplitSuffixesFn &&getSplitSuffixes) |
| Collect function arg/result names and split suffixes from a list of original types. | |
| mlir::ArrayAttr | replicateFunctionNameAttrsAsNeeded (mlir::ArrayAttr origAttrs, const llvm::SmallVector< size_t > &originalIdxToSize, const llvm::SmallVector< mlir::Type > &newTypes, llvm::StringRef functionNameAttrName, llvm::ArrayRef< std::optional< llvm::StringRef > > origNames={}, llvm::ArrayRef< llvm::StringRef > existingNames={}, llvm::ArrayRef< llvm::SmallVector< std::string > > splitNameSuffixes={}) |
| Expand function arg/result attribute arrays to match a split signature, rewriting name attrs with the provided suffixes where available. | |
| function::CallOp | createCallPreservingInstantiationOperands (mlir::Location loc, mlir::TypeRange newResultTypes, function::CallOp oldCall, llvm::ArrayRef< mlir::ValueRange > mapOperands, mlir::ValueRange argOperands, mlir::ConversionPatternRewriter &rewriter) |
| Rebuild a function.call while preserving explicit instantiation state from oldCall. | |
| void | registerInliningExtensions (mlir::DialectRegistry ®istry) |
| void | registerComputeConstrainToProductPass () |
| void | registerComputeConstrainToProductPassPass () |
| void | registerEnforceNoMemberOverwritePass () |
| void | registerEnforceNoMemberOverwritePassPass () |
| void | registerFuseProductControlFlowPass () |
| void | registerFuseProductControlFlowPassPass () |
| void | registerInlineFreeFunctionsPass () |
| void | registerInlineFreeFunctionsPassPass () |
| void | registerPolyLoweringPass () |
| void | registerPolyLoweringPassPass () |
| void | registerRedundantOperationEliminationPass () |
| void | registerRedundantOperationEliminationPassPass () |
| void | registerRedundantReadAndWriteEliminationPass () |
| void | registerRedundantReadAndWriteEliminationPassPass () |
| void | registerRemoveUnusedDiscardableAllocationsPass () |
| void | registerRemoveUnusedDiscardableAllocationsPassPass () |
| void | registerUnusedDeclarationEliminationPass () |
| void | registerUnusedDeclarationEliminationPassPass () |
| void | registerWhileToForPass () |
| void | registerWhileToForPassPass () |
| void | registerTransformationPasses () |
| void | buildFullPolyLoweringPipeline (mlir::OpPassManager &, const FullPolyLoweringConfig &) |
| void | buildProductProgramPipeline (mlir::OpPassManager &) |
| void | buildFullStructInliningPipeline (mlir::OpPassManager &, const FullStructInliningConfig &) |
| void | buildFullInliningPipeline (mlir::OpPassManager &, const FullStructInliningConfig &) |
| void | buildConstraintFlatteningPipeline (mlir::OpPassManager &) |
| Canonicalize, monomorphize templates, expose child members, and expand main constrain. | |
| mlir::Value | rebuildExprInCompute (mlir::Value val, function::FuncDefOp computeFunc, mlir::OpBuilder &builder, llvm::DenseMap< mlir::Value, mlir::Value > &memo) |
| Rebuilds a straight-line constrain-side felt expression in computeFunc. | |
| mlir::LogicalResult | checkForAuxMemberConflicts (component::StructDefOp structDef, llvm::StringRef auxPrefix) |
| mlir::LogicalResult | checkFuncBodyIsStraightLine (function::FuncDefOp func, llvm::StringRef passName) |
| Rejects control flow under func; auxiliary materialization assumes control flow has already been flattened or otherwise lowered away. | |
| component::MemberDefOp | addAuxMember (component::StructDefOp structDef, llvm::StringRef name, mlir::Type type) |
| unsigned | getFeltDegree (mlir::Value val, llvm::DenseMap< mlir::Value, unsigned > &memo) |
| void | replaceSubsequentUsesWith (mlir::Value oldVal, mlir::Value newVal, mlir::Operation *afterOp) |
| Replaces all subsequent uses of oldVal with newVal, starting after afterOp. | |
| template<typename AllocOpTy> | |
| std::unique_ptr< SpecializedSROA< AllocOpTy > > | createSpecializedSROAPass () |
| template<typename AllocOpTy> | |
| std::unique_ptr< SpecializedMem2Reg< AllocOpTy > > | createSpecializedMem2RegPass () |
| std::unique_ptr< mlir::Pass > | createRemoveDeadValuesWorkaroundPass () |
| bool | defaultLegalityCheck (const mlir::TypeConverter &tyConv, mlir::Operation *op) |
| Check whether an op is legal with respect to the given type converter, including TypeAttr attributes (with special handling for FunctionType stored inside a TypeAttr). | |
| template<typename... AdditionalOpClasses> | |
| mlir::RewritePatternSet | newGeneralRewritePatternSet (mlir::TypeConverter &tyConv, mlir::MLIRContext *ctx, mlir::ConversionTarget &target) |
| Return a new RewritePatternSet covering all LLZK op types that may contain a StructType. | |
| template<typename OpClass, typename... Args> | |
| OpClass | delegate_to_build (mlir::Location location, Args &&...args) |
| template<typename OpClass> | |
| void | addTemplateParams (mlir::OpBuilder &odsBuilder, typename OpClass::Properties &props, llvm::ArrayRef< mlir::Attribute > templateParams) |
| template<OpComparable Op> | |
| mlir::FailureOr< bool > | isLocationLess (const Op &l, const Op &r) |
| Compare the source locations of two operations. | |
| template<typename T, typename U> | |
| constexpr T | checkedCast (U u) noexcept |
| llvm::Expected< llvm::DynamicAPInt > | parseDynamicAPInt (llvm::StringRef str) |
| Parse a signed decimal integer, rejecting malformed input without asserting. | |
| llvm::hash_code | hashDynamicAPInt (const llvm::DynamicAPInt &value) |
| Hash the signed numeric value, independent of its width or arithmetic history. | |
| llvm::Expected< llvm::APInt > | checkedToAPInt (const llvm::DynamicAPInt &value, unsigned bitWidth, bool isSigned) |
| Encode a signed or unsigned integer at exactly bitWidth, rejecting overflow. | |
| llvm::Expected< int64_t > | checkedToInt64 (const llvm::DynamicAPInt &value) |
| Convert to a native signed integer, rejecting values outside its range. | |
| llvm::Expected< uint64_t > | checkedToUInt64 (const llvm::DynamicAPInt &value) |
| Convert to a native unsigned integer, rejecting negative values and overflow. | |
| llvm::Expected< size_t > | checkedToSize (const llvm::DynamicAPInt &value, const llvm::Twine &context) |
| Convert to size_t, rejecting negative values and overflow. | |
| llvm::DynamicAPInt | operator& (const llvm::DynamicAPInt &lhs, const llvm::DynamicAPInt &rhs) |
| Bitwise operations use infinite two's-complement sign extension. | |
| llvm::DynamicAPInt | operator| (const llvm::DynamicAPInt &lhs, const llvm::DynamicAPInt &rhs) |
| llvm::DynamicAPInt | operator^ (const llvm::DynamicAPInt &lhs, const llvm::DynamicAPInt &rhs) |
| llvm::DynamicAPInt | operator<< (const llvm::DynamicAPInt &lhs, const llvm::DynamicAPInt &rhs) |
| Exact left shift. | |
| llvm::DynamicAPInt | operator<< (const llvm::DynamicAPInt &lhs, int64_t rhs) |
| Exact left shift. | |
| llvm::DynamicAPInt | operator>> (const llvm::DynamicAPInt &lhs, const llvm::DynamicAPInt &rhs) |
| Arithmetic right shift. | |
| llvm::DynamicAPInt | operator>> (const llvm::DynamicAPInt &lhs, int64_t rhs) |
| Arithmetic right shift. | |
| template<std::unsigned_integral T> | |
| llvm::DynamicAPInt | operator>> (const llvm::DynamicAPInt &lhs, T rhs) |
| Arithmetic right shift by an unsigned count, checked before conversion to int64_t. | |
| llvm::DynamicAPInt | toDynamicAPInt (llvm::StringRef str) |
| Parse trusted decimal text; invalid text is a fatal programming error. | |
| llvm::DynamicAPInt | toDynamicAPInt (const llvm::APSInt &i) |
| llvm::DynamicAPInt | toDynamicAPInt (const llvm::APInt &i) |
| Converts an APInt to a DynamicAPInt, using an unsigned interpretation. | |
| llvm::DynamicAPInt | toSignedDynamicAPInt (llvm::ArrayRef< uint64_t > parts) |
| Decode 64-bit parts in LSB order as a two's-complement signed integer. | |
| llvm::DynamicAPInt | toDynamicAPInt (size_t i) |
| llvm::APSInt | toAPSInt (const llvm::DynamicAPInt &i) |
| Convert to a signed APSInt with the same numeric value (bit width is unspecified). | |
| llvm::DynamicAPInt | modExp (const llvm::DynamicAPInt &base, const llvm::DynamicAPInt &exp, const llvm::DynamicAPInt &mod) |
| Modular exponentiation for a nonnegative exponent and positive modulus. | |
| llvm::DynamicAPInt | modInversePrime (const llvm::DynamicAPInt &f, const llvm::DynamicAPInt &p) |
| bool | hasReadEffect (mlir::Operation *op) |
Returns true when op has a memory read effect. | |
| bool | hasUnknownOrNonReadEffect (mlir::Operation *op) |
Returns true when op may have an unknown effect or any effect other than memory read. | |
| OwningEmitErrorFn | getEmitOpErrFn (mlir::Operation *op) |
| template<typename OpImplClass> | |
| OwningEmitErrorFn | getEmitOpErrFn (OpImplClass *opImpl) |
| void | ensure (bool condition, const llvm::Twine &errMsg) |
| OwningEmitErrorFn | wrapNullableInFlightDiagnostic (llvm::function_ref< mlir::InFlightDiagnostic()> emitError, mlir::MLIRContext *ctx) |
| If the given emitError is non-null, return it. | |
| OwningEmitErrorFn | wrapNonNullableInFlightDiagnostic (llvm::function_ref< mlir::InFlightDiagnostic()> emitError) |
| llvm::LogicalResult | addSpecifiedFields (mlir::ModuleOp modOp) |
| Update the set of available prime fields with the fields specified on the root module. | |
| mlir::LogicalResult | collectFields (mlir::Operation *root, FieldSet &fields, bool silent=true) |
| Collects all the fields used in a circuit. | |
| std::optional< std::reference_wrapper< const Field > > | tryDetectSpecifiedField (mlir::Operation *root) |
| Try to detect a uniquely used field from the enclosing LLZK module. | |
| mlir::FailureOr< LLZKLayout > | buildLLZKLayout (mlir::ModuleOp module) |
| Enumerate the signal leaves of llzk.main and its constrain arguments. | |
| void | printLLZKLayout (const LLZKLayout &layout, llvm::raw_ostream &output) |
| Print the logical signal section of the .llzk-layout format. | |
| template<typename Func, typename... Args> | |
| std::string | buildStringViaCallback (Func &&appendFn, Args &&...args) |
| Generate a string by calling the given appendFn with an llvm::raw_ostream & as the first argument followed by the additional Args provided (if any). | |
| template<typename T, typename... Args> | |
| std::string | buildStringViaPrint (const T &base, Args &&...args) |
| Generate a string by calling base.print(llvm::raw_ostream &) on a stream backed by the returned string. | |
| template<typename... Args> | |
| std::string | buildStringViaInsertionOp (Args &&...args) |
| Generate a string by using the insertion operator (<<) to append all args to a stream backed by the returned string. | |
| void | eraseEmptyNestedModules (mlir::ModuleOp rootModule) |
| Remove nested builtin modules whose body is empty, preserving the root module. | |
| llvm::SmallVector< mlir::StringRef > | getNames (mlir::SymbolRefAttr ref) |
| llvm::SmallVector< mlir::FlatSymbolRefAttr > | getPieces (mlir::SymbolRefAttr ref) |
| mlir::FlatSymbolRefAttr | getFlatSymbolRefAttr (mlir::MLIRContext *context, const mlir::Twine &twine) |
| Construct a FlatSymbolRefAttr with the given content. | |
| mlir::SymbolRefAttr | asSymbolRefAttr (mlir::StringAttr root, mlir::SymbolRefAttr tail) |
| Build a SymbolRefAttr that prepends tail with root, i.e., root::tail. | |
| mlir::SymbolRefAttr | asSymbolRefAttr (llvm::ArrayRef< mlir::FlatSymbolRefAttr > path) |
| Build a SymbolRefAttr from the list of pieces. | |
| mlir::SymbolRefAttr | asSymbolRefAttr (const std::vector< mlir::FlatSymbolRefAttr > &path) |
| Build a SymbolRefAttr from the list of pieces. | |
| mlir::SymbolRefAttr | getTailAsSymbolRefAttr (mlir::SymbolRefAttr symbol) |
| Return SymbolRefAttr like the one given but with the root/head element removed. | |
| mlir::SymbolRefAttr | getPrefixAsSymbolRefAttr (mlir::SymbolRefAttr symbol) |
| Return SymbolRefAttr like the one given but with the leaf/final element removed. | |
| mlir::SymbolRefAttr | replaceLeaf (mlir::SymbolRefAttr orig, mlir::FlatSymbolRefAttr newLeaf) |
| Return SymbolRefAttr like the one given but with the leaf (final) element replaced. | |
| mlir::SymbolRefAttr | replaceLeaf (mlir::SymbolRefAttr orig, mlir::StringAttr newLeaf) |
| mlir::SymbolRefAttr | replaceLeaf (mlir::SymbolRefAttr orig, const mlir::Twine &newLeaf) |
| mlir::SymbolRefAttr | appendLeaf (mlir::SymbolRefAttr orig, mlir::FlatSymbolRefAttr newLeaf) |
| Return SymbolRefAttr like the one given but with a new leaf (final) element added. | |
| mlir::SymbolRefAttr | appendLeaf (mlir::SymbolRefAttr orig, mlir::StringAttr newLeaf) |
| mlir::SymbolRefAttr | appendLeaf (mlir::SymbolRefAttr orig, const mlir::Twine &newLeaf) |
| mlir::SymbolRefAttr | appendLeafName (mlir::SymbolRefAttr orig, const mlir::Twine &newLeafSuffix) |
| Return SymbolRefAttr like the one given but with the leaf (final) element appended with the given suffix. | |
| mlir::FailureOr< mlir::ModuleOp > | getRootModule (mlir::Operation *from) |
| Starting at the Operation from, find the nearest ancestor ModuleOp marked with LANG_ATTR_NAME from which symbol lookups are rooted. | |
| mlir::FailureOr< mlir::SymbolRefAttr > | getPathFromRoot (mlir::SymbolOpInterface to, mlir::ModuleOp *foundRoot=nullptr) |
| mlir::FailureOr< mlir::SymbolRefAttr > | getPathFromRoot (component::StructDefOp &to, mlir::ModuleOp *foundRoot=nullptr) |
| mlir::FailureOr< mlir::SymbolRefAttr > | getPathFromRoot (component::MemberDefOp &to, mlir::ModuleOp *foundRoot=nullptr) |
| mlir::FailureOr< mlir::SymbolRefAttr > | getPathFromRoot (function::FuncDefOp &to, mlir::ModuleOp *foundRoot=nullptr) |
| mlir::FailureOr< mlir::SymbolRefAttr > | getPathRelativeToAncestor (mlir::SymbolOpInterface symbol, mlir::ModuleOp ancestor, llvm::function_ref< mlir::InFlightDiagnostic()> emitError=nullptr) |
Return symbol's path relative to the supplied ancestor module. | |
| mlir::SymbolRefAttr | getFullyQualifiedName (mlir::SymbolOpInterface symbol, bool requireParent=true) |
| Return the full name for this symbol from the root module, including any surrounding symbol table names. | |
| mlir::FailureOr< mlir::ModuleOp > | getTopRootModule (mlir::Operation *from) |
| With include statements, there may be root modules nested within other root modules. | |
| mlir::FailureOr< mlir::SymbolRefAttr > | getPathFromTopRoot (mlir::SymbolOpInterface to, mlir::ModuleOp *foundRoot=nullptr) |
| mlir::FailureOr< mlir::SymbolRefAttr > | getPathFromTopRoot (component::StructDefOp &to, mlir::ModuleOp *foundRoot=nullptr) |
| mlir::FailureOr< mlir::SymbolRefAttr > | getPathFromTopRoot (component::MemberDefOp &to, mlir::ModuleOp *foundRoot=nullptr) |
| mlir::FailureOr< mlir::SymbolRefAttr > | getPathFromTopRoot (function::FuncDefOp &to, mlir::ModuleOp *foundRoot=nullptr) |
| mlir::FailureOr< llzk::component::StructType > | getMainInstanceType (mlir::Operation *lookupFrom) |
| Lookup the StructType of the main instance. | |
| mlir::FailureOr< SymbolLookupResult< llzk::component::StructDefOp > > | getMainInstanceDef (mlir::SymbolTableCollection &symbolTable, mlir::Operation *lookupFrom) |
| Lookup the StructDefOp of the main instance. | |
| mlir::FailureOr< SymbolLookupResult< component::StructDefOp > > | getRootStructDef (mlir::SymbolTableCollection &tables, mlir::Operation *lookupFrom, mlir::StringRef symbolPath={}) |
| Resolve symbolPath (MLIR syntax or a bare name), defaulting to llzk.main. | |
| template<typename T> | |
| mlir::FailureOr< SymbolLookupResult< T > > | resolveCallable (mlir::SymbolTableCollection &symbolTable, mlir::CallOpInterface call) |
| Based on mlir::CallOpInterface::resolveCallable, but using LLZK lookup helpers. | |
| template<typename T> | |
| mlir::FailureOr< SymbolLookupResult< T > > | resolveCallableSilently (mlir::SymbolTableCollection &symbolTable, mlir::CallOpInterface call) |
| Resolve a callable without emitting a diagnostic for missing top-level symbols. | |
| template<typename T> | |
| mlir::FailureOr< SymbolLookupResult< T > > | resolveCallable (mlir::CallOpInterface call) |
| mlir::FailureOr< polymorphic::TemplateOp > | getConstResolutionTemplate (mlir::SymbolTableCollection &tables, mlir::Operation *origin) |
| Return the template scope that should be used to resolve flat constant references from the given origin. | |
| mlir::LogicalResult | verifyTemplateParamSymbol (mlir::SymbolTableCollection &tables, mlir::SymbolRefAttr symbol, mlir::Operation *origin) |
| Ensure that a SymbolRef template argument resolves to a binding in the enclosing template or to a constant global. | |
| mlir::LogicalResult | verifyTemplateParamValueCompatibility (mlir::Operation *origin, mlir::Attribute value, polymorphic::TemplateParamOp targetParam) |
| Verify one explicit template argument against its declared parameter restriction. | |
| mlir::LogicalResult | verifyTemplateParamValuesCompatibility (mlir::Operation *origin, mlir::ArrayAttr explicitParams, llvm::iterator_range< mlir::Region::op_iterator< polymorphic::TemplateParamOp > > targetParamDefs) |
| Verify each explicit template argument against the corresponding declared parameter restriction. | |
| mlir::LogicalResult | verifyTemplateParamsMatchInferred (mlir::Operation *origin, mlir::ArrayAttr explicitParams, llvm::iterator_range< mlir::Region::op_iterator< polymorphic::TemplateParamOp > > targetParamDefs, const UnificationMap &unifications) |
| Verify that each template parameter value provided in the origin op is consistent with the value inferred for the target TemplateParamOp in the given UnificationMap. | |
| mlir::LogicalResult | verifyParamOfType (mlir::SymbolTableCollection &tables, mlir::SymbolRefAttr param, mlir::Type structOrArrayType, mlir::Operation *origin, std::optional< mlir::Type > requiredParamType=std::nullopt) |
| Ensure that the given symbol (that is used as a parameter of the given type) can be resolved. | |
| mlir::LogicalResult | verifyParamsOfType (mlir::SymbolTableCollection &tables, mlir::ArrayRef< mlir::Attribute > tyParams, mlir::Type structOrArrayType, mlir::Operation *origin, std::optional< mlir::Type > requiredParamType=std::nullopt) |
| Ensure that any symbols that appear within the given attributes (that are parameters of the given type) can be resolved. | |
| mlir::FailureOr< component::StructDefOp > | verifyStructTypeResolution (mlir::SymbolTableCollection &tables, component::StructType ty, mlir::Operation *origin) |
| Ensure that all symbols used within the type can be resolved. | |
| mlir::LogicalResult | verifyTypeResolution (mlir::SymbolTableCollection &tables, mlir::Operation *origin, mlir::Type type) |
| Ensure that all symbols used within the given Type instance can be resolved. | |
| template<std::ranges::input_range Range> | |
| mlir::LogicalResult | verifyTypeResolution (mlir::SymbolTableCollection &tables, mlir::Operation *origin, const Range &types) |
| Ensure that all symbols used within all Type instances can be resolved. | |
| mlir::FailureOr< SymbolLookupResultUntyped > | lookupSymbolIn (mlir::SymbolTableCollection &tables, mlir::SymbolRefAttr symbol, Within &&lookupWithin, mlir::Operation *origin, bool reportMissing=true) |
| mlir::FailureOr< SymbolLookupResultUntyped > | lookupTopLevelSymbol (mlir::SymbolTableCollection &tables, mlir::SymbolRefAttr symbol, mlir::Operation *origin, bool reportMissing=true) |
| template<typename T> | |
| mlir::FailureOr< SymbolLookupResult< T > > | lookupSymbolIn (mlir::SymbolTableCollection &tables, mlir::SymbolRefAttr symbol, Within &&lookupWithin, mlir::Operation *origin, bool reportMissing=true) |
| template<typename T> | |
| mlir::FailureOr< SymbolLookupResult< T > > | lookupTopLevelSymbol (mlir::SymbolTableCollection &tables, mlir::SymbolRefAttr symbol, mlir::Operation *origin, bool reportMissing=true) |
| std::optional< mlir::SymbolTable::UseRange > | getSymbolUses (mlir::Operation *from) |
| Get an iterator range for all of the uses, for any symbol, that are nested within the given operation 'from'. | |
| std::optional< mlir::SymbolTable::UseRange > | getSymbolUses (mlir::Region *from) |
| std::optional< mlir::SymbolTable::UseRange > | getSymbolUses (mlir::StringAttr symbol, mlir::Operation *from) |
| Get all of the uses of the given symbol that are nested within the given operation 'from'. | |
| std::optional< mlir::SymbolTable::UseRange > | getSymbolUses (mlir::Operation *symbol, mlir::Operation *from) |
| std::optional< mlir::SymbolTable::UseRange > | getSymbolUses (mlir::StringAttr symbol, mlir::Region *from) |
| std::optional< mlir::SymbolTable::UseRange > | getSymbolUses (mlir::Operation *symbol, mlir::Region *from) |
| void | getSymbolsUsedIn (mlir::Type t, llvm::SmallDenseSet< mlir::SymbolRefAttr > &symbolsUsed) |
| Add all symbols used within the given Type to the provided set. | |
| void | getSymbolsUsedIn (mlir::ArrayRef< mlir::Type > types, llvm::SmallDenseSet< mlir::SymbolRefAttr > &symbolsUsed) |
| Add all symbols used within the given Types to the provided set. | |
| llvm::SmallDenseSet< mlir::SymbolRefAttr > | getSymbolsUsedIn (mlir::Type t) |
| Get all symbols used within the given Type. | |
| llvm::SmallDenseSet< mlir::SymbolRefAttr > | getSymbolsUsedIn (mlir::ArrayRef< mlir::Type > types) |
| Get all symbols used within the given Types. | |
| bool | symbolKnownUseEmpty (mlir::StringAttr symbol, mlir::Operation *from) |
| Return if the given symbol is known to have no uses that are nested within the given operation 'from'. | |
| bool | symbolKnownUseEmpty (mlir::Operation *symbol, mlir::Operation *from) |
| bool | symbolKnownUseEmpty (mlir::StringAttr symbol, mlir::Region *from) |
| bool | symbolKnownUseEmpty (mlir::Operation *symbol, mlir::Region *from) |
| mlir::StringAttr | getSymbolName (mlir::Operation *symbol) |
| Returns the name of the given symbol operation, or nullptr if no symbol is present. | |
| mlir::StringAttr | getSymbolName (mlir::SymbolOpInterface symbol) |
| void | assertValidAttrForParamOfType (mlir::Attribute attr) |
| bool | isValidType (mlir::Type type) |
| valid types: {I1, Index, String, FeltType, StructType, ArrayType, TypeVarType, PodType} | |
| bool | isValidColumnType (mlir::Type type, mlir::SymbolTableCollection &symbolTable, mlir::Operation *op) |
| valid types: {FeltType, StructType (with columns), ArrayType (that contains a valid column type), TypeVarType, PodType} | |
| bool | isValidGlobalType (mlir::Type type) |
| valid types: isValidType() - {TypeVarType} - {types with variable parameters} | |
| bool | isValidEmitEqType (mlir::Type type) |
| valid types: isValidType() - {String, StructType} (excluded via any type parameter nesting) | |
| bool | isValidConstReadType (mlir::Type type) |
| valid types: {I1, Index, FeltType, TypeVarType} | |
| bool | isValidArrayElemType (mlir::Type type) |
| valid types: isValidType() - {ArrayType}, plus NoneType for shape-only arrays | |
| bool | isValidArrayType (mlir::Type type) |
| Checks if the type is a LLZK Array and it also contains a valid LLZK type. | |
| bool | isConcreteType (mlir::Type type, bool allowStructParams=true) |
| Return false if the type contains any of the following: | |
| bool | isTypeVarFreeType (mlir::Type type) |
| Return false if the type contains a TypeVarType. | |
| AttrConcreteness | classifyAttrConcreteness (mlir::Attribute attr, bool allowStructParams=true) |
| Classify attr as an argument for a parameterized struct type. | |
| bool | isConcreteStructParamAttr (mlir::Attribute attr, bool allowStructParams=true) |
| Return true if attr is a concrete argument for a parameterized struct type. | |
| mlir::LogicalResult | checkValidType (EmitErrorFn emitError, mlir::Type type) |
| bool | hasAffineMapAttr (mlir::Type type) |
| Return true iff the given type contains an AffineMapAttr. | |
| Side | reverse (Side in) |
| bool | isDynamic (mlir::IntegerAttr intAttr) |
| array::ArrayType | flattenArrayElementType (array::ArrayType outerArrTy, mlir::Type elementType) |
| Flatten any array-valued element type into the dimensions of outerArrTy. | |
| uint64_t | computeEmitEqCardinality (mlir::Type type) |
| Compute the cardinality (i.e. | |
| bool | typeParamsUnify (const mlir::ArrayRef< mlir::Attribute > &lhsParams, const mlir::ArrayRef< mlir::Attribute > &rhsParams, UnificationMap *unifications=nullptr) |
| Return true iff the two ArrayRef instances containing StructType or ArrayType parameters are equivalent or could be equivalent after full instantiation of template parameters. | |
| bool | typeParamsUnify (const mlir::ArrayAttr &lhsParams, const mlir::ArrayAttr &rhsParams, UnificationMap *unifications=nullptr) |
| Return true iff the two ArrayAttr instances containing StructType or ArrayType parameters are equivalent or could be equivalent after full instantiation of template parameters. | |
| bool | arrayTypesUnify (array::ArrayType lhs, array::ArrayType rhs, mlir::ArrayRef< llvm::StringRef > rhsReversePrefix={}, UnificationMap *unifications=nullptr) |
| Return true iff the two ArrayType instances are equivalent or could be equivalent after full instantiation of template parameters. | |
| bool | structTypesUnify (component::StructType lhs, component::StructType rhs, mlir::ArrayRef< llvm::StringRef > rhsReversePrefix={}, UnificationMap *unifications=nullptr) |
| Return true iff the two StructType instances are equivalent or could be equivalent after full instantiation of template parameters. | |
| bool | podTypesUnify (pod::PodType lhs, pod::PodType rhs, mlir::ArrayRef< llvm::StringRef > rhsReversePrefix={}, UnificationMap *unifications=nullptr) |
| Return true iff the two PodType instances are equivalent or could be equivalent after full instantiation of template parameters. | |
| bool | functionTypesUnify (mlir::FunctionType lhs, mlir::FunctionType rhs, mlir::ArrayRef< llvm::StringRef > rhsReversePrefix={}, UnificationMap *unifications=nullptr) |
| Return true iff the two FunctionType instances are equivalent or could be equivalent after full instantiation of template parameters. | |
| bool | typesUnify (mlir::Type lhs, mlir::Type rhs, mlir::ArrayRef< llvm::StringRef > rhsReversePrefix={}, UnificationMap *unifications=nullptr) |
| Return true iff the two Type instances are equivalent or could be equivalent after full instantiation of template parameters (if applicable within the given types). | |
| template<typename Iter1, typename Iter2> | |
| bool | typeListsUnify (Iter1 lhs, Iter2 rhs, mlir::ArrayRef< llvm::StringRef > rhsReversePrefix={}, UnificationMap *unifications=nullptr) |
| Return true iff the two lists of Type instances are equivalent or could be equivalent after full instantiation of template parameters (if applicable within the given types). | |
| template<typename Iter1, typename Iter2> | |
| bool | singletonTypeListsUnify (Iter1 lhs, Iter2 rhs, mlir::ArrayRef< llvm::StringRef > rhsReversePrefix={}, UnificationMap *unifications=nullptr) |
| bool | isMoreConcreteUnification (mlir::Type oldTy, mlir::Type newTy, llvm::function_ref< bool(mlir::Type oldTy, mlir::Type newTy)> knownOldToNew=nullptr) |
| Return true iff the types unify and newTy is "more concrete" than oldTy. | |
| template<typename TypeClass> | |
| TypeClass | getIfSingleton (mlir::TypeRange types) |
| template<typename TypeClass> | |
| TypeClass | getAtIndex (mlir::TypeRange types, size_t index) |
| mlir::FailureOr< mlir::IntegerAttr > | forceIntType (mlir::IntegerAttr attr, EmitErrorFn emitError) |
| Convert an IntegerAttr with a type other than IndexType to use IndexType. | |
| mlir::FailureOr< mlir::Attribute > | forceIntAttrType (mlir::Attribute attr, EmitErrorFn emitError) |
| Convert any IntegerAttr with a type other than IndexType to use IndexType. | |
| mlir::FailureOr< llvm::SmallVector< mlir::Attribute > > | forceIntAttrTypes (llvm::ArrayRef< mlir::Attribute > attrList, EmitErrorFn emitError) |
| Convert any IntegerAttr with a type other than IndexType to use IndexType. | |
| mlir::LogicalResult | verifyIntAttrType (EmitErrorFn emitError, mlir::Attribute in) |
| Verify that all IntegerAttr have type IndexType. | |
| mlir::LogicalResult | verifyAffineMapAttrType (EmitErrorFn emitError, mlir::Attribute in) |
| Verify that all AffineMapAttr only have a single result. | |
| mlir::LogicalResult | verifyStructTypeParams (EmitErrorFn emitError, mlir::ArrayAttr params) |
| Verify that the StructType parameters are valid. | |
| mlir::LogicalResult | verifyArrayDimSizes (EmitErrorFn emitError, mlir::ArrayRef< mlir::Attribute > dimensionSizes) |
| Verify that the array dimensions are valid. | |
| mlir::LogicalResult | verifyArrayType (EmitErrorFn emitError, mlir::Type elementType, mlir::ArrayRef< mlir::Attribute > dimensionSizes) |
| Verify that the ArrayType is valid. | |
| mlir::LogicalResult | verifySubArrayOrElementType (EmitErrorFn emitError, array::ArrayType arrayType, mlir::Type subArrayOrElemType) |
| Determine if the subArrayOrElemType is either a valid subarray of arrayType (see verifySubArrayType), or if subArrayOrElemType matches the element type of arrayType. | |
| bool | isFeltOrSimpleFeltAggregate (mlir::Type ty) |
| Return true if the given type is a FeltType or a "simple" aggregate (i.e., ArrayType or PodType, not StructType) composed only of FeltType or nested FeltType aggregates. | |
| bool | isValidMainSignalType (mlir::Type pType) |
| Return true if the given type is valid for signals (input arguments or outputs) of the main entry struct. | |
| void | registerMemberWriteValidatorPass () |
| void | registerMemberWriteValidatorPassPass () |
| void | registerValidationPasses () |
Variables | |
| constexpr char | FUNC_NAME_COMPUTE [] = "compute" |
| Symbol name for the witness generation (and resp. | |
| constexpr char | FUNC_NAME_CONSTRAIN [] = "constrain" |
| constexpr char | FUNC_NAME_PRODUCT [] = "product" |
| constexpr char | LANG_ATTR_NAME [] = "llzk.lang" |
| Name of the attribute on the top-level ModuleOp that identifies the ModuleOp as the root module and specifies the frontend language name that the IR was compiled from, if available. | |
| constexpr char | DERIVED_ATTR_NAME [] = "llzk.derived" |
| Name of the attribute on a @product func that has been automatically aligned from @compute + @constrain funcs, or on @compute and @constrain funcs that have been automatically projected from a @product func. | |
| constexpr char | FIELD_ATTR_NAME [] = "llzk.fields" |
| Name of the attribute on the top-level ModuleOp that defines prime fields used in the circuit. | |
| constexpr char | MAIN_ATTR_NAME [] = "llzk.main" |
| Name of the attribute on the top-level ModuleOp that specifies the type of the main struct. | |
| constexpr char | PRODUCT_SOURCE [] = "product_source" |
| Name of the attribute on aligned product program ops that specifies where they came from. | |
| constexpr char | LAYOUT_MAIN_ROOT [] = "main" |
| Structural path root for storage in the main instance. | |
| constexpr char | LAYOUT_ARGUMENT_ROOT [] = "arg" |
| Structural path root for a constrain argument, followed by its position. | |
| using llzk::EmitErrorFn = llvm::function_ref<InFlightDiagnosticWrapper()> |
Callback to produce an error diagnostic.
Definition at line 148 of file ErrorHelper.h.
| using llzk::FieldRef = std::reference_wrapper<const Field> |
| using llzk::FieldSet = llvm::SmallSet<FieldRef, 2> |
| using llzk::ManagedResources |
Definition at line 35 of file SymbolLookup.h.
| using llzk::Overwrite = std::pair<component::MemberWriteOp, component::MemberWriteOp> |
Definition at line 98 of file MemberOverwriteAnalysis.h.
| using llzk::OwningEmitErrorFn = std::function<InFlightDiagnosticWrapper()> |
This type is required in cases like the functions below to take ownership of the lambda so it is not destroyed upon return from the function.
It can be implicitly converted to EmitErrorFn.
Definition at line 152 of file ErrorHelper.h.
| using llzk::SourceRefRemappings = std::vector<std::pair<SourceRef, SourceRefLatticeValue>> |
Definition at line 30 of file ConstraintDependencyGraph.h.
| using llzk::TranslationMap = std::unordered_map<SourceRef, SourceRefLatticeValue, SourceRef::Hash> |
Definition at line 24 of file SourceRefLattice.h.
| using llzk::UnificationMap = mlir::DenseMap<std::pair<mlir::SymbolRefAttr, Side>, mlir::Attribute> |
Optional result from type unifications.
Maps SymbolRefAttr appearing in one type to the associated Attribute from the other type at the same nested position. The Side enum in the key indicates which input expression the SymbolRefAttr is from. Additionally, if a conflict is found (i.e., multiple Occurrences of a specific SymbolRefAttr on the same side map to different Attributes from the other side), the mapped value will be nullptr.
This map is used by the llzk-flatten pass to replace struct parameter SymbolRefAttr with static concrete values to produce the flattened versions of structs.
Definition at line 208 of file TypeHelper.h.
|
strong |
Concreteness classification for an argument to a parameterized struct type.
| Enumerator | |
|---|---|
| NonConcrete | |
| Concrete | |
| Wildcard | |
Definition at line 117 of file TypeHelper.h.
|
strong |
| Enumerator | |
|---|---|
| Outs | |
| Errs | |
| Dbgs | |
Definition at line 13 of file AnalysisPassEnums.h.inc.
|
strong |
| Enumerator | |
|---|---|
| LHS | |
| RHS | |
Definition at line 148 of file TypeHelper.h.
| ExpressionValue llzk::add | ( | const llvm::SMTSolverRef & | solver, |
| const ExpressionValue & | lhs, | ||
| const ExpressionValue & | rhs ) |
Definition at line 309 of file IntervalAnalysis.cpp.
| component::MemberDefOp llzk::addAuxMember | ( | component::StructDefOp | structDef, |
| llvm::StringRef | name, | ||
| mlir::Type | type ) |
| MemberDefOp llzk::addAuxMember | ( | StructDefOp | structDef, |
| StringRef | name, | ||
| Type | type ) |
Definition at line 286 of file LLZKLoweringUtils.cpp.
| void llzk::addLangAttrForLLZKDialect | ( | mlir::ModuleOp | mod | ) |
| void llzk::addLangAttrForLLZKDialect | ( | ModuleOp | mod | ) |
Definition at line 32 of file Builders.cpp.
| llvm::LogicalResult llzk::addSpecifiedFields | ( | mlir::ModuleOp | modOp | ) |
Update the set of available prime fields with the fields specified on the root module.
| modOp | a ModuleOp in the circuit. The search for the field attribute begins at this module and continues until a field attribute is encountered. The operation is recursive as include operations introduce their own root modules, which may include new prime specifications. |
| void llzk::addTemplateParams | ( | mlir::OpBuilder & | odsBuilder, |
| typename OpClass::Properties & | props, | ||
| llvm::ArrayRef< mlir::Attribute > | templateParams ) |
Definition at line 27 of file BuilderHelper.h.
| llvm::FailureOr< std::pair< llvm::SetVector< Overwrite >, FuzzySet > > llzk::analyzeStruct | ( | component::StructDefOp | structDef | ) |
Definition at line 101 of file MemberOverwriteAnalysis.cpp.
|
inline |
Definition at line 93 of file SymbolHelper.h.
| mlir::SymbolRefAttr llzk::appendLeaf | ( | mlir::SymbolRefAttr | orig, |
| mlir::FlatSymbolRefAttr | newLeaf ) |
Return SymbolRefAttr like the one given but with a new leaf (final) element added.
|
inline |
Definition at line 90 of file SymbolHelper.h.
| SymbolRefAttr llzk::appendLeaf | ( | SymbolRefAttr | orig, |
| FlatSymbolRefAttr | newLeaf ) |
Definition at line 303 of file SymbolHelper.cpp.
| mlir::SymbolRefAttr llzk::appendLeafName | ( | mlir::SymbolRefAttr | orig, |
| const mlir::Twine & | newLeafSuffix ) |
Return SymbolRefAttr like the one given but with the leaf (final) element appended with the given suffix.
| SymbolRefAttr llzk::appendLeafName | ( | SymbolRefAttr | orig, |
| const Twine & | newLeafSuffix ) |
Definition at line 307 of file SymbolHelper.cpp.
|
inline |
Definition at line 96 of file AttributeHelper.h.
| bool llzk::arrayTypesUnify | ( | array::ArrayType | lhs, |
| array::ArrayType | rhs, | ||
| mlir::ArrayRef< llvm::StringRef > | rhsReversePrefix = {}, | ||
| UnificationMap * | unifications = nullptr ) |
Return true iff the two ArrayType instances are equivalent or could be equivalent after full instantiation of template parameters.
| bool llzk::arrayTypesUnify | ( | ArrayType | lhs, |
| ArrayType | rhs, | ||
| ArrayRef< StringRef > | rhsReversePrefix, | ||
| UnificationMap * | unifications ) |
Definition at line 933 of file TypeHelper.cpp.
| void llzk::assertValidAttrForParamOfType | ( | Attribute | attr | ) |
Definition at line 1087 of file TypeHelper.cpp.
| void llzk::assertValidAttrForParamOfType | ( | mlir::Attribute | attr | ) |
|
inline |
Build a SymbolRefAttr from the list of pieces.
Definition at line 63 of file SymbolHelper.h.
|
inline |
Build a SymbolRefAttr from the list of pieces.
Definition at line 58 of file SymbolHelper.h.
|
inline |
Build a SymbolRefAttr that prepends tail with root, i.e., root::tail.
Definition at line 53 of file SymbolHelper.h.
| ExpressionValue llzk::bitAnd | ( | const llvm::SMTSolverRef & | solver, |
| const ExpressionValue & | lhs, | ||
| const ExpressionValue & | rhs ) |
Definition at line 432 of file IntervalAnalysis.cpp.
| ExpressionValue llzk::bitOr | ( | const llvm::SMTSolverRef & | solver, |
| const ExpressionValue & | lhs, | ||
| const ExpressionValue & | rhs ) |
Definition at line 440 of file IntervalAnalysis.cpp.
| ExpressionValue llzk::bitXor | ( | const llvm::SMTSolverRef & | solver, |
| const ExpressionValue & | lhs, | ||
| const ExpressionValue & | rhs ) |
Definition at line 448 of file IntervalAnalysis.cpp.
Definition at line 723 of file Intervals.cpp.
| ExpressionValue llzk::boolAnd | ( | const llvm::SMTSolverRef & | solver, |
| const ExpressionValue & | lhs, | ||
| const ExpressionValue & | rhs ) |
Definition at line 543 of file IntervalAnalysis.cpp.
Definition at line 783 of file Intervals.cpp.
| ExpressionValue llzk::boolNot | ( | const llvm::SMTSolverRef & | solver, |
| const ExpressionValue & | val ) |
Definition at line 589 of file IntervalAnalysis.cpp.
Definition at line 740 of file Intervals.cpp.
| ExpressionValue llzk::boolOr | ( | const llvm::SMTSolverRef & | solver, |
| const ExpressionValue & | lhs, | ||
| const ExpressionValue & | rhs ) |
Definition at line 552 of file IntervalAnalysis.cpp.
| ExpressionValue llzk::boolToFelt | ( | const llvm::SMTSolverRef & | solver, |
| const ExpressionValue & | expr, | ||
| unsigned | bitwidth ) |
Definition at line 260 of file IntervalAnalysis.cpp.
Definition at line 757 of file Intervals.cpp.
| ExpressionValue llzk::boolXor | ( | const llvm::SMTSolverRef & | solver, |
| const ExpressionValue & | lhs, | ||
| const ExpressionValue & | rhs ) |
Definition at line 561 of file IntervalAnalysis.cpp.
| void llzk::buildConstraintFlatteningPipeline | ( | mlir::OpPassManager & | ) |
Canonicalize, monomorphize templates, expose child members, and expand main constrain.
| void llzk::buildConstraintFlatteningPipeline | ( | OpPassManager & | pm | ) |
Definition at line 142 of file LLZKTransformationPassPipelines.cpp.
| void llzk::buildFullInliningPipeline | ( | mlir::OpPassManager & | , |
| const FullStructInliningConfig & | ) |
| void llzk::buildFullInliningPipeline | ( | OpPassManager & | pm, |
| const FullStructInliningConfig & | cfg ) |
Definition at line 119 of file LLZKTransformationPassPipelines.cpp.
| void llzk::buildFullPolyLoweringPipeline | ( | mlir::OpPassManager & | , |
| const FullPolyLoweringConfig & | ) |
| void llzk::buildFullPolyLoweringPipeline | ( | OpPassManager & | pm, |
| const FullPolyLoweringConfig & | cfg ) |
Definition at line 129 of file LLZKTransformationPassPipelines.cpp.
| void llzk::buildFullStructInliningPipeline | ( | mlir::OpPassManager & | , |
| const FullStructInliningConfig & | ) |
| void llzk::buildFullStructInliningPipeline | ( | OpPassManager & | pm, |
| const FullStructInliningConfig & | cfg ) |
Definition at line 112 of file LLZKTransformationPassPipelines.cpp.
| mlir::FailureOr< LLZKLayout > llzk::buildLLZKLayout | ( | mlir::ModuleOp | module | ) |
Enumerate the signal leaves of llzk.main and its constrain arguments.
Struct references and array shapes must be concrete after template monomorphization. Main must define a constrain function; product-only main components are unsupported. Rolled arrays in member storage are resolved through poly.family metadata, including struct fields inside POD elements. The monomorphizer's mapping is trusted to associate each index tuple with the correct specialization arguments; export checks that referenced IDs are unambiguous and origins match. Main's constrain arguments are felt scalars or arrays of felt. Does not evaluate or rewrite function bodies.
| void llzk::buildProductProgramPipeline | ( | mlir::OpPassManager & | ) |
| void llzk::buildProductProgramPipeline | ( | OpPassManager & | pm | ) |
Definition at line 107 of file LLZKTransformationPassPipelines.cpp.
| void llzk::buildRemoveUnnecessaryOpsAndDefsPipeline | ( | mlir::OpPassManager & | pm | ) |
Definition at line 102 of file LLZKTransformationPassPipelines.cpp.
| void llzk::buildRemoveUnnecessaryOpsPipeline | ( | mlir::OpPassManager & | pm | ) |
Definition at line 97 of file LLZKTransformationPassPipelines.cpp.
|
inline |
Generate a string by calling the given appendFn with an llvm::raw_ostream & as the first argument followed by the additional Args provided (if any).
Definition at line 42 of file StreamHelper.h.
|
inline |
Generate a string by using the insertion operator (<<) to append all args to a stream backed by the returned string.
Definition at line 60 of file StreamHelper.h.
|
inline |
Generate a string by calling base.print(llvm::raw_ostream &) on a stream backed by the returned string.
Definition at line 52 of file StreamHelper.h.
| bool llzk::canMaterializeValueCopy | ( | mlir::Type | type | ) |
Return whether type has supported value-copy semantics.
A successful copy may reuse the same SSA value only for immutable values, identity-bearing handles, or aggregates without mutable payload.
| bool llzk::canMaterializeValueCopy | ( | Type | type | ) |
Definition at line 40 of file ValueCopy.cpp.
|
constexprnoexcept |
| Expected< APInt > llzk::checkedToAPInt | ( | const DynamicAPInt & | value, |
| unsigned | bitWidth, | ||
| bool | isSigned ) |
Definition at line 64 of file DynamicAPIntHelper.cpp.
| llvm::Expected< llvm::APInt > llzk::checkedToAPInt | ( | const llvm::DynamicAPInt & | value, |
| unsigned | bitWidth, | ||
| bool | isSigned ) |
Encode a signed or unsigned integer at exactly bitWidth, rejecting overflow.
| Expected< int64_t > llzk::checkedToInt64 | ( | const DynamicAPInt & | value | ) |
Definition at line 74 of file DynamicAPIntHelper.cpp.
| llvm::Expected< int64_t > llzk::checkedToInt64 | ( | const llvm::DynamicAPInt & | value | ) |
Convert to a native signed integer, rejecting values outside its range.
| Expected< size_t > llzk::checkedToSize | ( | const DynamicAPInt & | value, |
| const Twine & | context ) |
Definition at line 89 of file DynamicAPIntHelper.cpp.
| llvm::Expected< size_t > llzk::checkedToSize | ( | const llvm::DynamicAPInt & | value, |
| const llvm::Twine & | context ) |
Convert to size_t, rejecting negative values and overflow.
Prefix errors with the supplied diagnostic context.
| Expected< uint64_t > llzk::checkedToUInt64 | ( | const DynamicAPInt & | value | ) |
Definition at line 81 of file DynamicAPIntHelper.cpp.
| llvm::Expected< uint64_t > llzk::checkedToUInt64 | ( | const llvm::DynamicAPInt & | value | ) |
Convert to a native unsigned integer, rejecting negative values and overflow.
Definition at line 150 of file Intervals.cpp.
| mlir::LogicalResult llzk::checkForAuxMemberConflicts | ( | component::StructDefOp | structDef, |
| llvm::StringRef | auxPrefix ) |
| LogicalResult llzk::checkForAuxMemberConflicts | ( | StructDefOp | structDef, |
| StringRef | prefix ) |
Definition at line 226 of file LLZKLoweringUtils.cpp.
| LogicalResult llzk::checkFuncBodyIsStraightLine | ( | FuncDefOp | func, |
| StringRef | passName ) |
Definition at line 238 of file LLZKLoweringUtils.cpp.
| mlir::LogicalResult llzk::checkFuncBodyIsStraightLine | ( | function::FuncDefOp | func, |
| llvm::StringRef | passName ) |
Rejects control flow under func; auxiliary materialization assumes control flow has already been flattened or otherwise lowered away.
The region check catches multi-block function bodies before the operation walk rejects nested regions or successor-bearing operations.
|
inline |
Definition at line 137 of file TypeHelper.h.
| AttrConcreteness llzk::classifyAttrConcreteness | ( | Attribute | attr, |
| bool | allowStructParams ) |
Definition at line 543 of file TypeHelper.cpp.
| AttrConcreteness llzk::classifyAttrConcreteness | ( | mlir::Attribute | attr, |
| bool | allowStructParams = true ) |
Classify attr as an argument for a parameterized struct type.
TypeAttr values are concrete when their nested type is concrete according to isConcreteType. Integer attributes are concrete unless they are the dynamic-size sentinel, which is classified as Wildcard. Felt constants are always concrete. Symbol references and affine maps remain non-concrete because they require further instantiation.
| ExpressionValue llzk::cmp | ( | const llvm::SMTSolverRef & | solver, |
| boolean::CmpOp | op, | ||
| const ExpressionValue & | lhs, | ||
| const ExpressionValue & | rhs ) |
Definition at line 478 of file IntervalAnalysis.cpp.
| mlir::LogicalResult llzk::collectFields | ( | mlir::Operation * | root, |
| FieldSet & | fields, | ||
| bool | silent = true ) |
|
inline |
Collect function arg/result names and split suffixes from a list of original types.
Definition at line 141 of file ConversionUtils.h.
| uint64_t llzk::computeEmitEqCardinality | ( | mlir::Type | type | ) |
Compute the cardinality (i.e.
number of scalar constraints) for an EmitEqualityOp type since the op can be used to constrain two same-size arrays.
| uint64_t llzk::computeEmitEqCardinality | ( | Type | type | ) |
Definition at line 568 of file TypeHelper.cpp.
| mlir::Operation * llzk::create | ( | MlirOpBuilder | cBuilder, |
| MlirLocation | cLocation, | ||
| Args &&... | args ) |
| std::unique_ptr<::mlir::Pass > llzk::createCallGraphPrinterPass | ( | ) |
Definition at line 120 of file CallGraphPasses.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createCallGraphPrinterPass | ( | CallGraphPrinterPassOptions | options | ) |
Definition at line 124 of file CallGraphPasses.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createCallGraphSCCsPrinterPass | ( | ) |
Definition at line 234 of file CallGraphPasses.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createCallGraphSCCsPrinterPass | ( | CallGraphSCCsPrinterPassOptions | options | ) |
Definition at line 238 of file CallGraphPasses.cpp.
|
inline |
Rebuild a function.call while preserving explicit instantiation state from oldCall.
This helper forwards both template parameters and affine-map instantiation operands from the original call while allowing callers to replace the result types and SSA operands that the new call should use. Discardable attributes from the original call are copied so pass-local metadata remains attached to rebuilt calls.
Definition at line 211 of file ConversionUtils.h.
| std::unique_ptr<::mlir::Pass > llzk::createComputeConstrainToProductPass | ( | ) |
Definition at line 116 of file LLZKComputeConstrainToProductPass.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createComputeConstrainToProductPass | ( | ComputeConstrainToProductPassOptions | options | ) |
Definition at line 120 of file LLZKComputeConstrainToProductPass.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createConstraintDependencyGraphPrinterPass | ( | ) |
Definition at line 351 of file ConstraintDependencyGraphPass.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createConstraintDependencyGraphPrinterPass | ( | ConstraintDependencyGraphPrinterPassOptions | options | ) |
Definition at line 355 of file ConstraintDependencyGraphPass.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createEnforceNoMemberOverwritePass | ( | ) |
Definition at line 207 of file LLZKEnforceNoOverwritePass.cpp.
| llvm::SMTExprRef llzk::createFieldInverseExpr | ( | const llvm::SMTSolverRef & | solver, |
| Operation * | op, | ||
| const ExpressionValue & | val, | ||
| StringRef | suffix = "" ) |
Definition at line 221 of file IntervalAnalysis.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createFuseProductControlFlowPass | ( | ) |
Definition at line 294 of file LLZKFuseProductControlFlowPass.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createInlineFreeFunctionsPass | ( | ) |
Definition at line 381 of file LLZKInlineFreeFunctionsPass.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createIntervalAnalysisPrinterPass | ( | ) |
Definition at line 483 of file IntervalAnalysisPass.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createIntervalAnalysisPrinterPass | ( | IntervalAnalysisPrinterPassOptions | options | ) |
Definition at line 487 of file IntervalAnalysisPass.cpp.
|
inline |
Definition at line 29 of file Builders.h.
| mlir::OwningOpRef< mlir::ModuleOp > llzk::createLLZKModule | ( | mlir::MLIRContext * | context, |
| mlir::Location | loc ) |
| OwningOpRef< ModuleOp > llzk::createLLZKModule | ( | MLIRContext * | , |
| Location | loc ) |
Definition at line 26 of file Builders.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createMemberWriteValidatorPass | ( | ) |
Definition at line 91 of file LLZKValidationPasses.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createPolyLoweringPass | ( | ) |
Definition at line 484 of file LLZKPolyLoweringPass.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createPolyLoweringPass | ( | PolyLoweringPassOptions | options | ) |
Definition at line 488 of file LLZKPolyLoweringPass.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createPredecessorPrinterPass | ( | ) |
Definition at line 600 of file PredecessorAnalysisPass.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createPredecessorPrinterPass | ( | PredecessorPrinterPassOptions | options | ) |
Definition at line 604 of file PredecessorAnalysisPass.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createRedundantOperationEliminationPass | ( | ) |
Definition at line 575 of file LLZKRedundantOperationEliminationPass.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createRedundantReadAndWriteEliminationPass | ( | ) |
Definition at line 662 of file LLZKRedundantReadAndWriteEliminationPass.cpp.
|
inline |
Definition at line 212 of file SpecializedMemoryPasses.h.
| std::unique_ptr<::mlir::Pass > llzk::createRemoveUnusedDiscardableAllocationsPass | ( | ) |
Definition at line 765 of file LLZKRemoveUnusedDiscardableAllocationsPass.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createRemoveUnusedDiscardableAllocationsPass | ( | RemoveUnusedDiscardableAllocationsPassOptions | options | ) |
Definition at line 769 of file LLZKRemoveUnusedDiscardableAllocationsPass.cpp.
| std::unique_ptr< SpecializedMem2Reg< AllocOpTy > > llzk::createSpecializedMem2RegPass | ( | ) |
Definition at line 136 of file SpecializedMemoryPasses.h.
| std::unique_ptr< SpecializedSROA< AllocOpTy > > llzk::createSpecializedSROAPass | ( | ) |
Definition at line 85 of file SpecializedMemoryPasses.h.
| std::unique_ptr<::mlir::Pass > llzk::createSymbolDefTreePrinterPass | ( | ) |
Definition at line 717 of file SymbolDefTreePass.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createSymbolDefTreePrinterPass | ( | SymbolDefTreePrinterPassOptions | options | ) |
Definition at line 721 of file SymbolDefTreePass.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createSymbolUseGraphPrinterPass | ( | ) |
Definition at line 834 of file SymbolUseGraphPass.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createSymbolUseGraphPrinterPass | ( | SymbolUseGraphPrinterPassOptions | options | ) |
Definition at line 838 of file SymbolUseGraphPass.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createUnusedDeclarationEliminationPass | ( | ) |
Definition at line 872 of file LLZKUnusedDeclarationEliminationPass.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createUnusedDeclarationEliminationPass | ( | UnusedDeclarationEliminationPassOptions | options | ) |
Definition at line 876 of file LLZKUnusedDeclarationEliminationPass.cpp.
| std::unique_ptr<::mlir::Pass > llzk::createWhileToForPass | ( | ) |
Definition at line 963 of file LLZKWhileToForPass.cpp.
|
inline |
Check whether an op is legal with respect to the given type converter, including TypeAttr attributes (with special handling for FunctionType stored inside a TypeAttr).
Definition at line 52 of file TypeConversionPatterns.h.
|
inline |
Definition at line 21 of file BuilderHelper.h.
| ExpressionValue llzk::div | ( | const llvm::SMTSolverRef & | solver, |
| Operation * | op, | ||
| const ExpressionValue & | lhs, | ||
| const ExpressionValue & | rhs ) |
Definition at line 336 of file IntervalAnalysis.cpp.
|
inline |
Definition at line 162 of file ErrorHelper.h.
| void llzk::eraseEmptyNestedModules | ( | mlir::ModuleOp | rootModule | ) |
Remove nested builtin modules whose body is empty, preserving the root module.
| void llzk::eraseEmptyNestedModules | ( | ModuleOp | rootModule | ) |
Definition at line 52 of file SymbolHelper.cpp.
| ExpressionValue llzk::fallbackUnaryOp | ( | const llvm::SMTSolverRef & | solver, |
| Operation * | op, | ||
| const ExpressionValue & | val ) |
Definition at line 598 of file IntervalAnalysis.cpp.
Computes finite-field division by multiplying the dividend by the multiplicative inverse of the divisor.
Only non-zero Degenerate divisors are supported. Supporting arbitrary divisor intervals soundly would require considering the inverse of every possible divisor value and joining the results, which is too expensive for this analysis.
Definition at line 488 of file Intervals.cpp.
| array::ArrayType llzk::flattenArrayElementType | ( | array::ArrayType | outerArrTy, |
| mlir::Type | elementType ) |
Flatten any array-valued element type into the dimensions of outerArrTy.
This is used when an LLZK array logically resolves to a higher-rank array even though array element types cannot themselves be arrays. The returned type keeps outerArrTy's leading dimensions, appends any nested dimensions from elementType, and uses the innermost non-array element type as the final element type.
Definition at line 559 of file TypeHelper.cpp.
| FailureOr< Attribute > llzk::forceIntAttrType | ( | Attribute | attr, |
| EmitErrorFn | emitError ) |
Definition at line 1021 of file TypeHelper.cpp.
| mlir::FailureOr< mlir::Attribute > llzk::forceIntAttrType | ( | mlir::Attribute | attr, |
| EmitErrorFn | emitError ) |
Convert any IntegerAttr with a type other than IndexType to use IndexType.
| FailureOr< SmallVector< Attribute > > llzk::forceIntAttrTypes | ( | ArrayRef< Attribute > | attrList, |
| EmitErrorFn | emitError ) |
Definition at line 1029 of file TypeHelper.cpp.
| mlir::FailureOr< llvm::SmallVector< mlir::Attribute > > llzk::forceIntAttrTypes | ( | llvm::ArrayRef< mlir::Attribute > | attrList, |
| EmitErrorFn | emitError ) |
Convert any IntegerAttr with a type other than IndexType to use IndexType.
| FailureOr< IntegerAttr > llzk::forceIntType | ( | IntegerAttr | attr, |
| EmitErrorFn | emitError ) |
Definition at line 994 of file TypeHelper.cpp.
| mlir::FailureOr< mlir::IntegerAttr > llzk::forceIntType | ( | mlir::IntegerAttr | attr, |
| EmitErrorFn | emitError ) |
Convert an IntegerAttr with a type other than IndexType to use IndexType.
|
inline |
Extract a verified MLIR index value; malformed internal IR is a fatal error.
Definition at line 85 of file AttributeHelper.h.
| bool llzk::functionTypesUnify | ( | FunctionType | lhs, |
| FunctionType | rhs, | ||
| ArrayRef< StringRef > | rhsReversePrefix, | ||
| UnificationMap * | unifications ) |
Definition at line 952 of file TypeHelper.cpp.
| bool llzk::functionTypesUnify | ( | mlir::FunctionType | lhs, |
| mlir::FunctionType | rhs, | ||
| mlir::ArrayRef< llvm::StringRef > | rhsReversePrefix = {}, | ||
| UnificationMap * | unifications = nullptr ) |
Return true iff the two FunctionType instances are equivalent or could be equivalent after full instantiation of template parameters.
| std::vector< SourceRef > llzk::getAllChildren | ( | pod::PodType | podTy, |
| const SourceRef & | root ) |
Definition at line 531 of file SourceRef.cpp.
| std::vector< SourceRef > llzk::getAllChildren | ( | SymbolTableCollection & | , |
| ModuleOp | , | ||
| ArrayType | arrayTy, | ||
| const SourceRef & | root ) |
Definition at line 490 of file SourceRef.cpp.
| std::vector< SourceRef > llzk::getAllChildren | ( | SymbolTableCollection & | tables, |
| ModuleOp | mod, | ||
| SymbolLookupResult< StructDefOp > | structDefRes, | ||
| const SourceRef & | root ) |
Definition at line 504 of file SourceRef.cpp.
|
inline |
Definition at line 297 of file TypeHelper.h.
|
inline |
Return the function arg/result attribute at index for the given name, if present.
Definition at line 120 of file ConversionUtils.h.
| mlir::RegisteredOperationName llzk::getCheckRegisteredInfo | ( | mlir::MLIRContext * | ctx | ) |
| mlir::FailureOr< polymorphic::TemplateOp > llzk::getConstResolutionTemplate | ( | mlir::SymbolTableCollection & | tables, |
| mlir::Operation * | origin ) |
Return the template scope that should be used to resolve flat constant references from the given origin.
For ops nested in a verif.contract targeting a templated symbol, this is the target's template even when the contract is physically nested elsewhere. Otherwise this is the nearest physical poly.template, if any.
| FailureOr< TemplateOp > llzk::getConstResolutionTemplate | ( | SymbolTableCollection & | tables, |
| Operation * | origin ) |
Definition at line 488 of file SymbolHelper.cpp.
|
inline |
Definition at line 154 of file ErrorHelper.h.
|
inline |
Definition at line 158 of file ErrorHelper.h.
| unsigned llzk::getFeltDegree | ( | mlir::Value | val, |
| llvm::DenseMap< mlir::Value, unsigned > & | memo ) |
| unsigned llzk::getFeltDegree | ( | Value | val, |
| DenseMap< Value, unsigned > & | memo ) |
Definition at line 294 of file LLZKLoweringUtils.cpp.
|
inline |
Construct a FlatSymbolRefAttr with the given content.
Definition at line 48 of file SymbolHelper.h.
|
inline |
Return the full name for this symbol from the root module, including any surrounding symbol table names.
If requireParent is false and the symbol is not nested in any operation, return its flat symbol name directly.
Definition at line 131 of file SymbolHelper.h.
|
inline |
Definition at line 293 of file TypeHelper.h.
| mlir::FailureOr< SymbolLookupResult< llzk::component::StructDefOp > > llzk::getMainInstanceDef | ( | mlir::SymbolTableCollection & | symbolTable, |
| mlir::Operation * | lookupFrom ) |
Lookup the StructDefOp of the main instance.
This is specified by a TypeAttr on the top-level module with the key LLZK_MAIN_ATTR_NAME and is optional, in which case the result will be success(nullptr).
| FailureOr< SymbolLookupResult< StructDefOp > > llzk::getMainInstanceDef | ( | SymbolTableCollection & | symbolTable, |
| Operation * | lookupFrom ) |
Definition at line 431 of file SymbolHelper.cpp.
| mlir::FailureOr< llzk::component::StructType > llzk::getMainInstanceType | ( | mlir::Operation * | lookupFrom | ) |
Lookup the StructType of the main instance.
This is specified by a TypeAttr on the top-level module with the key LLZK_MAIN_ATTR_NAME and is optional, in which case the result will be success(nullptr).
| FailureOr< StructType > llzk::getMainInstanceType | ( | Operation * | lookupFrom | ) |
Definition at line 417 of file SymbolHelper.cpp.
|
inlineconstexpr |
Definition at line 22 of file AnalysisPassEnums.h.inc.
| llvm::SmallVector< mlir::StringRef > llzk::getNames | ( | mlir::SymbolRefAttr | ref | ) |
| llvm::SmallVector< StringRef > llzk::getNames | ( | SymbolRefAttr | ref | ) |
Definition at line 261 of file SymbolHelper.cpp.
|
inline |
Get the operation name, like "constrain.eq" for the given OpClass.
This function can be used when the compiler would complain about incomplete types if OpClass::getOperationName() were called directly.
Definition at line 34 of file OpHelpers.h.
|
inline |
Return the closest surrounding parent/ancestor operation that is of type 'OpClass'.
Definition at line 53 of file OpHelpers.h.
| mlir::FailureOr< mlir::SymbolRefAttr > llzk::getPathFromRoot | ( | component::MemberDefOp & | to, |
| mlir::ModuleOp * | foundRoot = nullptr ) |
| mlir::FailureOr< mlir::SymbolRefAttr > llzk::getPathFromRoot | ( | component::StructDefOp & | to, |
| mlir::ModuleOp * | foundRoot = nullptr ) |
| FailureOr< SymbolRefAttr > llzk::getPathFromRoot | ( | FuncDefOp & | to, |
| ModuleOp * | foundRoot ) |
Definition at line 388 of file SymbolHelper.cpp.
| mlir::FailureOr< mlir::SymbolRefAttr > llzk::getPathFromRoot | ( | function::FuncDefOp & | to, |
| mlir::ModuleOp * | foundRoot = nullptr ) |
| FailureOr< SymbolRefAttr > llzk::getPathFromRoot | ( | MemberDefOp & | to, |
| ModuleOp * | foundRoot ) |
Definition at line 384 of file SymbolHelper.cpp.
| mlir::FailureOr< mlir::SymbolRefAttr > llzk::getPathFromRoot | ( | mlir::SymbolOpInterface | to, |
| mlir::ModuleOp * | foundRoot = nullptr ) |
| FailureOr< SymbolRefAttr > llzk::getPathFromRoot | ( | StructDefOp & | to, |
| ModuleOp * | foundRoot ) |
Definition at line 380 of file SymbolHelper.cpp.
| FailureOr< SymbolRefAttr > llzk::getPathFromRoot | ( | SymbolOpInterface | to, |
| ModuleOp * | foundRoot ) |
Definition at line 372 of file SymbolHelper.cpp.
| FailureOr< SymbolRefAttr > llzk::getPathFromRoot | ( | TemplateOp & | to, |
| ModuleOp * | foundRoot ) |
Definition at line 376 of file SymbolHelper.cpp.
| mlir::FailureOr< mlir::SymbolRefAttr > llzk::getPathFromTopRoot | ( | component::MemberDefOp & | to, |
| mlir::ModuleOp * | foundRoot = nullptr ) |
| mlir::FailureOr< mlir::SymbolRefAttr > llzk::getPathFromTopRoot | ( | component::StructDefOp & | to, |
| mlir::ModuleOp * | foundRoot = nullptr ) |
| FailureOr< SymbolRefAttr > llzk::getPathFromTopRoot | ( | FuncDefOp & | to, |
| ModuleOp * | foundRoot ) |
Definition at line 413 of file SymbolHelper.cpp.
| mlir::FailureOr< mlir::SymbolRefAttr > llzk::getPathFromTopRoot | ( | function::FuncDefOp & | to, |
| mlir::ModuleOp * | foundRoot = nullptr ) |
| FailureOr< SymbolRefAttr > llzk::getPathFromTopRoot | ( | MemberDefOp & | to, |
| ModuleOp * | foundRoot ) |
Definition at line 409 of file SymbolHelper.cpp.
| mlir::FailureOr< mlir::SymbolRefAttr > llzk::getPathFromTopRoot | ( | mlir::SymbolOpInterface | to, |
| mlir::ModuleOp * | foundRoot = nullptr ) |
| FailureOr< SymbolRefAttr > llzk::getPathFromTopRoot | ( | StructDefOp & | to, |
| ModuleOp * | foundRoot ) |
Definition at line 405 of file SymbolHelper.cpp.
| FailureOr< SymbolRefAttr > llzk::getPathFromTopRoot | ( | SymbolOpInterface | to, |
| ModuleOp * | foundRoot ) |
Definition at line 397 of file SymbolHelper.cpp.
| FailureOr< SymbolRefAttr > llzk::getPathFromTopRoot | ( | TemplateOp & | to, |
| ModuleOp * | foundRoot ) |
Definition at line 401 of file SymbolHelper.cpp.
| mlir::FailureOr< mlir::SymbolRefAttr > llzk::getPathRelativeToAncestor | ( | mlir::SymbolOpInterface | symbol, |
| mlir::ModuleOp | ancestor, | ||
| llvm::function_ref< mlir::InFlightDiagnostic()> | emitError = nullptr ) |
Return symbol's path relative to the supplied ancestor module.
The path excludes ancestor's own name; nested symbol tables contribute their names, including modules with the LANG_ATTR_NAME attribute. For LLZK type resolution, ancestor must be the module with LANG_ATTR_NAME where lookup starts. Fails if the symbol is not a strict descendant or an intervening symbol table is unnamed. If supplied, emitError creates the diagnostic's opening message at the caller's chosen location; this helper appends the failure reason and notes identifying the symbol or unnamed table and the supplied module. Without emitError, failure is silent.
| FailureOr< SymbolRefAttr > llzk::getPathRelativeToAncestor | ( | SymbolOpInterface | symbol, |
| ModuleOp | ancestor, | ||
| llvm::function_ref< InFlightDiagnostic()> | emitError ) |
Definition at line 322 of file SymbolHelper.cpp.
| llvm::SmallVector< mlir::FlatSymbolRefAttr > llzk::getPieces | ( | mlir::SymbolRefAttr | ref | ) |
| llvm::SmallVector< FlatSymbolRefAttr > llzk::getPieces | ( | SymbolRefAttr | ref | ) |
Definition at line 270 of file SymbolHelper.cpp.
|
inline |
Return SymbolRefAttr like the one given but with the leaf/final element removed.
Definition at line 73 of file SymbolHelper.h.
| mlir::FailureOr< mlir::ModuleOp > llzk::getRootModule | ( | mlir::Operation * | from | ) |
Starting at the Operation from, find the nearest ancestor ModuleOp marked with LANG_ATTR_NAME from which symbol lookups are rooted.
| FailureOr< ModuleOp > llzk::getRootModule | ( | Operation * | from | ) |
Definition at line 367 of file SymbolHelper.cpp.
| mlir::FailureOr< SymbolLookupResult< component::StructDefOp > > llzk::getRootStructDef | ( | mlir::SymbolTableCollection & | tables, |
| mlir::Operation * | lookupFrom, | ||
| mlir::StringRef | symbolPath = {} ) |
Resolve symbolPath (MLIR syntax or a bare name), defaulting to llzk.main.
An absent default succeeds with a null result. Invalid paths or unresolved explicit symbols emit diagnostics and fail.
| FailureOr< SymbolLookupResult< StructDefOp > > llzk::getRootStructDef | ( | SymbolTableCollection & | tables, |
| Operation * | lookupFrom, | ||
| StringRef | symbolPath ) |
Definition at line 444 of file SymbolHelper.cpp.
|
inline |
Return the closest surrounding parent/ancestor operation that is of type 'OpClass', either the op itself or an ancestor.
Definition at line 40 of file OpHelpers.h.
| SymbolLookupResult< StructDefOp > llzk::getStructDef | ( | SymbolTableCollection & | tables, |
| ModuleOp | mod, | ||
| StructType | ty ) |
Lookup a StructDefOp from a given StructType.
| tables | |
| mod | |
| ty |
Definition at line 292 of file SourceRef.cpp.
| mlir::StringAttr llzk::getSymbolName | ( | mlir::Operation * | symbol | ) |
Returns the name of the given symbol operation, or nullptr if no symbol is present.
|
inline |
Definition at line 70 of file SymbolTableLLZK.h.
| llvm::SmallDenseSet< mlir::SymbolRefAttr > llzk::getSymbolsUsedIn | ( | mlir::ArrayRef< mlir::Type > | types | ) |
Get all symbols used within the given Types.
| void llzk::getSymbolsUsedIn | ( | mlir::ArrayRef< mlir::Type > | types, |
| llvm::SmallDenseSet< mlir::SymbolRefAttr > & | symbolsUsed ) |
Add all symbols used within the given Types to the provided set.
| llvm::SmallDenseSet< mlir::SymbolRefAttr > llzk::getSymbolsUsedIn | ( | mlir::Type | t | ) |
Get all symbols used within the given Type.
| void llzk::getSymbolsUsedIn | ( | mlir::Type | t, |
| llvm::SmallDenseSet< mlir::SymbolRefAttr > & | symbolsUsed ) |
Add all symbols used within the given Type to the provided set.
| std::optional< mlir::SymbolTable::UseRange > llzk::getSymbolUses | ( | mlir::Operation * | from | ) |
Get an iterator range for all of the uses, for any symbol, that are nested within the given operation 'from'.
This does not traverse into any nested symbol tables. This function returns std::nullopt if there are any unknown operations that may potentially be symbol tables.
| std::optional< mlir::SymbolTable::UseRange > llzk::getSymbolUses | ( | mlir::Operation * | symbol, |
| mlir::Operation * | from ) |
| std::optional< mlir::SymbolTable::UseRange > llzk::getSymbolUses | ( | mlir::Operation * | symbol, |
| mlir::Region * | from ) |
| std::optional< mlir::SymbolTable::UseRange > llzk::getSymbolUses | ( | mlir::Region * | from | ) |
| std::optional< mlir::SymbolTable::UseRange > llzk::getSymbolUses | ( | mlir::StringAttr | symbol, |
| mlir::Operation * | from ) |
Get all of the uses of the given symbol that are nested within the given operation 'from'.
This does not traverse into any nested symbol tables. This function returns std::nullopt if there are any unknown operations that may potentially be symbol tables.
| std::optional< mlir::SymbolTable::UseRange > llzk::getSymbolUses | ( | mlir::StringAttr | symbol, |
| mlir::Region * | from ) |
|
inline |
Return SymbolRefAttr like the one given but with the root/head element removed.
Definition at line 68 of file SymbolHelper.h.
| mlir::FailureOr< mlir::ModuleOp > llzk::getTopRootModule | ( | mlir::Operation * | from | ) |
With include statements, there may be root modules nested within other root modules.
This function resolves the topmost root module.
| FailureOr< ModuleOp > llzk::getTopRootModule | ( | Operation * | from | ) |
Definition at line 392 of file SymbolHelper.cpp.
| mlir::FailureOr< component::StructType > llzk::getTypeFromLlzkMainAttr | ( | mlir::ModuleOp | op, |
| mlir::Attribute | attr ) |
| FailureOr< StructType > llzk::getTypeFromLlzkMainAttr | ( | ModuleOp | op, |
| Attribute | attr ) |
|
inline |
Definition at line 23 of file Builders.h.
| std::string llzk::getValueCopyFailureReason | ( | mlir::Type | type | ) |
Explain the unsupported type or recursive copy requirement.
Return an empty string for a supported type, and reserve shape-resolution advice for unsupported non-static array payloads.
| std::string llzk::getValueCopyFailureReason | ( | Type | type | ) |
Definition at line 56 of file ValueCopy.cpp.
| bool llzk::hasAffineMapAttr | ( | mlir::Type | type | ) |
Return true iff the given type contains an AffineMapAttr.
| bool llzk::hasAffineMapAttr | ( | Type | type | ) |
Definition at line 555 of file TypeHelper.cpp.
|
inline |
Definition at line 17 of file GraphUtil.h.
| hash_code llzk::hashDynamicAPInt | ( | const DynamicAPInt & | value | ) |
Definition at line 59 of file DynamicAPIntHelper.cpp.
| llvm::hash_code llzk::hashDynamicAPInt | ( | const llvm::DynamicAPInt & | value | ) |
Hash the signed numeric value, independent of its width or arithmetic history.
|
inline |
Returns true when op has a memory read effect.
Unknown effects are handled separately by hasUnknownOrNonReadEffect().
Definition at line 21 of file EffectHelper.h.
|
inline |
Returns true when op may have an unknown effect or any effect other than memory read.
Definition at line 30 of file EffectHelper.h.
|
inline |
Decode an MLIR integer using its signedness; signless i1 denotes a boolean.
Other signless integers and index values use signed interpretation.
Definition at line 78 of file AttributeHelper.h.
| ExpressionValue llzk::intersection | ( | const llvm::SMTSolverRef & | solver, |
| const ExpressionValue & | lhs, | ||
| const ExpressionValue & | rhs ) |
|
inline |
Return true if attr is a concrete argument for a parameterized struct type.
Definition at line 133 of file TypeHelper.h.
| bool llzk::isConcreteType | ( | mlir::Type | type, |
| bool | allowStructParams = true ) |
Return false if the type contains any of the following:
| bool llzk::isConcreteType | ( | Type | type, |
| bool | allowStructParams ) |
Definition at line 537 of file TypeHelper.cpp.
| bool llzk::isDynamic | ( | IntegerAttr | intAttr | ) |
Definition at line 557 of file TypeHelper.cpp.
| bool llzk::isDynamic | ( | mlir::IntegerAttr | intAttr | ) |
| bool llzk::isFeltOrSimpleFeltAggregate | ( | mlir::Type | ty | ) |
| bool llzk::isFeltOrSimpleFeltAggregate | ( | Type | ty | ) |
Definition at line 1153 of file TypeHelper.cpp.
| mlir::FailureOr< bool > llzk::isLocationLess | ( | const Op & | l, |
| const Op & | r ) |
| bool llzk::isMoreConcreteUnification | ( | mlir::Type | oldTy, |
| mlir::Type | newTy, | ||
| llvm::function_ref< bool(mlir::Type oldTy, mlir::Type newTy)> | knownOldToNew = nullptr ) |
Return true iff the types unify and newTy is "more concrete" than oldTy.
The types i1, index, felt.type, and string.type are concrete whereas poly.tvar is not (because it may be substituted with any type during struct instantiation). When considering the attributes within array.type and struct.type types, we define IntegerAttr and TypeAttr as concrete then (in decreasing order) AffineMapAttr, SymbolRefAttr, and finally the wildcard (i.e. ?) attribute as least concrete.
| bool llzk::isMoreConcreteUnification | ( | Type | oldTy, |
| Type | newTy, | ||
| llvm::function_ref< bool(Type oldTy, Type newTy)> | knownOldToNew ) |
Definition at line 965 of file TypeHelper.cpp.
|
inline |
Definition at line 92 of file AttributeHelper.h.
|
inline |
Definition at line 93 of file AttributeHelper.h.
|
inline |
Definition at line 94 of file AttributeHelper.h.
| bool llzk::isTypeVarFreeType | ( | mlir::Type | type | ) |
Return false if the type contains a TypeVarType.
This is weaker than isConcreteType: array dimensions may be symbols or affine maps, and parameterized struct types may use nested type attributes or direct affine-map parameters. Direct symbol references remain invalid as struct type parameters because they still require template instantiation.
| bool llzk::isTypeVarFreeType | ( | Type | type | ) |
Definition at line 541 of file TypeHelper.cpp.
| bool llzk::isValidArrayElemType | ( | mlir::Type | type | ) |
valid types: isValidType() - {ArrayType}, plus NoneType for shape-only arrays
| bool llzk::isValidArrayElemType | ( | Type | type | ) |
Definition at line 533 of file TypeHelper.cpp.
| bool llzk::isValidArrayType | ( | mlir::Type | type | ) |
Checks if the type is a LLZK Array and it also contains a valid LLZK type.
| bool llzk::isValidArrayType | ( | Type | type | ) |
Definition at line 535 of file TypeHelper.cpp.
| bool llzk::isValidColumnType | ( | mlir::Type | type, |
| mlir::SymbolTableCollection & | symbolTable, | ||
| mlir::Operation * | op ) |
valid types: {FeltType, StructType (with columns), ArrayType (that contains a valid column type), TypeVarType, PodType}
| bool llzk::isValidColumnType | ( | Type | type, |
| SymbolTableCollection & | symbolTable, | ||
| Operation * | op ) |
Definition at line 518 of file TypeHelper.cpp.
| bool llzk::isValidConstReadType | ( | mlir::Type | type | ) |
valid types: {I1, Index, FeltType, TypeVarType}
| bool llzk::isValidConstReadType | ( | Type | type | ) |
Definition at line 529 of file TypeHelper.cpp.
| bool llzk::isValidEmitEqType | ( | mlir::Type | type | ) |
valid types: isValidType() - {String, StructType} (excluded via any type parameter nesting)
| bool llzk::isValidEmitEqType | ( | Type | type | ) |
Definition at line 524 of file TypeHelper.cpp.
| bool llzk::isValidGlobalType | ( | mlir::Type | type | ) |
valid types: isValidType() - {TypeVarType} - {types with variable parameters}
| bool llzk::isValidGlobalType | ( | Type | type | ) |
Definition at line 522 of file TypeHelper.cpp.
| bool llzk::isValidMainSignalType | ( | mlir::Type | pType | ) |
| bool llzk::isValidMainSignalType | ( | Type | pType | ) |
Definition at line 1169 of file TypeHelper.cpp.
| bool llzk::isValidType | ( | mlir::Type | type | ) |
valid types: {I1, Index, String, FeltType, StructType, ArrayType, TypeVarType, PodType}
| bool llzk::isValidType | ( | Type | type | ) |
Definition at line 516 of file TypeHelper.cpp.
|
inline |
Definition at line 245 of file SymbolLookup.h.
|
inline |
Definition at line 230 of file SymbolLookup.h.
|
inline |
Definition at line 275 of file SymbolLookup.h.
|
inline |
Definition at line 237 of file SymbolLookup.h.
| auto llzk::m_CommutativeOp | ( | LhsMatcher | lhs, |
| RhsMatcher | rhs ) |
Definition at line 47 of file Matchers.h.
|
inline |
Definition at line 89 of file Matchers.h.
|
inline |
Definition at line 91 of file Matchers.h.
|
inline |
Definition at line 69 of file Matchers.h.
|
inline |
Definition at line 71 of file Matchers.h.
| mlir::FailureOr< mlir::Value > llzk::materializeValueCopy | ( | mlir::OpBuilder & | builder, |
| mlir::Location | loc, | ||
| mlir::Value | source ) |
Return source for immutable scalar values, identity-bearing handles, and aggregates without mutable payload, or materialize recursively independent storage for a supported mutable aggregate.
Return failure rather than aliasing source when an independent copy is required but unsupported. The caller must set the desired insertion point first.
| FailureOr< Value > llzk::materializeValueCopy | ( | OpBuilder & | builder, |
| Location | loc, | ||
| Value | source ) |
Definition at line 68 of file ValueCopy.cpp.
| ExpressionValue llzk::mod | ( | const llvm::SMTSolverRef & | solver, |
| const ExpressionValue & | lhs, | ||
| const ExpressionValue & | rhs ) |
Definition at line 416 of file IntervalAnalysis.cpp.
| DynamicAPInt llzk::modExp | ( | const DynamicAPInt & | base, |
| const DynamicAPInt & | exp, | ||
| const DynamicAPInt & | mod ) |
Definition at line 224 of file DynamicAPIntHelper.cpp.
| llvm::DynamicAPInt llzk::modExp | ( | const llvm::DynamicAPInt & | base, |
| const llvm::DynamicAPInt & | exp, | ||
| const llvm::DynamicAPInt & | mod ) |
Modular exponentiation for a nonnegative exponent and positive modulus.
| DynamicAPInt llzk::modInversePrime | ( | const DynamicAPInt & | f, |
| const DynamicAPInt & | p ) |
Definition at line 245 of file DynamicAPIntHelper.cpp.
| llvm::DynamicAPInt llzk::modInversePrime | ( | const llvm::DynamicAPInt & | f, |
| const llvm::DynamicAPInt & | p ) |
| ExpressionValue llzk::mul | ( | const llvm::SMTSolverRef & | solver, |
| const ExpressionValue & | lhs, | ||
| const ExpressionValue & | rhs ) |
Definition at line 327 of file IntervalAnalysis.cpp.
| ExpressionValue llzk::neg | ( | const llvm::SMTSolverRef & | solver, |
| const ExpressionValue & | val ) |
Definition at line 572 of file IntervalAnalysis.cpp.
|
inline |
Return a new RewritePatternSet covering all LLZK op types that may contain a StructType.
All fallback patterns use benefit 0 so higher-benefit patterns can override if needed.
The GeneralTypeReplacePattern is used for all classes in AdditionalOpClasses.
Definition at line 300 of file TypeConversionPatterns.h.
| ExpressionValue llzk::notOp | ( | const llvm::SMTSolverRef & | solver, |
| const ExpressionValue & | val ) |
Definition at line 582 of file IntervalAnalysis.cpp.
Definition at line 595 of file Intervals.cpp.
| DynamicAPInt llzk::operator& | ( | const DynamicAPInt & | lhs, |
| const DynamicAPInt & | rhs ) |
Definition at line 112 of file DynamicAPIntHelper.cpp.
Definition at line 628 of file Intervals.cpp.
| llvm::DynamicAPInt llzk::operator& | ( | const llvm::DynamicAPInt & | lhs, |
| const llvm::DynamicAPInt & | rhs ) |
Bitwise operations use infinite two's-complement sign extension.
Definition at line 469 of file Intervals.cpp.
| UnreducedInterval llzk::operator* | ( | const UnreducedInterval & | lhs, |
| const UnreducedInterval & | rhs ) |
Definition at line 109 of file Intervals.cpp.
Definition at line 456 of file Intervals.cpp.
| UnreducedInterval llzk::operator+ | ( | const UnreducedInterval & | lhs, |
| const UnreducedInterval & | rhs ) |
Definition at line 100 of file Intervals.cpp.
Definition at line 467 of file Intervals.cpp.
| UnreducedInterval llzk::operator- | ( | const UnreducedInterval & | lhs, |
| const UnreducedInterval & | rhs ) |
Definition at line 105 of file Intervals.cpp.
| DynamicAPInt llzk::operator<< | ( | const DynamicAPInt & | lhs, |
| const DynamicAPInt & | rhs ) |
Definition at line 124 of file DynamicAPIntHelper.cpp.
| DynamicAPInt llzk::operator<< | ( | const DynamicAPInt & | lhs, |
| int64_t | rhs ) |
Definition at line 131 of file DynamicAPIntHelper.cpp.
Definition at line 679 of file Intervals.cpp.
| llvm::DynamicAPInt llzk::operator<< | ( | const llvm::DynamicAPInt & | lhs, |
| const llvm::DynamicAPInt & | rhs ) |
Exact left shift.
Negative rhs or a required signed result width exceeding UINT_MAX is a fatal programming error, even when lhs is zero.
| llvm::DynamicAPInt llzk::operator<< | ( | const llvm::DynamicAPInt & | lhs, |
| int64_t | rhs ) |
Exact left shift.
Negative rhs or a required signed result width exceeding UINT_MAX is a fatal programming error, even when lhs is zero.
|
inline |
Definition at line 87 of file MemberOverwriteAnalysis.h.
| llvm::raw_ostream & llzk::operator<< | ( | llvm::raw_ostream & | os, |
| const MemberOverwriteLattice & | lat ) |
Definition at line 27 of file MemberOverwriteAnalysis.cpp.
| mlir::raw_ostream & llzk::operator<< | ( | mlir::raw_ostream & | os, |
| const SourceRef & | rhs ) |
| mlir::raw_ostream & llzk::operator<< | ( | mlir::raw_ostream & | os, |
| const SourceRefLatticeValue & | v ) |
Definition at line 331 of file SourceRefLattice.cpp.
| raw_ostream & llzk::operator<< | ( | raw_ostream & | os, |
| const SourceRef & | rhs ) |
Definition at line 730 of file SourceRef.cpp.
| raw_ostream & llzk::operator<< | ( | raw_ostream & | os, |
| const SourceRefSet & | rhs ) |
Definition at line 742 of file SourceRef.cpp.
| std::strong_ordering llzk::operator<=> | ( | const UnreducedInterval & | lhs, |
| const UnreducedInterval & | rhs ) |
Definition at line 125 of file Intervals.cpp.
| DynamicAPInt llzk::operator>> | ( | const DynamicAPInt & | lhs, |
| const DynamicAPInt & | rhs ) |
Definition at line 144 of file DynamicAPIntHelper.cpp.
| DynamicAPInt llzk::operator>> | ( | const DynamicAPInt & | lhs, |
| int64_t | rhs ) |
Definition at line 155 of file DynamicAPIntHelper.cpp.
Definition at line 695 of file Intervals.cpp.
| llvm::DynamicAPInt llzk::operator>> | ( | const llvm::DynamicAPInt & | lhs, |
| const llvm::DynamicAPInt & | rhs ) |
Arithmetic right shift.
Negative rhs is a fatal programming error. Sufficiently large nonnegative rhs yields 0 for nonnegative lhs, or -1 for negative lhs.
| llvm::DynamicAPInt llzk::operator>> | ( | const llvm::DynamicAPInt & | lhs, |
| int64_t | rhs ) |
Arithmetic right shift.
Negative rhs is a fatal programming error. Sufficiently large nonnegative rhs yields 0 for nonnegative lhs, or -1 for negative lhs.
| llvm::DynamicAPInt llzk::operator>> | ( | const llvm::DynamicAPInt & | lhs, |
| T | rhs ) |
Arithmetic right shift by an unsigned count, checked before conversion to int64_t.
Sufficiently large rhs yields 0 for nonnegative lhs, or -1 for negative lhs.
Definition at line 82 of file DynamicAPIntHelper.h.
| DynamicAPInt llzk::operator^ | ( | const DynamicAPInt & | lhs, |
| const DynamicAPInt & | rhs ) |
Definition at line 120 of file DynamicAPIntHelper.cpp.
This over-approximates for non-degenerate intervals on non-identity cases.
Definition at line 661 of file Intervals.cpp.
| llvm::DynamicAPInt llzk::operator^ | ( | const llvm::DynamicAPInt & | lhs, |
| const llvm::DynamicAPInt & | rhs ) |
| DynamicAPInt llzk::operator| | ( | const DynamicAPInt & | lhs, |
| const DynamicAPInt & | rhs ) |
Definition at line 116 of file DynamicAPIntHelper.cpp.
This over-approximates for non-degenerate intervals on non-identity cases.
Definition at line 643 of file Intervals.cpp.
| llvm::DynamicAPInt llzk::operator| | ( | const llvm::DynamicAPInt & | lhs, |
| const llvm::DynamicAPInt & | rhs ) |
|
inline |
Definition at line 151 of file OpHelpers.h.
|
inline |
Definition at line 121 of file OpHelpers.h.
| llvm::Expected< llvm::DynamicAPInt > llzk::parseDynamicAPInt | ( | llvm::StringRef | str | ) |
Parse a signed decimal integer, rejecting malformed input without asserting.
| Expected< DynamicAPInt > llzk::parseDynamicAPInt | ( | StringRef | str | ) |
Definition at line 48 of file DynamicAPIntHelper.cpp.
|
inline |
Parse MLIR's signed integer literal and discard its encoding width.
Definition at line 68 of file AttributeHelper.h.
|
inline |
Definition at line 136 of file OpHelpers.h.
|
inline |
Definition at line 165 of file OpHelpers.h.
| bool llzk::podTypesUnify | ( | pod::PodType | lhs, |
| pod::PodType | rhs, | ||
| mlir::ArrayRef< llvm::StringRef > | rhsReversePrefix = {}, | ||
| UnificationMap * | unifications = nullptr ) |
Return true iff the two PodType instances are equivalent or could be equivalent after full instantiation of template parameters.
| bool llzk::podTypesUnify | ( | PodType | lhs, |
| PodType | rhs, | ||
| ArrayRef< StringRef > | rhsReversePrefix, | ||
| UnificationMap * | unifications ) |
Definition at line 946 of file TypeHelper.cpp.
|
inline |
Copy discardable attributes from src to dst.
Definition at line 49 of file ConversionUtils.h.
|
inline |
Copy discardable attributes from src to dst while omitting one internal attr.
Definition at line 57 of file ConversionUtils.h.
|
inline |
Definition at line 158 of file OpHelpers.h.
| void llzk::printAttrs | ( | AsmPrinter & | printer, |
| ArrayRef< Attribute > | attrs, | ||
| const StringRef & | separator ) |
Definition at line 19 of file AttributeHelper.cpp.
| void llzk::printAttrs | ( | mlir::AsmPrinter & | printer, |
| mlir::ArrayRef< mlir::Attribute > | attrs, | ||
| const mlir::StringRef & | separator ) |
|
inline |
Definition at line 129 of file OpHelpers.h.
| void llzk::printLLZKLayout | ( | const LLZKLayout & | layout, |
| llvm::raw_ostream & | output ) |
Print the logical signal section of the .llzk-layout format.
Paths must follow the structural format produced by buildLLZKLayout.
Definition at line 315 of file LLZKLayout.cpp.
|
inline |
Definition at line 144 of file OpHelpers.h.
| raw_ostream & llzk::printRegionless | ( | raw_ostream & | os, |
| Operation * | op, | ||
| bool | withParent = false ) |
Prints op without region.
Definition at line 36 of file PredecessorAnalysisPass.cpp.
|
inline |
Definition at line 198 of file OpHelpers.h.
|
inline |
Definition at line 205 of file OpHelpers.h.
|
inline |
Decode a signed integer, rejecting invalid widths before allocating storage.
Definition at line 52 of file Versioning.h.
| mlir::Value llzk::rebuildExprInCompute | ( | mlir::Value | val, |
| function::FuncDefOp | computeFunc, | ||
| mlir::OpBuilder & | builder, | ||
| llvm::DenseMap< mlir::Value, mlir::Value > & | memo ) |
Rebuilds a straight-line constrain-side felt expression in computeFunc.
Block arguments are mapped by constrain entry-block position: argument 0 to compute self, and later arguments to compute inputs. Returns null after emitting a diagnostic when an expression root cannot be rebuilt safely in compute.
| Value llzk::rebuildExprInCompute | ( | Value | val, |
| FuncDefOp | computeFunc, | ||
| OpBuilder & | builder, | ||
| DenseMap< Value, Value > & | memo ) |
Definition at line 64 of file LLZKLoweringUtils.cpp.
|
inline |
Definition at line 1006 of file AnalysisPasses.h.
| void llzk::registerAttrCAPIGenerators | ( | ) |
Register the attribute C API generators before command-line parsing.
Definition at line 60 of file AttrCAPIGen.cpp.
| void llzk::registerAttrCAPITestGenerator | ( | ) |
Register the attribute C API test generator before command-line parsing.
Definition at line 60 of file AttrCAPITestGen.cpp.
|
inline |
Definition at line 859 of file AnalysisPasses.h.
|
inline |
Definition at line 866 of file AnalysisPasses.h.
|
inline |
Definition at line 880 of file AnalysisPasses.h.
|
inline |
Definition at line 887 of file AnalysisPasses.h.
| void llzk::registerCAPIOptions | ( | ) |
Register shared C API options before command-line parsing.
Initialization failures propagate to the caller; do not retry after failure.
Definition at line 151 of file CommonCAPIGen.cpp.
|
inline |
Definition at line 987 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 994 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 901 of file AnalysisPasses.h.
|
inline |
Definition at line 908 of file AnalysisPasses.h.
| void llzk::registerDialectCAPITestGenerator | ( | ) |
Register the dialect C API test generator before command-line parsing.
Definition at line 89 of file DialectCAPITestGen.cpp.
| void llzk::registerDialects | ( | mlir::DialectRegistry & | registry | ) |
Register core LLZK dialects, the MLIR arith, scf, and smt dialects, and verification extensions in registry.
Definition at line 58 of file DialectRegistration.cpp.
|
inline |
Definition at line 1008 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 1015 of file LLZKTransformationPasses.h.
| void llzk::registerEnumCAPIGenerators | ( | ) |
Register the enum C API generators before command-line parsing.
Definition at line 176 of file EnumCAPIGen.cpp.
| void llzk::registerEnumCAPITestGenerator | ( | ) |
Register the enum C API test generator before command-line parsing.
Definition at line 143 of file EnumCAPITestGen.cpp.
|
inline |
Definition at line 1029 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 1036 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 1050 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 1057 of file LLZKTransformationPasses.h.
| void llzk::registerInliningExtensions | ( | DialectRegistry & | registry | ) |
Definition at line 103 of file LLZKInliningExtensions.cpp.
| void llzk::registerInliningExtensions | ( | mlir::DialectRegistry & | registry | ) |
|
inline |
Definition at line 922 of file AnalysisPasses.h.
|
inline |
Definition at line 929 of file AnalysisPasses.h.
|
inline |
Definition at line 106 of file LLZKValidationPasses.h.
|
inline |
Definition at line 113 of file LLZKValidationPasses.h.
| void llzk::registerOpCAPIGenerators | ( | ) |
Register the operation C API generators before command-line parsing.
Definition at line 908 of file OpCAPIGen.cpp.
| void llzk::registerOpCAPITestGenerator | ( | ) |
Register the operation C API test generator before command-line parsing.
Definition at line 572 of file OpCAPITestGen.cpp.
| void llzk::registerPasses | ( | mlir::DialectRegistry & | registry | ) |
Register LLZK analysis, validation, and transformation passes and pipelines, SMT conversion passes, and MLIR transformation passes in the global pass registry.
Add LLZK and MLIR func inlining extensions to registry.
Definition at line 118 of file DialectRegistration.cpp.
|
inline |
Definition at line 1071 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 1078 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 943 of file AnalysisPasses.h.
|
inline |
Definition at line 950 of file AnalysisPasses.h.
|
inline |
Definition at line 1092 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 1099 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 1113 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 1120 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 1134 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 1141 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 964 of file AnalysisPasses.h.
|
inline |
Definition at line 971 of file AnalysisPasses.h.
|
inline |
Definition at line 985 of file AnalysisPasses.h.
|
inline |
Definition at line 992 of file AnalysisPasses.h.
|
inline |
Definition at line 1197 of file LLZKTransformationPasses.h.
| void llzk::registerTransformationPassPipelines | ( | ) |
Definition at line 152 of file LLZKTransformationPassPipelines.cpp.
| void llzk::registerTypeCAPIGenerators | ( | ) |
Register the type C API generators before command-line parsing.
Definition at line 60 of file TypeCAPIGen.cpp.
| void llzk::registerTypeCAPITestGenerator | ( | ) |
Register the type C API test generator before command-line parsing.
Definition at line 60 of file TypeCAPITestGen.cpp.
|
inline |
Definition at line 1155 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 1162 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 127 of file LLZKValidationPasses.h.
|
inline |
Definition at line 1176 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 1183 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 84 of file SymbolHelper.h.
| mlir::SymbolRefAttr llzk::replaceLeaf | ( | mlir::SymbolRefAttr | orig, |
| mlir::FlatSymbolRefAttr | newLeaf ) |
Return SymbolRefAttr like the one given but with the leaf (final) element replaced.
|
inline |
Definition at line 81 of file SymbolHelper.h.
| SymbolRefAttr llzk::replaceLeaf | ( | SymbolRefAttr | orig, |
| FlatSymbolRefAttr | newLeaf ) |
Definition at line 293 of file SymbolHelper.cpp.
|
inline |
Wrapper for RewriterBase::replaceOpWithNewOp() that automatically copies discardable attributes (i.e., attributes other than those specifically defined as part of the op in ODS).
Definition at line 72 of file ConversionUtils.h.
| Value llzk::replaceReadWithWrite | ( | Value | v | ) |
Definition at line 35 of file LightweightSignalEquivalenceAnalysis.cpp.
| void llzk::replaceSubsequentUsesWith | ( | mlir::Value | oldVal, |
| mlir::Value | newVal, | ||
| mlir::Operation * | afterOp ) |
Replaces all subsequent uses of oldVal with newVal, starting after afterOp.
Specifically:
Typical use case:
| oldVal | The original value whose uses should be redirected. |
| newVal | The new value to replace subsequent uses with. |
| afterOp | The operation after which uses of oldVal will be replaced. |
| void llzk::replaceSubsequentUsesWith | ( | Value | oldVal, |
| Value | newVal, | ||
| Operation * | afterOp ) |
Definition at line 267 of file LLZKLoweringUtils.cpp.
|
inline |
Expand function arg/result attribute arrays to match a split signature, rewriting name attrs with the provided suffixes where available.
Definition at line 162 of file ConversionUtils.h.
|
inline |
Return whether type requires a value copy that cannot currently be materialized.
Definition at line 58 of file ValueCopy.h.
| bool llzk::requiresValueCopy | ( | mlir::Type | type | ) |
Return whether copying type requires the checked materialization path.
Only explicitly supported immutable scalars and identity-bearing handles may bypass it; unknown types must not silently acquire identity semantics.
| bool llzk::requiresValueCopy | ( | Type | type | ) |
Definition at line 38 of file ValueCopy.cpp.
|
inline |
Reserve and return a unique function argument/result name based on desiredName.
Definition at line 103 of file ConversionUtils.h.
|
inline |
Definition at line 230 of file SymbolHelper.h.
|
inline |
Based on mlir::CallOpInterface::resolveCallable, but using LLZK lookup helpers.
| T | the type of symbol being resolved (e.g., function::FuncDefOp) |
| symbolTable | |
| call |
Definition at line 180 of file SymbolHelper.h.
|
inline |
Resolve a callable without emitting a diagnostic for missing top-level symbols.
Use this when an unresolved call should make an analysis conservatively skip the call instead of reporting a verifier-style symbol error.
Definition at line 206 of file SymbolHelper.h.
Definition at line 161 of file TypeHelper.h.
| ExpressionValue llzk::selectValue | ( | const llvm::SMTSolverRef & | solver, |
| const ExpressionValue & | cond, | ||
| const ExpressionValue & | trueVal, | ||
| const ExpressionValue & | falseVal ) |
Definition at line 267 of file IntervalAnalysis.cpp.
| ExpressionValue llzk::shiftLeft | ( | const llvm::SMTSolverRef & | solver, |
| const ExpressionValue & | lhs, | ||
| const ExpressionValue & | rhs ) |
Definition at line 459 of file IntervalAnalysis.cpp.
| ExpressionValue llzk::shiftRight | ( | const llvm::SMTSolverRef & | solver, |
| const ExpressionValue & | lhs, | ||
| const ExpressionValue & | rhs ) |
Definition at line 468 of file IntervalAnalysis.cpp.
Computes signed integer division with possibly non-Degenerate divisors.
Returns failure if the divisor interval may contain zero.
Definition at line 529 of file Intervals.cpp.
Computes signed integer remainder with possibly non-Degenerate divisors.
If the divisor interval may contain zero, conservatively returns Entire.
Definition at line 555 of file Intervals.cpp.
|
inline |
Definition at line 273 of file TypeHelper.h.
| ExpressionValue llzk::sintDiv | ( | const llvm::SMTSolverRef & | solver, |
| Operation * | op, | ||
| const ExpressionValue & | lhs, | ||
| const ExpressionValue & | rhs ) |
Definition at line 395 of file IntervalAnalysis.cpp.
| ExpressionValue llzk::sintMod | ( | const llvm::SMTSolverRef & | solver, |
| const ExpressionValue & | lhs, | ||
| const ExpressionValue & | rhs ) |
Definition at line 424 of file IntervalAnalysis.cpp.
| inline ::llvm::StringRef llzk::stringifyEnum | ( | OutputStream | enumValue | ) |
Definition at line 27 of file AnalysisPassEnums.h.inc.
| llvm::StringRef llzk::stringifyOutputStream | ( | OutputStream | val | ) |
Definition at line 12 of file AnalysisPassEnums.cpp.inc.
|
inline |
Definition at line 97 of file AttributeHelper.h.
| bool llzk::structTypesUnify | ( | component::StructType | lhs, |
| component::StructType | rhs, | ||
| mlir::ArrayRef< llvm::StringRef > | rhsReversePrefix = {}, | ||
| UnificationMap * | unifications = nullptr ) |
Return true iff the two StructType instances are equivalent or could be equivalent after full instantiation of template parameters.
| bool llzk::structTypesUnify | ( | StructType | lhs, |
| StructType | rhs, | ||
| ArrayRef< StringRef > | rhsReversePrefix, | ||
| UnificationMap * | unifications ) |
Definition at line 939 of file TypeHelper.cpp.
| ExpressionValue llzk::sub | ( | const llvm::SMTSolverRef & | solver, |
| const ExpressionValue & | lhs, | ||
| const ExpressionValue & | rhs ) |
Definition at line 318 of file IntervalAnalysis.cpp.
| ::std::optional< EnumType > llzk::symbolizeEnum | ( | ::llvm::StringRef | ) |
| inline ::std::optional< OutputStream > llzk::symbolizeEnum< OutputStream > | ( | ::llvm::StringRef | str | ) |
Definition at line 32 of file AnalysisPassEnums.h.inc.
| std::optional< OutputStream > llzk::symbolizeOutputStream | ( | ::llvm::StringRef | str | ) |
Definition at line 21 of file AnalysisPassEnums.cpp.inc.
| std::optional< OutputStream > llzk::symbolizeOutputStream | ( | uint32_t | value | ) |
Definition at line 28 of file AnalysisPassEnums.cpp.inc.
| bool llzk::symbolKnownUseEmpty | ( | mlir::Operation * | symbol, |
| mlir::Operation * | from ) |
| bool llzk::symbolKnownUseEmpty | ( | mlir::Operation * | symbol, |
| mlir::Region * | from ) |
| bool llzk::symbolKnownUseEmpty | ( | mlir::StringAttr | symbol, |
| mlir::Operation * | from ) |
Return if the given symbol is known to have no uses that are nested within the given operation 'from'.
This does not traverse into any nested symbol tables. This function will also return false if there are any unknown operations that may potentially be symbol tables. This doesn't necessarily mean that there are no uses, we just can't conservatively prove it.
| bool llzk::symbolKnownUseEmpty | ( | mlir::StringAttr | symbol, |
| mlir::Region * | from ) |
| APSInt llzk::toAPSInt | ( | const DynamicAPInt & | i | ) |
Definition at line 216 of file DynamicAPIntHelper.cpp.
| llvm::APSInt llzk::toAPSInt | ( | const llvm::DynamicAPInt & | i | ) |
Convert to a signed APSInt with the same numeric value (bit width is unspecified).
Reports a fatal error if the decimal parsing width cannot be represented by APInt.
| DynamicAPInt llzk::toDynamicAPInt | ( | const APInt & | i | ) |
Definition at line 178 of file DynamicAPIntHelper.cpp.
| DynamicAPInt llzk::toDynamicAPInt | ( | const APSInt & | i | ) |
Definition at line 168 of file DynamicAPIntHelper.cpp.
| llvm::DynamicAPInt llzk::toDynamicAPInt | ( | const llvm::APInt & | i | ) |
Converts an APInt to a DynamicAPInt, using an unsigned interpretation.
For a signed interpretation, use DynamicAPInt(const APInt &) directly.
| llvm::DynamicAPInt llzk::toDynamicAPInt | ( | const llvm::APSInt & | i | ) |
| llvm::DynamicAPInt llzk::toDynamicAPInt | ( | llvm::StringRef | str | ) |
Parse trusted decimal text; invalid text is a fatal programming error.
Use parseDynamicAPInt for external input.
|
inline |
Definition at line 104 of file DynamicAPIntHelper.h.
| DynamicAPInt llzk::toDynamicAPInt | ( | StringRef | str | ) |
Definition at line 166 of file DynamicAPIntHelper.cpp.
| DynamicAPInt llzk::toSignedDynamicAPInt | ( | ArrayRef< uint64_t > | parts | ) |
Definition at line 38 of file DynamicAPIntHelper.cpp.
| llvm::DynamicAPInt llzk::toSignedDynamicAPInt | ( | llvm::ArrayRef< uint64_t > | parts | ) |
Decode 64-bit parts in LSB order as a two's-complement signed integer.
The highest bit of the last part is the sign bit; an empty array represents zero. Reports a fatal error if the part count cannot fit APInt's bit width.
|
inline |
Definition at line 26 of file AnalysisPassEnums.h.
| llvm::raw_ostream & llzk::toStream | ( | OutputStream | val | ) |
Definition at line 21 of file AnalysisPassEnums.cpp.
| std::optional< std::reference_wrapper< const Field > > llzk::tryDetectSpecifiedField | ( | mlir::Operation * | root | ) |
Try to detect a uniquely used field from the enclosing LLZK module.
| root | Operation inside the LLZK module to inspect. |
|
inline |
Return true iff the two lists of Type instances are equivalent or could be equivalent after full instantiation of template parameters (if applicable within the given types).
Definition at line 262 of file TypeHelper.h.
| bool llzk::typeParamsUnify | ( | const ArrayAttr & | lhsParams, |
| const ArrayAttr & | rhsParams, | ||
| UnificationMap * | unifications ) |
Return true iff the two ArrayAttr instances containing StructType or ArrayType parameters are equivalent or could be equivalent after full instantiation of struct parameters.
Definition at line 927 of file TypeHelper.cpp.
| bool llzk::typeParamsUnify | ( | const ArrayRef< Attribute > & | lhsParams, |
| const ArrayRef< Attribute > & | rhsParams, | ||
| UnificationMap * | unifications ) |
Definition at line 918 of file TypeHelper.cpp.
| bool llzk::typeParamsUnify | ( | const mlir::ArrayAttr & | lhsParams, |
| const mlir::ArrayAttr & | rhsParams, | ||
| UnificationMap * | unifications = nullptr ) |
Return true iff the two ArrayAttr instances containing StructType or ArrayType parameters are equivalent or could be equivalent after full instantiation of template parameters.
| bool llzk::typeParamsUnify | ( | const mlir::ArrayRef< mlir::Attribute > & | lhsParams, |
| const mlir::ArrayRef< mlir::Attribute > & | rhsParams, | ||
| UnificationMap * | unifications = nullptr ) |
Return true iff the two ArrayRef instances containing StructType or ArrayType parameters are equivalent or could be equivalent after full instantiation of template parameters.
| bool llzk::typesUnify | ( | mlir::Type | lhs, |
| mlir::Type | rhs, | ||
| mlir::ArrayRef< llvm::StringRef > | rhsReversePrefix = {}, | ||
| UnificationMap * | unifications = nullptr ) |
Return true iff the two Type instances are equivalent or could be equivalent after full instantiation of template parameters (if applicable within the given types).
| bool llzk::typesUnify | ( | Type | lhs, |
| Type | rhs, | ||
| ArrayRef< StringRef > | rhsReversePrefix, | ||
| UnificationMap * | unifications ) |
Definition at line 959 of file TypeHelper.cpp.
| ExpressionValue llzk::uintDiv | ( | const llvm::SMTSolverRef & | solver, |
| Operation * | op, | ||
| const ExpressionValue & | lhs, | ||
| const ExpressionValue & | rhs ) |
Definition at line 375 of file IntervalAnalysis.cpp.
Computes unsigned integer division with possibly non-Degenerate divisors.
Returns failure if the divisor interval may contain zero.
Definition at line 503 of file Intervals.cpp.
| LogicalResult llzk::verifyAffineMapAttrType | ( | EmitErrorFn | emitError, |
| Attribute | in ) |
Definition at line 1056 of file TypeHelper.cpp.
| mlir::LogicalResult llzk::verifyAffineMapAttrType | ( | EmitErrorFn | emitError, |
| mlir::Attribute | in ) |
Verify that all AffineMapAttr only have a single result.
| LogicalResult llzk::verifyArrayDimSizes | ( | EmitErrorFn | emitError, |
| ArrayRef< Attribute > | dimensionSizes ) |
Definition at line 1078 of file TypeHelper.cpp.
| mlir::LogicalResult llzk::verifyArrayDimSizes | ( | EmitErrorFn | emitError, |
| mlir::ArrayRef< mlir::Attribute > | dimensionSizes ) |
Verify that the array dimensions are valid.
| mlir::LogicalResult llzk::verifyArrayType | ( | EmitErrorFn | emitError, |
| mlir::Type | elementType, | ||
| mlir::ArrayRef< mlir::Attribute > | dimensionSizes ) |
Verify that the ArrayType is valid.
| LogicalResult llzk::verifyArrayType | ( | EmitErrorFn | emitError, |
| Type | elementType, | ||
| ArrayRef< Attribute > | dimensionSizes ) |
Definition at line 1083 of file TypeHelper.cpp.
| LogicalResult llzk::verifyIntAttrType | ( | EmitErrorFn | emitError, |
| Attribute | in ) |
Definition at line 1041 of file TypeHelper.cpp.
| mlir::LogicalResult llzk::verifyIntAttrType | ( | EmitErrorFn | emitError, |
| mlir::Attribute | in ) |
Verify that all IntegerAttr have type IndexType.
| mlir::LogicalResult llzk::verifyParamOfType | ( | mlir::SymbolTableCollection & | tables, |
| mlir::SymbolRefAttr | param, | ||
| mlir::Type | structOrArrayType, | ||
| mlir::Operation * | origin, | ||
| std::optional< mlir::Type > | requiredParamType = std::nullopt ) |
Ensure that the given symbol (that is used as a parameter of the given type) can be resolved.
If requiredParamType is provided, any resolved template symbol must have exactly that type.
| LogicalResult llzk::verifyParamOfType | ( | SymbolTableCollection & | tables, |
| SymbolRefAttr | param, | ||
| Type | parameterizedType, | ||
| Operation * | origin, | ||
| std::optional< Type > | requiredParamType ) |
Definition at line 667 of file SymbolHelper.cpp.
| mlir::LogicalResult llzk::verifyParamsOfType | ( | mlir::SymbolTableCollection & | tables, |
| mlir::ArrayRef< mlir::Attribute > | tyParams, | ||
| mlir::Type | structOrArrayType, | ||
| mlir::Operation * | origin, | ||
| std::optional< mlir::Type > | requiredParamType = std::nullopt ) |
Ensure that any symbols that appear within the given attributes (that are parameters of the given type) can be resolved.
If requiredParamType is provided, any resolved template symbols must have exactly that type.
| LogicalResult llzk::verifyParamsOfType | ( | SymbolTableCollection & | tables, |
| ArrayRef< Attribute > | tyParams, | ||
| Type | parameterizedType, | ||
| Operation * | origin, | ||
| std::optional< Type > | requiredParamType ) |
Definition at line 705 of file SymbolHelper.cpp.
| LogicalResult llzk::verifyStructTypeParams | ( | EmitErrorFn | emitError, |
| ArrayAttr | params ) |
Definition at line 1074 of file TypeHelper.cpp.
| mlir::LogicalResult llzk::verifyStructTypeParams | ( | EmitErrorFn | emitError, |
| mlir::ArrayAttr | params ) |
Verify that the StructType parameters are valid.
| mlir::FailureOr< component::StructDefOp > llzk::verifyStructTypeResolution | ( | mlir::SymbolTableCollection & | tables, |
| component::StructType | ty, | ||
| mlir::Operation * | origin ) |
Ensure that all symbols used within the type can be resolved.
| FailureOr< StructDefOp > llzk::verifyStructTypeResolution | ( | SymbolTableCollection & | tables, |
| StructType | ty, | ||
| Operation * | origin ) |
Definition at line 741 of file SymbolHelper.cpp.
| mlir::LogicalResult llzk::verifySubArrayOrElementType | ( | EmitErrorFn | emitError, |
| array::ArrayType | arrayType, | ||
| mlir::Type | subArrayOrElemType ) |
Determine if the subArrayOrElemType is either a valid subarray of arrayType (see verifySubArrayType), or if subArrayOrElemType matches the element type of arrayType.
| LogicalResult llzk::verifySubArrayOrElementType | ( | EmitErrorFn | emitError, |
| ArrayType | arrayType, | ||
| Type | subArrayOrElemType ) |
Definition at line 1139 of file TypeHelper.cpp.
| mlir::LogicalResult llzk::verifySubArrayType | ( | EmitErrorFn | emitError, |
| array::ArrayType | arrayType, | ||
| array::ArrayType | subArrayType ) |
Determine if the subArrayType is a valid subarray of arrayType.
arrayType must be an array of dimension N and subArrayType must be an array of dimension M, where N > M >= 1. For example, <3,7 x int> is a valid subarray of <5,3,7 x int>, but <8 x int> is not an neither is <3,7 x string>.
Definition at line 1099 of file TypeHelper.cpp.
| mlir::LogicalResult llzk::verifyTemplateParamsMatchInferred | ( | mlir::Operation * | origin, |
| mlir::ArrayAttr | explicitParams, | ||
| llvm::iterator_range< mlir::Region::op_iterator< polymorphic::TemplateParamOp > > | targetParamDefs, | ||
| const UnificationMap & | unifications ) |
Verify that each template parameter value provided in the origin op is consistent with the value inferred for the target TemplateParamOp in the given UnificationMap.
The UnificationMap is expected to contain the unification results of this op against the target function type signature.
Pre-condition assertions:
| LogicalResult llzk::verifyTemplateParamsMatchInferred | ( | Operation * | origin, |
| ArrayAttr | explicitParams, | ||
| llvm::iterator_range< Region::op_iterator< TemplateParamOp > > | targetParamDefs, | ||
| const UnificationMap & | unifications ) |
Definition at line 639 of file SymbolHelper.cpp.
| mlir::LogicalResult llzk::verifyTemplateParamSymbol | ( | mlir::SymbolTableCollection & | tables, |
| mlir::SymbolRefAttr | symbol, | ||
| mlir::Operation * | origin ) |
Ensure that a SymbolRef template argument resolves to a binding in the enclosing template or to a constant global.
| LogicalResult llzk::verifyTemplateParamSymbol | ( | SymbolTableCollection & | tables, |
| SymbolRefAttr | symbol, | ||
| Operation * | origin ) |
Definition at line 505 of file SymbolHelper.cpp.
| mlir::LogicalResult llzk::verifyTemplateParamValueCompatibility | ( | mlir::Operation * | origin, |
| mlir::Attribute | value, | ||
| polymorphic::TemplateParamOp | targetParam ) |
Verify one explicit template argument against its declared parameter restriction.
Symbol references are resolved in the context of origin; diagnostics are emitted on it.
| LogicalResult llzk::verifyTemplateParamValueCompatibility | ( | Operation * | origin, |
| Attribute | value, | ||
| TemplateParamOp | targetParam ) |
Definition at line 533 of file SymbolHelper.cpp.
| mlir::LogicalResult llzk::verifyTemplateParamValuesCompatibility | ( | mlir::Operation * | origin, |
| mlir::ArrayAttr | explicitParams, | ||
| llvm::iterator_range< mlir::Region::op_iterator< polymorphic::TemplateParamOp > > | targetParamDefs ) |
Verify each explicit template argument against the corresponding declared parameter restriction.
The argument list and parameter declarations must be non-empty and have equal length.
| LogicalResult llzk::verifyTemplateParamValuesCompatibility | ( | Operation * | origin, |
| ArrayAttr | explicitParams, | ||
| llvm::iterator_range< Region::op_iterator< TemplateParamOp > > | targetParamDefs ) |
Definition at line 625 of file SymbolHelper.cpp.
| mlir::LogicalResult llzk::verifyTypeResolution | ( | mlir::SymbolTableCollection & | tables, |
| mlir::Operation * | origin, | ||
| const Range & | types ) |
Ensure that all symbols used within all Type instances can be resolved.
Definition at line 303 of file SymbolHelper.h.
| mlir::LogicalResult llzk::verifyTypeResolution | ( | mlir::SymbolTableCollection & | tables, |
| mlir::Operation * | origin, | ||
| mlir::Type | type ) |
Ensure that all symbols used within the given Type instance can be resolved.
| LogicalResult llzk::verifyTypeResolution | ( | SymbolTableCollection & | tables, |
| Operation * | origin, | ||
| Type | ty ) |
Definition at line 765 of file SymbolHelper.cpp.
|
inline |
Return a copy of the given argument attribute dictionary with function.arg_name set to name.
Definition at line 91 of file ConversionUtils.h.
|
inline |
Return a copy of the given function argument/result attribute dictionary with attrName set to name.
Definition at line 82 of file ConversionUtils.h.
|
inline |
Return a copy of the given result attribute dictionary with function.res_name set to name.
Definition at line 97 of file ConversionUtils.h.
|
inline |
Definition at line 189 of file ErrorHelper.h.
|
inline |
If the given emitError is non-null, return it.
Otherwise, mirror how the verification failure is handled by *Type::get() via StorageUserBase (i.e., use DefaultDiagnosticEmitFn and assert after reporting the error).
NOTE: Passing emitError == null is not a common use case since it will always result in an assertion failure immediately after reporting the error; likely only useful in custom type builders.
Definition at line 178 of file ErrorHelper.h.
|
inline |
Write the minimal signed two's-complement encoding of a mathematical integer.
Definition at line 44 of file Versioning.h.
|
constexpr |
Name of the attribute on a @product func that has been automatically aligned from @compute + @constrain funcs, or on @compute and @constrain funcs that have been automatically projected from a @product func.
Definition at line 28 of file Constants.h.
|
constexpr |
Name of the attribute on the top-level ModuleOp that defines prime fields used in the circuit.
Definition at line 32 of file Constants.h.
|
constexpr |
Symbol name for the witness generation (and resp.
constraint generation) functions within a component.
Definition at line 16 of file Constants.h.
|
constexpr |
Definition at line 17 of file Constants.h.
|
constexpr |
Definition at line 18 of file Constants.h.
|
constexpr |
Name of the attribute on the top-level ModuleOp that identifies the ModuleOp as the root module and specifies the frontend language name that the IR was compiled from, if available.
Definition at line 23 of file Constants.h.
|
inlineconstexpr |
Structural path root for a constrain argument, followed by its position.
Definition at line 31 of file LLZKLayout.h.
|
inlineconstexpr |
Structural path root for storage in the main instance.
Definition at line 29 of file LLZKLayout.h.
|
constexpr |
Name of the attribute on the top-level ModuleOp that specifies the type of the main struct.
This attribute can appear zero or one times on the top-level ModuleOp and is associated with a TypeAttr specifying the StructType of the main struct.
Definition at line 37 of file Constants.h.
|
constexpr |
Name of the attribute on aligned product program ops that specifies where they came from.
Definition at line 40 of file Constants.h.