[PATCH] D159191: [DAGCombiner][SVE] Add support for illegal extending masked loads

David Sherwood via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 30 06:02:35 PDT 2023


david-arm created this revision.
david-arm added reviewers: sdesmalen, paulwalker-arm, kmclaughlin, dtemirbulatov.
Herald added subscribers: ctetreau, psnobl, hiraditya, kristof.beyls.
Herald added a reviewer: efriedma.
Herald added a project: All.
david-arm requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

In some cases where the same mask is used for multiple
extending masked loads it can be more efficient to combine
the zero- or sign-extend into the load even if it's not a
legal or custom operation. This leads to splitting up the
extending load into smaller parts, which also requires
splitting the mask. For SVE at least this improves the
performance of the SPEC benchmark x264 slightly on
neoverse-v1 (~0.3%), and at least one other benchmark
improves by around 30%. The uplift for SVE seems due to
removing the dependencies (vector unpacks) introduced
between the loads and the vector operations, since this
should increase the level of parallelism.

See tests:

  CodeGen/AArch64/sve-masked-ldst-sext.ll
  CodeGen/AArch64/sve-masked-ldst-zext.ll


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D159191

Files:
  llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
  llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
  llvm/test/CodeGen/AArch64/sve-masked-ldst-sext.ll
  llvm/test/CodeGen/AArch64/sve-masked-ldst-zext.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D159191.554680.patch
Type: text/x-patch
Size: 15008 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230830/b571ca37/attachment.bin>


More information about the llvm-commits mailing list