MLIR  20.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

LogicalResult 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 lattice anchor on this analysis. More...
 
void propagateIfChanged (AnalysisState *state, ChangeResult changed)
 Propagate an update to a state if it changed. More...
 
template<typename AnchorT >
void registerAnchorKind ()
 Register a custom lattice anchor class. More...
 
template<typename AnchorT , typename... Args>
AnchorT * getLatticeAnchor (Args &&...args)
 Get or create a custom lattice anchor. More...
 
template<typename StateT , typename AnchorT >
StateT * getOrCreate (AnchorT anchor)
 Get the analysis state associated with the lattice anchor. More...
 
template<typename StateT , typename AnchorT >
const StateT * getOrCreateFor (ProgramPoint *dependent, AnchorT anchor)
 Get a read-only analysis state for the given point and create a dependency on dependent. More...
 
ProgramPointgetProgramPointBefore (Operation *op)
 Get a uniqued program point instance. More...
 
ProgramPointgetProgramPointBefore (Block *block)
 
ProgramPointgetProgramPointAfter (Operation *op)
 
ProgramPointgetProgramPointAfter (Block *block)
 
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 280 of file SparseAnalysis.h.

◆ visitOperation()

LogicalResult SparseConstantPropagation::visitOperation ( Operation op,
ArrayRef< const Lattice< ConstantValue > * >  operands,
ArrayRef< Lattice< ConstantValue > * >  results 
)
overridevirtual

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