[clang] [llvm] [Clang][LLVM] Implement single-multi vectors MOP4{A/S} (PR #128854)

Jonathan Thackray via cfe-commits cfe-commits at lists.llvm.org
Thu Feb 27 14:03:49 PST 2025


================
@@ -3064,6 +3064,76 @@ let TargetPrefix = "aarch64" in {
   def int_aarch64_sme_usmopa_wide : SME_OuterProduct_Intrinsic;
   def int_aarch64_sme_usmops_wide : SME_OuterProduct_Intrinsic;
 
+  class SME_OuterProduct_QuaterTile_Single
+      : DefaultAttrsIntrinsic<[],
+          [llvm_i32_ty,
+          llvm_anyvector_ty,
+          LLVMMatchType<0>], [ImmArg<ArgIndex<0>>]>;
+
+  def int_aarch64_sme_mop4a_wide_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_mop4s_wide_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_mop4a_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_mop4s_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_smop4a_wide_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_smop4s_wide_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_smop4a_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_smop4s_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_umop4a_wide_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_umop4s_wide_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_umop4a_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_umop4s_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_sumop4a_wide_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_sumop4s_wide_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_sumop4a_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_sumop4s_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_usmop4a_wide_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_usmop4s_wide_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_usmop4a_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_usmop4s_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_smop4a_za64_wide_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_smop4s_za64_wide_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_umop4a_za64_wide_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_umop4s_za64_wide_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_sumop4a_za64_wide_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_sumop4s_za64_wide_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_usmop4a_za64_wide_1x1 : SME_OuterProduct_QuaterTile_Single;
+  def int_aarch64_sme_usmop4s_za64_wide_1x1 : SME_OuterProduct_QuaterTile_Single;
+
+  class SME_OuterProduct_QuaterTile_Multi
----------------
jthackray wrote:

```suggestion
  class SME_OuterProduct_QuaterTile_Single_Multi
```
Then we can create `SME_OuterProduct_QuaterTile_Multi_Single` and `SME_OuterProduct_QuaterTile_Multi_Multi`

https://github.com/llvm/llvm-project/pull/128854


More information about the cfe-commits mailing list