[PATCH] D69509: [ARM] Attempt to use whole register vmovs for MVE shuffles.

Dave Green via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 28 06:01:52 PDT 2019


dmgreen created this revision.
dmgreen added reviewers: t.p.northover, samparker, SjoerdMeijer, ostannard, simon_tatham.
Herald added subscribers: hiraditya, kristof.beyls.
Herald added a project: LLVM.

MVE doesn't have the range of shuffle instructions available in Neon. We also cannot use the trick of cutting a difficult vector shuffle in half to simplify things. Instead we need to be more careful about how we lower shuffles.

This patch adds an extra combine that attempts to find "whole lane" vmovs when lowering shuffles of smaller types. This helps us make some shuffles a lot simpler, generating single lane movs for the parts that can make use of it, falling back to the original shuffle for the rest.


https://reviews.llvm.org/D69509

Files:
  llvm/lib/Target/ARM/ARMISelLowering.cpp
  llvm/test/CodeGen/Thumb2/mve-pred-shuffle.ll
  llvm/test/CodeGen/Thumb2/mve-shuffle.ll
  llvm/test/CodeGen/Thumb2/mve-shufflemov.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D69509.226649.patch
Type: text/x-patch
Size: 24791 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191028/b1c9ea83/attachment.bin>


More information about the llvm-commits mailing list