diff options
author | Andrzej Warzyński <andrzej.warzynski@arm.com> | 2025-07-17 19:02:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-07-17 19:02:08 +0100 |
commit | 3b11aaaf94fe6c7b4ccfd031f952265f706c1b68 (patch) | |
tree | 501b65657efb5b2fbe7b27eac6180b02f226dd26 /llvm/lib/CodeGen/MachineModuleInfoImpls.cpp | |
parent | e73d1a5341fafb1eadb77b787eb6e65630b4db3a (diff) | |
download | llvm-3b11aaaf94fe6c7b4ccfd031f952265f706c1b68.zip llvm-3b11aaaf94fe6c7b4ccfd031f952265f706c1b68.tar.gz llvm-3b11aaaf94fe6c7b4ccfd031f952265f706c1b68.tar.bz2 |
[mlir][linalg] Add support for scalable vectorization of linalg.mmt4d (#146531)
This patch adds support for scalable vectorization of linalg.mmt4d. The
key design change is the introduction of a new vectorizer state variable:
* `assumeDynamicDimsMatchVecSizes`
...along with the corresponding Transform dialect attribute:
* `assume_dynamic_dims_match_vec_sizes`.
This flag instructs the vectorizer to assume that dynamic memref/tensor
dimensions match the corresponding vector sizes (fixed or scalable). With this
assumption, masking becomes unnecessary, which simplifies the lowering pipeline
significantly.
While this assumption is not universally valid, it typically holds for
`linalg.mmt4d`. Inputs and outputs are explicitly packed using `linalg.pack`,
and this packing includes padding, ensuring that dimension sizes align with
vector sizes (*).
* Related discussion: https://github.com/llvm/llvm-project/issues/143920
An upcoming patch will include an end-to-end test that leverages scalable
vectorization of linalg.mmt4d to demonstrate the newly enabled functionality.
This would not be feasible without the changes introduced here, as it would
otherwise require additional logic to handle complex - but ultimately redundant
- masks.
(*) This holds provided that the tile sizes used for packing match the vector
sizes used during vectorization. It is the user’s responsibility to enforce
this.
Diffstat (limited to 'llvm/lib/CodeGen/MachineModuleInfoImpls.cpp')
0 files changed, 0 insertions, 0 deletions