This is an archive of the discontinued LLVM Phabricator instance.

[AArch64] Transfer memory operands when lowering vector load and store intrinsics
ClosedPublic

Authored by ssijaric on Nov 4 2016, 3:16 PM.

Details

Summary

Some vector loads and stores generated from AArch64 intrinsics alias each other unnecessarily, preventing better scheduling. We just need to transfer memory operands during lowering.

Diff Detail

Repository
rL LLVM

Event Timeline

ssijaric updated this revision to Diff 76948.Nov 4 2016, 3:16 PM
ssijaric retitled this revision from to [AArch64] Transfer memory operands when lowering vector load and store intrinsics.
ssijaric updated this object.
ssijaric added a subscriber: llvm-commits.
jmolloy requested changes to this revision.Nov 7 2016, 12:56 AM
jmolloy edited edge metadata.

Hi,

Thanks for this! One comment, and please upload patches with full context.

Cheers,

James

lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
1160 ↗(On Diff #76948)

This seems dodgy to me. Can we really be sure at this point that the memoperand is an intrinsic? It seems like we'd probably want the weaker "MemSDNode"?

This revision now requires changes to proceed.Nov 7 2016, 12:56 AM
jmolloy accepted this revision.Nov 7 2016, 1:02 AM
jmolloy edited edge metadata.

Scratch that. I've seen from the source that we only ever call SelectLoad when selecting an intrinsic.

This looks good to me.

This revision is now accepted and ready to land.Nov 7 2016, 1:02 AM
This revision was automatically updated to reflect the committed changes.

Thanks, James. This is now committed as r286168.