[PATCH] D136075: [AArch64]SME2 Multi-vector - Index/Single/Multi Array Vectors LONG INT MLA sources

Paul Walker via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 26 16:46:39 PDT 2022


paulwalker-arm added inline comments.


================
Comment at: llvm/lib/Target/AArch64/AArch64InstrFormats.td:1389-1394
+
+def uimm2s4range : Operand<i64>, ImmLeaf<i64,
+[{ return Imm >= 0 && Imm <= 12 && ((Imm % 4) == 0); }], UImmS4XForm> {
+  let PrintMethod = "printImmRangeScale<4, 3>";
+  let ParserMatchClass = UImm2s4RangeOperand;
+}
----------------
Perhaps better placed after uimm2s2range or uimm1s4range depending on what you prefer to sort on.


================
Comment at: llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp:5416-5417
     return Error(Loc, "immediate must be an integer in range [1, 64].");
+  case Match_InvalidMemoryIndexedRange4UImm1:
+  case Match_InvalidMemoryIndexedRange4UImm2:
+    return Error(
----------------
Logically these belong after `Match_InvalidMemoryIndexedRange2U...`.

How does this diagnostic relate to memory?

Does the "depending on the instruction" part related to the difference between `4UImm1` and `4UImm2`? If yes then I think separate diagnostics are better so that it's clear to the user what the expectation is.


================
Comment at: llvm/lib/Target/AArch64/SMEInstrFormats.td:2177
+  bits<2> Rv;
+  bits<4> i;
+  bits<1> imm;
----------------
This is 4 bits but I only see `i{2,1-0}` used to create `Inst`.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D136075



More information about the llvm-commits mailing list