xref: /aosp_15_r20/external/llvm/lib/Target/Hexagon/HexagonInstrEnc.td (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VX_3op_v<bits<15> opc> : OpcodeHexagon {
2*9880d681SAndroid Build Coastguard Worker  bits<5> dst;
3*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
4*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { opc{14-4}, src2};
7*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { opc{3}, src1, opc{2-0}, dst};
8*9880d681SAndroid Build Coastguard Worker}
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Workerclass V6_vtmpyb_enc : Enc_COPROC_VX_3op_v<0b000110010000000>;
11*9880d681SAndroid Build Coastguard Workerclass V6_vtmpybus_enc : Enc_COPROC_VX_3op_v<0b000110010000001>;
12*9880d681SAndroid Build Coastguard Workerclass V6_vdmpyhb_enc : Enc_COPROC_VX_3op_v<0b000110010000010>;
13*9880d681SAndroid Build Coastguard Workerclass V6_vrmpyub_enc : Enc_COPROC_VX_3op_v<0b000110010000011>;
14*9880d681SAndroid Build Coastguard Workerclass V6_vrmpybus_enc : Enc_COPROC_VX_3op_v<0b000110010000100>;
15*9880d681SAndroid Build Coastguard Workerclass V6_vdsaduh_enc : Enc_COPROC_VX_3op_v<0b000110010000101>;
16*9880d681SAndroid Build Coastguard Workerclass V6_vdmpybus_enc : Enc_COPROC_VX_3op_v<0b000110010000110>;
17*9880d681SAndroid Build Coastguard Workerclass V6_vdmpybus_dv_enc : Enc_COPROC_VX_3op_v<0b000110010000111>;
18*9880d681SAndroid Build Coastguard Workerclass V6_vtmpyb_acc_enc : Enc_COPROC_VX_3op_v<0b000110010001000>;
19*9880d681SAndroid Build Coastguard Workerclass V6_vtmpybus_acc_enc : Enc_COPROC_VX_3op_v<0b000110010001001>;
20*9880d681SAndroid Build Coastguard Workerclass V6_vtmpyhb_acc_enc : Enc_COPROC_VX_3op_v<0b000110010001010>;
21*9880d681SAndroid Build Coastguard Workerclass V6_vdmpyhb_acc_enc : Enc_COPROC_VX_3op_v<0b000110010001011>;
22*9880d681SAndroid Build Coastguard Workerclass V6_vrmpyub_acc_enc : Enc_COPROC_VX_3op_v<0b000110010001100>;
23*9880d681SAndroid Build Coastguard Workerclass V6_vrmpybus_acc_enc : Enc_COPROC_VX_3op_v<0b000110010001101>;
24*9880d681SAndroid Build Coastguard Workerclass V6_vdmpybus_acc_enc : Enc_COPROC_VX_3op_v<0b000110010001110>;
25*9880d681SAndroid Build Coastguard Workerclass V6_vdmpybus_dv_acc_enc : Enc_COPROC_VX_3op_v<0b000110010001111>;
26*9880d681SAndroid Build Coastguard Workerclass V6_vdmpyhsusat_enc : Enc_COPROC_VX_3op_v<0b000110010010000>;
27*9880d681SAndroid Build Coastguard Workerclass V6_vdmpyhsuisat_enc : Enc_COPROC_VX_3op_v<0b000110010010001>;
28*9880d681SAndroid Build Coastguard Workerclass V6_vdmpyhsat_enc : Enc_COPROC_VX_3op_v<0b000110010010010>;
29*9880d681SAndroid Build Coastguard Workerclass V6_vdmpyhisat_enc : Enc_COPROC_VX_3op_v<0b000110010010011>;
30*9880d681SAndroid Build Coastguard Workerclass V6_vdmpyhb_dv_enc : Enc_COPROC_VX_3op_v<0b000110010010100>;
31*9880d681SAndroid Build Coastguard Workerclass V6_vmpybus_enc : Enc_COPROC_VX_3op_v<0b000110010010101>;
32*9880d681SAndroid Build Coastguard Workerclass V6_vmpabus_enc : Enc_COPROC_VX_3op_v<0b000110010010110>;
33*9880d681SAndroid Build Coastguard Workerclass V6_vmpahb_enc : Enc_COPROC_VX_3op_v<0b000110010010111>;
34*9880d681SAndroid Build Coastguard Workerclass V6_vdmpyhsusat_acc_enc : Enc_COPROC_VX_3op_v<0b000110010011000>;
35*9880d681SAndroid Build Coastguard Workerclass V6_vdmpyhsuisat_acc_enc : Enc_COPROC_VX_3op_v<0b000110010011001>;
36*9880d681SAndroid Build Coastguard Workerclass V6_vdmpyhisat_acc_enc : Enc_COPROC_VX_3op_v<0b000110010011010>;
37*9880d681SAndroid Build Coastguard Workerclass V6_vdmpyhsat_acc_enc : Enc_COPROC_VX_3op_v<0b000110010011011>;
38*9880d681SAndroid Build Coastguard Workerclass V6_vdmpyhb_dv_acc_enc : Enc_COPROC_VX_3op_v<0b000110010011100>;
39*9880d681SAndroid Build Coastguard Workerclass V6_vmpybus_acc_enc : Enc_COPROC_VX_3op_v<0b000110010011101>;
40*9880d681SAndroid Build Coastguard Workerclass V6_vmpabus_acc_enc : Enc_COPROC_VX_3op_v<0b000110010011110>;
41*9880d681SAndroid Build Coastguard Workerclass V6_vmpahb_acc_enc : Enc_COPROC_VX_3op_v<0b000110010011111>;
42*9880d681SAndroid Build Coastguard Workerclass V6_vmpyh_enc : Enc_COPROC_VX_3op_v<0b000110010100000>;
43*9880d681SAndroid Build Coastguard Workerclass V6_vmpyhss_enc : Enc_COPROC_VX_3op_v<0b000110010100001>;
44*9880d681SAndroid Build Coastguard Workerclass V6_vmpyhsrs_enc : Enc_COPROC_VX_3op_v<0b000110010100010>;
45*9880d681SAndroid Build Coastguard Workerclass V6_vmpyuh_enc : Enc_COPROC_VX_3op_v<0b000110010100011>;
46*9880d681SAndroid Build Coastguard Workerclass V6_vmpyhsat_acc_enc : Enc_COPROC_VX_3op_v<0b000110010101000>;
47*9880d681SAndroid Build Coastguard Workerclass V6_vmpyuh_acc_enc : Enc_COPROC_VX_3op_v<0b000110010101001>;
48*9880d681SAndroid Build Coastguard Workerclass V6_vmpyiwb_acc_enc : Enc_COPROC_VX_3op_v<0b000110010101010>;
49*9880d681SAndroid Build Coastguard Workerclass V6_vmpyiwh_acc_enc : Enc_COPROC_VX_3op_v<0b000110010101011>;
50*9880d681SAndroid Build Coastguard Workerclass V6_vmpyihb_enc : Enc_COPROC_VX_3op_v<0b000110010110000>;
51*9880d681SAndroid Build Coastguard Workerclass V6_vror_enc : Enc_COPROC_VX_3op_v<0b000110010110001>;
52*9880d681SAndroid Build Coastguard Workerclass V6_vasrw_enc : Enc_COPROC_VX_3op_v<0b000110010110101>;
53*9880d681SAndroid Build Coastguard Workerclass V6_vasrh_enc : Enc_COPROC_VX_3op_v<0b000110010110110>;
54*9880d681SAndroid Build Coastguard Workerclass V6_vaslw_enc : Enc_COPROC_VX_3op_v<0b000110010110111>;
55*9880d681SAndroid Build Coastguard Workerclass V6_vdsaduh_acc_enc : Enc_COPROC_VX_3op_v<0b000110010111000>;
56*9880d681SAndroid Build Coastguard Workerclass V6_vmpyihb_acc_enc : Enc_COPROC_VX_3op_v<0b000110010111001>;
57*9880d681SAndroid Build Coastguard Workerclass V6_vaslw_acc_enc : Enc_COPROC_VX_3op_v<0b000110010111010>;
58*9880d681SAndroid Build Coastguard Workerclass V6_vasrw_acc_enc : Enc_COPROC_VX_3op_v<0b000110010111101>;
59*9880d681SAndroid Build Coastguard Workerclass V6_vaslh_enc : Enc_COPROC_VX_3op_v<0b000110011000000>;
60*9880d681SAndroid Build Coastguard Workerclass V6_vlsrw_enc : Enc_COPROC_VX_3op_v<0b000110011000001>;
61*9880d681SAndroid Build Coastguard Workerclass V6_vlsrh_enc : Enc_COPROC_VX_3op_v<0b000110011000010>;
62*9880d681SAndroid Build Coastguard Workerclass V6_vmpyiwh_enc : Enc_COPROC_VX_3op_v<0b000110011000111>;
63*9880d681SAndroid Build Coastguard Workerclass V6_vmpyub_acc_enc : Enc_COPROC_VX_3op_v<0b000110011001000>;
64*9880d681SAndroid Build Coastguard Workerclass V6_vmpyiwb_enc : Enc_COPROC_VX_3op_v<0b000110011010000>;
65*9880d681SAndroid Build Coastguard Workerclass V6_vtmpyhb_enc : Enc_COPROC_VX_3op_v<0b000110011010100>;
66*9880d681SAndroid Build Coastguard Workerclass V6_vmpyub_enc : Enc_COPROC_VX_3op_v<0b000110011100000>;
67*9880d681SAndroid Build Coastguard Workerclass V6_vrmpyubv_enc : Enc_COPROC_VX_3op_v<0b000111000000000>;
68*9880d681SAndroid Build Coastguard Workerclass V6_vrmpybv_enc : Enc_COPROC_VX_3op_v<0b000111000000001>;
69*9880d681SAndroid Build Coastguard Workerclass V6_vrmpybusv_enc : Enc_COPROC_VX_3op_v<0b000111000000010>;
70*9880d681SAndroid Build Coastguard Workerclass V6_vdmpyhvsat_enc : Enc_COPROC_VX_3op_v<0b000111000000011>;
71*9880d681SAndroid Build Coastguard Workerclass V6_vmpybv_enc : Enc_COPROC_VX_3op_v<0b000111000000100>;
72*9880d681SAndroid Build Coastguard Workerclass V6_vmpyubv_enc : Enc_COPROC_VX_3op_v<0b000111000000101>;
73*9880d681SAndroid Build Coastguard Workerclass V6_vmpybusv_enc : Enc_COPROC_VX_3op_v<0b000111000000110>;
74*9880d681SAndroid Build Coastguard Workerclass V6_vmpyhv_enc : Enc_COPROC_VX_3op_v<0b000111000000111>;
75*9880d681SAndroid Build Coastguard Workerclass V6_vrmpyubv_acc_enc : Enc_COPROC_VX_3op_v<0b000111000001000>;
76*9880d681SAndroid Build Coastguard Workerclass V6_vrmpybv_acc_enc : Enc_COPROC_VX_3op_v<0b000111000001001>;
77*9880d681SAndroid Build Coastguard Workerclass V6_vrmpybusv_acc_enc : Enc_COPROC_VX_3op_v<0b000111000001010>;
78*9880d681SAndroid Build Coastguard Workerclass V6_vdmpyhvsat_acc_enc : Enc_COPROC_VX_3op_v<0b000111000001011>;
79*9880d681SAndroid Build Coastguard Workerclass V6_vmpybv_acc_enc : Enc_COPROC_VX_3op_v<0b000111000001100>;
80*9880d681SAndroid Build Coastguard Workerclass V6_vmpyubv_acc_enc : Enc_COPROC_VX_3op_v<0b000111000001101>;
81*9880d681SAndroid Build Coastguard Workerclass V6_vmpybusv_acc_enc : Enc_COPROC_VX_3op_v<0b000111000001110>;
82*9880d681SAndroid Build Coastguard Workerclass V6_vmpyhv_acc_enc : Enc_COPROC_VX_3op_v<0b000111000001111>;
83*9880d681SAndroid Build Coastguard Workerclass V6_vmpyuhv_enc : Enc_COPROC_VX_3op_v<0b000111000010000>;
84*9880d681SAndroid Build Coastguard Workerclass V6_vmpyhvsrs_enc : Enc_COPROC_VX_3op_v<0b000111000010001>;
85*9880d681SAndroid Build Coastguard Workerclass V6_vmpyhus_enc : Enc_COPROC_VX_3op_v<0b000111000010010>;
86*9880d681SAndroid Build Coastguard Workerclass V6_vmpabusv_enc : Enc_COPROC_VX_3op_v<0b000111000010011>;
87*9880d681SAndroid Build Coastguard Workerclass V6_vmpyih_enc : Enc_COPROC_VX_3op_v<0b000111000010100>;
88*9880d681SAndroid Build Coastguard Workerclass V6_vand_enc : Enc_COPROC_VX_3op_v<0b000111000010101>;
89*9880d681SAndroid Build Coastguard Workerclass V6_vor_enc : Enc_COPROC_VX_3op_v<0b000111000010110>;
90*9880d681SAndroid Build Coastguard Workerclass V6_vxor_enc : Enc_COPROC_VX_3op_v<0b000111000010111>;
91*9880d681SAndroid Build Coastguard Workerclass V6_vmpyuhv_acc_enc : Enc_COPROC_VX_3op_v<0b000111000011000>;
92*9880d681SAndroid Build Coastguard Workerclass V6_vmpyhus_acc_enc : Enc_COPROC_VX_3op_v<0b000111000011001>;
93*9880d681SAndroid Build Coastguard Workerclass V6_vmpyih_acc_enc : Enc_COPROC_VX_3op_v<0b000111000011100>;
94*9880d681SAndroid Build Coastguard Workerclass V6_vmpyiewuh_acc_enc : Enc_COPROC_VX_3op_v<0b000111000011101>;
95*9880d681SAndroid Build Coastguard Workerclass V6_vmpyowh_sacc_enc : Enc_COPROC_VX_3op_v<0b000111000011110>;
96*9880d681SAndroid Build Coastguard Workerclass V6_vmpyowh_rnd_sacc_enc : Enc_COPROC_VX_3op_v<0b000111000011111>;
97*9880d681SAndroid Build Coastguard Workerclass V6_vaddw_enc : Enc_COPROC_VX_3op_v<0b000111000100000>;
98*9880d681SAndroid Build Coastguard Workerclass V6_vaddubsat_enc : Enc_COPROC_VX_3op_v<0b000111000100001>;
99*9880d681SAndroid Build Coastguard Workerclass V6_vadduhsat_enc : Enc_COPROC_VX_3op_v<0b000111000100010>;
100*9880d681SAndroid Build Coastguard Workerclass V6_vaddhsat_enc : Enc_COPROC_VX_3op_v<0b000111000100011>;
101*9880d681SAndroid Build Coastguard Workerclass V6_vaddwsat_enc : Enc_COPROC_VX_3op_v<0b000111000100100>;
102*9880d681SAndroid Build Coastguard Workerclass V6_vsubb_enc : Enc_COPROC_VX_3op_v<0b000111000100101>;
103*9880d681SAndroid Build Coastguard Workerclass V6_vsubh_enc : Enc_COPROC_VX_3op_v<0b000111000100110>;
104*9880d681SAndroid Build Coastguard Workerclass V6_vsubw_enc : Enc_COPROC_VX_3op_v<0b000111000100111>;
105*9880d681SAndroid Build Coastguard Workerclass V6_vmpyiewh_acc_enc : Enc_COPROC_VX_3op_v<0b000111000101000>;
106*9880d681SAndroid Build Coastguard Workerclass V6_vsububsat_enc : Enc_COPROC_VX_3op_v<0b000111000110000>;
107*9880d681SAndroid Build Coastguard Workerclass V6_vsubuhsat_enc : Enc_COPROC_VX_3op_v<0b000111000110001>;
108*9880d681SAndroid Build Coastguard Workerclass V6_vsubhsat_enc : Enc_COPROC_VX_3op_v<0b000111000110010>;
109*9880d681SAndroid Build Coastguard Workerclass V6_vsubwsat_enc : Enc_COPROC_VX_3op_v<0b000111000110011>;
110*9880d681SAndroid Build Coastguard Workerclass V6_vaddb_dv_enc : Enc_COPROC_VX_3op_v<0b000111000110100>;
111*9880d681SAndroid Build Coastguard Workerclass V6_vaddh_dv_enc : Enc_COPROC_VX_3op_v<0b000111000110101>;
112*9880d681SAndroid Build Coastguard Workerclass V6_vaddw_dv_enc : Enc_COPROC_VX_3op_v<0b000111000110110>;
113*9880d681SAndroid Build Coastguard Workerclass V6_vaddubsat_dv_enc : Enc_COPROC_VX_3op_v<0b000111000110111>;
114*9880d681SAndroid Build Coastguard Workerclass V6_vadduhsat_dv_enc : Enc_COPROC_VX_3op_v<0b000111001000000>;
115*9880d681SAndroid Build Coastguard Workerclass V6_vaddhsat_dv_enc : Enc_COPROC_VX_3op_v<0b000111001000001>;
116*9880d681SAndroid Build Coastguard Workerclass V6_vaddwsat_dv_enc : Enc_COPROC_VX_3op_v<0b000111001000010>;
117*9880d681SAndroid Build Coastguard Workerclass V6_vsubb_dv_enc : Enc_COPROC_VX_3op_v<0b000111001000011>;
118*9880d681SAndroid Build Coastguard Workerclass V6_vsubh_dv_enc : Enc_COPROC_VX_3op_v<0b000111001000100>;
119*9880d681SAndroid Build Coastguard Workerclass V6_vsubw_dv_enc : Enc_COPROC_VX_3op_v<0b000111001000101>;
120*9880d681SAndroid Build Coastguard Workerclass V6_vsububsat_dv_enc : Enc_COPROC_VX_3op_v<0b000111001000110>;
121*9880d681SAndroid Build Coastguard Workerclass V6_vsubuhsat_dv_enc : Enc_COPROC_VX_3op_v<0b000111001000111>;
122*9880d681SAndroid Build Coastguard Workerclass V6_vsubhsat_dv_enc : Enc_COPROC_VX_3op_v<0b000111001010000>;
123*9880d681SAndroid Build Coastguard Workerclass V6_vsubwsat_dv_enc : Enc_COPROC_VX_3op_v<0b000111001010001>;
124*9880d681SAndroid Build Coastguard Workerclass V6_vaddubh_enc : Enc_COPROC_VX_3op_v<0b000111001010010>;
125*9880d681SAndroid Build Coastguard Workerclass V6_vadduhw_enc : Enc_COPROC_VX_3op_v<0b000111001010011>;
126*9880d681SAndroid Build Coastguard Workerclass V6_vaddhw_enc : Enc_COPROC_VX_3op_v<0b000111001010100>;
127*9880d681SAndroid Build Coastguard Workerclass V6_vsububh_enc : Enc_COPROC_VX_3op_v<0b000111001010101>;
128*9880d681SAndroid Build Coastguard Workerclass V6_vsubuhw_enc : Enc_COPROC_VX_3op_v<0b000111001010110>;
129*9880d681SAndroid Build Coastguard Workerclass V6_vsubhw_enc : Enc_COPROC_VX_3op_v<0b000111001010111>;
130*9880d681SAndroid Build Coastguard Workerclass V6_vabsdiffub_enc : Enc_COPROC_VX_3op_v<0b000111001100000>;
131*9880d681SAndroid Build Coastguard Workerclass V6_vabsdiffh_enc : Enc_COPROC_VX_3op_v<0b000111001100001>;
132*9880d681SAndroid Build Coastguard Workerclass V6_vabsdiffuh_enc : Enc_COPROC_VX_3op_v<0b000111001100010>;
133*9880d681SAndroid Build Coastguard Workerclass V6_vabsdiffw_enc : Enc_COPROC_VX_3op_v<0b000111001100011>;
134*9880d681SAndroid Build Coastguard Workerclass V6_vavgub_enc : Enc_COPROC_VX_3op_v<0b000111001100100>;
135*9880d681SAndroid Build Coastguard Workerclass V6_vavguh_enc : Enc_COPROC_VX_3op_v<0b000111001100101>;
136*9880d681SAndroid Build Coastguard Workerclass V6_vavgh_enc : Enc_COPROC_VX_3op_v<0b000111001100110>;
137*9880d681SAndroid Build Coastguard Workerclass V6_vavgw_enc : Enc_COPROC_VX_3op_v<0b000111001100111>;
138*9880d681SAndroid Build Coastguard Workerclass V6_vnavgub_enc : Enc_COPROC_VX_3op_v<0b000111001110000>;
139*9880d681SAndroid Build Coastguard Workerclass V6_vnavgh_enc : Enc_COPROC_VX_3op_v<0b000111001110001>;
140*9880d681SAndroid Build Coastguard Workerclass V6_vnavgw_enc : Enc_COPROC_VX_3op_v<0b000111001110010>;
141*9880d681SAndroid Build Coastguard Workerclass V6_vavgubrnd_enc : Enc_COPROC_VX_3op_v<0b000111001110011>;
142*9880d681SAndroid Build Coastguard Workerclass V6_vavguhrnd_enc : Enc_COPROC_VX_3op_v<0b000111001110100>;
143*9880d681SAndroid Build Coastguard Workerclass V6_vavghrnd_enc : Enc_COPROC_VX_3op_v<0b000111001110101>;
144*9880d681SAndroid Build Coastguard Workerclass V6_vavgwrnd_enc : Enc_COPROC_VX_3op_v<0b000111001110110>;
145*9880d681SAndroid Build Coastguard Workerclass V6_vmpabuuv_enc : Enc_COPROC_VX_3op_v<0b000111001110111>;
146*9880d681SAndroid Build Coastguard Workerclass V6_vminub_enc : Enc_COPROC_VX_3op_v<0b000111110000001>;
147*9880d681SAndroid Build Coastguard Workerclass V6_vminuh_enc : Enc_COPROC_VX_3op_v<0b000111110000010>;
148*9880d681SAndroid Build Coastguard Workerclass V6_vminh_enc : Enc_COPROC_VX_3op_v<0b000111110000011>;
149*9880d681SAndroid Build Coastguard Workerclass V6_vminw_enc : Enc_COPROC_VX_3op_v<0b000111110000100>;
150*9880d681SAndroid Build Coastguard Workerclass V6_vmaxub_enc : Enc_COPROC_VX_3op_v<0b000111110000101>;
151*9880d681SAndroid Build Coastguard Workerclass V6_vmaxuh_enc : Enc_COPROC_VX_3op_v<0b000111110000110>;
152*9880d681SAndroid Build Coastguard Workerclass V6_vmaxh_enc : Enc_COPROC_VX_3op_v<0b000111110000111>;
153*9880d681SAndroid Build Coastguard Workerclass V6_vmaxw_enc : Enc_COPROC_VX_3op_v<0b000111110010000>;
154*9880d681SAndroid Build Coastguard Workerclass V6_vdelta_enc : Enc_COPROC_VX_3op_v<0b000111110010001>;
155*9880d681SAndroid Build Coastguard Workerclass V6_vrdelta_enc : Enc_COPROC_VX_3op_v<0b000111110010011>;
156*9880d681SAndroid Build Coastguard Workerclass V6_vdealb4w_enc : Enc_COPROC_VX_3op_v<0b000111110010111>;
157*9880d681SAndroid Build Coastguard Workerclass V6_vmpyowh_rnd_enc : Enc_COPROC_VX_3op_v<0b000111110100000>;
158*9880d681SAndroid Build Coastguard Workerclass V6_vshuffeb_enc : Enc_COPROC_VX_3op_v<0b000111110100001>;
159*9880d681SAndroid Build Coastguard Workerclass V6_vshuffob_enc : Enc_COPROC_VX_3op_v<0b000111110100010>;
160*9880d681SAndroid Build Coastguard Workerclass V6_vshufeh_enc : Enc_COPROC_VX_3op_v<0b000111110100011>;
161*9880d681SAndroid Build Coastguard Workerclass V6_vshufoh_enc : Enc_COPROC_VX_3op_v<0b000111110100100>;
162*9880d681SAndroid Build Coastguard Workerclass V6_vshufoeh_enc : Enc_COPROC_VX_3op_v<0b000111110100101>;
163*9880d681SAndroid Build Coastguard Workerclass V6_vshufoeb_enc : Enc_COPROC_VX_3op_v<0b000111110100110>;
164*9880d681SAndroid Build Coastguard Workerclass V6_vcombine_enc : Enc_COPROC_VX_3op_v<0b000111110100111>;
165*9880d681SAndroid Build Coastguard Workerclass V6_vmpyieoh_enc : Enc_COPROC_VX_3op_v<0b000111110110000>;
166*9880d681SAndroid Build Coastguard Workerclass V6_vsathub_enc : Enc_COPROC_VX_3op_v<0b000111110110010>;
167*9880d681SAndroid Build Coastguard Workerclass V6_vsatwh_enc : Enc_COPROC_VX_3op_v<0b000111110110011>;
168*9880d681SAndroid Build Coastguard Workerclass V6_vroundwh_enc : Enc_COPROC_VX_3op_v<0b000111110110100>;
169*9880d681SAndroid Build Coastguard Workerclass V6_vroundwuh_enc : Enc_COPROC_VX_3op_v<0b000111110110101>;
170*9880d681SAndroid Build Coastguard Workerclass V6_vroundhb_enc : Enc_COPROC_VX_3op_v<0b000111110110110>;
171*9880d681SAndroid Build Coastguard Workerclass V6_vroundhub_enc : Enc_COPROC_VX_3op_v<0b000111110110111>;
172*9880d681SAndroid Build Coastguard Workerclass V6_vasrwv_enc : Enc_COPROC_VX_3op_v<0b000111111010000>;
173*9880d681SAndroid Build Coastguard Workerclass V6_vlsrwv_enc : Enc_COPROC_VX_3op_v<0b000111111010001>;
174*9880d681SAndroid Build Coastguard Workerclass V6_vlsrhv_enc : Enc_COPROC_VX_3op_v<0b000111111010010>;
175*9880d681SAndroid Build Coastguard Workerclass V6_vasrhv_enc : Enc_COPROC_VX_3op_v<0b000111111010011>;
176*9880d681SAndroid Build Coastguard Workerclass V6_vaslwv_enc : Enc_COPROC_VX_3op_v<0b000111111010100>;
177*9880d681SAndroid Build Coastguard Workerclass V6_vaslhv_enc : Enc_COPROC_VX_3op_v<0b000111111010101>;
178*9880d681SAndroid Build Coastguard Workerclass V6_vaddb_enc : Enc_COPROC_VX_3op_v<0b000111111010110>;
179*9880d681SAndroid Build Coastguard Workerclass V6_vaddh_enc : Enc_COPROC_VX_3op_v<0b000111111010111>;
180*9880d681SAndroid Build Coastguard Workerclass V6_vmpyiewuh_enc : Enc_COPROC_VX_3op_v<0b000111111100000>;
181*9880d681SAndroid Build Coastguard Workerclass V6_vmpyiowh_enc : Enc_COPROC_VX_3op_v<0b000111111100001>;
182*9880d681SAndroid Build Coastguard Workerclass V6_vpackeb_enc : Enc_COPROC_VX_3op_v<0b000111111100010>;
183*9880d681SAndroid Build Coastguard Workerclass V6_vpackeh_enc : Enc_COPROC_VX_3op_v<0b000111111100011>;
184*9880d681SAndroid Build Coastguard Workerclass V6_vpackhub_sat_enc : Enc_COPROC_VX_3op_v<0b000111111100101>;
185*9880d681SAndroid Build Coastguard Workerclass V6_vpackhb_sat_enc : Enc_COPROC_VX_3op_v<0b000111111100110>;
186*9880d681SAndroid Build Coastguard Workerclass V6_vpackwuh_sat_enc : Enc_COPROC_VX_3op_v<0b000111111100111>;
187*9880d681SAndroid Build Coastguard Workerclass V6_vpackwh_sat_enc : Enc_COPROC_VX_3op_v<0b000111111110000>;
188*9880d681SAndroid Build Coastguard Workerclass V6_vpackob_enc : Enc_COPROC_VX_3op_v<0b000111111110001>;
189*9880d681SAndroid Build Coastguard Workerclass V6_vpackoh_enc : Enc_COPROC_VX_3op_v<0b000111111110010>;
190*9880d681SAndroid Build Coastguard Workerclass V6_vmpyewuh_enc : Enc_COPROC_VX_3op_v<0b000111111110101>;
191*9880d681SAndroid Build Coastguard Workerclass V6_vmpyowh_enc : Enc_COPROC_VX_3op_v<0b000111111110111>;
192*9880d681SAndroid Build Coastguard Workerclass V6_extractw_enc : Enc_COPROC_VX_3op_v<0b100100100000001>;
193*9880d681SAndroid Build Coastguard Workerclass M6_vabsdiffub_enc : Enc_COPROC_VX_3op_v<0b111010001010000>;
194*9880d681SAndroid Build Coastguard Workerclass M6_vabsdiffb_enc : Enc_COPROC_VX_3op_v<0b111010001110000>;
195*9880d681SAndroid Build Coastguard Worker
196*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VX_cmp<bits<13> opc> : OpcodeHexagon {
197*9880d681SAndroid Build Coastguard Worker  bits<2> dst;
198*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
199*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
200*9880d681SAndroid Build Coastguard Worker
201*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b00011, opc{12-7}, src2{4-0} };
202*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { opc{6}, src1{4-0}, opc{5-0}, dst{1-0} };
203*9880d681SAndroid Build Coastguard Worker}
204*9880d681SAndroid Build Coastguard Worker
205*9880d681SAndroid Build Coastguard Workerclass V6_vandvrt_acc_enc : Enc_COPROC_VX_cmp<0b0010111100000>;
206*9880d681SAndroid Build Coastguard Workerclass V6_vandvrt_enc : Enc_COPROC_VX_cmp<0b0011010010010>;
207*9880d681SAndroid Build Coastguard Workerclass V6_veqb_and_enc : Enc_COPROC_VX_cmp<0b1001001000000>;
208*9880d681SAndroid Build Coastguard Workerclass V6_veqh_and_enc : Enc_COPROC_VX_cmp<0b1001001000001>;
209*9880d681SAndroid Build Coastguard Workerclass V6_veqw_and_enc : Enc_COPROC_VX_cmp<0b1001001000010>;
210*9880d681SAndroid Build Coastguard Workerclass V6_vgtb_and_enc : Enc_COPROC_VX_cmp<0b1001001000100>;
211*9880d681SAndroid Build Coastguard Workerclass V6_vgth_and_enc : Enc_COPROC_VX_cmp<0b1001001000101>;
212*9880d681SAndroid Build Coastguard Workerclass V6_vgtw_and_enc : Enc_COPROC_VX_cmp<0b1001001000110>;
213*9880d681SAndroid Build Coastguard Workerclass V6_vgtub_and_enc : Enc_COPROC_VX_cmp<0b1001001001000>;
214*9880d681SAndroid Build Coastguard Workerclass V6_vgtuh_and_enc : Enc_COPROC_VX_cmp<0b1001001001001>;
215*9880d681SAndroid Build Coastguard Workerclass V6_vgtuw_and_enc : Enc_COPROC_VX_cmp<0b1001001001010>;
216*9880d681SAndroid Build Coastguard Workerclass V6_veqb_or_enc : Enc_COPROC_VX_cmp<0b1001001010000>;
217*9880d681SAndroid Build Coastguard Workerclass V6_veqh_or_enc : Enc_COPROC_VX_cmp<0b1001001010001>;
218*9880d681SAndroid Build Coastguard Workerclass V6_veqw_or_enc : Enc_COPROC_VX_cmp<0b1001001010010>;
219*9880d681SAndroid Build Coastguard Workerclass V6_vgtb_or_enc : Enc_COPROC_VX_cmp<0b1001001010100>;
220*9880d681SAndroid Build Coastguard Workerclass V6_vgth_or_enc : Enc_COPROC_VX_cmp<0b1001001010101>;
221*9880d681SAndroid Build Coastguard Workerclass V6_vgtw_or_enc : Enc_COPROC_VX_cmp<0b1001001010110>;
222*9880d681SAndroid Build Coastguard Workerclass V6_vgtub_or_enc : Enc_COPROC_VX_cmp<0b1001001011000>;
223*9880d681SAndroid Build Coastguard Workerclass V6_vgtuh_or_enc : Enc_COPROC_VX_cmp<0b1001001011001>;
224*9880d681SAndroid Build Coastguard Workerclass V6_vgtuw_or_enc : Enc_COPROC_VX_cmp<0b1001001011010>;
225*9880d681SAndroid Build Coastguard Workerclass V6_veqb_xor_enc : Enc_COPROC_VX_cmp<0b1001001100000>;
226*9880d681SAndroid Build Coastguard Workerclass V6_veqh_xor_enc : Enc_COPROC_VX_cmp<0b1001001100001>;
227*9880d681SAndroid Build Coastguard Workerclass V6_veqw_xor_enc : Enc_COPROC_VX_cmp<0b1001001100010>;
228*9880d681SAndroid Build Coastguard Workerclass V6_vgtb_xor_enc : Enc_COPROC_VX_cmp<0b1001001100100>;
229*9880d681SAndroid Build Coastguard Workerclass V6_vgth_xor_enc : Enc_COPROC_VX_cmp<0b1001001100101>;
230*9880d681SAndroid Build Coastguard Workerclass V6_vgtw_xor_enc : Enc_COPROC_VX_cmp<0b1001001100110>;
231*9880d681SAndroid Build Coastguard Workerclass V6_vgtub_xor_enc : Enc_COPROC_VX_cmp<0b1001001101000>;
232*9880d681SAndroid Build Coastguard Workerclass V6_vgtuh_xor_enc : Enc_COPROC_VX_cmp<0b1001001101001>;
233*9880d681SAndroid Build Coastguard Workerclass V6_vgtuw_xor_enc : Enc_COPROC_VX_cmp<0b1001001101010>;
234*9880d681SAndroid Build Coastguard Workerclass V6_veqb_enc : Enc_COPROC_VX_cmp<0b1111000000000>;
235*9880d681SAndroid Build Coastguard Workerclass V6_veqh_enc : Enc_COPROC_VX_cmp<0b1111000000001>;
236*9880d681SAndroid Build Coastguard Workerclass V6_veqw_enc : Enc_COPROC_VX_cmp<0b1111000000010>;
237*9880d681SAndroid Build Coastguard Workerclass V6_vgtb_enc : Enc_COPROC_VX_cmp<0b1111000000100>;
238*9880d681SAndroid Build Coastguard Workerclass V6_vgth_enc : Enc_COPROC_VX_cmp<0b1111000000101>;
239*9880d681SAndroid Build Coastguard Workerclass V6_vgtw_enc : Enc_COPROC_VX_cmp<0b1111000000110>;
240*9880d681SAndroid Build Coastguard Workerclass V6_vgtub_enc : Enc_COPROC_VX_cmp<0b1111000001000>;
241*9880d681SAndroid Build Coastguard Workerclass V6_vgtuh_enc : Enc_COPROC_VX_cmp<0b1111000001001>;
242*9880d681SAndroid Build Coastguard Workerclass V6_vgtuw_enc : Enc_COPROC_VX_cmp<0b1111000001010>;
243*9880d681SAndroid Build Coastguard Worker
244*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VX_p2op<bits<5> opc> : OpcodeHexagon {
245*9880d681SAndroid Build Coastguard Worker  bits<2> src1;
246*9880d681SAndroid Build Coastguard Worker  bits<5> dst;
247*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
248*9880d681SAndroid Build Coastguard Worker
249*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b00011110, src1{1-0}, 0b0000, opc{4-3} };
250*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { 1, src2{4-0}, opc{2-0}, dst{4-0} };
251*9880d681SAndroid Build Coastguard Worker}
252*9880d681SAndroid Build Coastguard Worker
253*9880d681SAndroid Build Coastguard Workerclass V6_vaddbq_enc : Enc_COPROC_VX_p2op<0b01000>;
254*9880d681SAndroid Build Coastguard Workerclass V6_vaddhq_enc : Enc_COPROC_VX_p2op<0b01001>;
255*9880d681SAndroid Build Coastguard Workerclass V6_vaddwq_enc : Enc_COPROC_VX_p2op<0b01010>;
256*9880d681SAndroid Build Coastguard Workerclass V6_vaddbnq_enc : Enc_COPROC_VX_p2op<0b01011>;
257*9880d681SAndroid Build Coastguard Workerclass V6_vaddhnq_enc : Enc_COPROC_VX_p2op<0b01100>;
258*9880d681SAndroid Build Coastguard Workerclass V6_vaddwnq_enc : Enc_COPROC_VX_p2op<0b01101>;
259*9880d681SAndroid Build Coastguard Workerclass V6_vsubbq_enc : Enc_COPROC_VX_p2op<0b01110>;
260*9880d681SAndroid Build Coastguard Workerclass V6_vsubhq_enc : Enc_COPROC_VX_p2op<0b01111>;
261*9880d681SAndroid Build Coastguard Workerclass V6_vsubwq_enc : Enc_COPROC_VX_p2op<0b10000>;
262*9880d681SAndroid Build Coastguard Workerclass V6_vsubbnq_enc : Enc_COPROC_VX_p2op<0b10001>;
263*9880d681SAndroid Build Coastguard Workerclass V6_vsubhnq_enc : Enc_COPROC_VX_p2op<0b10010>;
264*9880d681SAndroid Build Coastguard Workerclass V6_vsubwnq_enc : Enc_COPROC_VX_p2op<0b10011>;
265*9880d681SAndroid Build Coastguard Worker
266*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VX_2op<bits<6> opc> : OpcodeHexagon {
267*9880d681SAndroid Build Coastguard Worker  bits<5> dst;
268*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
269*9880d681SAndroid Build Coastguard Worker
270*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b00011110000000, opc{5-4} };
271*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { opc{3}, src1{4-0}, opc{2-0}, dst{4-0} };
272*9880d681SAndroid Build Coastguard Worker}
273*9880d681SAndroid Build Coastguard Worker
274*9880d681SAndroid Build Coastguard Workerclass V6_vabsh_enc : Enc_COPROC_VX_2op<0b000000>;
275*9880d681SAndroid Build Coastguard Workerclass V6_vabsh_sat_enc : Enc_COPROC_VX_2op<0b000001>;
276*9880d681SAndroid Build Coastguard Workerclass V6_vabsw_enc : Enc_COPROC_VX_2op<0b000010>;
277*9880d681SAndroid Build Coastguard Workerclass V6_vabsw_sat_enc : Enc_COPROC_VX_2op<0b000011>;
278*9880d681SAndroid Build Coastguard Workerclass V6_vnot_enc : Enc_COPROC_VX_2op<0b000100>;
279*9880d681SAndroid Build Coastguard Workerclass V6_vdealh_enc : Enc_COPROC_VX_2op<0b000110>;
280*9880d681SAndroid Build Coastguard Workerclass V6_vdealb_enc : Enc_COPROC_VX_2op<0b000111>;
281*9880d681SAndroid Build Coastguard Workerclass V6_vunpackob_enc : Enc_COPROC_VX_2op<0b001000>;
282*9880d681SAndroid Build Coastguard Workerclass V6_vunpackoh_enc : Enc_COPROC_VX_2op<0b001001>;
283*9880d681SAndroid Build Coastguard Workerclass V6_vunpackub_enc : Enc_COPROC_VX_2op<0b010000>;
284*9880d681SAndroid Build Coastguard Workerclass V6_vunpackuh_enc : Enc_COPROC_VX_2op<0b010001>;
285*9880d681SAndroid Build Coastguard Workerclass V6_vunpackb_enc : Enc_COPROC_VX_2op<0b010010>;
286*9880d681SAndroid Build Coastguard Workerclass V6_vunpackh_enc : Enc_COPROC_VX_2op<0b010011>;
287*9880d681SAndroid Build Coastguard Workerclass V6_vshuffh_enc : Enc_COPROC_VX_2op<0b010111>;
288*9880d681SAndroid Build Coastguard Workerclass V6_vshuffb_enc : Enc_COPROC_VX_2op<0b100000>;
289*9880d681SAndroid Build Coastguard Workerclass V6_vzb_enc : Enc_COPROC_VX_2op<0b100001>;
290*9880d681SAndroid Build Coastguard Workerclass V6_vzh_enc : Enc_COPROC_VX_2op<0b100010>;
291*9880d681SAndroid Build Coastguard Workerclass V6_vsb_enc : Enc_COPROC_VX_2op<0b100011>;
292*9880d681SAndroid Build Coastguard Workerclass V6_vsh_enc : Enc_COPROC_VX_2op<0b100100>;
293*9880d681SAndroid Build Coastguard Workerclass V6_vcl0w_enc : Enc_COPROC_VX_2op<0b100101>;
294*9880d681SAndroid Build Coastguard Workerclass V6_vpopcounth_enc : Enc_COPROC_VX_2op<0b100110>;
295*9880d681SAndroid Build Coastguard Workerclass V6_vcl0h_enc : Enc_COPROC_VX_2op<0b100111>;
296*9880d681SAndroid Build Coastguard Workerclass V6_vnormamtw_enc : Enc_COPROC_VX_2op<0b110100>;
297*9880d681SAndroid Build Coastguard Workerclass V6_vnormamth_enc : Enc_COPROC_VX_2op<0b110101>;
298*9880d681SAndroid Build Coastguard Workerclass V6_vassign_enc : Enc_COPROC_VX_2op<0b111111>;
299*9880d681SAndroid Build Coastguard Worker
300*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vL32_b_ai<bits<4> opc> : OpcodeHexagon {
301*9880d681SAndroid Build Coastguard Worker  bits<5> dst;
302*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
303*9880d681SAndroid Build Coastguard Worker  bits<10> src2;
304*9880d681SAndroid Build Coastguard Worker  bits<4> src2_vector;
305*9880d681SAndroid Build Coastguard Worker
306*9880d681SAndroid Build Coastguard Worker  let src2_vector = src2{9-6};
307*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010000, opc{3}, 0, src1{4-0} };
308*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { src2_vector{3}, 0b00, src2_vector{2-0}, opc{2-0}, dst{4-0} };
309*9880d681SAndroid Build Coastguard Worker}
310*9880d681SAndroid Build Coastguard Worker
311*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_ai_enc : Enc_COPROC_VMEM_vL32_b_ai<0b0000>;
312*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_cur_ai_enc : Enc_COPROC_VMEM_vL32_b_ai<0b0001>;
313*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_tmp_ai_enc : Enc_COPROC_VMEM_vL32_b_ai<0b0010>;
314*9880d681SAndroid Build Coastguard Workerclass V6_vL32Ub_ai_enc : Enc_COPROC_VMEM_vL32_b_ai<0b0111>;
315*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_nt_ai_enc : Enc_COPROC_VMEM_vL32_b_ai<0b1000>;
316*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_nt_cur_ai_enc : Enc_COPROC_VMEM_vL32_b_ai<0b1001>;
317*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_nt_tmp_ai_enc : Enc_COPROC_VMEM_vL32_b_ai<0b1010>;
318*9880d681SAndroid Build Coastguard Worker
319*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vL32_b_ai_128B<bits<4> opc> : OpcodeHexagon {
320*9880d681SAndroid Build Coastguard Worker  bits<5> dst;
321*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
322*9880d681SAndroid Build Coastguard Worker  bits<11> src2;
323*9880d681SAndroid Build Coastguard Worker  bits<4> src2_vector;
324*9880d681SAndroid Build Coastguard Worker
325*9880d681SAndroid Build Coastguard Worker  let src2_vector = src2{10-7};
326*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010000, opc{3}, 0, src1{4-0} };
327*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { src2_vector{3}, 0b00, src2_vector{2-0}, opc{2-0}, dst{4-0} };
328*9880d681SAndroid Build Coastguard Worker}
329*9880d681SAndroid Build Coastguard Worker
330*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_ai_128B_enc : Enc_COPROC_VMEM_vL32_b_ai_128B<0b0000>;
331*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_cur_ai_128B_enc : Enc_COPROC_VMEM_vL32_b_ai_128B<0b0001>;
332*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_tmp_ai_128B_enc : Enc_COPROC_VMEM_vL32_b_ai_128B<0b0010>;
333*9880d681SAndroid Build Coastguard Workerclass V6_vL32Ub_ai_128B_enc : Enc_COPROC_VMEM_vL32_b_ai_128B<0b0111>;
334*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_nt_ai_128B_enc : Enc_COPROC_VMEM_vL32_b_ai_128B<0b1000>;
335*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_nt_cur_ai_128B_enc : Enc_COPROC_VMEM_vL32_b_ai_128B<0b1001>;
336*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_nt_tmp_ai_128B_enc : Enc_COPROC_VMEM_vL32_b_ai_128B<0b1010>;
337*9880d681SAndroid Build Coastguard Worker
338*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vS32_b_ai_64B<bits<4> opc> : OpcodeHexagon {
339*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
340*9880d681SAndroid Build Coastguard Worker  bits<10> src2;
341*9880d681SAndroid Build Coastguard Worker  bits<4> src2_vector;
342*9880d681SAndroid Build Coastguard Worker  bits<5> src3;
343*9880d681SAndroid Build Coastguard Worker
344*9880d681SAndroid Build Coastguard Worker  let src2_vector = src2{9-6};
345*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010000, opc{3}, 1, src1{4-0} };
346*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { src2_vector{3}, 0b00, src2_vector{2-0}, opc{2-0}, src3{4-0} };
347*9880d681SAndroid Build Coastguard Worker}
348*9880d681SAndroid Build Coastguard Worker
349*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vS32_b_ai_128B<bits<4> opc> : OpcodeHexagon {
350*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
351*9880d681SAndroid Build Coastguard Worker  bits<11> src2;
352*9880d681SAndroid Build Coastguard Worker  bits<4> src2_vector;
353*9880d681SAndroid Build Coastguard Worker  bits<5> src3;
354*9880d681SAndroid Build Coastguard Worker
355*9880d681SAndroid Build Coastguard Worker  let src2_vector = src2{10-7};
356*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010000, opc{3}, 1, src1{4-0} };
357*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { src2_vector{3}, 0b00, src2_vector{2-0}, opc{2-0}, src3{4-0} };
358*9880d681SAndroid Build Coastguard Worker}
359*9880d681SAndroid Build Coastguard Worker
360*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_ai_enc : Enc_COPROC_VMEM_vS32_b_ai_64B<0b0000>;
361*9880d681SAndroid Build Coastguard Workerclass V6_vS32Ub_ai_enc : Enc_COPROC_VMEM_vS32_b_ai_64B<0b0111>;
362*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_ai_enc : Enc_COPROC_VMEM_vS32_b_ai_64B<0b1000>;
363*9880d681SAndroid Build Coastguard Worker
364*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_ai_128B<0b0000>;
365*9880d681SAndroid Build Coastguard Workerclass V6_vS32Ub_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_ai_128B<0b0111>;
366*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_ai_128B<0b1000>;
367*9880d681SAndroid Build Coastguard Worker
368*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vS32b_n_ew_ai_64B<bits<1> opc> : OpcodeHexagon {
369*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
370*9880d681SAndroid Build Coastguard Worker  bits<10> src2;
371*9880d681SAndroid Build Coastguard Worker  bits<4> src2_vector;
372*9880d681SAndroid Build Coastguard Worker  bits<3> src3;
373*9880d681SAndroid Build Coastguard Worker
374*9880d681SAndroid Build Coastguard Worker  let src2_vector = src2{9-6};
375*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010000, opc{0}, 1, src1{4-0} };
376*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { src2_vector{3}, 0b00, src2_vector{2-0}, 0b00100, src3{2-0} };
377*9880d681SAndroid Build Coastguard Worker}
378*9880d681SAndroid Build Coastguard Worker
379*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_new_ai_enc : Enc_COPROC_VMEM_vS32b_n_ew_ai_64B<0>;
380*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_new_ai_enc : Enc_COPROC_VMEM_vS32b_n_ew_ai_64B<1>;
381*9880d681SAndroid Build Coastguard Worker
382*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vS32b_n_ew_ai_128B<bits<1> opc> : OpcodeHexagon {
383*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
384*9880d681SAndroid Build Coastguard Worker  bits<11> src2;
385*9880d681SAndroid Build Coastguard Worker  bits<4> src2_vector;
386*9880d681SAndroid Build Coastguard Worker  bits<3> src3;
387*9880d681SAndroid Build Coastguard Worker
388*9880d681SAndroid Build Coastguard Worker  let src2_vector = src2{10-7};
389*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010000, opc{0}, 1, src1{4-0} };
390*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { src2_vector{3}, 0b00, src2_vector{2-0}, 0b00100, src3{2-0} };
391*9880d681SAndroid Build Coastguard Worker}
392*9880d681SAndroid Build Coastguard Worker
393*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_new_ai_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_ai_128B<0>;
394*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_new_ai_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_ai_128B<1>;
395*9880d681SAndroid Build Coastguard Worker
396*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vS32_b_pred_ai<bits<5> opc> : OpcodeHexagon {
397*9880d681SAndroid Build Coastguard Worker  bits<2> src1;
398*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
399*9880d681SAndroid Build Coastguard Worker  bits<10> src3;
400*9880d681SAndroid Build Coastguard Worker  bits<4> src3_vector;
401*9880d681SAndroid Build Coastguard Worker  bits<5> src4;
402*9880d681SAndroid Build Coastguard Worker
403*9880d681SAndroid Build Coastguard Worker  let src3_vector = src3{9-6};
404*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010001, opc{4-3}, src2{4-0} };
405*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { src3_vector{3}, src1{1-0}, src3_vector{2-0}, opc{2-0}, src4{4-0} };
406*9880d681SAndroid Build Coastguard Worker}
407*9880d681SAndroid Build Coastguard Worker
408*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vS32_b_pred_ai_128B<bits<5> opc> : OpcodeHexagon {
409*9880d681SAndroid Build Coastguard Worker  bits<2> src1;
410*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
411*9880d681SAndroid Build Coastguard Worker  bits<11> src3;
412*9880d681SAndroid Build Coastguard Worker  bits<4> src3_vector;
413*9880d681SAndroid Build Coastguard Worker  bits<5> src4;
414*9880d681SAndroid Build Coastguard Worker
415*9880d681SAndroid Build Coastguard Worker  let src3_vector = src3{10-7};
416*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010001, opc{4-3}, src2{4-0} };
417*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { src3_vector{3}, src1{1-0}, src3_vector{2-0}, opc{2-0}, src4{4-0} };
418*9880d681SAndroid Build Coastguard Worker}
419*9880d681SAndroid Build Coastguard Worker
420*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_qpred_ai_enc : Enc_COPROC_VMEM_vS32_b_pred_ai<0b00000>;
421*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nqpred_ai_enc : Enc_COPROC_VMEM_vS32_b_pred_ai<0b00001>;
422*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_pred_ai_enc : Enc_COPROC_VMEM_vS32_b_pred_ai<0b01000>;
423*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_npred_ai_enc : Enc_COPROC_VMEM_vS32_b_pred_ai<0b01001>;
424*9880d681SAndroid Build Coastguard Workerclass V6_vS32Ub_pred_ai_enc : Enc_COPROC_VMEM_vS32_b_pred_ai<0b01110>;
425*9880d681SAndroid Build Coastguard Workerclass V6_vS32Ub_npred_ai_enc : Enc_COPROC_VMEM_vS32_b_pred_ai<0b01111>;
426*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_qpred_ai_enc : Enc_COPROC_VMEM_vS32_b_pred_ai<0b10000>;
427*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_nqpred_ai_enc : Enc_COPROC_VMEM_vS32_b_pred_ai<0b10001>;
428*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_pred_ai_enc : Enc_COPROC_VMEM_vS32_b_pred_ai<0b11000>;
429*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_npred_ai_enc : Enc_COPROC_VMEM_vS32_b_pred_ai<0b11001>;
430*9880d681SAndroid Build Coastguard Worker
431*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_qpred_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_ai_128B<0b00000>;
432*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nqpred_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_ai_128B<0b00001>;
433*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_pred_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_ai_128B<0b01000>;
434*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_npred_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_ai_128B<0b01001>;
435*9880d681SAndroid Build Coastguard Workerclass V6_vS32Ub_pred_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_ai_128B<0b01110>;
436*9880d681SAndroid Build Coastguard Workerclass V6_vS32Ub_npred_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_ai_128B<0b01111>;
437*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_qpred_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_ai_128B<0b10000>;
438*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_nqpred_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_ai_128B<0b10001>;
439*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_pred_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_ai_128B<0b11000>;
440*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_npred_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_ai_128B<0b11001>;
441*9880d681SAndroid Build Coastguard Worker
442*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vS32b_n_ew_pred_ai<bits<4> opc> : OpcodeHexagon {
443*9880d681SAndroid Build Coastguard Worker  bits<2> src1;
444*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
445*9880d681SAndroid Build Coastguard Worker  bits<10> src3;
446*9880d681SAndroid Build Coastguard Worker  bits<4> src3_vector;
447*9880d681SAndroid Build Coastguard Worker  bits<3> src4;
448*9880d681SAndroid Build Coastguard Worker
449*9880d681SAndroid Build Coastguard Worker  let src3_vector = src3{9-6};
450*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010001, opc{3}, 1, src2{4-0} };
451*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { src3_vector{3}, src1{1-0}, src3_vector{2-0}, 0b01, opc{2-0}, src4{2-0} };
452*9880d681SAndroid Build Coastguard Worker}
453*9880d681SAndroid Build Coastguard Worker
454*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_new_pred_ai_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ai<0b0000>;
455*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_new_npred_ai_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ai<0b0101>;
456*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_new_pred_ai_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ai<0b1010>;
457*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_new_npred_ai_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ai<0b1111>;
458*9880d681SAndroid Build Coastguard Worker
459*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vS32b_n_ew_pred_ai_128B<bits<4> opc> : OpcodeHexagon {
460*9880d681SAndroid Build Coastguard Worker  bits<2> src1;
461*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
462*9880d681SAndroid Build Coastguard Worker  bits<11> src3;
463*9880d681SAndroid Build Coastguard Worker  bits<4> src3_vector;
464*9880d681SAndroid Build Coastguard Worker  bits<3> src4;
465*9880d681SAndroid Build Coastguard Worker
466*9880d681SAndroid Build Coastguard Worker  let src3_vector = src3{10-7};
467*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010001, opc{3}, 1, src2{4-0} };
468*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { src3_vector{3}, src1{1-0}, src3_vector{2-0}, 0b01, opc{2-0}, src4{2-0} };
469*9880d681SAndroid Build Coastguard Worker}
470*9880d681SAndroid Build Coastguard Worker
471*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_new_pred_ai_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ai_128B<0b0000>;
472*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_new_npred_ai_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ai_128B<0b0101>;
473*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_new_pred_ai_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ai_128B<0b1010>;
474*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_new_npred_ai_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ai_128B<0b1111>;
475*9880d681SAndroid Build Coastguard Worker
476*9880d681SAndroid Build Coastguard Worker// TODO: Change script to generate dst, src1, src2 instead of
477*9880d681SAndroid Build Coastguard Worker// dst, dst2, src1.
478*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vL32_b_pi<bits<4> opc> : OpcodeHexagon {
479*9880d681SAndroid Build Coastguard Worker  bits<5> dst;
480*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
481*9880d681SAndroid Build Coastguard Worker  bits<9> src2;
482*9880d681SAndroid Build Coastguard Worker  bits<3> src2_vector;
483*9880d681SAndroid Build Coastguard Worker
484*9880d681SAndroid Build Coastguard Worker  let src2_vector = src2{8-6};
485*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010010, opc{3}, 0, src1{4-0} };
486*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { 0b000, src2_vector{2-0}, opc{2-0}, dst{4-0} };
487*9880d681SAndroid Build Coastguard Worker}
488*9880d681SAndroid Build Coastguard Worker
489*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_pi_enc : Enc_COPROC_VMEM_vL32_b_pi<0b0000>;
490*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_cur_pi_enc : Enc_COPROC_VMEM_vL32_b_pi<0b0001>;
491*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_tmp_pi_enc : Enc_COPROC_VMEM_vL32_b_pi<0b0010>;
492*9880d681SAndroid Build Coastguard Workerclass V6_vL32Ub_pi_enc : Enc_COPROC_VMEM_vL32_b_pi<0b0111>;
493*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_nt_pi_enc : Enc_COPROC_VMEM_vL32_b_pi<0b1000>;
494*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_nt_cur_pi_enc : Enc_COPROC_VMEM_vL32_b_pi<0b1001>;
495*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_nt_tmp_pi_enc : Enc_COPROC_VMEM_vL32_b_pi<0b1010>;
496*9880d681SAndroid Build Coastguard Worker
497*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vL32_b_pi_128B<bits<4> opc> : OpcodeHexagon {
498*9880d681SAndroid Build Coastguard Worker  bits<5> dst;
499*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
500*9880d681SAndroid Build Coastguard Worker  bits<10> src2;
501*9880d681SAndroid Build Coastguard Worker  bits<3> src2_vector;
502*9880d681SAndroid Build Coastguard Worker
503*9880d681SAndroid Build Coastguard Worker  let src2_vector = src2{9-7};
504*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010010, opc{3}, 0, src1{4-0} };
505*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { 0b000, src2_vector{2-0}, opc{2-0}, dst{4-0} };
506*9880d681SAndroid Build Coastguard Worker}
507*9880d681SAndroid Build Coastguard Worker
508*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_pi_128B_enc : Enc_COPROC_VMEM_vL32_b_pi_128B<0b0000>;
509*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_cur_pi_128B_enc : Enc_COPROC_VMEM_vL32_b_pi_128B<0b0001>;
510*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_tmp_pi_128B_enc : Enc_COPROC_VMEM_vL32_b_pi_128B<0b0010>;
511*9880d681SAndroid Build Coastguard Workerclass V6_vL32Ub_pi_128B_enc : Enc_COPROC_VMEM_vL32_b_pi_128B<0b0111>;
512*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_nt_pi_128B_enc : Enc_COPROC_VMEM_vL32_b_pi_128B<0b1000>;
513*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_nt_cur_pi_128B_enc : Enc_COPROC_VMEM_vL32_b_pi_128B<0b1001>;
514*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_nt_tmp_pi_128B_enc : Enc_COPROC_VMEM_vL32_b_pi_128B<0b1010>;
515*9880d681SAndroid Build Coastguard Worker
516*9880d681SAndroid Build Coastguard Worker
517*9880d681SAndroid Build Coastguard Worker// TODO: Change script to generate src1, src2 and src3 instead of
518*9880d681SAndroid Build Coastguard Worker// dst, src1, src2.
519*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vS32_b_pi<bits<4> opc> : OpcodeHexagon {
520*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
521*9880d681SAndroid Build Coastguard Worker  bits<9> src2;
522*9880d681SAndroid Build Coastguard Worker  bits<3> src2_vector;
523*9880d681SAndroid Build Coastguard Worker  bits<5> src3;
524*9880d681SAndroid Build Coastguard Worker
525*9880d681SAndroid Build Coastguard Worker  let src2_vector = src2{8-6};
526*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010010, opc{3}, 1, src1{4-0} };
527*9880d681SAndroid Build Coastguard Worker  let Inst{10-0} = {src2_vector{2-0}, opc{2-0}, src3{4-0} };
528*9880d681SAndroid Build Coastguard Worker}
529*9880d681SAndroid Build Coastguard Worker
530*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_pi_enc : Enc_COPROC_VMEM_vS32_b_pi<0b0000>;
531*9880d681SAndroid Build Coastguard Workerclass V6_vS32Ub_pi_enc : Enc_COPROC_VMEM_vS32_b_pi<0b0111>;
532*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_pi_enc : Enc_COPROC_VMEM_vS32_b_pi<0b1000>;
533*9880d681SAndroid Build Coastguard Worker
534*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vS32_b_pi_128B<bits<4> opc> : OpcodeHexagon {
535*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
536*9880d681SAndroid Build Coastguard Worker  bits<10> src2;
537*9880d681SAndroid Build Coastguard Worker  bits<3> src2_vector;
538*9880d681SAndroid Build Coastguard Worker  bits<5> src3;
539*9880d681SAndroid Build Coastguard Worker
540*9880d681SAndroid Build Coastguard Worker  let src2_vector = src2{9-7};
541*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010010, opc{3}, 1, src1{4-0} };
542*9880d681SAndroid Build Coastguard Worker  let Inst{10-0} = {src2_vector{2-0}, opc{2-0}, src3{4-0} };
543*9880d681SAndroid Build Coastguard Worker}
544*9880d681SAndroid Build Coastguard Worker
545*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pi_128B<0b0000>;
546*9880d681SAndroid Build Coastguard Workerclass V6_vS32Ub_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pi_128B<0b0111>;
547*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pi_128B<0b1000>;
548*9880d681SAndroid Build Coastguard Worker
549*9880d681SAndroid Build Coastguard Worker// TODO: Change script to generate src1, src2 and src3 instead of
550*9880d681SAndroid Build Coastguard Worker// dst, src1, src2.
551*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vS32b_n_ew_pi<bits<1> opc> : OpcodeHexagon {
552*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
553*9880d681SAndroid Build Coastguard Worker  bits<9> src2;
554*9880d681SAndroid Build Coastguard Worker  bits<3> src2_vector;
555*9880d681SAndroid Build Coastguard Worker  bits<3> src3;
556*9880d681SAndroid Build Coastguard Worker
557*9880d681SAndroid Build Coastguard Worker  let src2_vector = src2{8-6};
558*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010010, opc{0}, 1, src1{4-0} };
559*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { 0b000, src2_vector{2-0}, 0b00100, src3{2-0} };
560*9880d681SAndroid Build Coastguard Worker}
561*9880d681SAndroid Build Coastguard Worker
562*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_new_pi_enc : Enc_COPROC_VMEM_vS32b_n_ew_pi<0>;
563*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_new_pi_enc : Enc_COPROC_VMEM_vS32b_n_ew_pi<1>;
564*9880d681SAndroid Build Coastguard Worker
565*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vS32b_n_ew_pi_128B<bits<1> opc> : OpcodeHexagon {
566*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
567*9880d681SAndroid Build Coastguard Worker  bits<10> src2;
568*9880d681SAndroid Build Coastguard Worker  bits<3> src2_vector;
569*9880d681SAndroid Build Coastguard Worker  bits<3> src3;
570*9880d681SAndroid Build Coastguard Worker
571*9880d681SAndroid Build Coastguard Worker  let src2_vector = src2{9-7};
572*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010010, opc{0}, 1, src1{4-0} };
573*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { 0b000, src2_vector{2-0}, 0b00100, src3{2-0} };
574*9880d681SAndroid Build Coastguard Worker}
575*9880d681SAndroid Build Coastguard Worker
576*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_new_pi_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_pi_128B<0>;
577*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_new_pi_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_pi_128B<1>;
578*9880d681SAndroid Build Coastguard Worker
579*9880d681SAndroid Build Coastguard Worker// TODO: Change script to generate src1, src2,src3 and src4 instead of
580*9880d681SAndroid Build Coastguard Worker// dst, src1, src2, src3.
581*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vS32_b_pred_pi<bits<5> opc> : OpcodeHexagon {
582*9880d681SAndroid Build Coastguard Worker  bits<2> src1;
583*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
584*9880d681SAndroid Build Coastguard Worker  bits<9> src3;
585*9880d681SAndroid Build Coastguard Worker  bits<3> src3_vector;
586*9880d681SAndroid Build Coastguard Worker  bits<5> src4;
587*9880d681SAndroid Build Coastguard Worker
588*9880d681SAndroid Build Coastguard Worker  let src3_vector = src3{8-6};
589*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010011, opc{4-3}, src2{4-0} };
590*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { 0, src1{1-0}, src3_vector{2-0}, opc{2-0}, src4{4-0} };
591*9880d681SAndroid Build Coastguard Worker}
592*9880d681SAndroid Build Coastguard Worker
593*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_qpred_pi_enc : Enc_COPROC_VMEM_vS32_b_pred_pi<0b00000>;
594*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nqpred_pi_enc : Enc_COPROC_VMEM_vS32_b_pred_pi<0b00001>;
595*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_pred_pi_enc : Enc_COPROC_VMEM_vS32_b_pred_pi<0b01000>;
596*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_npred_pi_enc : Enc_COPROC_VMEM_vS32_b_pred_pi<0b01001>;
597*9880d681SAndroid Build Coastguard Workerclass V6_vS32Ub_pred_pi_enc : Enc_COPROC_VMEM_vS32_b_pred_pi<0b01110>;
598*9880d681SAndroid Build Coastguard Workerclass V6_vS32Ub_npred_pi_enc : Enc_COPROC_VMEM_vS32_b_pred_pi<0b01111>;
599*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_qpred_pi_enc : Enc_COPROC_VMEM_vS32_b_pred_pi<0b10000>;
600*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_nqpred_pi_enc : Enc_COPROC_VMEM_vS32_b_pred_pi<0b10001>;
601*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_pred_pi_enc : Enc_COPROC_VMEM_vS32_b_pred_pi<0b11000>;
602*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_npred_pi_enc : Enc_COPROC_VMEM_vS32_b_pred_pi<0b11001>;
603*9880d681SAndroid Build Coastguard Worker
604*9880d681SAndroid Build Coastguard Worker// TODO: Change script to generate src1, src2,src3 and src4 instead of
605*9880d681SAndroid Build Coastguard Worker// dst, src1, src2, src3.
606*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vS32_b_pred_pi_128B<bits<5> opc> : OpcodeHexagon {
607*9880d681SAndroid Build Coastguard Worker  bits<2> src1;
608*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
609*9880d681SAndroid Build Coastguard Worker  bits<10> src3;
610*9880d681SAndroid Build Coastguard Worker  bits<3> src3_vector;
611*9880d681SAndroid Build Coastguard Worker  bits<5> src4;
612*9880d681SAndroid Build Coastguard Worker
613*9880d681SAndroid Build Coastguard Worker  let src3_vector = src3{9-7};
614*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010011, opc{4-3}, src2{4-0} };
615*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { 0, src1{1-0}, src3_vector{2-0}, opc{2-0}, src4{4-0} };
616*9880d681SAndroid Build Coastguard Worker}
617*9880d681SAndroid Build Coastguard Worker
618*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_qpred_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_pi_128B<0b00000>;
619*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nqpred_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_pi_128B<0b00001>;
620*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_pred_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_pi_128B<0b01000>;
621*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_npred_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_pi_128B<0b01001>;
622*9880d681SAndroid Build Coastguard Workerclass V6_vS32Ub_pred_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_pi_128B<0b01110>;
623*9880d681SAndroid Build Coastguard Workerclass V6_vS32Ub_npred_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_pi_128B<0b01111>;
624*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_qpred_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_pi_128B<0b10000>;
625*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_nqpred_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_pi_128B<0b10001>;
626*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_pred_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_pi_128B<0b11000>;
627*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_npred_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_pi_128B<0b11001>;
628*9880d681SAndroid Build Coastguard Worker
629*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vS32b_n_ew_pred_pi<bits<4> opc> : OpcodeHexagon {
630*9880d681SAndroid Build Coastguard Worker  bits<2> src1;
631*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
632*9880d681SAndroid Build Coastguard Worker  bits<9> src3;
633*9880d681SAndroid Build Coastguard Worker  bits<3> src3_vector;
634*9880d681SAndroid Build Coastguard Worker  bits<3> src4;
635*9880d681SAndroid Build Coastguard Worker
636*9880d681SAndroid Build Coastguard Worker  let src3_vector = src3{8-6};
637*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010011, opc{3}, 1, src2{4-0} };
638*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { 0, src1{1-0}, src3_vector{2-0}, 0b01, opc{2-0}, src4{2-0} };
639*9880d681SAndroid Build Coastguard Worker}
640*9880d681SAndroid Build Coastguard Worker
641*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_new_pred_pi_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_pi<0b0000>;
642*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_new_npred_pi_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_pi<0b0101>;
643*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_new_pred_pi_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_pi<0b1010>;
644*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_new_npred_pi_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_pi<0b1111>;
645*9880d681SAndroid Build Coastguard Worker
646*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vS32b_n_ew_pred_pi_128B<bits<4> opc> : OpcodeHexagon {
647*9880d681SAndroid Build Coastguard Worker  bits<2> src1;
648*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
649*9880d681SAndroid Build Coastguard Worker  bits<10> src3;
650*9880d681SAndroid Build Coastguard Worker  bits<3> src3_vector;
651*9880d681SAndroid Build Coastguard Worker  bits<3> src4;
652*9880d681SAndroid Build Coastguard Worker
653*9880d681SAndroid Build Coastguard Worker  let src3_vector = src3{9-7};
654*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010011, opc{3}, 1, src2{4-0} };
655*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { 0, src1{1-0}, src3_vector{2-0}, 0b01, opc{2-0}, src4{2-0} };
656*9880d681SAndroid Build Coastguard Worker}
657*9880d681SAndroid Build Coastguard Worker
658*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_new_pred_pi_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_pi_128B<0b0000>;
659*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_new_npred_pi_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_pi_128B<0b0101>;
660*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_new_pred_pi_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_pi_128B<0b1010>;
661*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_new_npred_pi_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_pi_128B<0b1111>;
662*9880d681SAndroid Build Coastguard Worker
663*9880d681SAndroid Build Coastguard Workerclass Enc_LD_load_m<bits<13> opc> : OpcodeHexagon {
664*9880d681SAndroid Build Coastguard Worker  bits<5> dst;
665*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
666*9880d681SAndroid Build Coastguard Worker  bits<1> src2;
667*9880d681SAndroid Build Coastguard Worker
668*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { opc{12}, 0, opc{11-10}, 1, opc{9-4}, src1{4-0} };
669*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { src2{0}, 0b000, opc{3}, 0, opc{2-0}, dst{4-0} };
670*9880d681SAndroid Build Coastguard Worker}
671*9880d681SAndroid Build Coastguard Worker
672*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_ppu_enc : Enc_LD_load_m<0b0100110000000>;
673*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_cur_ppu_enc : Enc_LD_load_m<0b0100110000001>;
674*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_tmp_ppu_enc : Enc_LD_load_m<0b0100110000010>;
675*9880d681SAndroid Build Coastguard Workerclass V6_vL32Ub_ppu_enc : Enc_LD_load_m<0b0100110000111>;
676*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_nt_ppu_enc : Enc_LD_load_m<0b0100110100000>;
677*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_nt_cur_ppu_enc : Enc_LD_load_m<0b0100110100001>;
678*9880d681SAndroid Build Coastguard Workerclass V6_vL32b_nt_tmp_ppu_enc : Enc_LD_load_m<0b0100110100010>;
679*9880d681SAndroid Build Coastguard Worker
680*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vS32_b_ppu<bits<4> opc> : OpcodeHexagon {
681*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
682*9880d681SAndroid Build Coastguard Worker  bits<1> src2;
683*9880d681SAndroid Build Coastguard Worker  bits<5> src3;
684*9880d681SAndroid Build Coastguard Worker
685*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010110, opc{3}, 1, src1{4-0} };
686*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { src2{0}, 0b00000, opc{2-0}, src3{4-0} };
687*9880d681SAndroid Build Coastguard Worker}
688*9880d681SAndroid Build Coastguard Worker
689*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_ppu_enc : Enc_COPROC_VMEM_vS32_b_ppu<0b0000>;
690*9880d681SAndroid Build Coastguard Workerclass V6_vS32Ub_ppu_enc : Enc_COPROC_VMEM_vS32_b_ppu<0b0111>;
691*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_ppu_enc : Enc_COPROC_VMEM_vS32_b_ppu<0b1000>;
692*9880d681SAndroid Build Coastguard Worker
693*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vS32b_new_ppu<bits<1> opc> : OpcodeHexagon {
694*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
695*9880d681SAndroid Build Coastguard Worker  bits<1> src2;
696*9880d681SAndroid Build Coastguard Worker  bits<3> src3;
697*9880d681SAndroid Build Coastguard Worker
698*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010110, opc{0}, 1, src1{4-0} };
699*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { src2{0}, 0b0000000100, src3{2-0} };
700*9880d681SAndroid Build Coastguard Worker}
701*9880d681SAndroid Build Coastguard Worker
702*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_new_ppu_enc : Enc_COPROC_VMEM_vS32b_new_ppu<0>;
703*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_new_ppu_enc : Enc_COPROC_VMEM_vS32b_new_ppu<1>;
704*9880d681SAndroid Build Coastguard Worker
705*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vS32_b_pred_ppu<bits<5> opc> : OpcodeHexagon {
706*9880d681SAndroid Build Coastguard Worker  bits<2> src1;
707*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
708*9880d681SAndroid Build Coastguard Worker  bits<1> src3;
709*9880d681SAndroid Build Coastguard Worker  bits<5> src4;
710*9880d681SAndroid Build Coastguard Worker
711*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010111, opc{4-3}, src2{4-0} };
712*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { src3{0}, src1{1-0}, 0b000, opc{2-0}, src4{4-0} };
713*9880d681SAndroid Build Coastguard Worker}
714*9880d681SAndroid Build Coastguard Worker
715*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_qpred_ppu_enc : Enc_COPROC_VMEM_vS32_b_pred_ppu<0b00000>;
716*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nqpred_ppu_enc : Enc_COPROC_VMEM_vS32_b_pred_ppu<0b00001>;
717*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_pred_ppu_enc : Enc_COPROC_VMEM_vS32_b_pred_ppu<0b01000>;
718*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_npred_ppu_enc : Enc_COPROC_VMEM_vS32_b_pred_ppu<0b01001>;
719*9880d681SAndroid Build Coastguard Workerclass V6_vS32Ub_pred_ppu_enc : Enc_COPROC_VMEM_vS32_b_pred_ppu<0b01110>;
720*9880d681SAndroid Build Coastguard Workerclass V6_vS32Ub_npred_ppu_enc : Enc_COPROC_VMEM_vS32_b_pred_ppu<0b01111>;
721*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_qpred_ppu_enc : Enc_COPROC_VMEM_vS32_b_pred_ppu<0b10000>;
722*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_nqpred_ppu_enc : Enc_COPROC_VMEM_vS32_b_pred_ppu<0b10001>;
723*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_pred_ppu_enc : Enc_COPROC_VMEM_vS32_b_pred_ppu<0b11000>;
724*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_npred_ppu_enc : Enc_COPROC_VMEM_vS32_b_pred_ppu<0b11001>;
725*9880d681SAndroid Build Coastguard Worker
726*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VMEM_vS32b_n_ew_pred_ppu<bits<4> opc> : OpcodeHexagon {
727*9880d681SAndroid Build Coastguard Worker  bits<2> src1;
728*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
729*9880d681SAndroid Build Coastguard Worker  bits<1> src3;
730*9880d681SAndroid Build Coastguard Worker  bits<3> src4;
731*9880d681SAndroid Build Coastguard Worker
732*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b001010111, opc{3}, 1, src2{4-0} };
733*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { src3{0}, src1{1-0}, 0b00001, opc{2-0}, src4{2-0} };
734*9880d681SAndroid Build Coastguard Worker}
735*9880d681SAndroid Build Coastguard Worker
736*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_new_pred_ppu_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ppu<0b0000>;
737*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_new_npred_ppu_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ppu<0b0101>;
738*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_new_pred_ppu_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ppu<0b1010>;
739*9880d681SAndroid Build Coastguard Workerclass V6_vS32b_nt_new_npred_ppu_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ppu<0b1111>;
740*9880d681SAndroid Build Coastguard Worker
741*9880d681SAndroid Build Coastguard Worker
742*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VX_4op_i<bits<5> opc> : OpcodeHexagon {
743*9880d681SAndroid Build Coastguard Worker  bits<5> dst;
744*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
745*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
746*9880d681SAndroid Build Coastguard Worker  bits<1> src3;
747*9880d681SAndroid Build Coastguard Worker
748*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b00011001, opc{4-2}, src2{4-0} };
749*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { opc{1}, src1{4-0}, 1, opc{0}, src3{0}, dst{4-0} };
750*9880d681SAndroid Build Coastguard Worker}
751*9880d681SAndroid Build Coastguard Worker
752*9880d681SAndroid Build Coastguard Workerclass V6_vrmpybusi_enc : Enc_COPROC_VX_4op_i<0b01000>;
753*9880d681SAndroid Build Coastguard Workerclass V6_vrsadubi_enc : Enc_COPROC_VX_4op_i<0b01001>;
754*9880d681SAndroid Build Coastguard Workerclass V6_vrmpybusi_acc_enc : Enc_COPROC_VX_4op_i<0b01010>;
755*9880d681SAndroid Build Coastguard Workerclass V6_vrsadubi_acc_enc : Enc_COPROC_VX_4op_i<0b01011>;
756*9880d681SAndroid Build Coastguard Workerclass V6_vrmpyubi_acc_enc : Enc_COPROC_VX_4op_i<0b01111>;
757*9880d681SAndroid Build Coastguard Workerclass V6_vrmpyubi_enc : Enc_COPROC_VX_4op_i<0b10101>;
758*9880d681SAndroid Build Coastguard Worker
759*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VX_vandqrt<bits<5> opc> : OpcodeHexagon {
760*9880d681SAndroid Build Coastguard Worker  bits<5> dst;
761*9880d681SAndroid Build Coastguard Worker  bits<2> src1;
762*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
763*9880d681SAndroid Build Coastguard Worker
764*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b00011001, opc{4-3}, 1, src2{4-0} };
765*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { opc{2}, 0b000, src1{1-0}, opc{1-0}, 1, dst{4-0} };
766*9880d681SAndroid Build Coastguard Worker}
767*9880d681SAndroid Build Coastguard Worker
768*9880d681SAndroid Build Coastguard Workerclass V6_vandqrt_acc_enc : Enc_COPROC_VX_vandqrt<0b01101>;
769*9880d681SAndroid Build Coastguard Workerclass V6_vandqrt_enc : Enc_COPROC_VX_vandqrt<0b10010>;
770*9880d681SAndroid Build Coastguard Worker
771*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VX_cards<bits<2> opc> : OpcodeHexagon {
772*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
773*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
774*9880d681SAndroid Build Coastguard Worker  bits<5> src3;
775*9880d681SAndroid Build Coastguard Worker
776*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b00011001111, src3{4-0} };
777*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { 1, src1{4-0}, 0, opc{1-0}, src2{4-0} };
778*9880d681SAndroid Build Coastguard Worker}
779*9880d681SAndroid Build Coastguard Worker
780*9880d681SAndroid Build Coastguard Workerclass V6_vshuff_enc : Enc_COPROC_VX_cards<0b01>;
781*9880d681SAndroid Build Coastguard Workerclass V6_vdeal_enc : Enc_COPROC_VX_cards<0b10>;
782*9880d681SAndroid Build Coastguard Worker
783*9880d681SAndroid Build Coastguard Worker
784*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VX_v_cmov<bits<1> opc> : OpcodeHexagon {
785*9880d681SAndroid Build Coastguard Worker  bits<2> src1;
786*9880d681SAndroid Build Coastguard Worker  bits<5> dst;
787*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
788*9880d681SAndroid Build Coastguard Worker
789*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b0001101000, opc{0}, 0b00000 };
790*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { 0, src2{4-0}, 0, src1{1-0}, dst{4-0} };
791*9880d681SAndroid Build Coastguard Worker}
792*9880d681SAndroid Build Coastguard Worker
793*9880d681SAndroid Build Coastguard Workerclass V6_vcmov_enc : Enc_COPROC_VX_v_cmov<0>;
794*9880d681SAndroid Build Coastguard Workerclass V6_vncmov_enc : Enc_COPROC_VX_v_cmov<1>;
795*9880d681SAndroid Build Coastguard Worker
796*9880d681SAndroid Build Coastguard Workerclass Enc_X_p3op<bits<8> opc> : OpcodeHexagon {
797*9880d681SAndroid Build Coastguard Worker  bits<2> src1;
798*9880d681SAndroid Build Coastguard Worker  bits<5> dst;
799*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
800*9880d681SAndroid Build Coastguard Worker  bits<5> src3;
801*9880d681SAndroid Build Coastguard Worker
802*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { opc{7-5}, 0b1101, opc{4}, 0, opc{3-2}, src3{4-0} };
803*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { opc{1}, src2{4-0}, opc{0}, src1{1-0}, dst{4-0} };
804*9880d681SAndroid Build Coastguard Worker}
805*9880d681SAndroid Build Coastguard Worker
806*9880d681SAndroid Build Coastguard Workerclass V6_vnccombine_enc : Enc_X_p3op<0b00001000>;
807*9880d681SAndroid Build Coastguard Workerclass V6_vccombine_enc : Enc_X_p3op<0b00001100>;
808*9880d681SAndroid Build Coastguard Worker
809*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VX_4op_r<bits<4> opc> : OpcodeHexagon {
810*9880d681SAndroid Build Coastguard Worker  bits<5> dst;
811*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
812*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
813*9880d681SAndroid Build Coastguard Worker  bits<3> src3;
814*9880d681SAndroid Build Coastguard Worker
815*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b00011011, src2{4-0}, src3{2-0} };
816*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { opc{3}, src1{4-0}, opc{2-0}, dst{4-0} };
817*9880d681SAndroid Build Coastguard Worker}
818*9880d681SAndroid Build Coastguard Worker
819*9880d681SAndroid Build Coastguard Workerclass V6_valignb_enc : Enc_COPROC_VX_4op_r<0b0000>;
820*9880d681SAndroid Build Coastguard Workerclass V6_vlalignb_enc : Enc_COPROC_VX_4op_r<0b0001>;
821*9880d681SAndroid Build Coastguard Workerclass V6_vasrwh_enc : Enc_COPROC_VX_4op_r<0b0010>;
822*9880d681SAndroid Build Coastguard Workerclass V6_vasrwhsat_enc : Enc_COPROC_VX_4op_r<0b0011>;
823*9880d681SAndroid Build Coastguard Workerclass V6_vasrwhrndsat_enc : Enc_COPROC_VX_4op_r<0b0100>;
824*9880d681SAndroid Build Coastguard Workerclass V6_vasrwuhsat_enc : Enc_COPROC_VX_4op_r<0b0101>;
825*9880d681SAndroid Build Coastguard Workerclass V6_vasrhubsat_enc : Enc_COPROC_VX_4op_r<0b0110>;
826*9880d681SAndroid Build Coastguard Workerclass V6_vasrhubrndsat_enc : Enc_COPROC_VX_4op_r<0b0111>;
827*9880d681SAndroid Build Coastguard Workerclass V6_vasrhbrndsat_enc : Enc_COPROC_VX_4op_r<0b1000>;
828*9880d681SAndroid Build Coastguard Workerclass V6_vlutvvb_enc : Enc_COPROC_VX_4op_r<0b1001>;
829*9880d681SAndroid Build Coastguard Workerclass V6_vshuffvdd_enc : Enc_COPROC_VX_4op_r<0b1011>;
830*9880d681SAndroid Build Coastguard Workerclass V6_vdealvdd_enc : Enc_COPROC_VX_4op_r<0b1100>;
831*9880d681SAndroid Build Coastguard Workerclass V6_vlutvvb_oracc_enc : Enc_COPROC_VX_4op_r<0b1101>;
832*9880d681SAndroid Build Coastguard Workerclass V6_vlutvwh_enc : Enc_COPROC_VX_4op_r<0b1110>;
833*9880d681SAndroid Build Coastguard Workerclass V6_vlutvwh_oracc_enc : Enc_COPROC_VX_4op_r<0b1111>;
834*9880d681SAndroid Build Coastguard Worker
835*9880d681SAndroid Build Coastguard Workerclass Enc_S_3op_valign_i<bits<9> opc> : OpcodeHexagon {
836*9880d681SAndroid Build Coastguard Worker  bits<5> dst;
837*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
838*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
839*9880d681SAndroid Build Coastguard Worker  bits<3> src3;
840*9880d681SAndroid Build Coastguard Worker
841*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { opc{8-7}, 0, opc{6-3}, 0b00, opc{2-1}, src2{4-0} };
842*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { opc{0}, src1{4-0}, src3{2-0}, dst{4-0} };
843*9880d681SAndroid Build Coastguard Worker}
844*9880d681SAndroid Build Coastguard Worker
845*9880d681SAndroid Build Coastguard Workerclass V6_vlutb_enc : Enc_S_3op_valign_i<0b001100000>;
846*9880d681SAndroid Build Coastguard Workerclass V6_vlutb_dv_enc : Enc_S_3op_valign_i<0b001100010>;
847*9880d681SAndroid Build Coastguard Workerclass V6_vlutb_acc_enc : Enc_S_3op_valign_i<0b001100100>;
848*9880d681SAndroid Build Coastguard Workerclass V6_vlutb_dv_acc_enc : Enc_S_3op_valign_i<0b001100110>;
849*9880d681SAndroid Build Coastguard Workerclass V6_valignbi_enc : Enc_S_3op_valign_i<0b001111011>;
850*9880d681SAndroid Build Coastguard Workerclass V6_vlalignbi_enc : Enc_S_3op_valign_i<0b001111111>;
851*9880d681SAndroid Build Coastguard Workerclass S2_valignib_enc : Enc_S_3op_valign_i<0b110000000>;
852*9880d681SAndroid Build Coastguard Workerclass S2_addasl_rrri_enc : Enc_S_3op_valign_i<0b110010000>;
853*9880d681SAndroid Build Coastguard Worker
854*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VX_3op_q<bits<3> opc> : OpcodeHexagon {
855*9880d681SAndroid Build Coastguard Worker  bits<2> dst;
856*9880d681SAndroid Build Coastguard Worker  bits<2> src1;
857*9880d681SAndroid Build Coastguard Worker  bits<2> src2;
858*9880d681SAndroid Build Coastguard Worker
859*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b00011110, src2{1-0}, 0b000011 };
860*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { 0b0000, src1{1-0}, 0b000, opc{2-0}, dst{1-0} };
861*9880d681SAndroid Build Coastguard Worker}
862*9880d681SAndroid Build Coastguard Worker
863*9880d681SAndroid Build Coastguard Workerclass V6_pred_and_enc : Enc_COPROC_VX_3op_q<0b000>;
864*9880d681SAndroid Build Coastguard Workerclass V6_pred_or_enc : Enc_COPROC_VX_3op_q<0b001>;
865*9880d681SAndroid Build Coastguard Workerclass V6_pred_xor_enc : Enc_COPROC_VX_3op_q<0b011>;
866*9880d681SAndroid Build Coastguard Workerclass V6_pred_or_n_enc : Enc_COPROC_VX_3op_q<0b100>;
867*9880d681SAndroid Build Coastguard Workerclass V6_pred_and_n_enc : Enc_COPROC_VX_3op_q<0b101>;
868*9880d681SAndroid Build Coastguard Worker
869*9880d681SAndroid Build Coastguard Workerclass V6_pred_not_enc : OpcodeHexagon {
870*9880d681SAndroid Build Coastguard Worker  bits<2> dst;
871*9880d681SAndroid Build Coastguard Worker  bits<2> src1;
872*9880d681SAndroid Build Coastguard Worker
873*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b0001111000000011 };
874*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { 0b0000, src1{1-0}, 0b000010, dst{1-0} };
875*9880d681SAndroid Build Coastguard Worker}
876*9880d681SAndroid Build Coastguard Worker
877*9880d681SAndroid Build Coastguard Workerclass Enc_COPROC_VX_4op_q<bits<1> opc> : OpcodeHexagon {
878*9880d681SAndroid Build Coastguard Worker  bits<5> dst;
879*9880d681SAndroid Build Coastguard Worker  bits<2> src1;
880*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
881*9880d681SAndroid Build Coastguard Worker  bits<5> src3;
882*9880d681SAndroid Build Coastguard Worker
883*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b000111101, opc{0}, 1, src3{4-0} };
884*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { 1, src2{4-0}, 0, src1{1-0}, dst{4-0} };
885*9880d681SAndroid Build Coastguard Worker}
886*9880d681SAndroid Build Coastguard Worker
887*9880d681SAndroid Build Coastguard Workerclass V6_vswap_enc : Enc_COPROC_VX_4op_q<0>;
888*9880d681SAndroid Build Coastguard Workerclass V6_vmux_enc : Enc_COPROC_VX_4op_q<1>;
889*9880d681SAndroid Build Coastguard Worker
890*9880d681SAndroid Build Coastguard Workerclass Enc_X_2op<bits<16> opc> : OpcodeHexagon {
891*9880d681SAndroid Build Coastguard Worker  bits<5> dst;
892*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
893*9880d681SAndroid Build Coastguard Worker
894*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { opc{15-5}, src1{4-0} };
895*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { opc{4-3}, 0b0000, opc{2-0}, dst{4-0} };
896*9880d681SAndroid Build Coastguard Worker}
897*9880d681SAndroid Build Coastguard Worker
898*9880d681SAndroid Build Coastguard Workerclass V6_lvsplatw_enc : Enc_X_2op<0b0001100110100001>;
899*9880d681SAndroid Build Coastguard Workerclass V6_vinsertwr_enc : Enc_X_2op<0b0001100110110001>;
900*9880d681SAndroid Build Coastguard Workerclass S6_vsplatrbp_enc : Enc_X_2op<0b1000010001000100>;
901*9880d681SAndroid Build Coastguard Worker
902*9880d681SAndroid Build Coastguard Worker
903*9880d681SAndroid Build Coastguard Workerclass Enc_CR_2op_r<bits<12> opc> : OpcodeHexagon {
904*9880d681SAndroid Build Coastguard Worker  bits<2> dst;
905*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
906*9880d681SAndroid Build Coastguard Worker
907*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { opc{11}, 0, opc{10-7}, 0, opc{6-3}, src1{4-0} };
908*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { opc{2}, 0b000000, opc{1}, 0b000, opc{0}, dst{1-0} };
909*9880d681SAndroid Build Coastguard Worker}
910*9880d681SAndroid Build Coastguard Worker
911*9880d681SAndroid Build Coastguard Workerclass V6_pred_scalar2_enc : Enc_CR_2op_r<0b001101101011>;
912*9880d681SAndroid Build Coastguard Workerclass Y5_l2locka_enc : Enc_CR_2op_r<0b110000111100>;
913*9880d681SAndroid Build Coastguard Worker
914*9880d681SAndroid Build Coastguard Workerclass Enc_S_3op_i6<bits<9> opc> : OpcodeHexagon {
915*9880d681SAndroid Build Coastguard Worker  bits<5> dst;
916*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
917*9880d681SAndroid Build Coastguard Worker  bits<6> src2;
918*9880d681SAndroid Build Coastguard Worker
919*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b1000, opc{8-6}, 0, opc{5-3}, src1{4-0} };
920*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { src2{5-0}, opc{2-0}, dst{4-0} };
921*9880d681SAndroid Build Coastguard Worker}
922*9880d681SAndroid Build Coastguard Worker
923*9880d681SAndroid Build Coastguard Workerclass S6_rol_i_p_enc : Enc_S_3op_i6<0b000000011>;
924*9880d681SAndroid Build Coastguard Workerclass S6_rol_i_p_nac_enc : Enc_S_3op_i6<0b001000011>;
925*9880d681SAndroid Build Coastguard Workerclass S6_rol_i_p_acc_enc : Enc_S_3op_i6<0b001000111>;
926*9880d681SAndroid Build Coastguard Workerclass S6_rol_i_p_and_enc : Enc_S_3op_i6<0b001010011>;
927*9880d681SAndroid Build Coastguard Workerclass S6_rol_i_p_or_enc : Enc_S_3op_i6<0b001010111>;
928*9880d681SAndroid Build Coastguard Workerclass S6_rol_i_p_xacc_enc : Enc_S_3op_i6<0b001100011>;
929*9880d681SAndroid Build Coastguard Worker
930*9880d681SAndroid Build Coastguard Workerclass Enc_X_3op_r<bits<15> opc> : OpcodeHexagon {
931*9880d681SAndroid Build Coastguard Worker  bits<5> dst;
932*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
933*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
934*9880d681SAndroid Build Coastguard Worker
935*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { opc{14-4}, src1{4-0} };
936*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { opc{3}, src2{4-0}, opc{2-0}, dst{4-0} };
937*9880d681SAndroid Build Coastguard Worker}
938*9880d681SAndroid Build Coastguard Worker
939*9880d681SAndroid Build Coastguard Workerclass S6_rol_i_r_enc : Enc_X_3op_r<0b100011000000011>;
940*9880d681SAndroid Build Coastguard Workerclass S6_rol_i_r_nac_enc : Enc_X_3op_r<0b100011100000011>;
941*9880d681SAndroid Build Coastguard Workerclass S6_rol_i_r_acc_enc : Enc_X_3op_r<0b100011100000111>;
942*9880d681SAndroid Build Coastguard Workerclass S6_rol_i_r_and_enc : Enc_X_3op_r<0b100011100100011>;
943*9880d681SAndroid Build Coastguard Workerclass S6_rol_i_r_or_enc : Enc_X_3op_r<0b100011100100111>;
944*9880d681SAndroid Build Coastguard Workerclass S6_rol_i_r_xacc_enc : Enc_X_3op_r<0b100011101000011>;
945*9880d681SAndroid Build Coastguard Workerclass S6_vtrunehb_ppp_enc : Enc_X_3op_r<0b110000011000011>;
946*9880d681SAndroid Build Coastguard Workerclass S6_vtrunohb_ppp_enc : Enc_X_3op_r<0b110000011000101>;
947*9880d681SAndroid Build Coastguard Worker
948*9880d681SAndroid Build Coastguard Workerclass Enc_no_operands<bits<25> opc> : OpcodeHexagon {
949*9880d681SAndroid Build Coastguard Worker
950*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { opc{24-10}, 0 };
951*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { opc{9-7}, 0b000, opc{6-0}, 0 };
952*9880d681SAndroid Build Coastguard Worker}
953*9880d681SAndroid Build Coastguard Worker
954*9880d681SAndroid Build Coastguard Workerclass Y5_l2gunlock_enc : Enc_no_operands<0b1010100000100000010000000>;
955*9880d681SAndroid Build Coastguard Workerclass Y5_l2gclean_enc : Enc_no_operands<0b1010100000100000100000000>;
956*9880d681SAndroid Build Coastguard Workerclass Y5_l2gcleaninv_enc : Enc_no_operands<0b1010100000100000110000000>;
957*9880d681SAndroid Build Coastguard Workerclass V6_vhist_enc : Enc_no_operands<0b0001111000000001001000000>;
958*9880d681SAndroid Build Coastguard Worker
959*9880d681SAndroid Build Coastguard Workerclass Enc_J_jumpr<bits<13> opc> : OpcodeHexagon {
960*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
961*9880d681SAndroid Build Coastguard Worker
962*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { opc{12-6}, 0, opc{5-3}, src1{4-0} };
963*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { 0b00, opc{2}, 0b0000, opc{1-0}, 0b00000 };
964*9880d681SAndroid Build Coastguard Worker}
965*9880d681SAndroid Build Coastguard Worker
966*9880d681SAndroid Build Coastguard Workerclass Y5_l2unlocka_enc : Enc_J_jumpr<0b1010011011000>;
967*9880d681SAndroid Build Coastguard Workerclass Y2_l2cleaninvidx_enc : Enc_J_jumpr<0b1010100011000>;
968*9880d681SAndroid Build Coastguard Worker
969*9880d681SAndroid Build Coastguard Workerclass Enc_ST_l2gclean_pa<bits<2> opc> : OpcodeHexagon {
970*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
971*9880d681SAndroid Build Coastguard Worker
972*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b101001101, opc{1-0}, 0b00000 };
973*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { 0, src1{4-0}, 0b00000000 };
974*9880d681SAndroid Build Coastguard Worker}
975*9880d681SAndroid Build Coastguard Worker
976*9880d681SAndroid Build Coastguard Workerclass Y6_l2gcleanpa_enc : Enc_ST_l2gclean_pa<0b01>;
977*9880d681SAndroid Build Coastguard Workerclass Y6_l2gcleaninvpa_enc : Enc_ST_l2gclean_pa<0b10>;
978*9880d681SAndroid Build Coastguard Worker
979*9880d681SAndroid Build Coastguard Workerclass A5_ACS_enc : OpcodeHexagon {
980*9880d681SAndroid Build Coastguard Worker  bits<5> dst1;
981*9880d681SAndroid Build Coastguard Worker  bits<2> dst2;
982*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
983*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
984*9880d681SAndroid Build Coastguard Worker
985*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b11101010101, src1{4-0} };
986*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { 0, src2{4-0}, 0, dst2{1-0}, dst1{4-0} };
987*9880d681SAndroid Build Coastguard Worker}
988*9880d681SAndroid Build Coastguard Worker
989*9880d681SAndroid Build Coastguard Workerclass Enc_X_4op_r<bits<8> opc> : OpcodeHexagon {
990*9880d681SAndroid Build Coastguard Worker  bits<5> dst;
991*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
992*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
993*9880d681SAndroid Build Coastguard Worker  bits<2> src3;
994*9880d681SAndroid Build Coastguard Worker
995*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b11, opc{7}, 0, opc{6-5}, 1, opc{4-1}, src1{4-0} };
996*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { 0, src2{4-0}, opc{0}, src3{1-0}, dst{4-0} };
997*9880d681SAndroid Build Coastguard Worker}
998*9880d681SAndroid Build Coastguard Worker
999*9880d681SAndroid Build Coastguard Workerclass S2_vsplicerb_enc : Enc_X_4op_r<0b00001000>;
1000*9880d681SAndroid Build Coastguard Workerclass S2_cabacencbin_enc : Enc_X_4op_r<0b00001010>;
1001*9880d681SAndroid Build Coastguard Workerclass F2_sffma_sc_enc : Enc_X_4op_r<0b11110111>;
1002*9880d681SAndroid Build Coastguard Worker
1003*9880d681SAndroid Build Coastguard Workerclass V6_vhistq_enc : OpcodeHexagon {
1004*9880d681SAndroid Build Coastguard Worker  bits<2> src1;
1005*9880d681SAndroid Build Coastguard Worker
1006*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b00011110, src1{1-0}, 0b000010 };
1007*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { 0b10000010000000 };
1008*9880d681SAndroid Build Coastguard Worker}
1009*9880d681SAndroid Build Coastguard Worker
1010*9880d681SAndroid Build Coastguard Worker// TODO: Change script to generate dst1 instead of dst.
1011*9880d681SAndroid Build Coastguard Workerclass A6_vminub_RdP_enc : OpcodeHexagon {
1012*9880d681SAndroid Build Coastguard Worker  bits<5> dst1;
1013*9880d681SAndroid Build Coastguard Worker  bits<2> dst2;
1014*9880d681SAndroid Build Coastguard Worker  bits<5> src1;
1015*9880d681SAndroid Build Coastguard Worker  bits<5> src2;
1016*9880d681SAndroid Build Coastguard Worker
1017*9880d681SAndroid Build Coastguard Worker  let Inst{31-16} = { 0b11101010111, src2{4-0} };
1018*9880d681SAndroid Build Coastguard Worker  let Inst{13-0} = { 0, src1{4-0}, 0, dst2{1-0}, dst1{4-0} };
1019*9880d681SAndroid Build Coastguard Worker}
1020