This is an archive of the discontinued LLVM Phabricator instance.

[AArch64][SVE] Use TargetFrameIndex in more SVE load/store addressing modes
ClosedPublic

Authored by bsmith on Oct 27 2021, 6:02 AM.

Details

Summary

Add support for generating TargetFrameIndex in complex patterns for
indexed addressing modes in SVE. Additionally, add missing load/stores
to getMemOpInfo and getLoadStoreImmIdx.

Diff Detail

Event Timeline

bsmith created this revision.Oct 27 2021, 6:02 AM
bsmith requested review of this revision.Oct 27 2021, 6:02 AM
Herald added a project: Restricted Project. · View Herald TranscriptOct 27 2021, 6:02 AM
llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
2246

If these patterns are no longer needed, does the same thing apply to the two remaining uses of am_sve_fi?

https://github.com/llvm/llvm-project/blob/888af47095d5a7121c1d78566df59c292f30ceaf/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td#L2304-L2305
https://github.com/llvm/llvm-project/blob/888af47095d5a7121c1d78566df59c292f30ceaf/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td#L2314-L2315

... and if so could am_sve_fi be removed? I'm guessing here that these are no longer necessary because some other part of the lowering handles it after your change, and I see that STR_PXI and LDR_PXI are already handled around there.

bsmith added inline comments.Oct 28 2021, 3:19 AM
llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
2246

Not in their current state, no. The Other uses of arm_sve_fi are in places that don't have patterns for that the indexed complex patterns that have changed. I did consider changing those instruction patterns, but it's not clear to me why they have been written like that, and given it's not causing an issue I opted to leave them as is.

This revision is now accepted and ready to land.Oct 28 2021, 3:48 AM

Seeing a crash after this. Created a bug report here: https://github.com/llvm/llvm-project/issues/53781

llvm/test/CodeGen/AArch64/sve-fixed-length-fp-vselect.ll