MLIR  19.0.0git
Public Member Functions | List of all members
mlir::dataflow::SparseConstantPropagation Class Reference

This analysis implements sparse constant propagation, which attempts to determine constant-valued results for operations using constant-valued operands, by speculatively folding operations. More...

#include "mlir/Analysis/DataFlow/ConstantPropagationAnalysis.h"

+ Inheritance diagram for mlir::dataflow::SparseConstantPropagation:

Public Member Functions

void visitOperation (Operation *op, ArrayRef< const Lattice< ConstantValue > * > operands, ArrayRef< Lattice< ConstantValue > * > results) override
 Visit an operation with the lattices of its operands. More...
 
void setToEntryState (Lattice< ConstantValue > *lattice) override
 Set the given lattice element(s) at control flow entry point(s). More...
 
 SparseForwardDataFlowAnalysis (DataFlowSolver &solver)
 
- Public Member Functions inherited from mlir::dataflow::SparseForwardDataFlowAnalysis< Lattice< ConstantValue > >
 SparseForwardDataFlowAnalysis (DataFlowSolver &solver)
 
virtual void visitExternalCall (CallOpInterface call, ArrayRef< const Lattice< ConstantValue > * > argumentLattices, ArrayRef< Lattice< ConstantValue > * > resultLattices)
 Visit a call operation to an externally defined function given the lattices of its arguments. More...
 
virtual void visitNonControlFlowArguments (Operation *op, const RegionSuccessor &successor, ArrayRef< Lattice< ConstantValue > * > 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. More...
 
- Public Member Functions inherited from mlir::dataflow::AbstractSparseForwardDataFlowAnalysis
LogicalResult initialize (Operation *top) override
 Initialize the analysis by visiting every owner of an SSA value: all operations and blocks. More...
 
LogicalResult visit (ProgramPoint point) override
 Visit a program point. More...
 
- Public Member Functions inherited from mlir::DataFlowAnalysis
virtual ~DataFlowAnalysis ()
 
 DataFlowAnalysis (DataFlowSolver &solver)
 Create an analysis with a reference to the parent solver. More...
 

Additional Inherited Members

- Protected Member Functions inherited from mlir::dataflow::SparseForwardDataFlowAnalysis< Lattice< ConstantValue > >
Lattice< ConstantValue > * getLatticeElement (Value value) override
 Get the lattice element for a value. More...
 
const Lattice< ConstantValue > * getLatticeElementFor (ProgramPoint point, Value value)
 Get the lattice element for a value and create a dependency on the provided program point. More...
 
void setAllToEntryStates (ArrayRef< Lattice< ConstantValue > * > lattices)
 
- Protected Member Functions inherited from mlir::dataflow::AbstractSparseForwardDataFlowAnalysis
 AbstractSparseForwardDataFlowAnalysis (DataFlowSolver &solver)
 
const AbstractSparseLatticegetLatticeElementFor (ProgramPoint point, Value value)
 Get a read-only lattice element for a value and add it as a dependency to a program point. More...
 
void setAllToEntryStates (ArrayRef< AbstractSparseLattice * > lattices)
 
void join (AbstractSparseLattice *lhs, const AbstractSparseLattice &rhs)
 Join the lattice element and propagate and update if it changed. More...
 
- Protected Member Functions inherited from mlir::DataFlowAnalysis
void addDependency (AnalysisState *state, ProgramPoint point)
 Create a dependency between the given analysis state and program point on this analysis. More...
 
void propagateIfChanged (AnalysisState *state, ChangeResult changed)
 Propagate an update to a state if it changed. More...
 
template<typename PointT >
void registerPointKind ()
 Register a custom program point class. More...
 
template<typename PointT , typename... Args>
PointT * getProgramPoint (Args &&...args)
 Get or create a custom program point. More...
 
template<typename StateT , typename PointT >
StateT * getOrCreate (PointT point)
 Get the analysis state associated with the program point. More...
 
template<typename StateT , typename PointT >
const StateT * getOrCreateFor (ProgramPoint dependent, PointT point)
 Get a read-only analysis state for the given point and create a dependency on dependent. More...
 
const DataFlowConfiggetSolverConfig () const
 Return the configuration of the solver used for this analysis. More...
 

Detailed Description

This analysis implements sparse constant propagation, which attempts to determine constant-valued results for operations using constant-valued operands, by speculatively folding operations.

When combined with dead-code analysis, this becomes sparse conditional constant propagation (SCCP).

Definition at line 99 of file ConstantPropagationAnalysis.h.

Member Function Documentation

◆ setToEntryState()

void SparseConstantPropagation::setToEntryState ( Lattice< ConstantValue > *  lattice)
overridevirtual

◆ SparseForwardDataFlowAnalysis()

Definition at line 273 of file SparseAnalysis.h.

◆ visitOperation()

void SparseConstantPropagation::visitOperation ( Operation op,
ArrayRef< const Lattice< ConstantValue > * >  operands,
ArrayRef< Lattice< ConstantValue > * >  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 mlir::dataflow::SparseForwardDataFlowAnalysis< Lattice< ConstantValue > >.

Definition at line 47 of file ConstantPropagationAnalysis.cpp.


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