This is an archive of the discontinued LLVM Phabricator instance.

[AArch64][SVE] SVE2 intrinsics for complex integer arithmetic
ClosedPublic

Authored by kmclaughlin on Jan 29 2020, 8:47 AM.

Details

Summary

Adds the following SVE2 intrinsics:

  • cadd & sqcadd
  • cmla & sqrdcmlah
  • saddlbt, ssublbt & ssubltb

Diff Detail

Event Timeline

kmclaughlin created this revision.Jan 29 2020, 8:47 AM
Herald added a project: Restricted Project. · View Herald Transcript
sdesmalen added inline comments.Jan 30 2020, 7:08 AM
llvm/include/llvm/IR/IntrinsicsAArch64.td
1116

missing ImmArg

1124

missing ImmArg

  • Changed complexrotateop & complexrotateopodd to use TImmLeaf
  • Removed SVE2_CADD_Intrinsic & SVE2_CMLA_Intrinsic classes
kmclaughlin marked 2 inline comments as done.Jan 31 2020, 4:02 AM

Thanks for reviewing this @sdesmalen!

llvm/include/llvm/IR/IntrinsicsAArch64.td
1116

This has been replaced with AdvSIMD_2VectorArgIndexed_Intrinsic, which it is the same as this but includes ImmArg<2>

1124

As above, but using AdvSIMD_3VectorArgIndexed_Intrinsic instead

sdesmalen added inline comments.Feb 5 2020, 5:40 AM
llvm/include/llvm/IR/IntrinsicsAArch64.td
1787

While the shape of AdvSIMD_3VectorArgIndexed_Intrinsic may be the same, the immediate of int_aarch64_sve_cmla_x is not an index. Instead, it is an immediate that expresses the complex rotation. I would just create a separate Intrinsic class for that.
Same for cadd, sqcadd and sqrdcmlah

kmclaughlin edited the summary of this revision. (Show Details)

Changed misleading intrinsic class names used with cadd, sqcadd, cmla & sqrdcmlah

sdesmalen accepted this revision.Feb 10 2020, 3:14 AM

Thanks @kmclaughlin , LGTM.

llvm/include/llvm/IR/IntrinsicsAArch64.td
1115

nit: The naming is inconsistent not using the AdvSIMD_ prefix here, although we haven't been very consistent with that in this file to begin with.

This revision is now accepted and ready to land.Feb 10 2020, 3:14 AM
This revision was automatically updated to reflect the committed changes.