This is an archive of the discontinued LLVM Phabricator instance.

[ARM] Combine base-updating/post-incrementing vector load/stores.
ClosedPublic

Authored by ab on Dec 9 2014, 2:12 PM.

Details

Summary

We used to only combine intrinsics, and turn them into VLD1_UPD/VST1_UPD
when the base pointer is incremented after the load/store.

We can do the same thing for generic load/stores.

Note that we can only combine the first load/store+adds pair in
a sequence (as might be generated for a v16f32 load for instance),
because other combines turn the base pointer addition chain (each
computing the address of the next load, from the address of the last
load) into independent additions (common base pointer + this load's
offset).

Diff Detail

Repository
rL LLVM

Event Timeline

ab updated this revision to Diff 17097.Dec 9 2014, 2:12 PM
ab retitled this revision from to [ARM] Combine base-updating/post-incrementing vector load/stores..
ab updated this object.
ab edited the test plan for this revision. (Show Details)
ab added a subscriber: Unknown Object (MLST).
t.p.northover accepted this revision.Dec 9 2014, 3:33 PM
t.p.northover added a reviewer: t.p.northover.
t.p.northover added a subscriber: t.p.northover.

Hi Ahmed,

I think this one looks good (some nice tidy-ups in unrelated tests even!)

Cheers.

Tim.

This revision is now accepted and ready to land.Dec 9 2014, 3:33 PM
ab closed this revision.Dec 9 2014, 4:08 PM
ab updated this revision to Diff 17100.

Closed by commit rL223862 (authored by @ab).

ab added a comment.Dec 9 2014, 4:09 PM

Thanks for the quick review, Tim!

While running the entire lit-tests before committing (vs. just CodeGen), I found another optimization opportunity, in an LSR test.

Anyway, r223862.

-Ahmed