[InterleaveAccess] Recognise Interleave loads through binary operations
authorDavid Green <david.green@arm.com>
Thu, 29 Oct 2020 09:13:23 +0000 (09:13 +0000)
committerDavid Green <david.green@arm.com>
Thu, 29 Oct 2020 09:13:23 +0000 (09:13 +0000)
commita4b6b1e1c83fdfc5954e0fb631c2e6237236589e
tree45578b2d1bd5c4bac0af824c8589deec275e5658
parent1d773a4ff05d0dcfab112719b82b2bd5d0c93ff5
[InterleaveAccess] Recognise Interleave loads through binary operations

Instcombine will currently sink identical shuffles though vector binary
operations. This is probably generally useful, but can break up the code
pattern we use to represent an interleaving load group. This patch
reverses that in the InterleaveAccessPass to re-recognise the pattern of
shuffles sunk past binary operations and folds them back if an
interleave group can be created.

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