LLZK 0.1.0
Veridise's ZK Language IR
|
Namespaces | |
namespace | affineMapHelpers |
Group together all implementation related to AffineMap type parameters. | |
namespace | array |
namespace | boolean |
namespace | cast |
namespace | component |
namespace | constrain |
namespace | dataflow |
namespace | debug |
namespace | felt |
namespace | function |
namespace | global |
namespace | impl |
namespace | include |
namespace | polymorphic |
namespace | string |
namespace | undef |
Classes | |
struct | AuxAssignment |
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... | |
class | CallGraphPrinterPass |
class | CallGraphReachabilityAnalysis |
Lazily-constructed reachability analysis. More... | |
class | CallGraphSCCsPrinterPass |
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 | ConstantCapture |
Matches and optionally captures a felt constant. More... | |
class | ConstrainRef |
Defines a reference to a llzk object within a constrain function call. More... | |
class | ConstrainRefAnalysis |
The dataflow analysis that computes the set of references that LLZK operations use and produce. More... | |
class | ConstrainRefIndex |
Defines an index into an LLZK object. More... | |
class | ConstrainRefLattice |
A lattice for use in dense analysis. More... | |
class | ConstrainRefLatticeValue |
A value at a given point of the ConstrainRefLattice. More... | |
class | ConstrainRefSet |
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... | |
class | ConstraintDependencyGraphPrinterPass |
struct | ConstraintDependencyGraphPrinterPassOptions |
class | ConstraintDependencyGraphStructAnalysis |
An analysis wrapper around the ConstraintDependencyGraph for a given struct. 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 | FullPolyLoweringOptions |
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 | GlobalSourceMgr |
struct | InlineStructsPassOptions |
class | Interval |
Intervals over a finite field. More... | |
struct | IntervalAnalysisContext |
Parameters and shared objects to pass to child analyses. More... | |
class | IntervalAnalysisLattice |
Maps mlir::Values to LatticeValues. More... | |
class | IntervalAnalysisLatticeValue |
class | IntervalAnalysisPrinterPass |
struct | IntervalAnalysisPrinterPassOptions |
class | IntervalDataFlowAnalysis |
class | LLZKDialect |
struct | LLZKDialectBytecodeInterface |
This implements the bytecode interface for the LLZK dialect. More... | |
struct | LLZKDialectVersion |
struct | LLZKTypeSwitch |
Template pattern for performing some operation by cases based on a given LLZK type. More... | |
struct | LocationComparator |
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 |
struct | NamedOpLocationLess |
struct | NoContext |
An empty struct that is used for convenience for analyses that do not require any context. More... | |
struct | OpHash |
struct | OpLocationLess |
struct | PolyLoweringPassOptions |
struct | RefValueCapture |
Matches and optionally captures a constrainref base value, which is either a field read or a block argument (i.e., an input to a @constrain or @compute function). 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... | |
class | StructIntervalAnalysis |
class | StructIntervals |
class | SymbolDefTree |
Builds a tree structure representing the symbol table structure. More... | |
class | SymbolDefTreeNode |
class | SymbolDefTreePass |
struct | SymbolDefTreePrinterPassOptions |
class | SymbolLookupResult |
class | SymbolLookupResultUntyped |
class | SymbolUseGraph |
Builds a graph structure representing the relationships between symbols and their uses. More... | |
class | SymbolUseGraphNode |
class | SymbolUseGraphPass |
struct | SymbolUseGraphPrinterPassOptions |
class | UnreducedInterval |
An inclusive interval [a, b] where a and b are arbitrary integers not necessarily bound to a given field. More... | |
struct | UnusedDeclarationEliminationPassOptions |
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 | StructAnalysisType |
Any type that is a subclass of StructAnalysis . | |
concept | OpComparable |
concept | NamedOpComparable |
concept | OpHashable |
Typedefs | |
using | TranslationMap |
using | ConstrainRefRemappings = std::vector<std::pair<ConstrainRef, ConstrainRefLatticeValue>> |
using | EmitErrorFn = llvm::function_ref<mlir::InFlightDiagnostic()> |
using | OwningEmitErrorFn = std::function<mlir::InFlightDiagnostic()> |
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 | Side { EMPTY = 0 , LHS , RHS , TOMB } |
Functions | |
llvm::raw_ostream & | toStream (OutputStream val) |
std::unique_ptr< mlir::Pass > | createCallGraphPrinterPass (llvm::raw_ostream &os=llvm::errs()) |
std::unique_ptr< mlir::Pass > | createCallGraphSCCsPrinterPass (llvm::raw_ostream &os=llvm::errs()) |
SymbolLookupResult< StructDefOp > | getStructDef (SymbolTableCollection &tables, ModuleOp mod, StructType ty) |
Lookup a StructDefOp from a given StructType . | |
std::vector< ConstrainRef > | getAllChildren (SymbolTableCollection &tables, ModuleOp mod, ArrayType arrayTy, ConstrainRef root) |
std::vector< ConstrainRef > | getAllChildren (SymbolTableCollection &tables, ModuleOp mod, SymbolLookupResult< StructDefOp > structDefRes, ConstrainRef root) |
raw_ostream & | operator<< (raw_ostream &os, const ConstrainRef &rhs) |
raw_ostream & | operator<< (raw_ostream &os, const ConstrainRefSet &rhs) |
mlir::raw_ostream & | operator<< (mlir::raw_ostream &os, const ConstrainRefLatticeValue &v) |
llvm::raw_ostream & | operator<< (llvm::raw_ostream &os, const ConstrainRefLattice &lattice) |
std::unique_ptr< mlir::Pass > | createConstraintDependencyGraphPrinterPass (llvm::raw_ostream &os=llvm::errs()) |
ExpressionValue | intersection (llvm::SMTSolverRef solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
ExpressionValue | add (llvm::SMTSolverRef solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
ExpressionValue | sub (llvm::SMTSolverRef solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
ExpressionValue | mul (llvm::SMTSolverRef solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
ExpressionValue | div (llvm::SMTSolverRef solver, felt::DivFeltOp op, const ExpressionValue &lhs, const ExpressionValue &rhs) |
ExpressionValue | mod (llvm::SMTSolverRef solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
ExpressionValue | bitAnd (llvm::SMTSolverRef solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
ExpressionValue | shiftLeft (llvm::SMTSolverRef solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
ExpressionValue | shiftRight (llvm::SMTSolverRef solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
ExpressionValue | cmp (llvm::SMTSolverRef solver, boolean::CmpOp op, const ExpressionValue &lhs, const ExpressionValue &rhs) |
ExpressionValue | boolAnd (llvm::SMTSolverRef solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
ExpressionValue | boolOr (llvm::SMTSolverRef solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
ExpressionValue | boolXor (llvm::SMTSolverRef solver, const ExpressionValue &lhs, const ExpressionValue &rhs) |
ExpressionValue | fallbackBinaryOp (llvm::SMTSolverRef solver, Operation *op, const ExpressionValue &lhs, const ExpressionValue &rhs) |
ExpressionValue | neg (llvm::SMTSolverRef solver, const ExpressionValue &val) |
ExpressionValue | notOp (llvm::SMTSolverRef solver, const ExpressionValue &val) |
ExpressionValue | boolNot (llvm::SMTSolverRef solver, const ExpressionValue &val) |
ExpressionValue | fallbackUnaryOp (llvm::SMTSolverRef solver, Operation *op, const ExpressionValue &val) |
std::unique_ptr< mlir::Pass > | createIntervalAnalysisPrinterPass (llvm::raw_ostream &os=llvm::errs()) |
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 > | 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) |
std::unique_ptr< mlir::Pass > | createSymbolDefTreePrinterPass () |
std::unique_ptr< mlir::Pass > | createSymbolUseGraphPrinterPass () |
void | registerAllDialects (mlir::DialectRegistry ®istry) |
void | printAttrs (AsmPrinter &printer, ArrayRef< Attribute > attrs, const StringRef &separator) |
OwningOpRef< ModuleOp > | createLLZKModule (MLIRContext *context, Location loc) |
void | addLangAttrForLLZKDialect (mlir::ModuleOp mod) |
void | registerInliningExtensions (DialectRegistry ®istry) |
Value | rebuildExprInCompute (Value val, FuncDefOp computeFunc, OpBuilder &builder, DenseMap< Value, Value > &memo) |
LogicalResult | checkForAuxFieldConflicts (StructDefOp structDef, StringRef prefix) |
void | replaceSubsequentUsesWith (Value oldVal, Value newVal, Operation *afterOp) |
FieldDefOp | addAuxField (StructDefOp structDef, StringRef name) |
unsigned | getFeltDegree (Value val, DenseMap< Value, unsigned > &memo) |
void | addRemoveUnnecessaryOpsAndDefsPipeline (OpPassManager &pm) |
void | registerTransformationPassPipelines () |
llvm::APSInt | expandingAdd (llvm::APSInt lhs, llvm::APSInt rhs) |
Safely add lhs and rhs, expanding the width of the result as necessary. | |
llvm::APSInt | expandingSub (llvm::APSInt lhs, llvm::APSInt rhs) |
Safely subtract lhs and rhs, expanding the width of the result as necessary. | |
llvm::APSInt | expandingMul (llvm::APSInt lhs, llvm::APSInt rhs) |
Safely multiple lhs and rhs, expanding the width of the result as necessary. | |
llvm::APSInt | safeToSigned (llvm::APSInt i) |
Safely converts the given int to a signed int if it is an unsigned int by adding an extra bit for the sign. | |
std::strong_ordering | safeCmp (llvm::APSInt lhs, llvm::APSInt rhs) |
Compares lhs and rhs, regardless of the bitwidth of lhs and rhs. | |
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< ModuleOp > | getRootModule (Operation *from) |
FailureOr< SymbolRefAttr > | getPathFromRoot (SymbolOpInterface to, ModuleOp *foundRoot) |
FailureOr< SymbolRefAttr > | getPathFromRoot (StructDefOp &to, ModuleOp *foundRoot) |
FailureOr< SymbolRefAttr > | getPathFromRoot (FieldDefOp &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 (StructDefOp &to, ModuleOp *foundRoot) |
FailureOr< SymbolRefAttr > | getPathFromTopRoot (FieldDefOp &to, ModuleOp *foundRoot) |
FailureOr< SymbolRefAttr > | getPathFromTopRoot (FuncDefOp &to, ModuleOp *foundRoot) |
LogicalResult | verifyParamOfType (SymbolTableCollection &tables, SymbolRefAttr param, Type parameterizedType, Operation *origin) |
LogicalResult | verifyParamsOfType (SymbolTableCollection &tables, ArrayRef< Attribute > tyParams, Type parameterizedType, Operation *origin) |
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 | isSignalType (Type type) |
bool | isSignalType (component::StructType sType) |
Return true iff the given StructType is referencing the COMPONENT_NAME_SIGNAL struct. | |
bool | hasAffineMapAttr (Type type) |
bool | isDynamic (IntegerAttr intAttr) |
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 | 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) |
IntegerAttr | forceIntType (IntegerAttr attr) |
Attribute | forceIntAttrType (Attribute attr) |
SmallVector< Attribute > | forceIntAttrTypes (ArrayRef< Attribute > attrList) |
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) |
::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 | registerSymbolDefTreePrinterPass () |
void | registerSymbolDefTreePrinterPassPass () |
void | registerSymbolUseGraphPrinterPass () |
void | registerSymbolUseGraphPrinterPassPass () |
void | registerAnalysisPasses () |
mlir::raw_ostream & | operator<< (mlir::raw_ostream &os, const ConstrainRef &rhs) |
template<typename GraphT> | |
bool | hasCycle (const GraphT &G) |
template<typename OpType, typename LhsMatcher, typename RhsMatcher> | |
auto | m_CommutativeOp (LhsMatcher lhs, RhsMatcher rhs) |
auto | m_RefValue () |
auto | m_RefValue (mlir::Value *capture) |
auto | m_Constant () |
auto | m_Constant (felt::FeltConstantOp *capture) |
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. | |
llvm::APInt | toAPInt (int64_t i) |
int64_t | fromAPInt (llvm::APInt i) |
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::Location | getUnknownLoc (mlir::MLIRContext *context) |
mlir::OwningOpRef< mlir::ModuleOp > | createLLZKModule (mlir::MLIRContext *context, mlir::Location loc) |
mlir::OwningOpRef< mlir::ModuleOp > | createLLZKModule (mlir::MLIRContext *context) |
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 operation that is of type 'OpClass', either the op itself or an ancestor. | |
template<typename OpClass> | |
mlir::FailureOr< OpClass > | getParentOfType (mlir::Operation *op) |
Return the closest surrounding parent 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::Value | rebuildExprInCompute (mlir::Value val, function::FuncDefOp computeFunc, mlir::OpBuilder &builder, llvm::DenseMap< mlir::Value, mlir::Value > &memo) |
mlir::LogicalResult | checkForAuxFieldConflicts (component::StructDefOp structDef, llvm::StringRef auxPrefix) |
component::FieldDefOp | addAuxField (component::StructDefOp structDef, llvm::StringRef name) |
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 . | |
std::unique_ptr< mlir::Pass > | createFlatteningPass () |
std::unique_ptr< mlir::Pass > | createRedundantReadAndWriteEliminationPass () |
std::unique_ptr< mlir::Pass > | createRedundantOperationEliminationPass () |
std::unique_ptr< mlir::Pass > | createUnusedDeclarationEliminationPass () |
std::unique_ptr< mlir::Pass > | createArrayToScalarPass () |
std::unique_ptr< mlir::Pass > | createPolyLoweringPass () |
std::unique_ptr< mlir::Pass > | createPolyLoweringPass (unsigned maxDegree) |
std::unique_ptr< mlir::Pass > | createInlineStructsPass () |
std::unique_ptr< mlir::Pass > | createR1CSLoweringPass () |
void | registerInliningExtensions (mlir::DialectRegistry ®istry) |
void | registerInlineStructsPass () |
void | registerInlineStructsPassPass () |
void | registerPolyLoweringPass () |
void | registerPolyLoweringPassPass () |
void | registerR1CSLoweringPass () |
void | registerR1CSLoweringPassPass () |
void | registerRedundantOperationEliminationPass () |
void | registerRedundantOperationEliminationPassPass () |
void | registerRedundantReadAndWriteEliminationPass () |
void | registerRedundantReadAndWriteEliminationPassPass () |
void | registerUnusedDeclarationEliminationPass () |
void | registerUnusedDeclarationEliminationPassPass () |
void | registerTransformationPasses () |
llvm::APSInt | safeToSigned (llvm::APInt i) |
llvm::APSInt | safeToSigned (llvm::StringRef s) |
bool | safeLt (const llvm::APSInt &lhs, const llvm::APSInt &rhs) |
bool | safeLe (const llvm::APSInt &lhs, const llvm::APSInt &rhs) |
bool | safeEq (const llvm::APSInt &lhs, const llvm::APSInt &rhs) |
bool | safeNe (const llvm::APSInt &lhs, const llvm::APSInt &rhs) |
bool | safeGt (const llvm::APSInt &lhs, const llvm::APSInt &rhs) |
bool | safeGe (const llvm::APSInt &lhs, const llvm::APSInt &rhs) |
llvm::APSInt | safeMin (const llvm::APSInt &lhs, const llvm::APSInt &rhs) |
llvm::APSInt | safeMin (std::initializer_list< llvm::APSInt > ilist) |
llvm::APSInt | safeMax (const llvm::APSInt &lhs, const llvm::APSInt &rhs) |
llvm::APSInt | safeMax (std::initializer_list< llvm::APSInt > ilist) |
template<typename OpClass, typename... Args> | |
OpClass | delegate_to_build (mlir::Location location, Args &&...args) |
template<OpComparable Op> | |
mlir::FailureOr< bool > | isLocationLess (const Op &l, const Op &r) |
OwningEmitErrorFn | getEmitOpErrFn (mlir::Operation *op) |
template<typename TypeClass> | |
OwningEmitErrorFn | getEmitOpErrFn (TypeClass *opImpl) |
void | ensure (bool condition, llvm::Twine errMsg) |
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. | |
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 (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::FieldDefOp &to, mlir::ModuleOp *foundRoot=nullptr) |
mlir::FailureOr< mlir::SymbolRefAttr > | getPathFromRoot (function::FuncDefOp &to, mlir::ModuleOp *foundRoot=nullptr) |
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::FieldDefOp &to, mlir::ModuleOp *foundRoot=nullptr) |
mlir::FailureOr< mlir::SymbolRefAttr > | getPathFromTopRoot (function::FuncDefOp &to, mlir::ModuleOp *foundRoot=nullptr) |
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 > > | resolveCallable (mlir::CallOpInterface call) |
mlir::LogicalResult | verifyParamOfType (mlir::SymbolTableCollection &tables, mlir::SymbolRefAttr param, mlir::Type structOrArrayType, mlir::Operation *origin) |
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) |
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) |
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} | |
bool | isValidColumnType (mlir::Type type, mlir::SymbolTableCollection &symbolTable, mlir::Operation *op) |
valid types: {FeltType, StructType (with columns), ArrayType (that contains a valid column type)} | |
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} | |
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 iff the type contains any TypeVarType | |
mlir::LogicalResult | checkValidType (EmitErrorFn emitError, mlir::Type type) |
bool | isSignalType (mlir::Type type) |
Return true iff the given type is a StructType referencing the COMPONENT_NAME_SIGNAL struct. | |
bool | hasAffineMapAttr (mlir::Type type) |
Return true iff the given type contains an AffineMapAttr. | |
Side | reverse (Side in) |
bool | isDynamic (mlir::IntegerAttr intAttr) |
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 struct 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 struct 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 struct 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 struct 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 struct 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 struct 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::IntegerAttr | forceIntType (mlir::IntegerAttr attr) |
Convert an IntegerAttr with a type other than IndexType to use IndexType. | |
mlir::Attribute | forceIntAttrType (mlir::Attribute attr) |
Convert any IntegerAttr with a type other than IndexType to use IndexType. | |
llvm::SmallVector< mlir::Attribute > | forceIntAttrTypes (llvm::ArrayRef< mlir::Attribute > attrList) |
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. | |
std::unique_ptr< mlir::Pass > | createFieldWriteValidatorPass () |
void | registerFieldWriteValidatorPass () |
void | registerFieldWriteValidatorPassPass () |
void | registerValidationPasses () |
Variables | |
constexpr char | COMPONENT_NAME_SIGNAL [] = "Signal" |
Symbol name for the struct/component representing a signal. | |
constexpr char | COMPONENT_NAME_MAIN [] = "Main" |
Symbol name for the main entry point struct/component (if any). | |
constexpr char | FUNC_NAME_COMPUTE [] = "compute" |
Symbol name for the witness generation (and resp. | |
constexpr char | FUNC_NAME_CONSTRAIN [] = "constrain" |
constexpr char | LANG_ATTR_NAME [] = "veridise.lang" |
Name of the attribute on the top-level ModuleOp that specifies the IR language name. | |
using llzk::ConstrainRefRemappings = std::vector<std::pair<ConstrainRef, ConstrainRefLatticeValue>> |
Definition at line 29 of file ConstraintDependencyGraph.h.
using llzk::EmitErrorFn = llvm::function_ref<mlir::InFlightDiagnostic()> |
Definition at line 21 of file ErrorHelper.h.
using llzk::ManagedResources |
Definition at line 30 of file SymbolLookup.h.
using llzk::OwningEmitErrorFn = std::function<mlir::InFlightDiagnostic()> |
Definition at line 25 of file ErrorHelper.h.
using llzk::TranslationMap |
Definition at line 22 of file ConstrainRefLattice.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 185 of file TypeHelper.h.
|
strong |
Enumerator | |
---|---|
Outs | |
Errs | |
Dbgs |
Definition at line 12 of file AnalysisPassEnums.h.inc.
|
strong |
Enumerator | |
---|---|
EMPTY | |
LHS | |
RHS | |
TOMB |
Definition at line 124 of file TypeHelper.h.
ExpressionValue llzk::add | ( | llvm::SMTSolverRef | solver, |
const ExpressionValue & | lhs, | ||
const ExpressionValue & | rhs ) |
Definition at line 51 of file IntervalAnalysis.cpp.
component::FieldDefOp llzk::addAuxField | ( | component::StructDefOp | structDef, |
llvm::StringRef | name ) |
FieldDefOp llzk::addAuxField | ( | StructDefOp | structDef, |
StringRef | name ) |
Definition at line 119 of file LLZKLoweringUtils.cpp.
void llzk::addLangAttrForLLZKDialect | ( | mlir::ModuleOp | mod | ) |
Definition at line 28 of file Builders.cpp.
void llzk::addRemoveUnnecessaryOpsAndDefsPipeline | ( | OpPassManager & | pm | ) |
Definition at line 33 of file TransformationPassPipelines.cpp.
|
inline |
Definition at line 80 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 77 of file SymbolHelper.h.
SymbolRefAttr llzk::appendLeaf | ( | SymbolRefAttr | orig, |
FlatSymbolRefAttr | newLeaf ) |
Definition at line 247 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 251 of file SymbolHelper.cpp.
|
inline |
Definition at line 40 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 struct parameters.
bool llzk::arrayTypesUnify | ( | ArrayType | lhs, |
ArrayType | rhs, | ||
ArrayRef< StringRef > | rhsReversePrefix, | ||
UnificationMap * | unifications ) |
Definition at line 819 of file TypeHelper.cpp.
void llzk::assertValidAttrForParamOfType | ( | Attribute | attr | ) |
Definition at line 924 of file TypeHelper.cpp.
void llzk::assertValidAttrForParamOfType | ( | mlir::Attribute | attr | ) |
|
inline |
Build a SymbolRefAttr from the list of pieces.
Definition at line 45 of file SymbolHelper.h.
|
inline |
Build a SymbolRefAttr that prepends tail
with root
, i.e., root::tail
.
Definition at line 40 of file SymbolHelper.h.
|
inline |
Build a SymbolRefAttr from the list of pieces.
Definition at line 50 of file SymbolHelper.h.
ExpressionValue llzk::bitAnd | ( | llvm::SMTSolverRef | solver, |
const ExpressionValue & | lhs, | ||
const ExpressionValue & | rhs ) |
Definition at line 101 of file IntervalAnalysis.cpp.
Definition at line 475 of file Intervals.cpp.
ExpressionValue llzk::boolAnd | ( | llvm::SMTSolverRef | solver, |
const ExpressionValue & | lhs, | ||
const ExpressionValue & | rhs ) |
Definition at line 164 of file IntervalAnalysis.cpp.
Definition at line 535 of file Intervals.cpp.
ExpressionValue llzk::boolNot | ( | llvm::SMTSolverRef | solver, |
const ExpressionValue & | val ) |
Definition at line 223 of file IntervalAnalysis.cpp.
Definition at line 492 of file Intervals.cpp.
ExpressionValue llzk::boolOr | ( | llvm::SMTSolverRef | solver, |
const ExpressionValue & | lhs, | ||
const ExpressionValue & | rhs ) |
Definition at line 172 of file IntervalAnalysis.cpp.
Definition at line 509 of file Intervals.cpp.
ExpressionValue llzk::boolXor | ( | llvm::SMTSolverRef | solver, |
const ExpressionValue & | lhs, | ||
const ExpressionValue & | rhs ) |
Definition at line 180 of file IntervalAnalysis.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 41 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 59 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 51 of file StreamHelper.h.
Definition at line 153 of file Intervals.cpp.
mlir::LogicalResult llzk::checkForAuxFieldConflicts | ( | component::StructDefOp | structDef, |
llvm::StringRef | auxPrefix ) |
LogicalResult llzk::checkForAuxFieldConflicts | ( | StructDefOp | structDef, |
StringRef | prefix ) |
Definition at line 85 of file LLZKLoweringUtils.cpp.
|
inline |
Definition at line 107 of file TypeHelper.h.
ExpressionValue llzk::cmp | ( | llvm::SMTSolverRef | solver, |
boolean::CmpOp | op, | ||
const ExpressionValue & | lhs, | ||
const ExpressionValue & | rhs ) |
Definition at line 125 of file IntervalAnalysis.cpp.
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 549 of file TypeHelper.cpp.
mlir::Operation * llzk::create | ( | MlirOpBuilder | cBuilder, |
MlirLocation | cLocation, | ||
Args &&... | args ) |
std::unique_ptr< mlir::Pass > llzk::createArrayToScalarPass | ( | ) |
std::unique_ptr< mlir::Pass > llzk::createCallGraphPrinterPass | ( | llvm::raw_ostream & | os = llvm::errs() | ) |
Definition at line 50 of file CallGraphPasses.cpp.
std::unique_ptr< mlir::Pass > llzk::createCallGraphSCCsPrinterPass | ( | llvm::raw_ostream & | os = llvm::errs() | ) |
Definition at line 95 of file CallGraphPasses.cpp.
std::unique_ptr< mlir::Pass > llzk::createConstraintDependencyGraphPrinterPass | ( | llvm::raw_ostream & | os = llvm::errs() | ) |
Definition at line 69 of file ConstraintDependencyGraphPass.cpp.
std::unique_ptr< mlir::Pass > llzk::createFieldWriteValidatorPass | ( | ) |
Definition at line 82 of file LLZKValidationPasses.cpp.
std::unique_ptr< mlir::Pass > llzk::createFlatteningPass | ( | ) |
std::unique_ptr< mlir::Pass > llzk::createInlineStructsPass | ( | ) |
Definition at line 1005 of file LLZKInlineStructsPass.cpp.
std::unique_ptr< mlir::Pass > llzk::createIntervalAnalysisPrinterPass | ( | llvm::raw_ostream & | os = llvm::errs() | ) |
Definition at line 74 of file IntervalAnalysisPass.cpp.
|
inline |
Definition at line 31 of file Builders.h.
mlir::OwningOpRef< mlir::ModuleOp > llzk::createLLZKModule | ( | mlir::MLIRContext * | context, |
mlir::Location | loc ) |
OwningOpRef< ModuleOp > llzk::createLLZKModule | ( | MLIRContext * | context, |
Location | loc ) |
Definition at line 22 of file Builders.cpp.
std::unique_ptr< mlir::Pass > llzk::createPolyLoweringPass | ( | ) |
Definition at line 335 of file LLZKPolyLoweringPass.cpp.
std::unique_ptr< mlir::Pass > llzk::createPolyLoweringPass | ( | unsigned | maxDegree | ) |
Definition at line 339 of file LLZKPolyLoweringPass.cpp.
std::unique_ptr< mlir::Pass > llzk::createR1CSLoweringPass | ( | ) |
Definition at line 685 of file LLZKR1CSLoweringPass.cpp.
std::unique_ptr< mlir::Pass > llzk::createRedundantOperationEliminationPass | ( | ) |
Definition at line 285 of file LLZKRedundantOperationEliminationPass.cpp.
std::unique_ptr< mlir::Pass > llzk::createRedundantReadAndWriteEliminationPass | ( | ) |
Definition at line 679 of file LLZKRedundantReadAndWriteEliminationPass.cpp.
std::unique_ptr< mlir::Pass > llzk::createSymbolDefTreePrinterPass | ( | ) |
Definition at line 42 of file SymbolDefTreePass.cpp.
std::unique_ptr< mlir::Pass > llzk::createSymbolUseGraphPrinterPass | ( | ) |
Definition at line 42 of file SymbolUseGraphPass.cpp.
std::unique_ptr< mlir::Pass > llzk::createUnusedDeclarationEliminationPass | ( | ) |
Definition at line 233 of file LLZKUnusedDeclarationEliminationPass.cpp.
|
inline |
Definition at line 18 of file BuilderHelper.h.
ExpressionValue llzk::div | ( | llvm::SMTSolverRef | solver, |
felt::DivFeltOp | op, | ||
const ExpressionValue & | lhs, | ||
const ExpressionValue & | rhs ) |
Definition at line 75 of file IntervalAnalysis.cpp.
|
inline |
Definition at line 35 of file ErrorHelper.h.
llvm::APSInt llzk::expandingAdd | ( | llvm::APSInt | lhs, |
llvm::APSInt | rhs ) |
Safely add lhs and rhs, expanding the width of the result as necessary.
Numbers are never truncated here, as this assumes that truncation will occur with the reduction to the prime field.
lhs | an N bit number with an allocated width of X |
rhs | an M bit number with an allocated width of Y |
Definition at line 14 of file APIntHelper.cpp.
llvm::APSInt llzk::expandingMul | ( | llvm::APSInt | lhs, |
llvm::APSInt | rhs ) |
Safely multiple lhs and rhs, expanding the width of the result as necessary.
Numbers are never truncated here, as this assumes that truncation will occur with the reduction to the prime field.
lhs | an N bit number with an allocated width of X |
rhs | an M bit number with an allocated width of Y |
Definition at line 30 of file APIntHelper.cpp.
llvm::APSInt llzk::expandingSub | ( | llvm::APSInt | lhs, |
llvm::APSInt | rhs ) |
Safely subtract lhs and rhs, expanding the width of the result as necessary.
Numbers are never truncated here, as this assumes that truncation will occur with the reduction to the prime field.
lhs | an N bit number with an allocated width of X |
rhs | an M bit number with an allocated width of Y |
Definition at line 22 of file APIntHelper.cpp.
ExpressionValue llzk::fallbackBinaryOp | ( | llvm::SMTSolverRef | solver, |
Operation * | op, | ||
const ExpressionValue & | lhs, | ||
const ExpressionValue & | rhs ) |
Definition at line 190 of file IntervalAnalysis.cpp.
ExpressionValue llzk::fallbackUnaryOp | ( | llvm::SMTSolverRef | solver, |
Operation * | op, | ||
const ExpressionValue & | val ) |
Definition at line 231 of file IntervalAnalysis.cpp.
Attribute llzk::forceIntAttrType | ( | Attribute | attr | ) |
Definition at line 867 of file TypeHelper.cpp.
mlir::Attribute llzk::forceIntAttrType | ( | mlir::Attribute | attr | ) |
Convert any IntegerAttr with a type other than IndexType to use IndexType.
SmallVector< Attribute > llzk::forceIntAttrTypes | ( | ArrayRef< Attribute > | attrList | ) |
Definition at line 874 of file TypeHelper.cpp.
llvm::SmallVector< mlir::Attribute > llzk::forceIntAttrTypes | ( | llvm::ArrayRef< mlir::Attribute > | attrList | ) |
Convert any IntegerAttr with a type other than IndexType to use IndexType.
IntegerAttr llzk::forceIntType | ( | IntegerAttr | attr | ) |
Definition at line 860 of file TypeHelper.cpp.
mlir::IntegerAttr llzk::forceIntType | ( | mlir::IntegerAttr | attr | ) |
Convert an IntegerAttr with a type other than IndexType to use IndexType.
|
inline |
Definition at line 34 of file AttributeHelper.h.
std::vector< ConstrainRef > llzk::getAllChildren | ( | SymbolTableCollection & | tables, |
ModuleOp | mod, | ||
ArrayType | arrayTy, | ||
ConstrainRef | root ) |
Definition at line 244 of file ConstrainRef.cpp.
std::vector< ConstrainRef > llzk::getAllChildren | ( | SymbolTableCollection & | tables, |
ModuleOp | mod, | ||
SymbolLookupResult< StructDefOp > | structDefRes, | ||
ConstrainRef | root ) |
Definition at line 255 of file ConstrainRef.cpp.
|
inline |
Definition at line 259 of file TypeHelper.h.
mlir::RegisteredOperationName llzk::getCheckRegisteredInfo | ( | mlir::MLIRContext * | ctx | ) |
|
inline |
Definition at line 27 of file ErrorHelper.h.
|
inline |
Definition at line 31 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 127 of file LLZKLoweringUtils.cpp.
|
inline |
Construct a FlatSymbolRefAttr with the given content.
Definition at line 35 of file SymbolHelper.h.
|
inline |
Definition at line 255 of file TypeHelper.h.
|
inlineconstexpr |
Definition at line 21 of file AnalysisPassEnums.h.inc.
llvm::SmallVector< mlir::StringRef > llzk::getNames | ( | mlir::SymbolRefAttr | ref | ) |
llvm::SmallVector< StringRef > llzk::getNames | ( | SymbolRefAttr | ref | ) |
Definition at line 205 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 27 of file OpHelpers.h.
|
inline |
Return the closest surrounding parent operation that is of type 'OpClass'.
Definition at line 45 of file OpHelpers.h.
mlir::FailureOr< mlir::SymbolRefAttr > llzk::getPathFromRoot | ( | component::FieldDefOp & | to, |
mlir::ModuleOp * | foundRoot = nullptr ) |
mlir::FailureOr< mlir::SymbolRefAttr > llzk::getPathFromRoot | ( | component::StructDefOp & | to, |
mlir::ModuleOp * | foundRoot = nullptr ) |
FailureOr< SymbolRefAttr > llzk::getPathFromRoot | ( | FieldDefOp & | to, |
ModuleOp * | foundRoot ) |
Definition at line 279 of file SymbolHelper.cpp.
FailureOr< SymbolRefAttr > llzk::getPathFromRoot | ( | FuncDefOp & | to, |
ModuleOp * | foundRoot ) |
Definition at line 283 of file SymbolHelper.cpp.
mlir::FailureOr< mlir::SymbolRefAttr > llzk::getPathFromRoot | ( | function::FuncDefOp & | to, |
mlir::ModuleOp * | foundRoot = nullptr ) |
mlir::FailureOr< mlir::SymbolRefAttr > llzk::getPathFromRoot | ( | mlir::SymbolOpInterface | to, |
mlir::ModuleOp * | foundRoot = nullptr ) |
FailureOr< SymbolRefAttr > llzk::getPathFromRoot | ( | StructDefOp & | to, |
ModuleOp * | foundRoot ) |
Definition at line 275 of file SymbolHelper.cpp.
FailureOr< SymbolRefAttr > llzk::getPathFromRoot | ( | SymbolOpInterface | to, |
ModuleOp * | foundRoot ) |
Definition at line 271 of file SymbolHelper.cpp.
mlir::FailureOr< mlir::SymbolRefAttr > llzk::getPathFromTopRoot | ( | component::FieldDefOp & | to, |
mlir::ModuleOp * | foundRoot = nullptr ) |
mlir::FailureOr< mlir::SymbolRefAttr > llzk::getPathFromTopRoot | ( | component::StructDefOp & | to, |
mlir::ModuleOp * | foundRoot = nullptr ) |
FailureOr< SymbolRefAttr > llzk::getPathFromTopRoot | ( | FieldDefOp & | to, |
ModuleOp * | foundRoot ) |
Definition at line 300 of file SymbolHelper.cpp.
FailureOr< SymbolRefAttr > llzk::getPathFromTopRoot | ( | FuncDefOp & | to, |
ModuleOp * | foundRoot ) |
Definition at line 304 of file SymbolHelper.cpp.
mlir::FailureOr< mlir::SymbolRefAttr > llzk::getPathFromTopRoot | ( | function::FuncDefOp & | to, |
mlir::ModuleOp * | foundRoot = nullptr ) |
mlir::FailureOr< mlir::SymbolRefAttr > llzk::getPathFromTopRoot | ( | mlir::SymbolOpInterface | to, |
mlir::ModuleOp * | foundRoot = nullptr ) |
FailureOr< SymbolRefAttr > llzk::getPathFromTopRoot | ( | StructDefOp & | to, |
ModuleOp * | foundRoot ) |
Definition at line 296 of file SymbolHelper.cpp.
FailureOr< SymbolRefAttr > llzk::getPathFromTopRoot | ( | SymbolOpInterface | to, |
ModuleOp * | foundRoot ) |
Definition at line 292 of file SymbolHelper.cpp.
llvm::SmallVector< mlir::FlatSymbolRefAttr > llzk::getPieces | ( | mlir::SymbolRefAttr | ref | ) |
llvm::SmallVector< FlatSymbolRefAttr > llzk::getPieces | ( | SymbolRefAttr | ref | ) |
Definition at line 214 of file SymbolHelper.cpp.
|
inline |
Return SymbolRefAttr like the one given but with the leaf/final element removed.
Definition at line 60 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 266 of file SymbolHelper.cpp.
|
inline |
Return the closest operation that is of type 'OpClass', either the op itself or an ancestor.
Definition at line 32 of file OpHelpers.h.
SymbolLookupResult< StructDefOp > llzk::getStructDef | ( | SymbolTableCollection & | tables, |
ModuleOp | mod, | ||
StructType | ty ) |
Lookup a StructDefOp
from a given StructType
.
tables | |
mod | |
ty |
SymbolLookupResult
for the StructDefOp
found. Note that returning the lookup result is important, as it may manage a ModuleOp if the struct is found via an include. Definition at line 101 of file ConstrainRef.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 54 of file SymbolTableLLZK.h.
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 55 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 287 of file SymbolHelper.cpp.
|
inline |
Definition at line 25 of file Builders.h.
bool llzk::hasAffineMapAttr | ( | mlir::Type | type | ) |
Return true
iff the given type contains an AffineMapAttr.
bool llzk::hasAffineMapAttr | ( | Type | type | ) |
Definition at line 538 of file TypeHelper.cpp.
|
inline |
Definition at line 17 of file GraphUtil.h.
ExpressionValue llzk::intersection | ( | llvm::SMTSolverRef | solver, |
const ExpressionValue & | lhs, | ||
const ExpressionValue & | rhs ) |
bool llzk::isConcreteType | ( | mlir::Type | type, |
bool | allowStructParams = true ) |
Return false
iff the type contains any TypeVarType
bool llzk::isConcreteType | ( | Type | type, |
bool | allowStructParams ) |
Definition at line 520 of file TypeHelper.cpp.
bool llzk::isDynamic | ( | IntegerAttr | intAttr | ) |
Definition at line 547 of file TypeHelper.cpp.
bool llzk::isDynamic | ( | mlir::IntegerAttr | intAttr | ) |
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 with array.type
and struct.type
types, we define IntegerAttr and TypeAttr as concrete, AffineMapAttr as less concrete than those, and SymbolRefAttr as least concrete.
bool llzk::isMoreConcreteUnification | ( | Type | oldTy, |
Type | newTy, | ||
llvm::function_ref< bool(Type oldTy, Type newTy)> | knownOldToNew ) |
Definition at line 838 of file TypeHelper.cpp.
|
inline |
Definition at line 36 of file AttributeHelper.h.
|
inline |
Definition at line 37 of file AttributeHelper.h.
|
inline |
Definition at line 38 of file AttributeHelper.h.
bool llzk::isSignalType | ( | StructType | sType | ) |
Return true
iff the given StructType is referencing the COMPONENT_NAME_SIGNAL
struct.
Definition at line 531 of file TypeHelper.cpp.
bool llzk::isSignalType | ( | mlir::Type | type | ) |
Return true
iff the given type is a StructType referencing the COMPONENT_NAME_SIGNAL
struct.
bool llzk::isSignalType | ( | Type | type | ) |
Definition at line 524 of file TypeHelper.cpp.
bool llzk::isValidArrayElemType | ( | mlir::Type | type | ) |
valid types: isValidType() - {ArrayType}
bool llzk::isValidArrayElemType | ( | Type | type | ) |
Definition at line 516 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 518 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)}
bool llzk::isValidColumnType | ( | Type | type, |
SymbolTableCollection & | symbolTable, | ||
Operation * | op ) |
Definition at line 501 of file TypeHelper.cpp.
bool llzk::isValidConstReadType | ( | mlir::Type | type | ) |
valid types: {I1, Index, FeltType, TypeVarType}
bool llzk::isValidConstReadType | ( | Type | type | ) |
Definition at line 512 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 507 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 505 of file TypeHelper.cpp.
bool llzk::isValidType | ( | mlir::Type | type | ) |
valid types: {I1, Index, String, FeltType, StructType, ArrayType, TypeVarType}
bool llzk::isValidType | ( | Type | type | ) |
Definition at line 499 of file TypeHelper.cpp.
|
inline |
Definition at line 136 of file SymbolLookup.h.
|
inline |
Definition at line 151 of file SymbolLookup.h.
|
inline |
Definition at line 143 of file SymbolLookup.h.
|
inline |
Definition at line 175 of file SymbolLookup.h.
auto llzk::m_CommutativeOp | ( | LhsMatcher | lhs, |
RhsMatcher | rhs ) |
Definition at line 47 of file Matchers.h.
auto llzk::m_Constant | ( | ) |
Definition at line 88 of file Matchers.h.
auto llzk::m_Constant | ( | felt::FeltConstantOp * | capture | ) |
Definition at line 90 of file Matchers.h.
auto llzk::m_RefValue | ( | ) |
Definition at line 68 of file Matchers.h.
auto llzk::m_RefValue | ( | mlir::Value * | capture | ) |
Definition at line 70 of file Matchers.h.
ExpressionValue llzk::mod | ( | llvm::SMTSolverRef | solver, |
const ExpressionValue & | lhs, | ||
const ExpressionValue & | rhs ) |
Definition at line 93 of file IntervalAnalysis.cpp.
ExpressionValue llzk::mul | ( | llvm::SMTSolverRef | solver, |
const ExpressionValue & | lhs, | ||
const ExpressionValue & | rhs ) |
Definition at line 67 of file IntervalAnalysis.cpp.
ExpressionValue llzk::neg | ( | llvm::SMTSolverRef | solver, |
const ExpressionValue & | val ) |
Definition at line 209 of file IntervalAnalysis.cpp.
ExpressionValue llzk::notOp | ( | llvm::SMTSolverRef | solver, |
const ExpressionValue & | val ) |
Definition at line 216 of file IntervalAnalysis.cpp.
Definition at line 409 of file Intervals.cpp.
Definition at line 414 of file Intervals.cpp.
Definition at line 379 of file Intervals.cpp.
UnreducedInterval llzk::operator* | ( | const UnreducedInterval & | lhs, |
const UnreducedInterval & | rhs ) |
Definition at line 110 of file Intervals.cpp.
Definition at line 366 of file Intervals.cpp.
UnreducedInterval llzk::operator+ | ( | const UnreducedInterval & | lhs, |
const UnreducedInterval & | rhs ) |
Definition at line 101 of file Intervals.cpp.
Definition at line 377 of file Intervals.cpp.
UnreducedInterval llzk::operator- | ( | const UnreducedInterval & | lhs, |
const UnreducedInterval & | rhs ) |
Definition at line 106 of file Intervals.cpp.
Definition at line 398 of file Intervals.cpp.
Definition at line 429 of file Intervals.cpp.
llvm::raw_ostream & llzk::operator<< | ( | llvm::raw_ostream & | os, |
const ConstrainRefLattice & | lattice ) |
Definition at line 288 of file ConstrainRefLattice.cpp.
mlir::raw_ostream & llzk::operator<< | ( | mlir::raw_ostream & | os, |
const ConstrainRef & | rhs ) |
mlir::raw_ostream & llzk::operator<< | ( | mlir::raw_ostream & | os, |
const ConstrainRefLatticeValue & | v ) |
Definition at line 187 of file ConstrainRefLattice.cpp.
raw_ostream & llzk::operator<< | ( | raw_ostream & | os, |
const ConstrainRef & | rhs ) |
Definition at line 408 of file ConstrainRef.cpp.
raw_ostream & llzk::operator<< | ( | raw_ostream & | os, |
const ConstrainRefSet & | rhs ) |
Definition at line 420 of file ConstrainRef.cpp.
std::strong_ordering llzk::operator<=> | ( | const UnreducedInterval & | lhs, |
const UnreducedInterval & | rhs ) |
Definition at line 126 of file Intervals.cpp.
Definition at line 446 of file Intervals.cpp.
|
inline |
Definition at line 122 of file OpHelpers.h.
|
inline |
Definition at line 92 of file OpHelpers.h.
|
inline |
Definition at line 107 of file OpHelpers.h.
|
inline |
Definition at line 129 of file OpHelpers.h.
void llzk::printAttrs | ( | AsmPrinter & | printer, |
ArrayRef< Attribute > | attrs, | ||
const StringRef & | separator ) |
Definition at line 18 of file AttributeHelper.cpp.
void llzk::printAttrs | ( | mlir::AsmPrinter & | printer, |
mlir::ArrayRef< mlir::Attribute > | attrs, | ||
const mlir::StringRef & | separator ) |
|
inline |
Definition at line 100 of file OpHelpers.h.
|
inline |
Definition at line 115 of file OpHelpers.h.
mlir::Value llzk::rebuildExprInCompute | ( | mlir::Value | val, |
function::FuncDefOp | computeFunc, | ||
mlir::OpBuilder & | builder, | ||
llvm::DenseMap< mlir::Value, mlir::Value > & | memo ) |
Value llzk::rebuildExprInCompute | ( | Value | val, |
FuncDefOp | computeFunc, | ||
OpBuilder & | builder, | ||
DenseMap< Value, Value > & | memo ) |
Definition at line 27 of file LLZKLoweringUtils.cpp.
void llzk::registerAllDialects | ( | mlir::DialectRegistry & | registry | ) |
Definition at line 31 of file InitDialects.cpp.
|
inline |
Definition at line 605 of file AnalysisPasses.h.
|
inline |
Definition at line 503 of file AnalysisPasses.h.
|
inline |
Definition at line 510 of file AnalysisPasses.h.
|
inline |
Definition at line 520 of file AnalysisPasses.h.
|
inline |
Definition at line 527 of file AnalysisPasses.h.
|
inline |
Definition at line 537 of file AnalysisPasses.h.
|
inline |
Definition at line 544 of file AnalysisPasses.h.
|
inline |
Definition at line 86 of file LLZKValidationPasses.h.
|
inline |
Definition at line 93 of file LLZKValidationPasses.h.
|
inline |
Definition at line 467 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 474 of file LLZKTransformationPasses.h.
void llzk::registerInliningExtensions | ( | DialectRegistry & | registry | ) |
Definition at line 94 of file LLZKInliningExtensions.cpp.
void llzk::registerInliningExtensions | ( | mlir::DialectRegistry & | registry | ) |
|
inline |
Definition at line 554 of file AnalysisPasses.h.
|
inline |
Definition at line 561 of file AnalysisPasses.h.
|
inline |
Definition at line 484 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 491 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 501 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 508 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 518 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 525 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 535 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 542 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 571 of file AnalysisPasses.h.
|
inline |
Definition at line 578 of file AnalysisPasses.h.
|
inline |
Definition at line 588 of file AnalysisPasses.h.
|
inline |
Definition at line 595 of file AnalysisPasses.h.
|
inline |
Definition at line 569 of file LLZKTransformationPasses.h.
void llzk::registerTransformationPassPipelines | ( | ) |
Definition at line 39 of file TransformationPassPipelines.cpp.
|
inline |
Definition at line 552 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 559 of file LLZKTransformationPasses.h.
|
inline |
Definition at line 103 of file LLZKValidationPasses.h.
|
inline |
Definition at line 71 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 68 of file SymbolHelper.h.
SymbolRefAttr llzk::replaceLeaf | ( | SymbolRefAttr | orig, |
FlatSymbolRefAttr | newLeaf ) |
Definition at line 237 of file SymbolHelper.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:
oldVal
in operations that come after afterOp
in the same block are replaced.afterOp
itself are not replaced (to avoid self-trivializing rewrites).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 100 of file LLZKLoweringUtils.cpp.
|
inline |
Definition at line 140 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 119 of file SymbolHelper.h.
Definition at line 143 of file TypeHelper.h.
std::strong_ordering llzk::safeCmp | ( | llvm::APSInt | lhs, |
llvm::APSInt | rhs ) |
Compares lhs and rhs, regardless of the bitwidth of lhs and rhs.
Definition at line 47 of file APIntHelper.cpp.
|
inline |
Definition at line 74 of file APIntHelper.h.
|
inline |
Definition at line 86 of file APIntHelper.h.
|
inline |
Definition at line 82 of file APIntHelper.h.
|
inline |
Definition at line 70 of file APIntHelper.h.
|
inline |
Definition at line 66 of file APIntHelper.h.
|
inline |
Definition at line 98 of file APIntHelper.h.
|
inline |
Definition at line 102 of file APIntHelper.h.
|
inline |
Definition at line 90 of file APIntHelper.h.
|
inline |
Definition at line 94 of file APIntHelper.h.
|
inline |
Definition at line 78 of file APIntHelper.h.
|
inline |
Definition at line 63 of file APIntHelper.h.
llvm::APSInt llzk::safeToSigned | ( | llvm::APSInt | i | ) |
Safely converts the given int to a signed int if it is an unsigned int by adding an extra bit for the sign.
Definition at line 38 of file APIntHelper.cpp.
|
inline |
Definition at line 64 of file APIntHelper.h.
ExpressionValue llzk::shiftLeft | ( | llvm::SMTSolverRef | solver, |
const ExpressionValue & | lhs, | ||
const ExpressionValue & | rhs ) |
Definition at line 109 of file IntervalAnalysis.cpp.
ExpressionValue llzk::shiftRight | ( | llvm::SMTSolverRef | solver, |
const ExpressionValue & | lhs, | ||
const ExpressionValue & | rhs ) |
Definition at line 117 of file IntervalAnalysis.cpp.
|
inline |
Definition at line 236 of file TypeHelper.h.
inline ::llvm::StringRef llzk::stringifyEnum | ( | OutputStream | enumValue | ) |
Definition at line 26 of file AnalysisPassEnums.h.inc.
llvm::StringRef llzk::stringifyOutputStream | ( | OutputStream | val | ) |
Definition at line 11 of file AnalysisPassEnums.cpp.inc.
|
inline |
Definition at line 41 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 struct parameters.
bool llzk::structTypesUnify | ( | StructType | lhs, |
StructType | rhs, | ||
ArrayRef< StringRef > | rhsReversePrefix, | ||
UnificationMap * | unifications ) |
Definition at line 825 of file TypeHelper.cpp.
ExpressionValue llzk::sub | ( | llvm::SMTSolverRef | solver, |
const ExpressionValue & | lhs, | ||
const ExpressionValue & | rhs ) |
Definition at line 59 of file IntervalAnalysis.cpp.
::std::optional< EnumType > llzk::symbolizeEnum | ( | ::llvm::StringRef | ) |
inline ::std::optional< OutputStream > llzk::symbolizeEnum< OutputStream > | ( | ::llvm::StringRef | str | ) |
Definition at line 31 of file AnalysisPassEnums.h.inc.
std::optional< OutputStream > llzk::symbolizeOutputStream | ( | ::llvm::StringRef | str | ) |
Definition at line 20 of file AnalysisPassEnums.cpp.inc.
std::optional< OutputStream > llzk::symbolizeOutputStream | ( | uint32_t | value | ) |
Definition at line 27 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 ) |
|
inline |
Definition at line 33 of file AttributeHelper.h.
|
inline |
Definition at line 26 of file AnalysisPassEnums.h.
llvm::raw_ostream & llzk::toStream | ( | OutputStream | val | ) |
Definition at line 21 of file AnalysisPassEnums.cpp.
|
inline |
Return true
iff the two lists of Type instances are equivalent or could be equivalent after full instantiation of struct parameters (if applicable within the given types).
Definition at line 225 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 813 of file TypeHelper.cpp.
bool llzk::typeParamsUnify | ( | const ArrayRef< Attribute > & | lhsParams, |
const ArrayRef< Attribute > & | rhsParams, | ||
UnificationMap * | unifications ) |
Definition at line 804 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 struct 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 struct 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 struct parameters (if applicable within the given types).
bool llzk::typesUnify | ( | Type | lhs, |
Type | rhs, | ||
ArrayRef< StringRef > | rhsReversePrefix, | ||
UnificationMap * | unifications ) |
Definition at line 832 of file TypeHelper.cpp.
LogicalResult llzk::verifyAffineMapAttrType | ( | EmitErrorFn | emitError, |
Attribute | in ) |
Definition at line 893 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 915 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 920 of file TypeHelper.cpp.
LogicalResult llzk::verifyIntAttrType | ( | EmitErrorFn | emitError, |
Attribute | in ) |
Definition at line 878 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 ) |
Ensure that the given symbol (that is used as a parameter of the given type) can be resolved.
LogicalResult llzk::verifyParamOfType | ( | SymbolTableCollection & | tables, |
SymbolRefAttr | param, | ||
Type | parameterizedType, | ||
Operation * | origin ) |
Definition at line 308 of file SymbolHelper.cpp.
mlir::LogicalResult llzk::verifyParamsOfType | ( | mlir::SymbolTableCollection & | tables, |
mlir::ArrayRef< mlir::Attribute > | tyParams, | ||
mlir::Type | structOrArrayType, | ||
mlir::Operation * | origin ) |
Ensure that any symbols that appear within the given attributes (that are parameters of the given type) can be resolved.
LogicalResult llzk::verifyParamsOfType | ( | SymbolTableCollection & | tables, |
ArrayRef< Attribute > | tyParams, | ||
Type | parameterizedType, | ||
Operation * | origin ) |
Definition at line 336 of file SymbolHelper.cpp.
LogicalResult llzk::verifyStructTypeParams | ( | EmitErrorFn | emitError, |
ArrayAttr | params ) |
Definition at line 911 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 360 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 169 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 384 of file SymbolHelper.cpp.
|
constexpr |
Symbol name for the main entry point struct/component (if any).
There are additional restrictions on the struct with this name:
struct<Signal>
or array<.. x struct<Signal>>
. Definition at line 23 of file Constants.h.
|
constexpr |
Symbol name for the struct/component representing a signal.
A "signal" has direct correspondence to a circom signal or AIR/PLONK column, opposed to intermediate values or other expressions.
Definition at line 16 of file Constants.h.
|
constexpr |
Symbol name for the witness generation (and resp.
constraint generation) functions within a component.
Definition at line 27 of file Constants.h.
|
constexpr |
Definition at line 28 of file Constants.h.
|
constexpr |
Name of the attribute on the top-level ModuleOp that specifies the IR language name.
Definition at line 31 of file Constants.h.