================
@@ -376,6 +376,24 @@ let SMETargetGuard = "sme2" in {
 // Outer product and accumulate/subtract
 //
 
+multiclass MOP4<string name, string n, string t, string i, string wide, 
list<ImmCheck> checks> {
+  def NAME # "_1x1" : Inst<"svmop4" # name # "_1x1_" # n # "[_{d}_{d}]", 
"vidd", t, MergeNone, i # wide # "_1x1", [IsInOutZA, IsStreaming], checks>;
+}
+
+multiclass SUMOP4<string s, string za, string t, string i, list<ImmCheck> 
checks> {
+  def _1x1 : SInst<"svmop4" # s # "[_1x1_]" # za # "[_{d}_{3}]",
+                              "vidu", t, MergeNone, "aarch64_sme_sumop4" # s # 
i # "_wide_1x1",
+                              [IsStreaming, IsInOutZA],
+                              checks>;
+}
+
+multiclass USMOP4<string s, string za, string t, string i, list<ImmCheck> 
checks> {
+  def _1x1 : SInst<"svmop4" # s # "[_1x1_]" # za # "[_{d}_{3}]",
+                              "vidx", t, MergeNone, "aarch64_sme_usmop4" # s # 
i # "_wide_1x1",
+                              [IsStreaming, IsInOutZA],
+                              checks>;
+}
+
----------------
Lukacma wrote:

I think since all instructions have both "a" and "s"  we could hide these 
variants inside multiclass instead of passing them as a template parameter

https://github.com/llvm/llvm-project/pull/127797
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to