This is an archive of the discontinued LLVM Phabricator instance.

[ARM][MVE][Intrinsics] Add VMULL[BT]Q_(INT|POLY) intrinsics.
ClosedPublic

Authored by MarkMurrayARM on Dec 5 2019, 7:08 AM.

Details

Summary

Add VMULL[BT]Q_(INT|POLY) intrinsics and unit tests.

Diff Detail

Event Timeline

MarkMurrayARM created this revision.Dec 5 2019, 7:08 AM
Herald added projects: Restricted Project, Restricted Project. · View Herald TranscriptDec 5 2019, 7:08 AM

Correct name of intrinsics in commit message. D'oh!

MarkMurrayARM retitled this revision from [ARM][MVE][Intrinsics] Add VMULH/VRMULH intrinsics. to [ARM][MVE][Intrinsics] Add VMULL[BT]Q_(INT|POLY) intrinsics..Dec 5 2019, 8:33 AM
MarkMurrayARM edited the summary of this revision. (Show Details)
miyuki added inline comments.Dec 5 2019, 9:19 AM
llvm/lib/Target/ARM/ARMInstrMVE.td
286

As I understand from the code below, the comment should say that the vector size is the same, but the element size is doubled compared to Vec.

Address review comment.

MarkMurrayARM marked an inline comment as done.Dec 5 2019, 9:35 AM
simon_tatham added inline comments.Dec 9 2019, 6:36 AM
clang/include/clang/Basic/arm_mve_defs.td
285

This could just be VecOf<DoubleSize<Scalar>>, after you carefully defined DoubleSize above.

llvm/lib/Target/ARM/ARMInstrMVE.td
3611

As I remember, the reason I didn't call these bits U and size was because that's not what they mean in all situations – as the comment below mentions, for polynomial multiplies, the size is encoded in the bit you've now called U.

I know bit_28 and bits_21_20 are cumbersome and annoying names, but I think that's still better than being inaccurate :-)

MarkMurrayARM marked 2 inline comments as done.Dec 9 2019, 6:54 AM

Address review comments.

simon_tatham accepted this revision.Dec 9 2019, 9:39 AM
This revision is now accepted and ready to land.Dec 9 2019, 9:39 AM
This revision was automatically updated to reflect the committed changes.