MLIR
20.0.0git
|
A straight-forward alias analysis which ensures that all dependencies of all values will be determined. More...
#include "mlir/Dialect/Bufferization/Transforms/BufferViewFlowAnalysis.h"
Public Types | |
using | ValueSetT = SmallPtrSet< Value, 16 > |
using | ValueMapT = llvm::DenseMap< Value, ValueSetT > |
Public Member Functions | |
BufferViewFlowAnalysis (Operation *op) | |
Constructs a new alias analysis using the op provided. More... | |
ValueMapT::const_iterator | find (Value value) const |
Find all immediate dependencies this value could potentially have. More... | |
ValueMapT::const_iterator | begin () const |
Returns the begin iterator to iterate over all dependencies. More... | |
ValueMapT::const_iterator | end () const |
Returns the end iterator that can be used in combination with find. More... | |
ValueSetT | resolve (Value value) const |
Find all immediate and indirect views upon this value. More... | |
ValueSetT | resolveReverse (Value value) const |
void | remove (const SetVector< Value > &aliasValues) |
Removes the given values from all alias sets. More... | |
void | rename (Value from, Value to) |
Replaces all occurrences of 'from' in the internal datastructures with 'to'. More... | |
bool | mayBeTerminalBuffer (Value value) const |
Returns "true" if the given value may be a terminal. More... | |
A straight-forward alias analysis which ensures that all dependencies of all values will be determined.
This is a requirement for the BufferPlacement class since you need to determine safe positions to place alloc and deallocs. This alias analysis only finds aliases that might have been created on top of the specified view. To find all aliases, resolve the intial alloc/argument value.
Definition at line 23 of file BufferViewFlowAnalysis.h.
Definition at line 26 of file BufferViewFlowAnalysis.h.
using mlir::BufferViewFlowAnalysis::ValueSetT = SmallPtrSet<Value, 16> |
Definition at line 25 of file BufferViewFlowAnalysis.h.
BufferViewFlowAnalysis::BufferViewFlowAnalysis | ( | Operation * | op | ) |
Constructs a new alias analysis using the op provided.
Definition at line 27 of file BufferViewFlowAnalysis.cpp.
|
inline |
Returns the begin iterator to iterate over all dependencies.
Definition at line 37 of file BufferViewFlowAnalysis.h.
|
inline |
Returns the end iterator that can be used in combination with find.
Definition at line 40 of file BufferViewFlowAnalysis.h.
|
inline |
Find all immediate dependencies this value could potentially have.
Definition at line 32 of file BufferViewFlowAnalysis.h.
bool BufferViewFlowAnalysis::mayBeTerminalBuffer | ( | Value | value | ) | const |
Returns "true" if the given value may be a terminal.
Definition at line 203 of file BufferViewFlowAnalysis.cpp.
References mlir::Value::getType().
Referenced by mlir::BufferOriginAnalysis::isSameAllocation().
Removes the given values from all alias sets.
Definition at line 61 of file BufferViewFlowAnalysis.cpp.
Replaces all occurrences of 'from' in the internal datastructures with 'to'.
This is useful when the defining operation of a value has to be re-built because additional results have to be added or the types of results have to be changed.
Definition at line 66 of file BufferViewFlowAnalysis.cpp.
BufferViewFlowAnalysis::ValueSetT BufferViewFlowAnalysis::resolve | ( | Value | rootValue | ) | const |
Find all immediate and indirect views upon this value.
Find all immediate and indirect dependent buffers this value could potentially have.
This will find all dependencies on this value that can potentially be later in the execution of the program, but will not return values that this alias might have been created from (such as if the value is created by a subview, this will not return the parent view if there is no cyclic behavior). Note that the resulting set will also contain the value provided as it is an alias of itself.
A = * B = subview(A) C = B
Results in resolve(B) returning {B, C}
Note that the resulting set will also contain the value provided as it is a dependent alias of itself.
Definition at line 51 of file BufferViewFlowAnalysis.cpp.
References resolveValues().
Referenced by hasAllocationScope().
BufferViewFlowAnalysis::ValueSetT BufferViewFlowAnalysis::resolveReverse | ( | Value | value | ) | const |
Definition at line 56 of file BufferViewFlowAnalysis.cpp.
References resolveValues().
Referenced by mlir::BufferOriginAnalysis::isSameAllocation().