[InterleaveAccessPass] Handle multi-use binop shuffles
authorDavid Green <david.green@arm.com>
Sun, 10 Jul 2022 16:24:37 +0000 (17:24 +0100)
committerDavid Green <david.green@arm.com>
Sun, 10 Jul 2022 16:24:37 +0000 (17:24 +0100)
commit28b41237e6b296bf777d2f0c13c48031525fcdc4
treeada35f5b9d8261399e44fa70d4a6b164eaa6b49a
parent606e280811f2e17dd3561968139873857dc0a6f8
[InterleaveAccessPass] Handle multi-use binop shuffles

D89489 added some logic to the interleaved access pass to attempt to
undo the folding of shuffles into binops, that instcombine performs. If
early-cse is run too, the binops may be commoned into a single operation
with multiple shuffle uses. It is still profitable reverse the transform
though, so long as all the uses are shuffles.

Differential Revision: https://reviews.llvm.org/D129419
llvm/lib/CodeGen/InterleavedAccessPass.cpp
llvm/test/CodeGen/AArch64/vldn_shuffle.ll
llvm/test/CodeGen/Thumb2/mve-vldshuffle.ll