[Clang][AArch64][SME] Add outer product intrinsics
authorBryan Chan <bryan.chan@huawei.com>
Thu, 20 Jul 2023 10:04:14 +0000 (06:04 -0400)
committerBryan Chan <bryan.chan@huawei.com>
Thu, 20 Jul 2023 10:06:36 +0000 (06:06 -0400)
commitaebde82b29a80b2849e2b5b1b0030f598edee9a4
tree7ebf1ca7d1fc64c1851aa7534f87248680397876
parent4ae900c063634e19346b88913e28204a3fc47825
[Clang][AArch64][SME] Add outer product intrinsics

This patch adds support for the following SME ACLE intrinsics (as defined
in https://arm-software.github.io/acle/main/acle.html):

  - svmopa_za32[_bf16]_m  // also for s8, u8, f16, f32
  - svmops_za32[_bf16]_m  // also for s8, u8, f16, f32
  - svsumopa_za32[_s8]_m
  - svsumops_za32[_s8]_m
  - svusmopa_za32[_u8]_m
  - svusmops_za32[_u8]_m

When the sme-f64f64 feature is enabled, the following intrinsics are supported:

  - svmopa_za64_f64_m
  - svmops_za64_f64_m

When the sme-i16i64 feature is enabled, the following intrinsics are supported:

  - svmopa_za64[_s16]_m   // also for u16
  - svmops_za64[_s16]_m   // also for u16
  - svsumopa_za64[_s16]_m
  - svsumops_za64[_s16]_m
  - svusmopa_za64[_u16]_m
  - svusmops_za64[_u16]_m

Co-authored-by: Sagar Kulkarni <sagar.kulkarni1@huawei.com>
Reviewed By: sdesmalen

Differential Revision: https://reviews.llvm.org/D134681
clang/include/clang/Basic/arm_sme.td
clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mopa-za32.c [new file with mode: 0644]
clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mopa-za64.c [new file with mode: 0644]
clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mops-za32.c [new file with mode: 0644]
clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mops-za64.c [new file with mode: 0644]
clang/test/Sema/aarch64-sme-intrinsics/acle_sme_imm.cpp