[SVE][CodeGen] Improve codegen of scalable masked scatters
authorKerry McLaughlin <kerry.mclaughlin@arm.com>
Fri, 13 Nov 2020 10:51:17 +0000 (10:51 +0000)
committerKerry McLaughlin <kerry.mclaughlin@arm.com>
Fri, 13 Nov 2020 11:19:36 +0000 (11:19 +0000)
commit306c8ab20841aceef449dd27e1d0f46c6b85be44
tree81c14f196b9e19bfdee230347d1568070b8bb9eb
parent08016ac32b746b27be43d92255bf22a12012e244
[SVE][CodeGen] Improve codegen of scalable masked scatters

If the scatter store is able to perform the sign/zero extend of
its index, this is folded into the instruction with refineIndexType().
Additionally, refineUniformBase() will return the base pointer and index
from an add + splat_vector.

Reviewed By: sdesmalen

Differential Revision: https://reviews.llvm.org/D90942
llvm/include/llvm/CodeGen/TargetLowering.h
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/lib/Target/AArch64/AArch64ISelLowering.h
llvm/test/CodeGen/AArch64/sve-masked-scatter-32b-scaled.ll
llvm/test/CodeGen/AArch64/sve-masked-scatter-32b-unscaled.ll
llvm/test/CodeGen/AArch64/sve-masked-scatter-64b-unscaled.ll