[PATCH] D136680: [AArch64][SVE2] Add the SVE2.1 contiguous load to multiple consecutive vector

Paul Walker via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Oct 30 07:33:48 PDT 2022


paulwalker-arm added inline comments.


================
Comment at: llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td:3598
+// Load to two registers
+def LD1B_2ZCXX    : sve2p1_mem_cld_ss_2z<"ld1b", 0b00, 0b0, ZZ_b_mul_r, GPR64shifted8>;
+def LD1H_2ZCXX    : sve2p1_mem_cld_ss_2z<"ld1h", 0b01, 0b0, ZZ_h_mul_r, GPR64shifted16>;
----------------
It looks like we were not as consistent with adding register suffixes for the SVE loads and store as with the other instructions.  I see two options:

1. Match the existing naming but include register counts (e.g. something like `LD1B_2Z and LD1B_2Z_IMM`, or
2. Reference all operand registers as you've done but include the zeroing aspect like we usually do for predicated instructions (i.e.  `LD1B_2ZCzXX and LD1B_2ZCzXI`).

Personally I prefer option 1 but the choice is yours.


================
Comment at: llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp:3884-3899
+  // Not all predicates are followed by a '/z'.
+  MCAsmParser &Parser = getParser();
+  if (Parser.getTok().isNot(AsmToken::Slash))
+    return MatchOperand_Success;
+
+  // But when they do they shouldn't have an element type suffix.
+  if (!Kind.empty()) {
----------------
Is there now sufficient commonality that you can reuse `tryParseSVEPredicateVector` and just pass in the register kind or have that as a template parameter?  I know this only requires "\z" support, but I don't think that really matters does it?


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

https://reviews.llvm.org/D136680



More information about the llvm-commits mailing list