diff options
author | Hugo Trachino <hugo.trachino@huawei.com> | 2024-06-21 13:34:37 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-21 13:34:37 +0100 |
commit | 9f0aa05bfb40c077a5b1c2ea8cac88fdd51f0c5c (patch) | |
tree | 8f03454721d4410b2d68da78711bf7721f5c66c8 /llvm/tools/llvm-objdump/llvm-objdump.cpp | |
parent | 138ea7d1fb82c2525da8dcc2f8ea73eae7b25f25 (diff) | |
download | llvm-9f0aa05bfb40c077a5b1c2ea8cac88fdd51f0c5c.zip llvm-9f0aa05bfb40c077a5b1c2ea8cac88fdd51f0c5c.tar.gz llvm-9f0aa05bfb40c077a5b1c2ea8cac88fdd51f0c5c.tar.bz2 |
[mlir][vector] Add ElementwiseToOuterproduct (#93664)
1D multi-reduction are lowered to arith which can prevent some
optimisations. I propose `ElementwiseToOuterproduct` matching a series of
ops to generate `vector.outerproduct`.
As part of some `ElementwiseToVectorOpsPatterns`, it could allow to fuse
other elementwiseOps to vector dialect.
Originally discussed
https://discourse.llvm.org/t/on-improving-arm-sme-lowering-resilience-in-mlir/78543/24.
quote @MacDue
```
%lhsBcast = vector.broadcast %lhsCast : vector<[4]xf32> to vector<[4]x[4]xf32>
%lhsT = vector.transpose %lhsBcast, [1, 0] : vector<[4]x[4]xf32> to vector<[4]x[4]xf32>
%rhsBcast = vector.broadcast %rhs : vector<[4]xf32> to vector<[4]x[4]xf32>
%mul = arith.mulf %lhsT, %rhsBcast : vector<[4]x[4]xf32>
```
Can be rewritten as:
```
%mul = vector.outerproduct $lhs, $rhs : vector<[4]xf32>, vector<[4]xf32>
```
---------
Co-authored-by: Han-Chung Wang <hanhan0912@gmail.com>
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
0 files changed, 0 insertions, 0 deletions