Skip to content

Commit 982118a

Browse files
committed
fixup! [AArch64][llvm] Armv9.7-A: Add support for SVE2p3 LUTI6 operations
Use base class to share more of the encodings for luti6
1 parent 9b45d1c commit 982118a

File tree

2 files changed

+25
-27
lines changed

2 files changed

+25
-27
lines changed

llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1179,8 +1179,8 @@ let Predicates = [HasSME_MOP4, HasSMEF64F64] in {
11791179
//===----------------------------------------------------------------------===//
11801180
let Predicates = [HasSME2p3] in {
11811181
def LUTI6_ZTZ : sme2_lut_single<"luti6">;
1182-
def LUTI6_4ZT3Z : sme2_luti6_zt<"luti6">;
1182+
def LUTI6_4ZT3Z : sme2_luti6_zt_consecutive<"luti6">;
11831183
def LUTI6_S_4ZT3Z : sme2_luti6_zt_strided<"luti6">;
1184-
def LUTI6_4Z2Z2ZI : sme2_luti6_vector_vg4<"luti6">;
1184+
def LUTI6_4Z2Z2ZI : sme2_luti6_vector_vg4_consecutive<"luti6">;
11851185
def LUTI6_S_4Z2Z2ZI : sme2_luti6_vector_vg4_strided<"luti6">;
11861186
} // [HasSME2p3]

llvm/lib/Target/AArch64/SMEInstrFormats.td

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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

39483956
class 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

39793987
class 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

Comments
 (0)