[PATCH] D135599: [AArch64]SME2 Single and multiple vectors SVE Destructive two/four registers[part2]

Paul Walker via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 24 07:05:08 PDT 2022


paulwalker-arm added a comment.

Thanks @CarolineConcatto, this is a much nicer structure and in keeping with how we typically add new instructions.



================
Comment at: llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td:376
+defm SMAX_VG2_2Z2Z : sme2_int_sve_destructive_vector_vg2_multi<"smax",  0b000000>;
+defm SMAX_VG4_4Z2Z : sme2_int_sve_destructive_vector_vg4_multi<"smax",  0b000000>;
+
----------------
Should this be `SMAX_VG4_4Z4Z`? If yes then you'll need to check all new defs in this patch because I've seen this potentially incorrect naming several times.

Whilst mentioning consistency the choice of whether to use `_VG#` seems arbitrary or perhaps I'm misinterpreting it's meaning.  For example `SRSHL_2Z2Z` looks like it should have `_VG2` but doesn't.  That said, given we specify the register types within the instructions (i.e. _2Z2Z) I'm wondering if most all the `_VG#` usages are redundant?

Redundancy is likely a question for later but I do think you should be naming the instructions consistently.


================
Comment at: llvm/lib/Target/AArch64/SMEInstrFormats.td:1439-1441
+  let Inst{10-9}  = op{6-5};
+  let Inst{8}     = op{4}; //f
+  let Inst{7-5}   = op{3-1};
----------------
Is there value in breaking this up? instead of just having `Inst{10-5} = op{6-1}`.


================
Comment at: llvm/lib/Target/AArch64/SMEInstrFormats.td:1475-1477
+  let Inst{10-9}  = op{6-5};
+  let Inst{8}     = op{4}; //f
+  let Inst{7-5}   = op{3-1};
----------------
As above, do these need to be split?


================
Comment at: llvm/lib/Target/AArch64/SMEInstrFormats.td:1511-1513
+  let Inst{10-9}  = op{5-4};
+  let Inst{8}     = f;
+  let Inst{7-5}   = op{3-1};
----------------
Can you make `f` part of the opcode? much like you did for the _single variants.


================
Comment at: llvm/lib/Target/AArch64/SMEInstrFormats.td:1546-1548
+  let Inst{10-9}  = op{5-4};
+  let Inst{8}     = f;
+  let Inst{7-5}   = op{3-1};
----------------
As above, can these be packed together?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D135599



More information about the llvm-commits mailing list