[PATCH] D135468: [AArch64]SME2 Multiple vector ternary int/float 2 and 4 registers

Paul Walker via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Oct 16 10:08:19 PDT 2022


paulwalker-arm added inline comments.


================
Comment at: llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp:1320
+      return DiagnosticPredicateTy::NoMatch;
+    ;
+    if (((VectorList.RegNum - AArch64::Z0) % NumRegs) != 0)
----------------
typo?


================
Comment at: llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp:5531
+                      "SVE vectors, where the first vector is a multiple of 2 "
+                      "and with correct element type");
+  case Match_InvalidSVEVectorListMul4x32:
----------------
s/with correct element type/with matching element types/?


================
Comment at: llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp:5536
+                      "SVE vectors, where the first vector is a multiple of 4 "
+                      "and with correct element type");
   default:
----------------
s/with correct element type/with matching element types/?


================
Comment at: llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp:637
+                                                const void *Decoder) {
+  if (RegNo * 2 > (32 - 2))
+    return Fail;
----------------
Can this just be 30 to reflect the maximum register is z30? I don't really see what value the maths gives us, it's not like the existing functions use `32 - 1`.


================
Comment at: llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp:648
+                                                const void *Decoder) {
+  if (RegNo * 4 > (32 - 4))
+    return Fail;
----------------
Similar comment as above.


================
Comment at: llvm/lib/Target/AArch64/SMEInstrFormats.td:1254
+//===----------------------------------------------------------------------===//
+// SME2 multiple vectors ternary INT/FP  two and four registers
+class sme2_mul_add_sub_array_vg2_multi<bit sz, bits<2> op,
----------------
too much whitespace


================
Comment at: llvm/test/MC/AArch64/SME2/add-diagnostics.s:58-66
+add za.s[w10, 3, vgx2], {z10.s-z11.s}, {z21.s-z22.s}
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid vector list, expected list with 2 consecutive SVE vectors, where the first vector is a multiple of 2 and with correct element type
+// CHECK-NEXT: add za.s[w10, 3, vgx2], {z10.s-z11.s}, {z21.s-z22.s}
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+add za.d[w11, 7, vgx4], {z12.d-z15.d}, {z9.d-z12.d}
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid vector list, expected list with 4 consecutive SVE vectors, where the first vector is a multiple of 4 and with correct element type
----------------
These test the "where the first vector is a multiple of" part of the syntax but not the "with correct element type" part.  Can you add tests for the matching element type side of thing?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D135468



More information about the llvm-commits mailing list