Skip to content

Commit a5c547f

Browse files
[Clang][LLVM] Implement multi-multi vectors MOP4{A/S}
1 parent 8fb286f commit a5c547f

File tree

6 files changed

+1155
-9
lines changed

6 files changed

+1155
-9
lines changed

clang/include/clang/Basic/arm_sme.td

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,7 @@ defm SVMOPS : ZAFPOuterProd<"mops">;
295295
multiclass MOP4<string mode, string za, string t, string i, list<ImmCheck> checks> {
296296
def _1x1 : Inst<"svmop4" # mode # "[_1x1]_" # za # "[_{d}_{d}]", "vidd", t, MergeNone, i # "_1x1", [IsInOutZA, IsStreaming], checks>;
297297
def _1x2 : Inst<"svmop4" # mode # "[_1x2]_" # za # "[_{d}_{d}]", "vid2", t, MergeNone, i # "_1x2", [IsInOutZA, IsStreaming], checks>;
298+
def _2x2 : Inst<"svmop4" # mode # "[_2x2]_" # za # "[_{d}_{d}]", "vi22", t, MergeNone, i # "_2x2", [IsInOutZA, IsStreaming], checks>;
298299
}
299300

300301
let SMETargetGuard = "sme2,sme-mop4" in {
@@ -350,6 +351,10 @@ multiclass SUMOP4<string mode, string za, string t, string i, list<ImmCheck> che
350351
"vid2.u", t, MergeNone, "aarch64_sme_sumop4" # mode # i # "_wide_1x2",
351352
[IsStreaming, IsInOutZA],
352353
checks>;
354+
def _2x2 : SInst<"svmop4" # mode # "[_2x2]_" # za # "[_{d}_{3}]",
355+
"vi2.x2.u", t, MergeNone, "aarch64_sme_sumop4" # mode # i # "_wide_2x2",
356+
[IsStreaming, IsInOutZA],
357+
checks>;
353358
}
354359

355360
multiclass USMOP4<string mode, string za, string t, string i, list<ImmCheck> checks> {
@@ -361,6 +366,10 @@ multiclass USMOP4<string mode, string za, string t, string i, list<ImmCheck> che
361366
"vid2.x", t, MergeNone, "aarch64_sme_usmop4" # mode # i # "_wide_1x2",
362367
[IsStreaming, IsInOutZA],
363368
checks>;
369+
def _2x2 : SInst<"svmop4" # mode # "[_2x2]_" # za # "[_{d}_{3}]",
370+
"vi2.u2.x", t, MergeNone, "aarch64_sme_usmop4" # mode # i # "_wide_2x2",
371+
[IsStreaming, IsInOutZA],
372+
checks>;
364373
}
365374

366375
let SMETargetGuard = "sme2,sme-mop4" in {

0 commit comments

Comments
 (0)