[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