[all-commits] [llvm/llvm-project] 64094e: [DAGCombiner] Pre-commit tests for D159191

david-arm via All-commits all-commits at lists.llvm.org
Tue Sep 5 03:46:33 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 64094e3e6df223cde2861b89c31bb529bb36f8f7
      https://github.com/llvm/llvm-project/commit/64094e3e6df223cde2861b89c31bb529bb36f8f7
  Author: David Sherwood <david.sherwood at arm.com>
  Date:   2023-09-05 (Tue, 05 Sep 2023)

  Changed paths:
    M llvm/test/CodeGen/AArch64/sve-intrinsics-ldst-ext.ll
    M llvm/test/CodeGen/AArch64/sve-masked-ldst-sext.ll
    M llvm/test/CodeGen/AArch64/sve-masked-ldst-zext.ll
    M llvm/test/CodeGen/AArch64/sve-sext-zext.ll

  Log Message:
  -----------
  [DAGCombiner] Pre-commit tests for D159191

I've added some missing tests for the following cases:

1. Zero- and sign-extends from unpacked vector types to wide,
   illegal types. For example,
   %aext = zext <vscale x 4 x i8> %a to <vscale x 4 x i64>
2. Normal loads combined with 1
3. Masked loads combined with 1

Differential Revision: https://reviews.llvm.org/D159192


  Commit: 50598f0ff44f3a4e75706f8c53f3380fe7faa896
      https://github.com/llvm/llvm-project/commit/50598f0ff44f3a4e75706f8c53f3380fe7faa896
  Author: David Sherwood <david.sherwood at arm.com>
  Date:   2023-09-05 (Tue, 05 Sep 2023)

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

  Log Message:
  -----------
  [DAGCombiner][SVE] Add support for illegal extending masked loads

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

https://reviews.llvm.org/D159191


Compare: https://github.com/llvm/llvm-project/compare/fde2b0d6dba7...50598f0ff44f


More information about the All-commits mailing list