LLZK 2.0.0
An open-source IR for Zero Knowledge (ZK) circuits
Loading...
Searching...
No Matches

Sparse SSA-value lattice for SourceRef propagation. More...

#include <SourceRefLattice.h>

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

Public Types

using LatticeValue = SourceRefLatticeValue
using ValueTy = llvm::PointerUnion<mlir::Value, mlir::Operation *>
using Ref2Val = mlir::DenseMap<SourceRef, mlir::DenseSet<ValueTy>>

Public Member Functions

mlir::ChangeResult join (const AbstractSparseLattice &rhs) override
mlir::ChangeResult meet (const AbstractSparseLattice &rhs) override
void print (mlir::raw_ostream &os) const override
const LatticeValuegetValue () const
mlir::ChangeResult setValue (const LatticeValue &newValue)
mlir::ChangeResult setValue (const SourceRef &ref)

Static Public Member Functions

static mlir::FailureOr< SourceRefgetSourceRef (mlir::Value val)
 If val is the source of other values (i.e., a block argument, an allocation-like op result, or a constant), create the base reference to the val.
static SourceRefLatticeValue getDefaultValue (ValueTy v)

Detailed Description

Sparse SSA-value lattice for SourceRef propagation.

Definition at line 93 of file SourceRefLattice.h.

Member Typedef Documentation

◆ LatticeValue

◆ Ref2Val

using llzk::SourceRefLattice::Ref2Val = mlir::DenseMap<SourceRef, mlir::DenseSet<ValueTy>>

Definition at line 99 of file SourceRefLattice.h.

◆ ValueTy

using llzk::SourceRefLattice::ValueTy = llvm::PointerUnion<mlir::Value, mlir::Operation *>

Definition at line 98 of file SourceRefLattice.h.

Member Function Documentation

◆ getDefaultValue()

SourceRefLatticeValue llzk::SourceRefLattice::getDefaultValue ( SourceRefLattice::ValueTy v)
static

Definition at line 238 of file SourceRefLattice.cpp.

◆ getSourceRef()

mlir::FailureOr< SourceRef > llzk::SourceRefLattice::getSourceRef ( mlir::Value val)
static

If val is the source of other values (i.e., a block argument, an allocation-like op result, or a constant), create the base reference to the val.

Otherwise, return failure. Our lattice values must originate from somewhere.

Definition at line 213 of file SourceRefLattice.cpp.

◆ getValue()

const LatticeValue & llzk::SourceRefLattice::getValue ( ) const
inline

Definition at line 116 of file SourceRefLattice.h.

◆ join()

ChangeResult llzk::SourceRefLattice::join ( const AbstractSparseLattice & rhs)
override

Definition at line 248 of file SourceRefLattice.cpp.

◆ meet()

ChangeResult llzk::SourceRefLattice::meet ( const AbstractSparseLattice & rhs)
override

Definition at line 252 of file SourceRefLattice.cpp.

◆ print()

void llzk::SourceRefLattice::print ( mlir::raw_ostream & os) const
override

Definition at line 257 of file SourceRefLattice.cpp.

◆ setValue() [1/2]

ChangeResult llzk::SourceRefLattice::setValue ( const LatticeValue & newValue)

Definition at line 261 of file SourceRefLattice.cpp.

◆ setValue() [2/2]

ChangeResult llzk::SourceRefLattice::setValue ( const SourceRef & ref)

Definition at line 265 of file SourceRefLattice.cpp.


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