[PATCH] D106929: [AArch64][SVE][InstCombine] Unpack of a splat vector

Usman Nadeem via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 27 18:19:11 PDT 2021


mnadeem created this revision.
Herald added subscribers: psnobl, hiraditya, kristof.beyls, tschuett.
Herald added a reviewer: efriedma.
mnadeem requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

Replace vector unpack operation with a scalar extend operation.

  unpack(splat(X)) --> splat(extend(X))

If we have both, unpkhi and unpklo, for the same vector then we may
save a register in some cases, e.g:

  Hi = unpkhi (splat(X))
  Lo = unpklo(splat(X)) 
   --> Hi = Lo = splat(extend(X))

If `X` is a load then we will generate a replicating extending load (e.g. ld1rsw)
instead of a load and unpack.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D106929

Files:
  llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
  llvm/test/Transforms/InstCombine/AArch64/sve-intrinsic-opts-unpkhi-unpklo.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D106929.362251.patch
Type: text/x-patch
Size: 8284 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210728/a1b3f523/attachment-0001.bin>


More information about the llvm-commits mailing list