Reland "[AArch64][SVE][InstCombine] Combine contiguous gather/scatter to load/store"
authorPeter Waller <peter.waller@arm.com>
Wed, 3 Nov 2021 13:40:22 +0000 (13:40 +0000)
committerPeter Waller <peter.waller@arm.com>
Wed, 3 Nov 2021 13:42:14 +0000 (13:42 +0000)
commit7a34145f407e4ec652111f5e9483a36f816a6a3a
treee950e54d6bf5ed436659311ce3430908ff07521d
parent753eba64213ef20195644994df53d564f30eb65f
Reland "[AArch64][SVE][InstCombine] Combine contiguous gather/scatter to load/store"

This reverts commit 753eba64213ef20195644994df53d564f30eb65f.

Contiguous gather => masked load:

  (sve.ld1.gather.index Mask BasePtr (sve.index IndexBase 1))
  => (masked.load (gep BasePtr IndexBase) Align Mask undef)

Contiguous scatter => masked store:

  (sve.ld1.scatter.index Value Mask BasePtr (sve.index IndexBase 1))
  => (masked.store Value (gep BasePtr IndexBase) Align Mask)

Tests with <vscale x 2 x double>:

[Gather, Scatter] for each [Positive test (index=1), Negative test
(index=2), Alignment propagation].

Differential Revision: https://reviews.llvm.org/D112076
llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
llvm/test/Transforms/InstCombine/AArch64/sve-intrinsic-gatherscatter.ll [new file with mode: 0644]