xref: /llvm-project/llvm/lib/Target/Mips/MipsMSAInstrFormats.td (revision 2946cd701067404b99c39fb29dc9c74bd7193eb3)
13a2c2d42SJack Carter//===- MipsMSAInstrFormats.td - Mips Instruction Formats ---*- tablegen -*-===//
23a2c2d42SJack Carter//
3*2946cd70SChandler Carruth// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*2946cd70SChandler Carruth// See https://llvm.org/LICENSE.txt for license information.
5*2946cd70SChandler Carruth// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
63a2c2d42SJack Carter//
73a2c2d42SJack Carter//===----------------------------------------------------------------------===//
83a2c2d42SJack Carter
9090f6e41SDaniel Sandersclass MSAInst : MipsInst<(outs), (ins), "", [], NoItinerary, FrmOther>,
10f909058aSSimon Dardis                ASE_MSA {
11090f6e41SDaniel Sanders  let EncodingPredicates = [HasStdEnc];
123a2c2d42SJack Carter  let Inst{31-26} = 0b011110;
133a2c2d42SJack Carter}
143a2c2d42SJack Carter
15eb68d9d9SMatheus Almeidaclass MSACBranch : MSAInst {
16eb68d9d9SMatheus Almeida  let Inst{31-26} = 0b010001;
17eb68d9d9SMatheus Almeida}
18eb68d9d9SMatheus Almeida
19be8681b4SMatheus Almeidaclass MSASpecial : MSAInst {
20be8681b4SMatheus Almeida  let Inst{31-26} = 0b000000;
21be8681b4SMatheus Almeida}
22be8681b4SMatheus Almeida
23f93e8152SDaniel Sandersclass MSAPseudo<dag outs, dag ins, list<dag> pattern,
243a2c2d42SJack Carter                InstrItinClass itin = IIPseudo>:
253a2c2d42SJack Carter  MipsPseudo<outs, ins, pattern, itin> {
266ad680abSSimon Dardis  let EncodingPredicates = [HasStdEnc];
276ad680abSSimon Dardis  let ASEPredicate = [HasMSA];
283a2c2d42SJack Carter}
293a2c2d42SJack Carter
30babdcc8cSJack Carterclass MSA_BIT_B_FMT<bits<3> major, bits<6> minor>: MSAInst {
312102188cSMatheus Almeida  bits<5> ws;
322102188cSMatheus Almeida  bits<5> wd;
332102188cSMatheus Almeida  bits<3> m;
342102188cSMatheus Almeida
35babdcc8cSJack Carter  let Inst{25-23} = major;
36babdcc8cSJack Carter  let Inst{22-19} = 0b1110;
372102188cSMatheus Almeida  let Inst{18-16} = m;
382102188cSMatheus Almeida  let Inst{15-11} = ws;
392102188cSMatheus Almeida  let Inst{10-6} = wd;
40babdcc8cSJack Carter  let Inst{5-0} = minor;
41babdcc8cSJack Carter}
42babdcc8cSJack Carter
43babdcc8cSJack Carterclass MSA_BIT_H_FMT<bits<3> major, bits<6> minor>: MSAInst {
442102188cSMatheus Almeida  bits<5> ws;
452102188cSMatheus Almeida  bits<5> wd;
462102188cSMatheus Almeida  bits<4> m;
472102188cSMatheus Almeida
48babdcc8cSJack Carter  let Inst{25-23} = major;
49babdcc8cSJack Carter  let Inst{22-20} = 0b110;
502102188cSMatheus Almeida  let Inst{19-16} = m;
512102188cSMatheus Almeida  let Inst{15-11} = ws;
522102188cSMatheus Almeida  let Inst{10-6} = wd;
53babdcc8cSJack Carter  let Inst{5-0} = minor;
54babdcc8cSJack Carter}
55babdcc8cSJack Carter
56babdcc8cSJack Carterclass MSA_BIT_W_FMT<bits<3> major, bits<6> minor>: MSAInst {
572102188cSMatheus Almeida  bits<5> ws;
582102188cSMatheus Almeida  bits<5> wd;
592102188cSMatheus Almeida  bits<5> m;
602102188cSMatheus Almeida
61babdcc8cSJack Carter  let Inst{25-23} = major;
62babdcc8cSJack Carter  let Inst{22-21} = 0b10;
632102188cSMatheus Almeida  let Inst{20-16} = m;
642102188cSMatheus Almeida  let Inst{15-11} = ws;
652102188cSMatheus Almeida  let Inst{10-6} = wd;
66babdcc8cSJack Carter  let Inst{5-0} = minor;
67babdcc8cSJack Carter}
68babdcc8cSJack Carter
69babdcc8cSJack Carterclass MSA_BIT_D_FMT<bits<3> major, bits<6> minor>: MSAInst {
702102188cSMatheus Almeida  bits<5> ws;
712102188cSMatheus Almeida  bits<5> wd;
722102188cSMatheus Almeida  bits<6> m;
732102188cSMatheus Almeida
74babdcc8cSJack Carter  let Inst{25-23} = major;
75babdcc8cSJack Carter  let Inst{22} = 0b0;
762102188cSMatheus Almeida  let Inst{21-16} = m;
772102188cSMatheus Almeida  let Inst{15-11} = ws;
782102188cSMatheus Almeida  let Inst{10-6} = wd;
79babdcc8cSJack Carter  let Inst{5-0} = minor;
80babdcc8cSJack Carter}
81babdcc8cSJack Carter
826eed9cc6SJack Carterclass MSA_2R_FILL_FMT<bits<8> major, bits<2> df, bits<6> minor>: MSAInst {
836eed9cc6SJack Carter  bits<5> rs;
846eed9cc6SJack Carter  bits<5> wd;
856eed9cc6SJack Carter
866eed9cc6SJack Carter  let Inst{25-18} = major;
876eed9cc6SJack Carter  let Inst{17-16} = df;
886eed9cc6SJack Carter  let Inst{15-11} = rs;
896eed9cc6SJack Carter  let Inst{10-6} = wd;
906eed9cc6SJack Carter  let Inst{5-0} = minor;
916eed9cc6SJack Carter}
926eed9cc6SJack Carter
93090f6e41SDaniel Sandersclass MSA_2R_FILL_D_FMT<bits<8> major, bits<2> df, bits<6> minor>: MSAInst {
94ec079d9eSMatheus Almeida  bits<5> rs;
95ec079d9eSMatheus Almeida  bits<5> wd;
96ec079d9eSMatheus Almeida
97ec079d9eSMatheus Almeida  let Inst{25-18} = major;
98ec079d9eSMatheus Almeida  let Inst{17-16} = df;
99ec079d9eSMatheus Almeida  let Inst{15-11} = rs;
100ec079d9eSMatheus Almeida  let Inst{10-6} = wd;
101ec079d9eSMatheus Almeida  let Inst{5-0} = minor;
102ec079d9eSMatheus Almeida}
103ec079d9eSMatheus Almeida
104babdcc8cSJack Carterclass MSA_2R_FMT<bits<8> major, bits<2> df, bits<6> minor>: MSAInst {
10592e6e0f1SJack Carter  bits<5> ws;
10692e6e0f1SJack Carter  bits<5> wd;
10792e6e0f1SJack Carter
108babdcc8cSJack Carter  let Inst{25-18} = major;
109babdcc8cSJack Carter  let Inst{17-16} = df;
11092e6e0f1SJack Carter  let Inst{15-11} = ws;
11192e6e0f1SJack Carter  let Inst{10-6} = wd;
112babdcc8cSJack Carter  let Inst{5-0} = minor;
113babdcc8cSJack Carter}
114babdcc8cSJack Carter
115babdcc8cSJack Carterclass MSA_2RF_FMT<bits<9> major, bits<1> df, bits<6> minor>: MSAInst {
1165dc8ac92SJack Carter  bits<5> ws;
1175dc8ac92SJack Carter  bits<5> wd;
1185dc8ac92SJack Carter
119babdcc8cSJack Carter  let Inst{25-17} = major;
120babdcc8cSJack Carter  let Inst{16} = df;
1215dc8ac92SJack Carter  let Inst{15-11} = ws;
1225dc8ac92SJack Carter  let Inst{10-6} = wd;
123babdcc8cSJack Carter  let Inst{5-0} = minor;
124babdcc8cSJack Carter}
125babdcc8cSJack Carter
1263a2c2d42SJack Carterclass MSA_3R_FMT<bits<3> major, bits<2> df, bits<6> minor>: MSAInst {
1273eb663b0SJack Carter  bits<5> wt;
1283eb663b0SJack Carter  bits<5> ws;
1293eb663b0SJack Carter  bits<5> wd;
1303eb663b0SJack Carter
1313a2c2d42SJack Carter  let Inst{25-23} = major;
1323a2c2d42SJack Carter  let Inst{22-21} = df;
1333eb663b0SJack Carter  let Inst{20-16} = wt;
1343eb663b0SJack Carter  let Inst{15-11} = ws;
1353eb663b0SJack Carter  let Inst{10-6} = wd;
1363a2c2d42SJack Carter  let Inst{5-0} = minor;
1373a2c2d42SJack Carter}
1383a2c2d42SJack Carter
139babdcc8cSJack Carterclass MSA_3RF_FMT<bits<4> major, bits<1> df, bits<6> minor>: MSAInst {
140cb8b40b0SJack Carter  bits<5> wt;
141cb8b40b0SJack Carter  bits<5> ws;
142cb8b40b0SJack Carter  bits<5> wd;
143cb8b40b0SJack Carter
144babdcc8cSJack Carter  let Inst{25-22} = major;
145babdcc8cSJack Carter  let Inst{21} = df;
146cb8b40b0SJack Carter  let Inst{20-16} = wt;
147cb8b40b0SJack Carter  let Inst{15-11} = ws;
148cb8b40b0SJack Carter  let Inst{10-6} = wd;
149babdcc8cSJack Carter  let Inst{5-0} = minor;
150babdcc8cSJack Carter}
151babdcc8cSJack Carter
15270fbf775SMatheus Almeidaclass MSA_3R_INDEX_FMT<bits<3> major, bits<2> df, bits<6> minor>: MSAInst {
15370fbf775SMatheus Almeida  bits<5> rt;
15470fbf775SMatheus Almeida  bits<5> ws;
15570fbf775SMatheus Almeida  bits<5> wd;
15670fbf775SMatheus Almeida
15770fbf775SMatheus Almeida  let Inst{25-23} = major;
15870fbf775SMatheus Almeida  let Inst{22-21} = df;
15970fbf775SMatheus Almeida  let Inst{20-16} = rt;
16070fbf775SMatheus Almeida  let Inst{15-11} = ws;
16170fbf775SMatheus Almeida  let Inst{10-6} = wd;
16270fbf775SMatheus Almeida  let Inst{5-0} = minor;
16370fbf775SMatheus Almeida}
16470fbf775SMatheus Almeida
165f9aa1d19SDaniel Sandersclass MSA_ELM_FMT<bits<10> major, bits<6> minor>: MSAInst {
16683d797deSMatheus Almeida  bits<5> ws;
16783d797deSMatheus Almeida  bits<5> wd;
16883d797deSMatheus Almeida
169f9aa1d19SDaniel Sanders  let Inst{25-16} = major;
17083d797deSMatheus Almeida  let Inst{15-11} = ws;
17183d797deSMatheus Almeida  let Inst{10-6} = wd;
172f9aa1d19SDaniel Sanders  let Inst{5-0} = minor;
173f9aa1d19SDaniel Sanders}
174f9aa1d19SDaniel Sanders
175a591fdc6SMatheus Almeidaclass MSA_ELM_CFCMSA_FMT<bits<10> major, bits<6> minor>: MSAInst {
176a591fdc6SMatheus Almeida  bits<5> rd;
177a591fdc6SMatheus Almeida  bits<5> cs;
178a591fdc6SMatheus Almeida
179a591fdc6SMatheus Almeida  let Inst{25-16} = major;
180a591fdc6SMatheus Almeida  let Inst{15-11} = cs;
181a591fdc6SMatheus Almeida  let Inst{10-6} = rd;
182a591fdc6SMatheus Almeida  let Inst{5-0} = minor;
183a591fdc6SMatheus Almeida}
184a591fdc6SMatheus Almeida
185a591fdc6SMatheus Almeidaclass MSA_ELM_CTCMSA_FMT<bits<10> major, bits<6> minor>: MSAInst {
186a591fdc6SMatheus Almeida  bits<5> rs;
187a591fdc6SMatheus Almeida  bits<5> cd;
188a591fdc6SMatheus Almeida
189a591fdc6SMatheus Almeida  let Inst{25-16} = major;
190a591fdc6SMatheus Almeida  let Inst{15-11} = rs;
191a591fdc6SMatheus Almeida  let Inst{10-6} = cd;
192a591fdc6SMatheus Almeida  let Inst{5-0} = minor;
193a591fdc6SMatheus Almeida}
194a591fdc6SMatheus Almeida
195babdcc8cSJack Carterclass MSA_ELM_B_FMT<bits<4> major, bits<6> minor>: MSAInst {
196bc189eb3SMatheus Almeida  bits<4> n;
197bc189eb3SMatheus Almeida  bits<5> ws;
198bc189eb3SMatheus Almeida  bits<5> wd;
199bc189eb3SMatheus Almeida
200babdcc8cSJack Carter  let Inst{25-22} = major;
201babdcc8cSJack Carter  let Inst{21-20} = 0b00;
202bc189eb3SMatheus Almeida  let Inst{19-16} = n{3-0};
203bc189eb3SMatheus Almeida  let Inst{15-11} = ws;
204bc189eb3SMatheus Almeida  let Inst{10-6} = wd;
205babdcc8cSJack Carter  let Inst{5-0} = minor;
206babdcc8cSJack Carter}
207babdcc8cSJack Carter
208babdcc8cSJack Carterclass MSA_ELM_H_FMT<bits<4> major, bits<6> minor>: MSAInst {
209bc189eb3SMatheus Almeida  bits<4> n;
210bc189eb3SMatheus Almeida  bits<5> ws;
211bc189eb3SMatheus Almeida  bits<5> wd;
212bc189eb3SMatheus Almeida
213babdcc8cSJack Carter  let Inst{25-22} = major;
214babdcc8cSJack Carter  let Inst{21-19} = 0b100;
215bc189eb3SMatheus Almeida  let Inst{18-16} = n{2-0};
216bc189eb3SMatheus Almeida  let Inst{15-11} = ws;
217bc189eb3SMatheus Almeida  let Inst{10-6} = wd;
218babdcc8cSJack Carter  let Inst{5-0} = minor;
219babdcc8cSJack Carter}
220babdcc8cSJack Carter
221babdcc8cSJack Carterclass MSA_ELM_W_FMT<bits<4> major, bits<6> minor>: MSAInst {
222bc189eb3SMatheus Almeida  bits<4> n;
223bc189eb3SMatheus Almeida  bits<5> ws;
224bc189eb3SMatheus Almeida  bits<5> wd;
225bc189eb3SMatheus Almeida
226babdcc8cSJack Carter  let Inst{25-22} = major;
227babdcc8cSJack Carter  let Inst{21-18} = 0b1100;
228bc189eb3SMatheus Almeida  let Inst{17-16} = n{1-0};
229bc189eb3SMatheus Almeida  let Inst{15-11} = ws;
230bc189eb3SMatheus Almeida  let Inst{10-6} = wd;
231babdcc8cSJack Carter  let Inst{5-0} = minor;
232babdcc8cSJack Carter}
233babdcc8cSJack Carter
234babdcc8cSJack Carterclass MSA_ELM_D_FMT<bits<4> major, bits<6> minor>: MSAInst {
235bc189eb3SMatheus Almeida  bits<4> n;
236bc189eb3SMatheus Almeida  bits<5> ws;
237bc189eb3SMatheus Almeida  bits<5> wd;
238bc189eb3SMatheus Almeida
239babdcc8cSJack Carter  let Inst{25-22} = major;
240babdcc8cSJack Carter  let Inst{21-17} = 0b11100;
241bc189eb3SMatheus Almeida  let Inst{16} = n{0};
242bc189eb3SMatheus Almeida  let Inst{15-11} = ws;
243bc189eb3SMatheus Almeida  let Inst{10-6} = wd;
244bc189eb3SMatheus Almeida  let Inst{5-0} = minor;
245bc189eb3SMatheus Almeida}
246bc189eb3SMatheus Almeida
247bc189eb3SMatheus Almeidaclass MSA_ELM_COPY_B_FMT<bits<4> major, bits<6> minor>: MSAInst {
248bc189eb3SMatheus Almeida  bits<4> n;
249bc189eb3SMatheus Almeida  bits<5> ws;
250bc189eb3SMatheus Almeida  bits<5> rd;
251bc189eb3SMatheus Almeida
252bc189eb3SMatheus Almeida  let Inst{25-22} = major;
253bc189eb3SMatheus Almeida  let Inst{21-20} = 0b00;
254bc189eb3SMatheus Almeida  let Inst{19-16} = n{3-0};
255bc189eb3SMatheus Almeida  let Inst{15-11} = ws;
256bc189eb3SMatheus Almeida  let Inst{10-6} = rd;
257bc189eb3SMatheus Almeida  let Inst{5-0} = minor;
258bc189eb3SMatheus Almeida}
259bc189eb3SMatheus Almeida
260bc189eb3SMatheus Almeidaclass MSA_ELM_COPY_H_FMT<bits<4> major, bits<6> minor>: MSAInst {
261bc189eb3SMatheus Almeida  bits<4> n;
262bc189eb3SMatheus Almeida  bits<5> ws;
263bc189eb3SMatheus Almeida  bits<5> rd;
264bc189eb3SMatheus Almeida
265bc189eb3SMatheus Almeida  let Inst{25-22} = major;
266bc189eb3SMatheus Almeida  let Inst{21-19} = 0b100;
267bc189eb3SMatheus Almeida  let Inst{18-16} = n{2-0};
268bc189eb3SMatheus Almeida  let Inst{15-11} = ws;
269bc189eb3SMatheus Almeida  let Inst{10-6} = rd;
270bc189eb3SMatheus Almeida  let Inst{5-0} = minor;
271bc189eb3SMatheus Almeida}
272bc189eb3SMatheus Almeida
273bc189eb3SMatheus Almeidaclass MSA_ELM_COPY_W_FMT<bits<4> major, bits<6> minor>: MSAInst {
274bc189eb3SMatheus Almeida  bits<4> n;
275bc189eb3SMatheus Almeida  bits<5> ws;
276bc189eb3SMatheus Almeida  bits<5> rd;
277bc189eb3SMatheus Almeida
278bc189eb3SMatheus Almeida  let Inst{25-22} = major;
279bc189eb3SMatheus Almeida  let Inst{21-18} = 0b1100;
280bc189eb3SMatheus Almeida  let Inst{17-16} = n{1-0};
281bc189eb3SMatheus Almeida  let Inst{15-11} = ws;
282bc189eb3SMatheus Almeida  let Inst{10-6} = rd;
283babdcc8cSJack Carter  let Inst{5-0} = minor;
284babdcc8cSJack Carter}
285babdcc8cSJack Carter
286090f6e41SDaniel Sandersclass MSA_ELM_COPY_D_FMT<bits<4> major, bits<6> minor>: MSAInst {
28774070327SMatheus Almeida  bits<4> n;
28874070327SMatheus Almeida  bits<5> ws;
28974070327SMatheus Almeida  bits<5> rd;
29074070327SMatheus Almeida
29174070327SMatheus Almeida  let Inst{25-22} = major;
29274070327SMatheus Almeida  let Inst{21-17} = 0b11100;
29374070327SMatheus Almeida  let Inst{16} = n{0};
29474070327SMatheus Almeida  let Inst{15-11} = ws;
29574070327SMatheus Almeida  let Inst{10-6} = rd;
29674070327SMatheus Almeida  let Inst{5-0} = minor;
29774070327SMatheus Almeida}
29874070327SMatheus Almeida
299b74293dcSMatheus Almeidaclass MSA_ELM_INSERT_B_FMT<bits<4> major, bits<6> minor>: MSAInst {
300b74293dcSMatheus Almeida  bits<6> n;
301b74293dcSMatheus Almeida  bits<5> rs;
302b74293dcSMatheus Almeida  bits<5> wd;
303b74293dcSMatheus Almeida
304b74293dcSMatheus Almeida  let Inst{25-22} = major;
305b74293dcSMatheus Almeida  let Inst{21-20} = 0b00;
306b74293dcSMatheus Almeida  let Inst{19-16} = n{3-0};
307b74293dcSMatheus Almeida  let Inst{15-11} = rs;
308b74293dcSMatheus Almeida  let Inst{10-6} = wd;
309b74293dcSMatheus Almeida  let Inst{5-0} = minor;
310b74293dcSMatheus Almeida}
311b74293dcSMatheus Almeida
312b74293dcSMatheus Almeidaclass MSA_ELM_INSERT_H_FMT<bits<4> major, bits<6> minor>: MSAInst {
313b74293dcSMatheus Almeida  bits<6> n;
314b74293dcSMatheus Almeida  bits<5> rs;
315b74293dcSMatheus Almeida  bits<5> wd;
316b74293dcSMatheus Almeida
317b74293dcSMatheus Almeida  let Inst{25-22} = major;
318b74293dcSMatheus Almeida  let Inst{21-19} = 0b100;
319b74293dcSMatheus Almeida  let Inst{18-16} = n{2-0};
320b74293dcSMatheus Almeida  let Inst{15-11} = rs;
321b74293dcSMatheus Almeida  let Inst{10-6} = wd;
322b74293dcSMatheus Almeida  let Inst{5-0} = minor;
323b74293dcSMatheus Almeida}
324b74293dcSMatheus Almeida
325b74293dcSMatheus Almeidaclass MSA_ELM_INSERT_W_FMT<bits<4> major, bits<6> minor>: MSAInst {
326b74293dcSMatheus Almeida  bits<6> n;
327b74293dcSMatheus Almeida  bits<5> rs;
328b74293dcSMatheus Almeida  bits<5> wd;
329b74293dcSMatheus Almeida
330b74293dcSMatheus Almeida  let Inst{25-22} = major;
331b74293dcSMatheus Almeida  let Inst{21-18} = 0b1100;
332b74293dcSMatheus Almeida  let Inst{17-16} = n{1-0};
333b74293dcSMatheus Almeida  let Inst{15-11} = rs;
334b74293dcSMatheus Almeida  let Inst{10-6} = wd;
335b74293dcSMatheus Almeida  let Inst{5-0} = minor;
336b74293dcSMatheus Almeida}
337b74293dcSMatheus Almeida
338090f6e41SDaniel Sandersclass MSA_ELM_INSERT_D_FMT<bits<4> major, bits<6> minor>: MSAInst {
3391ace1f12SMatheus Almeida  bits<6> n;
3401ace1f12SMatheus Almeida  bits<5> rs;
3411ace1f12SMatheus Almeida  bits<5> wd;
3421ace1f12SMatheus Almeida
3431ace1f12SMatheus Almeida  let Inst{25-22} = major;
3441ace1f12SMatheus Almeida  let Inst{21-17} = 0b11100;
3451ace1f12SMatheus Almeida  let Inst{16} = n{0};
3461ace1f12SMatheus Almeida  let Inst{15-11} = rs;
3471ace1f12SMatheus Almeida  let Inst{10-6} = wd;
3481ace1f12SMatheus Almeida  let Inst{5-0} = minor;
3491ace1f12SMatheus Almeida}
3501ace1f12SMatheus Almeida
3513a2c2d42SJack Carterclass MSA_I5_FMT<bits<3> major, bits<2> df, bits<6> minor>: MSAInst {
352c3b25686SJack Carter  bits<5> imm;
353c3b25686SJack Carter  bits<5> ws;
354c3b25686SJack Carter  bits<5> wd;
355c3b25686SJack Carter
3563a2c2d42SJack Carter  let Inst{25-23} = major;
3573a2c2d42SJack Carter  let Inst{22-21} = df;
358c3b25686SJack Carter  let Inst{20-16} = imm;
359c3b25686SJack Carter  let Inst{15-11} = ws;
360c3b25686SJack Carter  let Inst{10-6} = wd;
3613a2c2d42SJack Carter  let Inst{5-0} = minor;
3623a2c2d42SJack Carter}
363babdcc8cSJack Carter
364babdcc8cSJack Carterclass MSA_I8_FMT<bits<2> major, bits<6> minor>: MSAInst {
3658ff70e3eSJack Carter  bits<8> u8;
3668ff70e3eSJack Carter  bits<5> ws;
3678ff70e3eSJack Carter  bits<5> wd;
3688ff70e3eSJack Carter
369babdcc8cSJack Carter  let Inst{25-24} = major;
3708ff70e3eSJack Carter  let Inst{23-16} = u8;
3718ff70e3eSJack Carter  let Inst{15-11} = ws;
3728ff70e3eSJack Carter  let Inst{10-6} = wd;
373babdcc8cSJack Carter  let Inst{5-0} = minor;
374babdcc8cSJack Carter}
375babdcc8cSJack Carter
376babdcc8cSJack Carterclass MSA_I10_FMT<bits<3> major, bits<2> df, bits<6> minor>: MSAInst {
3778ddad151SMatheus Almeida  bits<10> s10;
3788ddad151SMatheus Almeida  bits<5> wd;
3798ddad151SMatheus Almeida
380babdcc8cSJack Carter  let Inst{25-23} = major;
381babdcc8cSJack Carter  let Inst{22-21} = df;
3828ddad151SMatheus Almeida  let Inst{20-11} = s10;
3838ddad151SMatheus Almeida  let Inst{10-6} = wd;
384babdcc8cSJack Carter  let Inst{5-0} = minor;
385babdcc8cSJack Carter}
386869bdad9SDaniel Sanders
387fe0bf9f6SMatheus Almeidaclass MSA_MI10_FMT<bits<2> df, bits<4> minor>: MSAInst {
388fe0bf9f6SMatheus Almeida  bits<21> addr;
389fe0bf9f6SMatheus Almeida  bits<5> wd;
390fe0bf9f6SMatheus Almeida
391fe0bf9f6SMatheus Almeida  let Inst{25-16} = addr{9-0};
392fe0bf9f6SMatheus Almeida  let Inst{15-11} = addr{20-16};
393fe0bf9f6SMatheus Almeida  let Inst{10-6} = wd;
394fe0bf9f6SMatheus Almeida  let Inst{5-2} = minor;
395fe0bf9f6SMatheus Almeida  let Inst{1-0} = df;
396fe0bf9f6SMatheus Almeida}
397fe0bf9f6SMatheus Almeida
398869bdad9SDaniel Sandersclass MSA_VEC_FMT<bits<5> major, bits<6> minor>: MSAInst {
3995be0cd87SMatheus Almeida  bits<5> wt;
4005be0cd87SMatheus Almeida  bits<5> ws;
4015be0cd87SMatheus Almeida  bits<5> wd;
4025be0cd87SMatheus Almeida
403869bdad9SDaniel Sanders  let Inst{25-21} = major;
4045be0cd87SMatheus Almeida  let Inst{20-16} = wt;
4055be0cd87SMatheus Almeida  let Inst{15-11} = ws;
4065be0cd87SMatheus Almeida  let Inst{10-6} = wd;
407869bdad9SDaniel Sanders  let Inst{5-0} = minor;
408869bdad9SDaniel Sanders}
409ce09d078SDaniel Sanders
410eb68d9d9SMatheus Almeidaclass MSA_CBRANCH_FMT<bits<3> major, bits<2> df>: MSACBranch {
411eb68d9d9SMatheus Almeida  bits<16> offset;
412eb68d9d9SMatheus Almeida  bits<5> wt;
413eb68d9d9SMatheus Almeida
414eb68d9d9SMatheus Almeida  let Inst{25-23} = major;
415eb68d9d9SMatheus Almeida  let Inst{22-21} = df;
416eb68d9d9SMatheus Almeida  let Inst{20-16} = wt;
417eb68d9d9SMatheus Almeida  let Inst{15-0} = offset;
418eb68d9d9SMatheus Almeida}
419eb68d9d9SMatheus Almeida
420eb68d9d9SMatheus Almeidaclass MSA_CBRANCH_V_FMT<bits<5> major>: MSACBranch {
421eb68d9d9SMatheus Almeida  bits<16> offset;
422eb68d9d9SMatheus Almeida  bits<5> wt;
423eb68d9d9SMatheus Almeida
424ce09d078SDaniel Sanders  let Inst{25-21} = major;
425eb68d9d9SMatheus Almeida  let Inst{20-16} = wt;
426eb68d9d9SMatheus Almeida  let Inst{15-0} = offset;
427ce09d078SDaniel Sanders}
428a4eaf59fSDaniel Sanders
429be8681b4SMatheus Almeidaclass SPECIAL_LSA_FMT<bits<6> minor>: MSASpecial {
430be8681b4SMatheus Almeida  bits<5> rs;
431be8681b4SMatheus Almeida  bits<5> rt;
432be8681b4SMatheus Almeida  bits<5> rd;
433be8681b4SMatheus Almeida  bits<2> sa;
434be8681b4SMatheus Almeida
435be8681b4SMatheus Almeida  let Inst{25-21} = rs;
436be8681b4SMatheus Almeida  let Inst{20-16} = rt;
437be8681b4SMatheus Almeida  let Inst{15-11} = rd;
438a4eaf59fSDaniel Sanders  let Inst{10-8} = 0b000;
439be8681b4SMatheus Almeida  let Inst{7-6} = sa;
440be8681b4SMatheus Almeida  let Inst{5-0} = minor;
441a4eaf59fSDaniel Sanders}
4424b27eb58SMatheus Almeida
443090f6e41SDaniel Sandersclass SPECIAL_DLSA_FMT<bits<6> minor>: MSASpecial {
4444b27eb58SMatheus Almeida  bits<5> rs;
4454b27eb58SMatheus Almeida  bits<5> rt;
4464b27eb58SMatheus Almeida  bits<5> rd;
4474b27eb58SMatheus Almeida  bits<2> sa;
4484b27eb58SMatheus Almeida
4494b27eb58SMatheus Almeida  let Inst{25-21} = rs;
4504b27eb58SMatheus Almeida  let Inst{20-16} = rt;
4514b27eb58SMatheus Almeida  let Inst{15-11} = rd;
4524b27eb58SMatheus Almeida  let Inst{10-8} = 0b000;
4534b27eb58SMatheus Almeida  let Inst{7-6} = sa;
4544b27eb58SMatheus Almeida  let Inst{5-0} = minor;
4554b27eb58SMatheus Almeida}
456