@@ -11192,7 +11192,7 @@ multiclass sve2_fp8_dot_indexed_s<string asm, SDPatternOperator op> {
1119211192 def : SVE_4_Op_Pat<nxv4f32, op, nxv4f32, nxv16i8, nxv16i8, i32, !cast<Instruction>(NAME)>;
1119311193}
1119411194
11195- // FP8 Look up table
11195+ // Look up table
1119611196class sve2_lut_vector_index<ZPRRegOp zd_ty, RegisterOperand zn_ty,
1119711197 Operand idx_ty, bits<4>opc, string mnemonic>
1119811198 : I<(outs zd_ty:$Zd), (ins zn_ty:$Zn, ZPRAny:$Zm, idx_ty:$idx),
@@ -11211,7 +11211,7 @@ class sve2_lut_vector_index<ZPRRegOp zd_ty, RegisterOperand zn_ty,
1121111211 let Inst{4-0} = Zd;
1121211212}
1121311213
11214- // FP8 Look up table read with 2-bit indices
11214+ // Look up table read with 2-bit indices
1121511215multiclass sve2_luti2_vector_index<string mnemonic> {
1121611216 def _B : sve2_lut_vector_index<ZPR8, Z_b, VectorIndexS32b, {?, 0b100}, mnemonic> {
1121711217 bits<2> idx;
@@ -11233,7 +11233,7 @@ multiclass sve2_luti2_vector_index<string mnemonic> {
1123311233 i32, timm32_0_7, !cast<Instruction>(NAME # _H)>;
1123411234}
1123511235
11236- // FP8 Look up table read with 4-bit indices
11236+ // Look up table read with 4-bit indices
1123711237multiclass sve2_luti4_vector_index<string mnemonic> {
1123811238 def _B : sve2_lut_vector_index<ZPR8, Z_b, VectorIndexD32b, 0b1001, mnemonic> {
1123911239 bit idx;
@@ -11254,7 +11254,7 @@ multiclass sve2_luti4_vector_index<string mnemonic> {
1125411254 i32, timm32_0_3, !cast<Instruction>(NAME # _H)>;
1125511255}
1125611256
11257- // FP8 Look up table read with 4-bit indices (two contiguous registers)
11257+ // Look up table read with 4-bit indices (two contiguous registers)
1125811258multiclass sve2_luti4_vector_vg2_index<string mnemonic> {
1125911259 def NAME : sve2_lut_vector_index<ZPR16, ZZ_h, VectorIndexS32b, {?, 0b101}, mnemonic> {
1126011260 bits<2> idx;
@@ -11278,6 +11278,33 @@ multiclass sve2_luti4_vector_vg2_index<string mnemonic> {
1127811278 nxv16i8:$Op3, timm32_0_3:$Op4))>;
1127911279}
1128011280
11281+ // Look up table read with 6-bit indices
11282+ multiclass sve2_luti6_vector_index<string mnemonic> {
11283+ def _H : sve2_lut_vector_index<ZPR16, ZZ_h, VectorIndexD32b, 0b1011, mnemonic> {
11284+ bit idx;
11285+ let Inst{23} = idx;
11286+ }
11287+ }
11288+
11289+ // Look up table
11290+ class sve2_luti6_vector<ZPRRegOp zd_ty, RegisterOperand zn_ty,
11291+ bits<5>opc, string mnemonic>
11292+ : I<(outs zd_ty:$Zd), (ins zn_ty:$Zn, ZPRAny:$Zm),
11293+ mnemonic, "\t$Zd, $Zn, $Zm",
11294+ "", []>, Sched<[]> {
11295+ bits<5> Zd;
11296+ bits<5> Zn;
11297+ bits<5> Zm;
11298+ let Inst{31-24} = 0b01000101;
11299+ let Inst{23-22} = opc{4-3};
11300+ let Inst{21} = 0b1;
11301+ let Inst{20-16} = Zm;
11302+ let Inst{15-13} = 0b101;
11303+ let Inst{12-10} = opc{2-0};
11304+ let Inst{9-5} = Zn;
11305+ let Inst{4-0} = Zd;
11306+ }
11307+
1128111308//===----------------------------------------------------------------------===//
1128211309// Checked Pointer Arithmetic (FEAT_CPA)
1128311310//===----------------------------------------------------------------------===//
0 commit comments