diff options
author | Nicolas Vasilache <nicolas.vasilache@gmail.com> | 2021-02-04 07:42:26 +0000 |
---|---|---|
committer | Nicolas Vasilache <nicolas.vasilache@gmail.com> | 2021-02-04 07:50:44 +0000 |
commit | f245b7ad36ff8bd85cddbe9784f7efe6dee577c0 (patch) | |
tree | 0558c26ca044e6f008dc855af007033d2a557436 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | 3b9de993c9dffd0941ad79c80a2cb7785bc63f03 (diff) | |
download | llvm-f245b7ad36ff8bd85cddbe9784f7efe6dee577c0.zip llvm-f245b7ad36ff8bd85cddbe9784f7efe6dee577c0.tar.gz llvm-f245b7ad36ff8bd85cddbe9784f7efe6dee577c0.tar.bz2 |
[mlir][Linalg] Generalize the definition of a Linalg contraction.
This revision defines a Linalg contraction in general terms:
1. Has 2 input and 1 output shapes.
2. Has at least one reduction dimension.
3. Has only projected permutation indexing maps.
4. its body computes `u5(u1(c) + u2(u3(a) * u4(b)))` on some field
(AddOpType, MulOpType), where u1, u2, u3, u4 and u5 represent scalar unary
operations that may change the type (e.g. for mixed-precision).
As a consequence, when vectorization of such an op occurs, the only special
behavior is that the (unique) MulOpType is vectorized into a
`vector.contract`. All other ops are handled in a generic fashion.
In the future, we may wish to allow more input arguments and elementwise and
constant operations that do not involve the reduction dimension(s).
A test is added to demonstrate the proper vectorization of matmul_i8_i8_i32.
Differential revision: https://reviews.llvm.org/D95939
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions