[AArch64][SVE] Fix the indexed addressing mode when FI = 0.
authorSander de Smalen <sander.desmalen@arm.com>
Wed, 15 Mar 2023 09:21:48 +0000 (09:21 +0000)
committerSander de Smalen <sander.desmalen@arm.com>
Wed, 15 Mar 2023 13:39:43 +0000 (13:39 +0000)
commit93b89bee471f58d798cba42d21201e154778846a
treecf0f8152d29d483d7065dca6c933b79da391fb2b
parent82238fc7765b28409ee34829ffcac582fc277ffe
[AArch64][SVE] Fix the indexed addressing mode when FI = 0.

This is an alternative fix to D145497, which also addresses
  https://github.com/llvm/llvm-project/issues/60918

In D124457 which added the original code for this, @efriedma pointed
out that it wasn't safe to assume that FI #0 would be allocated at offset
0, but that part of the patch went in without any changes.

The downside of this solution is that any access to an object on the
stack that has been allocated at SP + 0, still gets moved to a separate
register first, which degrades performance.

Reviewed By: paulwalker-arm

Differential Revision: https://reviews.llvm.org/D146056
llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
llvm/test/CodeGen/AArch64/sve-fixed-ld2-alloca.ll
llvm/test/CodeGen/AArch64/sve-fixed-length-frame-offests.ll
llvm/test/CodeGen/AArch64/sve-fixed-length-permute-rev.ll
llvm/test/CodeGen/AArch64/sve-fixed-length-permute-zip-uzp-trn.ll
llvm/test/CodeGen/AArch64/sve-fixed-length-vector-shuffle.ll
llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-ld2-alloca.ll