@@ -3932,35 +3932,39 @@ class sme2_lut_single<string asm>
39323932 let Inst{4-0} = Zd;
39333933}
39343934
3935- class sme2_luti6_zt<string asm>
3936- : I<(outs ZZZZ_b_mul_r:$Zd), (ins ZTR:$ZTt, ZZZ_Any:$Zn),
3935+ //===----------------------------------------------------------------------===//
3936+ // Lookup table read with 6-bit indices (8-bit)
3937+ class sme2_luti6_zt_base<RegisterOperand zd_ty, string asm>
3938+ : I<(outs zd_ty:$Zd), (ins ZTR:$ZTt, ZZZ_Any:$Zn),
39373939 asm, "\t$Zd, $ZTt, $Zn", "", []>, Sched<[]> {
39383940 bits<0> ZTt;
39393941 bits<3> Zd;
39403942 bits<3> Zn;
3941- let Inst{31-10} = 0b1100000010001010000000;
3943+ let Inst{31-21} = 0b11000000100;
3944+ let Inst{19-10} = 0b1010000000;
39423945 let Inst{9-7} = Zn;
39433946 let Inst{6-5} = 0b00;
3947+ }
3948+
3949+ class sme2_luti6_zt_consecutive<string asm>
3950+ : sme2_luti6_zt_base<ZZZZ_b_mul_r, asm> {
3951+ let Inst{20} = 0;
39443952 let Inst{4-2} = Zd;
39453953 let Inst{1-0} = 0b00;
39463954}
39473955
39483956class sme2_luti6_zt_strided<string asm>
3949- : I<(outs ZZZZ_b_strided:$Zd), (ins ZTR:$ZTt, ZZZ_Any:$Zn),
3950- asm, "\t$Zd, $ZTt, $Zn", "", []>, Sched<[]> {
3951- bits<0> ZTt;
3952- bits<3> Zd;
3953- bits<3> Zn;
3954- let Inst{31-10} = 0b1100000010011010000000;
3955- let Inst{9-7} = Zn;
3956- let Inst{6-5} = 0b00;
3957+ : sme2_luti6_zt_base<ZZZZ_b_strided, asm> {
3958+ let Inst{20} = 1;
39573959 let Inst{4} = Zd{2};
39583960 let Inst{3-2} = 0b00;
39593961 let Inst{1-0} = Zd{1-0};
39603962}
39613963
3962- class sme2_luti6_vector_vg4<string asm>
3963- : I<(outs ZZZZ_h_mul_r:$Zd), (ins ZZ_h:$Zn, ZZ_Any:$Zm, VectorIndexD:$i1),
3964+ //===----------------------------------------------------------------------===//
3965+ // Lookup table read with 6-bit indices (8-bit)
3966+ class sme2_luti6_vector_vg4_base<RegisterOperand zd_ty, string asm>
3967+ : I<(outs zd_ty:$Zd), (ins ZZ_h:$Zn, ZZ_Any:$Zm, VectorIndexD:$i1),
39643968 asm, "\t$Zd, $Zn, $Zm$i1", "", []>, Sched<[]> {
39653969 bits<3> Zd;
39663970 bits<5> Zn;
@@ -3970,25 +3974,19 @@ class sme2_luti6_vector_vg4<string asm>
39703974 let Inst{22} = i1;
39713975 let Inst{21} = 0b1;
39723976 let Inst{20-16} = Zm;
3973- let Inst{15-10} = 0b111101;
39743977 let Inst{9-5} = Zn;
3978+ }
3979+
3980+ class sme2_luti6_vector_vg4_consecutive<string asm>
3981+ : sme2_luti6_vector_vg4_base<ZZZZ_h_mul_r, asm> {
3982+ let Inst{15-10} = 0b111101;
39753983 let Inst{4-2} = Zd;
39763984 let Inst{1-0} = 0b00;
39773985}
39783986
39793987class sme2_luti6_vector_vg4_strided<string asm>
3980- : I<(outs ZZZZ_h_strided:$Zd), (ins ZZ_h:$Zn, ZZ_Any:$Zm, VectorIndexD:$i1),
3981- asm, "\t$Zd, $Zn, $Zm$i1", "", []>, Sched<[]> {
3982- bits<3> Zd;
3983- bits<5> Zn;
3984- bits<5> Zm;
3985- bits<1> i1;
3986- let Inst{31-23} = 0b110000010;
3987- let Inst{22} = i1;
3988- let Inst{21} = 0b1;
3989- let Inst{20-16} = Zm;
3988+ : sme2_luti6_vector_vg4_base<ZZZZ_h_strided, asm> {
39903989 let Inst{15-10} = 0b111111;
3991- let Inst{9-5} = Zn;
39923990 let Inst{4} = Zd{2};
39933991 let Inst{3-2} = 0b00;
39943992 let Inst{1-0} = Zd{1-0};
0 commit comments