[PATCH] D146218: [AArch64][CodeGen] Lower (de)interleave2 intrinsics to ld2/st2

Graham Hunter via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 16 04:53:17 PDT 2023


huntergr created this revision.
huntergr added reviewers: paulwalker-arm, CarolineConcatto.
Herald added subscribers: hiraditya, kristof.beyls.
Herald added a project: All.
huntergr requested review of this revision.
Herald added subscribers: llvm-commits, alextsao1999.
Herald added a project: LLVM.

The InterleavedAccess pass currently matches (de)interleaving
shufflevector instructions with loads or stores, and calls into
target lowering to generate ldN or stN instructions.

Since we can't use shufflevector for scalable vectors (besides a
splat with zeroinitializer), we have interleave2 and deinterleave2
intrinsics. This patch extends InterleavedAccess to recognize those
intrinsics and if possible replace them with ld2/st2 via target lowering.

Unlike the fixed-length version, we currently cannot 'legalize' the
operation in IR because we don't have a way of concatenating or
splitting vectors at a scalable point, so for now we just bail
out if the types won't match the actual hardware instructions.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D146218

Files:
  llvm/include/llvm/CodeGen/TargetLowering.h
  llvm/lib/CodeGen/InterleavedAccessPass.cpp
  llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
  llvm/lib/Target/AArch64/AArch64ISelLowering.h
  llvm/test/Transforms/InterleavedAccess/AArch64/sve-deinterleave-intrinsics.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D146218.505768.patch
Type: text/x-patch
Size: 23722 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230316/7044bab8/attachment-0001.bin>


More information about the llvm-commits mailing list