LLZK 0.1.0
Veridise's ZK Language IR
Loading...
Searching...
No Matches
llzk::IntervalDataFlowAnalysis Class Reference

#include <IntervalAnalysis.h>

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

Public Member Functions

 IntervalDataFlowAnalysis (mlir::DataFlowSolver &dataflowSolver, llvm::SMTSolverRef smt, const Field &f, bool propInputConstraints)
mlir::LogicalResult visitOperation (mlir::Operation *op, mlir::ArrayRef< const Lattice * > operands, mlir::ArrayRef< Lattice * > results) override
 Visit an operation with the lattices of its operands.
llvm::SMTExprRef getOrCreateSymbol (const SourceRef &r)
 Either return the existing SMT expression that corresponds to the SourceRef, or create one.
const llvm::DenseMap< SourceRef, llvm::DenseSet< Lattice * > > & getFieldReadResults () const
const llvm::DenseMap< SourceRef, ExpressionValue > & getFieldWriteResults () const
Public Member Functions inherited from llzk::dataflow::SparseForwardDataFlowAnalysis< IntervalAnalysisLattice >
 SparseForwardDataFlowAnalysis (mlir::DataFlowSolver &s)
virtual void visitExternalCall (mlir::CallOpInterface call, mlir::ArrayRef< const IntervalAnalysisLattice * > argumentLattices, mlir::ArrayRef< IntervalAnalysisLattice * > resultLattices)
 Visit a call operation to an externally defined function given the lattices of its arguments.
virtual void visitNonControlFlowArguments (mlir::Operation *op, const mlir::RegionSuccessor &successor, mlir::ArrayRef< IntervalAnalysisLattice * > argLattices, unsigned firstIndex)
 Given an operation with possible region control-flow, the lattices of the operands, and a region successor, compute the lattice values for block arguments that are not accounted for by the branching control flow (ex.
Public Member Functions inherited from llzk::dataflow::AbstractSparseForwardDataFlowAnalysis
mlir::LogicalResult initialize (mlir::Operation *top) override
 Initialize the analysis by visiting every owner of an SSA value: all operations and blocks.
mlir::LogicalResult visit (mlir::ProgramPoint *point) override
 Visit a program point.

Additional Inherited Members

Protected Member Functions inherited from llzk::dataflow::SparseForwardDataFlowAnalysis< IntervalAnalysisLattice >
IntervalAnalysisLatticegetLatticeElement (mlir::Value value) override
 Get the lattice element for a value.
const IntervalAnalysisLatticegetLatticeElementFor (mlir::ProgramPoint *point, mlir::Value value)
 Get the lattice element for a value and create a dependency on the provided program point.
void setAllToEntryStates (mlir::ArrayRef< IntervalAnalysisLattice * > lattices)
Protected Member Functions inherited from llzk::dataflow::AbstractSparseForwardDataFlowAnalysis
 AbstractSparseForwardDataFlowAnalysis (mlir::DataFlowSolver &solver)
const AbstractSparseLatticegetLatticeElementFor (mlir::ProgramPoint *point, mlir::Value value)
 Get a read-only lattice element for a value and add it as a dependency to a program point.
void setAllToEntryStates (mlir::ArrayRef< AbstractSparseLattice * > lattices)
void join (AbstractSparseLattice *lhs, const AbstractSparseLattice &rhs)
 Join the lattice element and propagate and update if it changed.
Protected Attributes inherited from llzk::dataflow::AbstractSparseForwardDataFlowAnalysis
mlir::SymbolTableCollection tables
 LLZK: Added for use of symbol helper caching.

Detailed Description

Definition at line 250 of file IntervalAnalysis.h.

Constructor & Destructor Documentation

◆ IntervalDataFlowAnalysis()

llzk::IntervalDataFlowAnalysis::IntervalDataFlowAnalysis ( mlir::DataFlowSolver & dataflowSolver,
llvm::SMTSolverRef smt,
const Field & f,
bool propInputConstraints )
inlineexplicit

Definition at line 260 of file IntervalAnalysis.h.

Member Function Documentation

◆ getFieldReadResults()

const llvm::DenseMap< SourceRef, llvm::DenseSet< Lattice * > > & llzk::IntervalDataFlowAnalysis::getFieldReadResults ( ) const
inline

Definition at line 278 of file IntervalAnalysis.h.

◆ getFieldWriteResults()

const llvm::DenseMap< SourceRef, ExpressionValue > & llzk::IntervalDataFlowAnalysis::getFieldWriteResults ( ) const
inline

Definition at line 282 of file IntervalAnalysis.h.

◆ getOrCreateSymbol()

llvm::SMTExprRef llzk::IntervalDataFlowAnalysis::getOrCreateSymbol ( const SourceRef & r)

Either return the existing SMT expression that corresponds to the SourceRef, or create one.

Parameters
r
Returns

Definition at line 597 of file IntervalAnalysis.cpp.

◆ visitOperation()

mlir::LogicalResult llzk::IntervalDataFlowAnalysis::visitOperation ( mlir::Operation * op,
mlir::ArrayRef< const Lattice * > operands,
mlir::ArrayRef< Lattice * > results )
overridevirtual

Visit an operation with the lattices of its operands.

This function is expected to set the lattices of the operation's results.

Implements llzk::dataflow::SparseForwardDataFlowAnalysis< IntervalAnalysisLattice >.

Definition at line 380 of file IntervalAnalysis.cpp.


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