refineUniformBase and selectGatherScatterAddrMode both attempt the
transformation:
base(0) + index(A+splat(B)) => base(B) + index(A)
However, this is only safe when index is not implicitly scaled.
Paths
| Differential D123222
[DAGCombiner][SVE] Ensure MGATHER/MSCATTER addressing mode combines preserve index scaling ClosedPublic Authored by paulwalker-arm on Apr 6 2022, 8:12 AM.
Details Summary refineUniformBase and selectGatherScatterAddrMode both attempt the base(0) + index(A+splat(B)) => base(B) + index(A) However, this is only safe when index is not implicitly scaled.
Diff Detail
Event TimelineComment Actions This patch doesn't fix all the issues I've spotted with selectGatherScatterAddrMode but because D122994 greatly simplifies the same function, I've restricted my fixes to just those that would exist if that patch landed before this one. I also believe refineIndexType contains a bug although not necessarily one we can realistically hit so am leaving that for a follow-on patch. This revision is now accepted and ready to land.Apr 28 2022, 4:06 AM This revision was landed with ongoing or failed builds.Apr 29 2022, 4:43 AM Closed by commit rG7a0b897e8664: [DAGCombiner][SVE] Ensure MGATHER/MSCATTER addressing mode combines preserve… (authored by paulwalker-arm). · Explain Why This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 426020 llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/test/CodeGen/AArch64/sve-gather-scatter-addr-opts.ll
|