This is an archive of the discontinued LLVM Phabricator instance.

[AArch64] Re-run load/store optimizer after aggressive tail duplication
ClosedPublic

Authored by labrinea on Nov 30 2018, 1:55 AM.

Details

Summary

The Load/Store Optimizer runs before Machine Block Placement. At O3 the Tail Duplication Threshold is set to 4 instructions and this can create new opportunities for the Load/Store Optimizer. It seems worthwhile to run it once again.

Diff Detail

Event Timeline

labrinea created this revision.Nov 30 2018, 1:55 AM
dmgreen added a subscriber: dmgreen.Dec 3 2018, 1:43 PM

Do you have any compile time numbers for this?

I've tested the patch with native builds of the llvm-test-suite on an AArch64 Cortex-A72 and couldn't spot anything interesting in terms of compilation time.

dmgreen accepted this revision.Dec 13 2018, 10:09 AM

This looks find to me then, especially at aggressive opt level. IIRC, there is a test for the pass pipeline I would expect needs updating.

Other than that, LGTM

test/CodeGen/AArch64/ldst-opt-after-block-placement.ll
31

%2 is never used here.

This revision is now accepted and ready to land.Dec 13 2018, 10:09 AM
labrinea marked 2 inline comments as done.Dec 17 2018, 2:47 AM

IIRC, there is a test for the pass pipeline I would expect needs updating.

Indeed that is test/CodeGen/AArch64/O3-pipeline.ll. Fixed now.

test/CodeGen/AArch64/ldst-opt-after-block-placement.ll
31

Good catch. Removed now.

labrinea closed this revision.Dec 17 2018, 2:57 AM
labrinea marked an inline comment as done.