[PATCH] D127414: [AArch64][SME] Add SME read/write intrinsics that map to the mova instruction

David Sherwood via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 14 03:26:05 PDT 2022


david-arm added inline comments.


================
Comment at: llvm/lib/Target/AArch64/SMEInstrFormats.td:611-625
+multiclass sme_vector_to_tile_q_patterns<Instruction inst, ValueType zpr_vt,
+                                         ValueType ppr_vt, Operand imm_ty,
+                                         Operand offset_ty,
+                                         SDPatternOperator op,
+                                         ComplexPattern tileslice> {
+  def : Pat<(op imm_ty:$tile, MatrixIndexGPR32Op12_15:$idx,
+                (ppr_vt PPR3bAny:$pg), (zpr_vt ZPRAny:$zn)),
----------------
aemerson wrote:
> Do my eyes deceive me or is this the same as `sme_vector_to_tile_patterns`?
Good point - they are the same! :facepalm


================
Comment at: llvm/lib/Target/AArch64/SMEInstrFormats.td:778-789
+  defm : sme_vector_to_tile_q_patterns<!cast<Instruction>(NAME # _PSEUDO_Q),
+                                     nxv2i64, nxv2i1, sme_elm_idx0_15,
+                                     sme_elm_idx0_0,
+                                     !if(is_col, int_aarch64_sme_writeq_vert,
+                                                 int_aarch64_sme_writeq_horiz),
+                                     tileslice128>;
+  defm : sme_vector_to_tile_q_patterns<!cast<Instruction>(NAME # _PSEUDO_Q),
----------------
c-rhodes wrote:
> these two are the same?
No, they're different. One is nxv2i64 and the other is nxv2f64.


================
Comment at: llvm/lib/Target/AArch64/SMEInstrFormats.td:993-1002
+  defm : sme_tile_to_vector_q_patterns<!cast<Instruction>(NAME # _Q),
+                                       nxv2f64, nxv2i1, sme_elm_idx0_0,
+                                       imm_to_tile128, tileslice128,
+                                       !if(is_col, int_aarch64_sme_readq_vert,
+                                                   int_aarch64_sme_readq_horiz)>;
+  defm : sme_tile_to_vector_q_patterns<!cast<Instruction>(NAME # _Q),
+                                       nxv2f64, nxv2i1, sme_elm_idx0_0,
----------------
c-rhodes wrote:
> also the same
Yep, these two are definitely the same. :)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D127414/new/

https://reviews.llvm.org/D127414



More information about the llvm-commits mailing list