|
MLIR 23.0.0git
|
Per-dimension axis information for an SSA vector value of integer / index type. More...
Public Member Functions | |
| AxisInfo ()=default | |
| unsigned | getRank () const |
| bool | isInitialized () const |
| bool | operator== (const AxisInfo &rhs) const |
| void | print (raw_ostream &os) const |
Static Public Member Functions | |
| static AxisInfo | getPessimistic (unsigned rank) |
| static AxisInfo | join (const AxisInfo &lhs, const AxisInfo &rhs) |
| Conservative join (lattice meet). | |
Public Attributes | |
| SmallVector< int64_t > | contiguity |
| SmallVector< int64_t > | constancy |
| SmallVector< int64_t > | divisibility |
| std::optional< int64_t > | knownConstant |
| std::optional< int64_t > | innerStride |
Per-dimension axis information for an SSA vector value of integer / index type.
The fields describe, for each dimension d, the pattern of the values along d (examples use a 1-D vector, so d is the only / innermost dim):
Only contiguity[innerDim] is consumed when stamping, but all dimensions are tracked because vector.transpose / vector.shape_cast permute or move per-dim info between axes, so an intermediate value's outer dims can become the inner dim of a later value.
Pessimistic / entry value: contiguity=1, constancy=1, divisibility=1, innerStride absent.
Definition at line 87 of file XeGPUContiguityAnalysis.cpp.
|
default |
Referenced by getPessimistic(), join(), and operator==().
Definition at line 96 of file XeGPUContiguityAnalysis.cpp.
References AxisInfo(), constancy, contiguity, and divisibility.
Referenced by mlir::xegpu::detail::axis_dataflow::entryStateFor().
|
inline |
Definition at line 104 of file XeGPUContiguityAnalysis.cpp.
References contiguity.
Referenced by isInitialized().
|
inline |
Definition at line 105 of file XeGPUContiguityAnalysis.cpp.
References getRank().
|
inlinestatic |
Conservative join (lattice meet).
When a value can arrive from several paths (e.g. a block argument, or arith.select), only what holds on every path is safe to assume. So we keep the weaker fact per field: min of each run length (a run is only guaranteed as long as the shortest incoming one), gcd of divisibility, and a value/stride only when both sides agree. This is what makes the contiguity we later stamp sound rather than "undecidable" — it is the largest run guaranteed on all paths.
Definition at line 120 of file XeGPUContiguityAnalysis.cpp.
References AxisInfo(), constancy, contiguity, divisibility, innerStride, knownConstant, lhs, and rhs.
Definition at line 107 of file XeGPUContiguityAnalysis.cpp.
References AxisInfo(), constancy, contiguity, divisibility, innerStride, knownConstant, and rhs.
|
inline |
Definition at line 145 of file XeGPUContiguityAnalysis.cpp.
References constancy, contiguity, divisibility, innerStride, and knownConstant.
| SmallVector<int64_t> mlir::xegpu::detail::axis_dataflow::AxisInfo::constancy |
Definition at line 89 of file XeGPUContiguityAnalysis.cpp.
Referenced by getPessimistic(), join(), operator==(), print(), and mlir::xegpu::detail::axis_dataflow::splatAxisInfo().
| SmallVector<int64_t> mlir::xegpu::detail::axis_dataflow::AxisInfo::contiguity |
Definition at line 88 of file XeGPUContiguityAnalysis.cpp.
Referenced by getPessimistic(), getRank(), join(), operator==(), print(), and mlir::xegpu::detail::axis_dataflow::splatAxisInfo().
| SmallVector<int64_t> mlir::xegpu::detail::axis_dataflow::AxisInfo::divisibility |
Definition at line 90 of file XeGPUContiguityAnalysis.cpp.
Referenced by getPessimistic(), join(), operator==(), print(), and mlir::xegpu::detail::axis_dataflow::splatAxisInfo().
| std::optional<int64_t> mlir::xegpu::detail::axis_dataflow::AxisInfo::innerStride |
Definition at line 92 of file XeGPUContiguityAnalysis.cpp.
Referenced by join(), operator==(), print(), and mlir::xegpu::detail::axis_dataflow::splatAxisInfo().
| std::optional<int64_t> mlir::xegpu::detail::axis_dataflow::AxisInfo::knownConstant |
Definition at line 91 of file XeGPUContiguityAnalysis.cpp.
Referenced by join(), operator==(), print(), and mlir::xegpu::detail::axis_dataflow::splatAxisInfo().