[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