[ARM] Perform lane interleaving from reductions.
authorDavid Green <david.green@arm.com>
Tue, 7 Feb 2023 14:12:51 +0000 (14:12 +0000)
committerDavid Green <david.green@arm.com>
Tue, 7 Feb 2023 14:12:51 +0000 (14:12 +0000)
commitf634096f6b7b5d0a795d5eb148e9f633ad980a72
treeeb4afb63b0af604e7d7cc7d1a895edf5478c281f
parentaa661a129b9d5bb7af5349b8a447777c2321b5ff
[ARM] Perform lane interleaving from reductions.

We have a pass for MVE to perform lane interleaving to make use of top/bottom
instructions, that adds shuffles before extends and after truncates. This
extends it to also start from add reductions, where the order of lanes does not
matter so the shuffle is not needed. We need to be careful about not breaking
the form of existing reductions, but otherwise can save some instructions and
awkward extends.

Differential Revision: https://reviews.llvm.org/D143396
llvm/lib/Target/ARM/MVELaneInterleavingPass.cpp
llvm/test/CodeGen/Thumb2/mve-laneinterleaving-reduct.ll