This is an archive of the discontinued LLVM Phabricator instance.

[ARM][MVE] Enable truncating masked stores
ClosedPublic

Authored by samparker on Oct 4 2019, 6:08 AM.

Details

Summary

Allow us to generate truncating masked store which take v4i32 and v8i16 vectors and can store to v4i8, v4i16 and v8i8 and memory. The existing PatFrags are now explicit whether they're aligned or not.

Diff Detail

Event Timeline

samparker created this revision.Oct 4 2019, 6:08 AM

I've missed out test changes that also change in D68337.

samparker updated this revision to Diff 223455.Oct 7 2019, 1:06 AM

Rebased and added a '1' shift value for strh.

Nice one.

lib/Target/ARM/ARMInstrMVE.td
5218 ↗(On Diff #223455)

Maybe put them here, with the other trunc stores?

lib/Target/ARM/ARMTargetTransformInfo.cpp
498 ↗(On Diff #223455)

This is the same as in the load patch?

samparker marked an inline comment as done.Oct 7 2019, 7:19 AM
samparker added inline comments.
lib/Target/ARM/ARMTargetTransformInfo.cpp
498 ↗(On Diff #223455)

Yes, sorry. I've got two separate downstream branches and forgot to keep this part off this patch.

samparker updated this revision to Diff 225390.Oct 17 2019, 3:32 AM
  • Rebased.
  • Removed support for unaligned accesses.
  • Added a couple of fp tests.
dmgreen accepted this revision.Oct 17 2019, 4:01 AM

LGTM

This revision is now accepted and ready to land.Oct 17 2019, 4:01 AM
This revision was automatically updated to reflect the committed changes.
Herald added a project: Restricted Project. · View Herald TranscriptOct 17 2019, 5:16 AM
Herald added a subscriber: hiraditya. · View Herald Transcript