|
Enzyme main
|
#include "DataFlowActivityAnalysis.h"#include "DataFlowAliasAnalysis.h"#include "Dialect/Ops.h"#include "Interfaces/AutoDiffTypeInterface.h"#include "mlir/Analysis/DataFlow/ConstantPropagationAnalysis.h"#include "mlir/Analysis/DataFlow/DeadCodeAnalysis.h"#include "mlir/Analysis/DataFlow/DenseAnalysis.h"#include "mlir/Analysis/DataFlow/SparseAnalysis.h"#include "mlir/Analysis/DataFlowFramework.h"#include "mlir/Interfaces/SideEffectInterfaces.h"#include "mlir/Dialect/LLVMIR/LLVMDialect.h"#include "mlir/Dialect/Linalg/IR/Linalg.h"#include "mlir/Dialect/MemRef/IR/MemRef.h"#include "mlir/Analysis/AliasAnalysis/LocalAliasAnalysis.h"#include "Interfaces/AutoDiffOpInterface.h"
Go to the source code of this file.
Classes | |
| class | ValueActivity |
| class | ForwardValueActivity |
| class | BackwardValueActivity |
| struct | MemoryActivityState |
| This needs to keep track of three things: More... | |
| class | MemoryActivity |
| class | ForwardMemoryActivity |
| class | BackwardMemoryActivity |
| class | SparseForwardActivityAnalysis |
| Sparse activity analysis reasons about activity by traversing forward down the def-use chains starting from active function arguments. More... | |
| class | SparseBackwardActivityAnalysis |
| class | DenseForwardActivityAnalysis |
| class | DenseBackwardActivityAnalysis |
Enumerations | |
| enum class | ActivityKind { Constant , ActiveVal , Unknown } |
| From LLVM Enzyme's activity analysis, there are four activity states. More... | |
Functions | |
| raw_ostream & | operator<< (raw_ostream &os, const ValueActivity &val) |
| raw_ostream & | operator<< (raw_ostream &os, const CallControlFlowAction &action) |
| std::optional< Value > | getStored (Operation *op) |
| std::optional< Value > | getCopySource (Operation *op) |
| void | forEachAliasedAlloc (const AliasClassLattice *ptrAliasClass, function_ref< void(DistinctAttr)> forEachFn) |
| The dense analyses operate using a pointer's "canonical allocation", the Value corresponding to its allocation. | |
| void | traverseCallGraph (FunctionOpInterface root, SymbolTableCollection *symbolTable, function_ref< void(FunctionOpInterface)> processFunc) |
| void | printActivityAnalysisResults (DataFlowSolver &solver, FunctionOpInterface callee, const SmallPtrSet< Operation *, 2 > &returnOps, SymbolTableCollection *symbolTable, bool verbose, bool annotate) |
|
strong |
From LLVM Enzyme's activity analysis, there are four activity states.
| Enumerator | |
|---|---|
| Constant | |
| ActiveVal | |
| Unknown | |
Definition at line 60 of file DataFlowActivityAnalysis.cpp.
| void forEachAliasedAlloc | ( | const AliasClassLattice * | ptrAliasClass, |
| function_ref< void(DistinctAttr)> | forEachFn ) |
The dense analyses operate using a pointer's "canonical allocation", the Value corresponding to its allocation.
The callback may receive null allocation when the class alias set is unknown. If the classes are undefined, the callback will not be called at all.
Definition at line 497 of file DataFlowActivityAnalysis.cpp.
Referenced by DenseBackwardActivityAnalysis::visitOperation(), and DenseForwardActivityAnalysis::visitOperation().
| std::optional< Value > getCopySource | ( | Operation * | op | ) |
Definition at line 485 of file DataFlowActivityAnalysis.cpp.
Referenced by DenseBackwardActivityAnalysis::visitOperation(), DenseForwardActivityAnalysis::visitOperation(), mlir::enzyme::DenseActivityAnnotationAnalysis::visitOperation(), mlir::enzyme::DenseBackwardActivityAnnotationAnalysis::visitOperation(), and mlir::enzyme::PointsToPointerAnalysis::visitOperation().
| std::optional< Value > getStored | ( | Operation * | op | ) |
Definition at line 475 of file DataFlowActivityAnalysis.cpp.
Referenced by DenseBackwardActivityAnalysis::visitOperation(), DenseForwardActivityAnalysis::visitOperation(), mlir::enzyme::DenseActivityAnnotationAnalysis::visitOperation(), mlir::enzyme::DenseBackwardActivityAnnotationAnalysis::visitOperation(), and mlir::enzyme::PointsToPointerAnalysis::visitOperation().
| raw_ostream & operator<< | ( | raw_ostream & | os, |
| const CallControlFlowAction & | action ) |
Definition at line 167 of file DataFlowActivityAnalysis.cpp.
| raw_ostream & operator<< | ( | raw_ostream & | os, |
| const ValueActivity & | val ) |
Definition at line 130 of file DataFlowActivityAnalysis.cpp.
References ValueActivity::print().
| void printActivityAnalysisResults | ( | DataFlowSolver & | solver, |
| FunctionOpInterface | callee, | ||
| const SmallPtrSet< Operation *, 2 > & | returnOps, | ||
| SymbolTableCollection * | symbolTable, | ||
| bool | verbose, | ||
| bool | annotate ) |
Definition at line 847 of file DataFlowActivityAnalysis.cpp.
References BackwardValueActivity::getValue(), and ValueActivity::isActiveVal().
Referenced by mlir::enzyme::runDataFlowActivityAnalysis().
| void traverseCallGraph | ( | FunctionOpInterface | root, |
| SymbolTableCollection * | symbolTable, | ||
| function_ref< void(FunctionOpInterface)> | processFunc ) |
Definition at line 825 of file DataFlowActivityAnalysis.cpp.