This is an archive of the discontinued LLVM Phabricator instance.

[ARM] Add alignment checks for MVE VLDn
ClosedPublic

Authored by dmgreen on Jan 24 2021, 1:35 PM.

Details

Summary

The MVE VLD2/4 and VST2/4 instructions require the pointer to be aligned to at least the size of the element type. This adds a check for that into the ARM lowerInterleavedStore and lowerInterleavedLoad functions, not creating the intrinsics if they are not valid for the alignment of the load/store.

Unfortunately this is one of those bug fixes that does effect some useful codegen, as we were able to sometimes do some nice lowering of q15 types. But they can cause problem with low-enough aligned pointers.

Diff Detail

Event Timeline

dmgreen created this revision.Jan 24 2021, 1:35 PM
dmgreen requested review of this revision.Jan 24 2021, 1:35 PM
Herald added a project: Restricted Project. · View Herald TranscriptJan 24 2021, 1:35 PM
simon_tatham accepted this revision.Jan 28 2021, 2:20 AM
This revision is now accepted and ready to land.Jan 28 2021, 2:20 AM

Thanks Simon

This revision was automatically updated to reflect the committed changes.