This is an archive of the discontinued LLVM Phabricator instance.

[ARM] Masked loads and stores
ClosedPublic

Authored by dmgreen on Sep 4 2019, 9:39 AM.

Details

Summary

This adds masked loads and stores back in, as an updated version of D66534. This time with an option to control whether they are generated, which is false until we can at least get them more efficient.

Diff Detail

Repository
rL LLVM

Event Timeline

dmgreen created this revision.Sep 4 2019, 9:39 AM

Can you briefly point out what is different than D66534 and why?

SjoerdMeijer accepted this revision.Sep 12 2019, 8:52 AM

LGTM, with a nit inline

llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp
494 ↗(On Diff #218733)

You pointed out to me that this is new, and more correct than before. ;-)
This is what I tried to fix in the D67005, which I will abandon, because this looks good to me.

502 ↗(On Diff #218733)

Better is to replace 128 with TTI->getRegisterBitWidth(true)

This revision is now accepted and ready to land.Sep 12 2019, 8:52 AM
dmgreen marked an inline comment as done.Sep 15 2019, 6:24 AM

Thanks. Sorry, I was on a bit of a bug hunt, and this is the opposite of that ;) It's behind an option though, so should be fine.

llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp
494 ↗(On Diff #218733)

This will most likely need adjustment in the future, especially when we add narrowing/widening masked loads/stores. Hopefully OK for the time being.

This revision was automatically updated to reflect the committed changes.
llvm/trunk/test/CodeGen/Thumb2/mve-masked-ldst.ll