[clang] [llvm] [CLANG][LLVM][AArch64]SME2.1 intrinsics for MOVAZ tile to 2/4 vectors (PR #88710)

Momchil Velikov via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 4 07:26:52 PDT 2024


================
@@ -674,3 +674,26 @@ let TargetGuard = "sme2" in {
   def SVLUTI2_LANE_ZT_X2 : Inst<"svluti2_lane_zt_{d}_x2", "2.di[i", "cUcsUsiUibhf", MergeNone, "aarch64_sme_luti2_lane_zt_x2", [IsStreaming, IsInZT0], [ImmCheck<0, ImmCheck0_0>, ImmCheck<2, ImmCheck0_7>]>;
   def SVLUTI4_LANE_ZT_X2 : Inst<"svluti4_lane_zt_{d}_x2", "2.di[i", "cUcsUsiUibhf", MergeNone, "aarch64_sme_luti4_lane_zt_x2", [IsStreaming, IsInZT0], [ImmCheck<0, ImmCheck0_0>, ImmCheck<2, ImmCheck0_3>]>;
 }
+
+multiclass ZAReadz<string n_suffix, string vg_num, string t, string i_prefix, list<ImmCheck> ch> {
+  let TargetGuard = "sme2p1" in {
+    def NAME # _H : SInst<"svreadz_hor_" # n_suffix # "_{d}_vg" # vg_num, vg_num # "im", t,
+                          MergeNone, i_prefix # "_horiz_x" # vg_num,
+                          [IsStreaming, IsInOutZA], ch>;
----------------
momchil-velikov wrote:

> Should these be `InZA` instead of `InOutZA`? And also `ReadZA` (not sure what that's for).

The instructions zero the source tiles after copying (https://developer.arm.com/documentation/ddi0602/2024-03/SME-Instructions/MOVAZ--tile-to-vector--four-registers---Move-and-zero-four-ZA-tile-slices-to-vector-registers-?lang=en ).


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


More information about the llvm-commits mailing list