[PATCH] D95551: [ARM] One-off identity shuffle

Dave Green via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 27 11:16:19 PST 2021


dmgreen created this revision.
dmgreen added reviewers: NickGuy, SjoerdMeijer, simon_tatham, efriedma, ostannard.
Herald added subscribers: danielkiss, hiraditya, kristof.beyls.
dmgreen requested review of this revision.
Herald added a project: LLVM.

A One-Off Identity mask is a shuffle that is mostly an identity mask from as single source but contains a single element out-of-place, either from a different vector or from another position in the same vector. As opposed to lowering this via a ARMISD::BUILD_VECTOR we can generate an extract/insert pair directly. Under ARM with individually accessible lane elements this often becomes a simple lane move.

This also alters the LowerVECTOR_SHUFFLEUsingMovs code to use v4f32 (not v4i32), a more natural type for lane moves.


https://reviews.llvm.org/D95551

Files:
  llvm/lib/Target/ARM/ARMISelLowering.cpp
  llvm/test/CodeGen/Thumb2/mve-shuffle.ll
  llvm/test/CodeGen/Thumb2/mve-vld3.ll
  llvm/test/CodeGen/Thumb2/mve-vst3.ll
  llvm/test/CodeGen/Thumb2/mve-vst4.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D95551.319627.patch
Type: text/x-patch
Size: 134763 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210127/1490b8d4/attachment-0001.bin>


More information about the llvm-commits mailing list