This is an archive of the discontinued LLVM Phabricator instance.

[AArch64][SME] Sink tile offset operands into the loop for load/store instructions.
ClosedPublic

Authored by sdesmalen on Jun 24 2022, 1:58 AM.

Details

Summary

This helps ISel decompose the generic offset for the tile into a base + offset.

Diff Detail

Event Timeline

sdesmalen created this revision.Jun 24 2022, 1:58 AM
Herald added a project: Restricted Project. · View Herald TranscriptJun 24 2022, 1:58 AM
sdesmalen requested review of this revision.Jun 24 2022, 1:58 AM
Herald added a project: Restricted Project. · View Herald TranscriptJun 24 2022, 1:58 AM
dmgreen added inline comments.
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
12660–12661

This may need to protect against vector types now.

sdesmalen updated this revision to Diff 439677.Jun 24 2022, 2:27 AM

Added isa<VectorType> check for fma.

llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
12660–12661

Good catch @dmgreen, thanks!

dmgreen accepted this revision.Jun 24 2022, 5:43 AM

Thanks. LGTM

You may find that in certain situations the add gets transformed into an or if the operands have no bits are common, but I presume that would not break anything just be a little suboptimal. There is a haveNoCommonBitsSet method if it would be useful to support. I can imagine cases where base would known to be a multiple of a power2.

This revision is now accepted and ready to land.Jun 24 2022, 5:43 AM
This revision was landed with ongoing or failed builds.Jun 28 2022, 2:29 AM
This revision was automatically updated to reflect the committed changes.