This is an archive of the discontinued LLVM Phabricator instance.

[AArch64] FEAT_LRCPC3 load/store optimisations
Changes PlannedPublic

Authored by tmatheson on Jan 10 2023, 2:01 PM.

Details

Summary

Extend the load/store optimizer to identify cases where the offset variants of
+rcpc3 instructions can be used.

The non-indexed LDIAPP/STILP are output by instruction selection and are
optimised to their +/- 8/16 byte variants by the load/store optimiser.

Diff Detail

Event Timeline

tmatheson created this revision.Jan 10 2023, 2:01 PM
Herald added a project: Restricted Project. · View Herald TranscriptJan 10 2023, 2:01 PM
tmatheson requested review of this revision.Jan 10 2023, 2:01 PM
Herald added a project: Restricted Project. · View Herald TranscriptJan 10 2023, 2:01 PM

Review Notes:

  • Post/pre-indexing looks good.
  • There's no merging.
  • We talked about codegen for the neon instructions in RCPC3. Maybe that should be a different patch when you do implement it?
llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
2535–2537

Can you rewrite this with llvm::any?

2540–2542

I think this fixme is unnecessary, or is development-only.

2552–2556

Please split this into three different ifs with comments to make these conditions readable/explanable.

llvm/test/CodeGen/AArch64/aarch64-rcpc3-ldst.ll
10–15

Can you check this TODO?

24–46

The codegen is not different here and is not showing merging. LDIAPP has constraints on when you can merge, which depend on the order of the two accesses, which will need testing.

380–389

TODO?

395–396

TODO?

tmatheson planned changes to this revision.Feb 14 2023, 8:40 AM
tmatheson marked 2 inline comments as done.
tmatheson added inline comments.
llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
2552–2556

There's not really much I can do with it.

lenary resigned from this revision.Apr 13 2023, 10:00 AM