This is an archive of the discontinued LLVM Phabricator instance.

[ARM][MVE][Intrinsics] Add VMINQ/VMAXQ/VMINNMQ/VMAXNMQ intrinsics.
ClosedPublic

Authored by MarkMurrayARM on Nov 28 2019, 8:42 AM.

Details

Summary

Add VMINQ/VMAXQ/VMINNMQ/VMAXNMQ intrinsics and their predicated versions. Add unit tests.

Event Timeline

MarkMurrayARM created this revision.Nov 28 2019, 8:42 AM
Herald added projects: Restricted Project, Restricted Project. · View Herald TranscriptNov 28 2019, 8:42 AM
dmgreen added inline comments.Nov 28 2019, 9:48 AM
llvm/test/CodeGen/Thumb2/mve-intrinsics/vmaxnmq.ll
8

You may want to use llvm.minnum directly (providing the semantics are indeed equivalent). Otherwise it will need fastmath to fuse these together, which isn't the same as the original intrinsic.

Fix non-predicated floats.

MarkMurrayARM marked an inline comment as done.Nov 29 2019, 7:58 AM
dmgreen accepted this revision.Nov 30 2019, 4:53 AM

Thanks. I'm happy if simon does not have any extra comments.

This revision is now accepted and ready to land.Nov 30 2019, 4:53 AM
simon_tatham accepted this revision.Dec 2 2019, 3:16 AM

I do, but only an indentation quibble.

clang/include/clang/Basic/arm_mve.td
205

It's a ludicrously minor nitpick, but if you could indent this NameOverride much further left, to indicate that it's a second base class alongside Intrinsic and not part of the template parameters of Intrinsic, that would be clearer. Same for the one below.

Address whitespace nit.

MarkMurrayARM marked an inline comment as done.Dec 2 2019, 3:20 AM

Nit terminated with extreme prejudice.

This revision was automatically updated to reflect the committed changes.