llvm-project/llvm/test/Transforms/LowerMatrixIntrinsics
Adam Nemet dfd1bbd00a [Matrix] Factor and distribute transposes across multiplies
Now that we can fold some transposes into multiplies (CM: A * B^t and RM:
A^t * B), we want to move them around to create the optimal expressions:

* fold away double transposes while still using them to assert the shape
* sink transposes hoping they cancel out
* lift transposes when both operands are transposed

This also modifies the matrix remarks to include the number of exposed
transposes (i.e. transposes that we couldn't fold into a multiply).

The adjustment to the test remarks-inlining is a bit subtle: I am changing the
double transpose to a single transpose so that we don't remove it completely.
More importantly this changes some of the total instruction count, most
notable stores because we can no longer use a vector store.

Differential Revision: https://reviews.llvm.org/D102733
2021-05-25 11:12:20 -07:00
..
bigger-expressions-double.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
const-gep.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
load-align-volatile.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
multiply-add-sub-double-row-major.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
multiply-double-contraction-fmf.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
multiply-double-contraction.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
multiply-double-row-major.ll [Matrix] Fold the transpose into the matmul operand used to fetch scalars 2021-05-17 17:40:46 -07:00
multiply-double.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
multiply-float-contraction-fmf.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
multiply-float-contraction.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
multiply-float.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
multiply-fused-loops.ll Reland "[Libcalls, Attrs] Annotate libcalls with noundef" 2021-02-20 06:18:48 +01:00
multiply-fused-multiple-blocks.ll Reland "[Libcalls, Attrs] Annotate libcalls with noundef" 2021-02-20 06:18:48 +01:00
multiply-fused-volatile.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
multiply-fused.ll Reland "[Libcalls, Attrs] Annotate libcalls with noundef" 2021-02-20 06:18:48 +01:00
multiply-i32-row-major.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
multiply-i32.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
multiply-left-transpose-row-major.ll [Matrix] Fold the transpose into the matmul operand used to fetch scalars 2021-05-17 17:40:46 -07:00
multiply-minimal.ll
multiply-right-transpose.ll [Matrix] Fold the transpose into the matmul operand used to fetch scalars 2021-05-17 17:40:46 -07:00
propagate-backward.ll [Matrix] Propagate shape information through fneg 2021-01-22 14:34:28 -08:00
propagate-backwards-unsupported.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
propagate-forward.ll [Matrix] Propagate shape information through fneg 2021-01-22 14:34:28 -08:00
propagate-mixed-users.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
propagate-multiple-iterations.ll
remarks-inlining.ll [Matrix] Factor and distribute transposes across multiplies 2021-05-25 11:12:20 -07:00
remarks-shared-subtrees.ll [Matrix] Factor and distribute transposes across multiplies 2021-05-25 11:12:20 -07:00
remarks.ll
store-align-volatile.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
strided-load-double.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
strided-load-float.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
strided-load-i32.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
strided-store-double.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
strided-store-float.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
strided-store-i32.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
transpose-double-row-major.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
transpose-double.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
transpose-float-row-major.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
transpose-float.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
transpose-i32-row-major.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
transpose-i32.ll Use unary CreateShuffleVector if possible 2020-12-30 22:36:08 +09:00
transpose-opts.ll [Matrix] Factor and distribute transposes across multiplies 2021-05-25 11:12:20 -07:00