This is an archive of the discontinued LLVM Phabricator instance.

[ARM][MVE][Intrinsics] Add *_x() variants of my *_m() intrinsics.
ClosedPublic

Authored by MarkMurrayARM on Dec 12 2019, 8:28 AM.

Details

Summary

Better use of multiclass is used, and this helped find some existing bugs
in the predicated VMULL* intrinsics, which are now fixed.

The refactored VMULL[TB]Q_(INT|POLY)_M() intrinsics were discovered
to have an argument ("inactive") with incorrect type, and this required
a fix that is included in this whole patch. The argument "inactive"
should have been the same width (per vector element) as the return
type of the intrinsic, but was not in the case where the return type
was double the element width of the input types.

To assist in testing the multiclassing , and to thwart further gremlins,
the unit tests are improved in scope.

The *.ll tests are all generated by a small bit of throw-away scripting
from the corresponding *.c tests, and as such the diffs are large and
nasty. Look at the file rather than the diff.

Event Timeline

MarkMurrayARM created this revision.Dec 12 2019, 8:28 AM
Herald added projects: Restricted Project, Restricted Project. · View Herald TranscriptDec 12 2019, 8:28 AM

Reformat commit message.

Shorten title/subject line.

MarkMurrayARM retitled this revision from [ARM][MVE][Intrinsics] Add *_x_*() variants of all the *_m_*() intrinsics added by me to this point. Better use of multiclass is used, and this helped find some existing bugs in the predicated VMULL* intrinsics, which are now fixed. to [ARM][MVE][Intrinsics] Add *_x() variants of my *_m() intrinsics. .Dec 13 2019, 3:19 AM
MarkMurrayARM edited the summary of this revision. (Show Details)
simon_tatham accepted this revision.Dec 13 2019, 3:23 AM

LGTM. I must admit that I probably didn't manage to take in every single detail of the revised test collection, but the shape of it looks generally nice, and everything I spot-checked looked spot-on. And the diffs in actual source files are definitely an improvement :-)

This revision is now accepted and ready to land.Dec 13 2019, 3:23 AM
This revision was automatically updated to reflect the committed changes.