[PATCH] D136150: [AArch64]SME2 Single and Multi vector Shift and Multiply instructions

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


paulwalker-arm added inline comments.


================
Comment at: llvm/lib/Target/AArch64/SMEInstrFormats.td:3574
+// SME2 multi-vec saturating shift right narrow
+class sme2_sat_shift_vector_vg2<string mnemonic, bit op, bit u>
+    : I<(outs ZPR16:$Zd), (ins ZZ_s_mul_r:$Zn, vecshiftR16:$imm4),
----------------
Can you create a multiclass for this that means the instructions get an element type suffix? Either that or just add the suffix to the instruction name, but I think we'll need a multiclass anyway for when we wire in code generation support.


================
Comment at: llvm/lib/Target/AArch64/SMEInstrFormats.td:3598-3600
+  let Inst{31-24} = 0b11000001;
+  let Inst{21}    = 0b1;
+  let Inst{15-11} = 0b11011;
----------------
Please see `sve_int_bin_pred_shift_imm_left` for how we usually handle variable length shift imm fields.  Following that idiom `sme2_sat_shift_vector_vg4` will match the encoding group (i.e. include entries for `tsize` and `imm5`) with the multiclass passing in the fixed parts and the fills in the rest using the `imm` of the required bit length for its datatype.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D136150



More information about the llvm-commits mailing list