This is an archive of the discontinued LLVM Phabricator instance.

[AArch64][SVE2p1] Make use of REVD instruction.
ClosedPublic

Authored by sdesmalen on Dec 1 2022, 8:20 AM.

Details

Summary

Reversing double-words within a quard-word is possible using the REVD instruction
when SVE2p1 is enabled.

Diff Detail

Event Timeline

sdesmalen created this revision.Dec 1 2022, 8:20 AM
sdesmalen requested review of this revision.Dec 1 2022, 8:20 AM
Herald added a project: Restricted Project. · View Herald TranscriptDec 1 2022, 8:20 AM
paulwalker-arm added inline comments.Dec 5 2022, 10:25 AM
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
10650–10652

Please update the string to include the new block size.

10654–10655

Perhaps this block can be removed? There's the BlockSize <= EltSz check just below which seems to handle this?

sdesmalen updated this revision to Diff 480427.Dec 6 2022, 4:18 AM
sdesmalen marked 2 inline comments as done.
  • Updated asssert string to include 128 block size.
  • Removed redundant condition.
paulwalker-arm accepted this revision.Dec 6 2022, 4:42 AM
paulwalker-arm added inline comments.
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
23256–23257

Perhaps worth putting VT.getScalarSizeInBits() == 64 before the called to isREVMask so we bail out earlier.

This revision is now accepted and ready to land.Dec 6 2022, 4:42 AM
This revision was landed with ongoing or failed builds.Dec 6 2022, 7:43 AM
This revision was automatically updated to reflect the committed changes.
sdesmalen marked an inline comment as done.Dec 6 2022, 7:43 AM
sdesmalen added inline comments.
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
23256–23257

good point, I've done that before committing!