blob: 8383646dfe01456dbb7aa41f03818911bbf67cc1 [file] [log] [blame]
Jack Carter3a2c2d42013-08-13 20:54:07 +00001//===- MipsMSAInstrInfo.td - MSA ASE instructions -*- tablegen ------------*-=//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file describes Mips MSA ASE instructions.
11//
12//===----------------------------------------------------------------------===//
13
Jack Carterbabdcc82013-08-15 12:24:57 +000014def immSExt5 : ImmLeaf<i32, [{return isInt<5>(Imm);}]>;
15def immSExt10: ImmLeaf<i32, [{return isInt<10>(Imm);}]>;
16
17def uimm3 : Operand<i32> {
18 let PrintMethod = "printUnsignedImm";
19}
20
21def uimm4 : Operand<i32> {
22 let PrintMethod = "printUnsignedImm";
23}
24
25def uimm6 : Operand<i32> {
26 let PrintMethod = "printUnsignedImm";
27}
28
29def uimm8 : Operand<i32> {
30 let PrintMethod = "printUnsignedImm";
31}
32
33def simm5 : Operand<i32>;
34
35def simm10 : Operand<i32>;
36
Jack Carter3a2c2d42013-08-13 20:54:07 +000037// Instruction encoding.
Jack Carterbabdcc82013-08-15 12:24:57 +000038class ADD_A_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010000>;
39class ADD_A_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010000>;
40class ADD_A_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010000>;
41class ADD_A_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010000>;
42
43class ADDS_A_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010000>;
44class ADDS_A_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010000>;
45class ADDS_A_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010000>;
46class ADDS_A_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010000>;
47
48class ADDS_S_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b010000>;
49class ADDS_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010000>;
50class ADDS_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010000>;
51class ADDS_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010000>;
52
53class ADDS_U_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b010000>;
54class ADDS_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b010000>;
55class ADDS_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b010000>;
56class ADDS_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b010000>;
57
58class ADDV_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b001110>;
59class ADDV_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b001110>;
60class ADDV_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b001110>;
61class ADDV_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b001110>;
62
63class ADDVI_B_ENC : MSA_I5_FMT<0b000, 0b00, 0b000110>;
64class ADDVI_H_ENC : MSA_I5_FMT<0b000, 0b01, 0b000110>;
65class ADDVI_W_ENC : MSA_I5_FMT<0b000, 0b10, 0b000110>;
66class ADDVI_D_ENC : MSA_I5_FMT<0b000, 0b11, 0b000110>;
67
Daniel Sanders869bdad2013-08-20 08:38:21 +000068class AND_V_ENC : MSA_VEC_FMT<0b00000, 0b011110>;
69
Jack Carterbabdcc82013-08-15 12:24:57 +000070class ANDI_B_ENC : MSA_I8_FMT<0b00, 0b000000>;
71
72class ASUB_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b010001>;
73class ASUB_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010001>;
74class ASUB_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010001>;
75class ASUB_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010001>;
76
77class ASUB_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b010001>;
78class ASUB_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010001>;
79class ASUB_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010001>;
80class ASUB_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010001>;
81
82class AVE_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b010000>;
83class AVE_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010000>;
84class AVE_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010000>;
85class AVE_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010000>;
86
87class AVE_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b010000>;
88class AVE_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010000>;
89class AVE_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010000>;
90class AVE_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010000>;
91
92class AVER_S_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b010000>;
93class AVER_S_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b010000>;
94class AVER_S_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b010000>;
95class AVER_S_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b010000>;
96
97class AVER_U_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b010000>;
98class AVER_U_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b010000>;
99class AVER_U_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b010000>;
100class AVER_U_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b010000>;
101
102class BCLR_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b001101>;
103class BCLR_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b001101>;
104class BCLR_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b001101>;
105class BCLR_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b001101>;
106
107class BCLRI_B_ENC : MSA_BIT_B_FMT<0b011, 0b001001>;
108class BCLRI_H_ENC : MSA_BIT_H_FMT<0b011, 0b001001>;
109class BCLRI_W_ENC : MSA_BIT_W_FMT<0b011, 0b001001>;
110class BCLRI_D_ENC : MSA_BIT_D_FMT<0b011, 0b001001>;
111
112class BINSL_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b001101>;
113class BINSL_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b001101>;
114class BINSL_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b001101>;
115class BINSL_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b001101>;
116
117class BINSLI_B_ENC : MSA_BIT_B_FMT<0b110, 0b001001>;
118class BINSLI_H_ENC : MSA_BIT_H_FMT<0b110, 0b001001>;
119class BINSLI_W_ENC : MSA_BIT_W_FMT<0b110, 0b001001>;
120class BINSLI_D_ENC : MSA_BIT_D_FMT<0b110, 0b001001>;
121
122class BINSR_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b001101>;
123class BINSR_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b001101>;
124class BINSR_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b001101>;
125class BINSR_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b001101>;
126
127class BINSRI_B_ENC : MSA_BIT_B_FMT<0b111, 0b001001>;
128class BINSRI_H_ENC : MSA_BIT_H_FMT<0b111, 0b001001>;
129class BINSRI_W_ENC : MSA_BIT_W_FMT<0b111, 0b001001>;
130class BINSRI_D_ENC : MSA_BIT_D_FMT<0b111, 0b001001>;
131
Daniel Sanders869bdad2013-08-20 08:38:21 +0000132class BMNZ_V_ENC : MSA_VEC_FMT<0b00100, 0b011110>;
133
Jack Carterbabdcc82013-08-15 12:24:57 +0000134class BMNZI_B_ENC : MSA_I8_FMT<0b00, 0b000001>;
135
Daniel Sanders869bdad2013-08-20 08:38:21 +0000136class BMZ_V_ENC : MSA_VEC_FMT<0b00101, 0b011110>;
137
Jack Carterbabdcc82013-08-15 12:24:57 +0000138class BMZI_B_ENC : MSA_I8_FMT<0b01, 0b000001>;
139
140class BNEG_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b001101>;
141class BNEG_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b001101>;
142class BNEG_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b001101>;
143class BNEG_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b001101>;
144
145class BNEGI_B_ENC : MSA_BIT_B_FMT<0b101, 0b001001>;
146class BNEGI_H_ENC : MSA_BIT_H_FMT<0b101, 0b001001>;
147class BNEGI_W_ENC : MSA_BIT_W_FMT<0b101, 0b001001>;
148class BNEGI_D_ENC : MSA_BIT_D_FMT<0b101, 0b001001>;
149
Daniel Sanders869bdad2013-08-20 08:38:21 +0000150class BSEL_V_ENC : MSA_VEC_FMT<0b00110, 0b011110>;
151
Jack Carterbabdcc82013-08-15 12:24:57 +0000152class BSELI_B_ENC : MSA_I8_FMT<0b10, 0b000001>;
153
154class BSET_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b001101>;
155class BSET_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b001101>;
156class BSET_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b001101>;
157class BSET_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b001101>;
158
159class BSETI_B_ENC : MSA_BIT_B_FMT<0b100, 0b001001>;
160class BSETI_H_ENC : MSA_BIT_H_FMT<0b100, 0b001001>;
161class BSETI_W_ENC : MSA_BIT_W_FMT<0b100, 0b001001>;
162class BSETI_D_ENC : MSA_BIT_D_FMT<0b100, 0b001001>;
163
164class CEQ_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b001111>;
165class CEQ_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b001111>;
166class CEQ_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b001111>;
167class CEQ_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b001111>;
168
169class CEQI_B_ENC : MSA_I5_FMT<0b000, 0b00, 0b000111>;
170class CEQI_H_ENC : MSA_I5_FMT<0b000, 0b01, 0b000111>;
171class CEQI_W_ENC : MSA_I5_FMT<0b000, 0b10, 0b000111>;
172class CEQI_D_ENC : MSA_I5_FMT<0b000, 0b11, 0b000111>;
173
174class CLE_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b001111>;
175class CLE_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b001111>;
176class CLE_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b001111>;
177class CLE_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b001111>;
178
179class CLE_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b001111>;
180class CLE_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b001111>;
181class CLE_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b001111>;
182class CLE_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b001111>;
183
184class CLEI_S_B_ENC : MSA_I5_FMT<0b100, 0b00, 0b000111>;
185class CLEI_S_H_ENC : MSA_I5_FMT<0b100, 0b01, 0b000111>;
186class CLEI_S_W_ENC : MSA_I5_FMT<0b100, 0b10, 0b000111>;
187class CLEI_S_D_ENC : MSA_I5_FMT<0b100, 0b11, 0b000111>;
188
189class CLEI_U_B_ENC : MSA_I5_FMT<0b101, 0b00, 0b000111>;
190class CLEI_U_H_ENC : MSA_I5_FMT<0b101, 0b01, 0b000111>;
191class CLEI_U_W_ENC : MSA_I5_FMT<0b101, 0b10, 0b000111>;
192class CLEI_U_D_ENC : MSA_I5_FMT<0b101, 0b11, 0b000111>;
193
194class CLT_S_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b001111>;
195class CLT_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b001111>;
196class CLT_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b001111>;
197class CLT_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b001111>;
198
199class CLT_U_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b001111>;
200class CLT_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b001111>;
201class CLT_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b001111>;
202class CLT_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b001111>;
203
204class CLTI_S_B_ENC : MSA_I5_FMT<0b010, 0b00, 0b000111>;
205class CLTI_S_H_ENC : MSA_I5_FMT<0b010, 0b01, 0b000111>;
206class CLTI_S_W_ENC : MSA_I5_FMT<0b010, 0b10, 0b000111>;
207class CLTI_S_D_ENC : MSA_I5_FMT<0b010, 0b11, 0b000111>;
208
209class CLTI_U_B_ENC : MSA_I5_FMT<0b011, 0b00, 0b000111>;
210class CLTI_U_H_ENC : MSA_I5_FMT<0b011, 0b01, 0b000111>;
211class CLTI_U_W_ENC : MSA_I5_FMT<0b011, 0b10, 0b000111>;
212class CLTI_U_D_ENC : MSA_I5_FMT<0b011, 0b11, 0b000111>;
213
214class COPY_S_B_ENC : MSA_ELM_B_FMT<0b0010, 0b011001>;
215class COPY_S_H_ENC : MSA_ELM_H_FMT<0b0010, 0b011001>;
216class COPY_S_W_ENC : MSA_ELM_W_FMT<0b0010, 0b011001>;
217
218class COPY_U_B_ENC : MSA_ELM_B_FMT<0b0011, 0b011001>;
219class COPY_U_H_ENC : MSA_ELM_H_FMT<0b0011, 0b011001>;
220class COPY_U_W_ENC : MSA_ELM_W_FMT<0b0011, 0b011001>;
221
222class DIV_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b010010>;
223class DIV_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010010>;
224class DIV_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010010>;
225class DIV_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010010>;
226
227class DIV_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b010010>;
228class DIV_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010010>;
229class DIV_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010010>;
230class DIV_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010010>;
231
232class DOTP_S_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010011>;
233class DOTP_S_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010011>;
234class DOTP_S_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010011>;
235class DOTP_S_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010011>;
236
237class DOTP_U_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010011>;
238class DOTP_U_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010011>;
239class DOTP_U_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010011>;
240class DOTP_U_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010011>;
241
242class DPADD_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010011>;
243class DPADD_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010011>;
244class DPADD_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010011>;
245
246class DPADD_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b010011>;
247class DPADD_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b010011>;
248class DPADD_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b010011>;
249
250class DPSUB_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010011>;
251class DPSUB_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010011>;
252class DPSUB_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010011>;
253
254class DPSUB_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010011>;
255class DPSUB_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010011>;
256class DPSUB_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010011>;
257
Jack Carterb95ee692013-08-15 13:45:36 +0000258class FADD_W_ENC : MSA_3RF_FMT<0b0000, 0b0, 0b011011>;
259class FADD_D_ENC : MSA_3RF_FMT<0b0000, 0b1, 0b011011>;
260
261class FCEQ_W_ENC : MSA_3RF_FMT<0b0010, 0b0, 0b011010>;
262class FCEQ_D_ENC : MSA_3RF_FMT<0b0010, 0b1, 0b011010>;
263
Jack Carterb95ee692013-08-15 13:45:36 +0000264class FCLASS_W_ENC : MSA_2RF_FMT<0b110010000, 0b0, 0b011110>;
265class FCLASS_D_ENC : MSA_2RF_FMT<0b110010000, 0b1, 0b011110>;
266
267class FCLE_W_ENC : MSA_3RF_FMT<0b0110, 0b0, 0b011010>;
268class FCLE_D_ENC : MSA_3RF_FMT<0b0110, 0b1, 0b011010>;
269
270class FCLT_W_ENC : MSA_3RF_FMT<0b0100, 0b0, 0b011010>;
271class FCLT_D_ENC : MSA_3RF_FMT<0b0100, 0b1, 0b011010>;
272
273class FCNE_W_ENC : MSA_3RF_FMT<0b0011, 0b0, 0b011010>;
274class FCNE_D_ENC : MSA_3RF_FMT<0b0011, 0b1, 0b011010>;
275
276class FCUN_W_ENC : MSA_3RF_FMT<0b0001, 0b0, 0b011010>;
277class FCUN_D_ENC : MSA_3RF_FMT<0b0001, 0b1, 0b011010>;
278
279class FDIV_W_ENC : MSA_3RF_FMT<0b0011, 0b0, 0b011011>;
280class FDIV_D_ENC : MSA_3RF_FMT<0b0011, 0b1, 0b011011>;
281
282class FEXDO_H_ENC : MSA_3RF_FMT<0b1000, 0b0, 0b011011>;
283class FEXDO_W_ENC : MSA_3RF_FMT<0b1000, 0b1, 0b011011>;
284
285class FEXP2_W_ENC : MSA_3RF_FMT<0b0111, 0b0, 0b011011>;
286class FEXP2_D_ENC : MSA_3RF_FMT<0b0111, 0b1, 0b011011>;
287
288class FEXUPL_W_ENC : MSA_2RF_FMT<0b110011000, 0b0, 0b011110>;
289class FEXUPL_D_ENC : MSA_2RF_FMT<0b110011000, 0b1, 0b011110>;
290
291class FEXUPR_W_ENC : MSA_2RF_FMT<0b110011001, 0b0, 0b011110>;
292class FEXUPR_D_ENC : MSA_2RF_FMT<0b110011001, 0b1, 0b011110>;
293
294class FFINT_S_W_ENC : MSA_2RF_FMT<0b110011110, 0b0, 0b011110>;
295class FFINT_S_D_ENC : MSA_2RF_FMT<0b110011110, 0b1, 0b011110>;
296
297class FFINT_U_W_ENC : MSA_2RF_FMT<0b110011111, 0b0, 0b011110>;
298class FFINT_U_D_ENC : MSA_2RF_FMT<0b110011111, 0b1, 0b011110>;
299
300class FFQL_W_ENC : MSA_2RF_FMT<0b110011010, 0b0, 0b011110>;
301class FFQL_D_ENC : MSA_2RF_FMT<0b110011010, 0b1, 0b011110>;
302
303class FFQR_W_ENC : MSA_2RF_FMT<0b110011011, 0b0, 0b011110>;
304class FFQR_D_ENC : MSA_2RF_FMT<0b110011011, 0b1, 0b011110>;
305
306class FILL_B_ENC : MSA_2R_FMT<0b11000000, 0b00, 0b011110>;
307class FILL_H_ENC : MSA_2R_FMT<0b11000000, 0b01, 0b011110>;
308class FILL_W_ENC : MSA_2R_FMT<0b11000000, 0b10, 0b011110>;
309
310class FLOG2_W_ENC : MSA_2RF_FMT<0b110010111, 0b0, 0b011110>;
311class FLOG2_D_ENC : MSA_2RF_FMT<0b110010111, 0b1, 0b011110>;
312
313class FMADD_W_ENC : MSA_3RF_FMT<0b0100, 0b0, 0b011011>;
314class FMADD_D_ENC : MSA_3RF_FMT<0b0100, 0b1, 0b011011>;
315
316class FMAX_W_ENC : MSA_3RF_FMT<0b1110, 0b0, 0b011011>;
317class FMAX_D_ENC : MSA_3RF_FMT<0b1110, 0b1, 0b011011>;
318
319class FMAX_A_W_ENC : MSA_3RF_FMT<0b1111, 0b0, 0b011011>;
320class FMAX_A_D_ENC : MSA_3RF_FMT<0b1111, 0b1, 0b011011>;
321
322class FMIN_W_ENC : MSA_3RF_FMT<0b1100, 0b0, 0b011011>;
323class FMIN_D_ENC : MSA_3RF_FMT<0b1100, 0b1, 0b011011>;
324
325class FMIN_A_W_ENC : MSA_3RF_FMT<0b1101, 0b0, 0b011011>;
326class FMIN_A_D_ENC : MSA_3RF_FMT<0b1101, 0b1, 0b011011>;
327
328class FMSUB_W_ENC : MSA_3RF_FMT<0b0101, 0b0, 0b011011>;
329class FMSUB_D_ENC : MSA_3RF_FMT<0b0101, 0b1, 0b011011>;
330
331class FMUL_W_ENC : MSA_3RF_FMT<0b0010, 0b0, 0b011011>;
332class FMUL_D_ENC : MSA_3RF_FMT<0b0010, 0b1, 0b011011>;
333
334class FRINT_W_ENC : MSA_2RF_FMT<0b110010110, 0b0, 0b011110>;
335class FRINT_D_ENC : MSA_2RF_FMT<0b110010110, 0b1, 0b011110>;
336
337class FRCP_W_ENC : MSA_2RF_FMT<0b110010101, 0b0, 0b011110>;
338class FRCP_D_ENC : MSA_2RF_FMT<0b110010101, 0b1, 0b011110>;
339
340class FRSQRT_W_ENC : MSA_2RF_FMT<0b110010100, 0b0, 0b011110>;
341class FRSQRT_D_ENC : MSA_2RF_FMT<0b110010100, 0b1, 0b011110>;
342
343class FSEQ_W_ENC : MSA_3RF_FMT<0b1010, 0b0, 0b011010>;
344class FSEQ_D_ENC : MSA_3RF_FMT<0b1010, 0b1, 0b011010>;
345
Jack Carterb95ee692013-08-15 13:45:36 +0000346class FSLE_W_ENC : MSA_3RF_FMT<0b1110, 0b0, 0b011010>;
347class FSLE_D_ENC : MSA_3RF_FMT<0b1110, 0b1, 0b011010>;
348
349class FSLT_W_ENC : MSA_3RF_FMT<0b1100, 0b0, 0b011010>;
350class FSLT_D_ENC : MSA_3RF_FMT<0b1100, 0b1, 0b011010>;
351
352class FSNE_W_ENC : MSA_3RF_FMT<0b1011, 0b0, 0b011010>;
353class FSNE_D_ENC : MSA_3RF_FMT<0b1011, 0b1, 0b011010>;
354
355class FSQRT_W_ENC : MSA_2RF_FMT<0b110010011, 0b0, 0b011110>;
356class FSQRT_D_ENC : MSA_2RF_FMT<0b110010011, 0b1, 0b011110>;
357
358class FSUB_W_ENC : MSA_3RF_FMT<0b0001, 0b0, 0b011011>;
359class FSUB_D_ENC : MSA_3RF_FMT<0b0001, 0b1, 0b011011>;
360
361class FTINT_S_W_ENC : MSA_2RF_FMT<0b110011100, 0b0, 0b011110>;
362class FTINT_S_D_ENC : MSA_2RF_FMT<0b110011100, 0b1, 0b011110>;
363
364class FTINT_U_W_ENC : MSA_2RF_FMT<0b110011101, 0b0, 0b011110>;
365class FTINT_U_D_ENC : MSA_2RF_FMT<0b110011101, 0b1, 0b011110>;
366
367class FTQ_H_ENC : MSA_3RF_FMT<0b1010, 0b0, 0b011011>;
368class FTQ_W_ENC : MSA_3RF_FMT<0b1010, 0b1, 0b011011>;
369
Jack Carterbabdcc82013-08-15 12:24:57 +0000370class ILVEV_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b010100>;
371class ILVEV_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b010100>;
372class ILVEV_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b010100>;
373class ILVEV_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b010100>;
374
375class ILVL_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b010100>;
376class ILVL_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010100>;
377class ILVL_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010100>;
378class ILVL_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010100>;
379
380class ILVOD_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b010100>;
381class ILVOD_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b010100>;
382class ILVOD_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b010100>;
383class ILVOD_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b010100>;
384
385class ILVR_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b010100>;
386class ILVR_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010100>;
387class ILVR_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010100>;
388class ILVR_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010100>;
389
390class INSERT_B_ENC : MSA_ELM_B_FMT<0b0100, 0b011001>;
391class INSERT_H_ENC : MSA_ELM_H_FMT<0b0100, 0b011001>;
392class INSERT_W_ENC : MSA_ELM_W_FMT<0b0100, 0b011001>;
393
Daniel Sandersf2a0f1d2013-08-20 09:22:54 +0000394class INSVE_B_ENC : MSA_ELM_B_FMT<0b0101, 0b011001>;
395class INSVE_H_ENC : MSA_ELM_H_FMT<0b0101, 0b011001>;
396class INSVE_W_ENC : MSA_ELM_W_FMT<0b0101, 0b011001>;
397class INSVE_D_ENC : MSA_ELM_D_FMT<0b0101, 0b011001>;
398
Jack Carter3a2c2d42013-08-13 20:54:07 +0000399class LD_B_ENC : MSA_I5_FMT<0b110, 0b00, 0b000111>;
400class LD_H_ENC : MSA_I5_FMT<0b110, 0b01, 0b000111>;
401class LD_W_ENC : MSA_I5_FMT<0b110, 0b10, 0b000111>;
402class LD_D_ENC : MSA_I5_FMT<0b110, 0b11, 0b000111>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000403
404class LDI_B_ENC : MSA_I10_FMT<0b010, 0b00, 0b001100>;
405class LDI_H_ENC : MSA_I10_FMT<0b010, 0b01, 0b001100>;
406class LDI_W_ENC : MSA_I10_FMT<0b010, 0b10, 0b001100>;
407class LDI_D_ENC : MSA_I10_FMT<0b010, 0b11, 0b001100>;
408
Jack Carterd12e8372013-08-15 14:22:07 +0000409class MADD_Q_H_ENC : MSA_3RF_FMT<0b0010, 0b0, 0b011100>;
410class MADD_Q_W_ENC : MSA_3RF_FMT<0b0010, 0b1, 0b011100>;
411
412class MADDR_Q_H_ENC : MSA_3RF_FMT<0b0011, 0b0, 0b011100>;
413class MADDR_Q_W_ENC : MSA_3RF_FMT<0b0011, 0b1, 0b011100>;
414
415class MADDV_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010010>;
416class MADDV_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010010>;
417class MADDV_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010010>;
418class MADDV_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010010>;
419
420class MAX_A_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b001110>;
421class MAX_A_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b001110>;
422class MAX_A_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b001110>;
423class MAX_A_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b001110>;
424
425class MAX_S_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b001110>;
426class MAX_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b001110>;
427class MAX_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b001110>;
428class MAX_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b001110>;
429
430class MAX_U_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b001110>;
431class MAX_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b001110>;
432class MAX_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b001110>;
433class MAX_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b001110>;
434
435class MAXI_S_B_ENC : MSA_I5_FMT<0b010, 0b00, 0b000110>;
436class MAXI_S_H_ENC : MSA_I5_FMT<0b010, 0b01, 0b000110>;
437class MAXI_S_W_ENC : MSA_I5_FMT<0b010, 0b10, 0b000110>;
438class MAXI_S_D_ENC : MSA_I5_FMT<0b010, 0b11, 0b000110>;
439
440class MAXI_U_B_ENC : MSA_I5_FMT<0b011, 0b00, 0b000110>;
441class MAXI_U_H_ENC : MSA_I5_FMT<0b011, 0b01, 0b000110>;
442class MAXI_U_W_ENC : MSA_I5_FMT<0b011, 0b10, 0b000110>;
443class MAXI_U_D_ENC : MSA_I5_FMT<0b011, 0b11, 0b000110>;
444
445class MIN_A_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b001110>;
446class MIN_A_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b001110>;
447class MIN_A_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b001110>;
448class MIN_A_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b001110>;
449
450class MIN_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b001110>;
451class MIN_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b001110>;
452class MIN_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b001110>;
453class MIN_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b001110>;
454
455class MIN_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b001110>;
456class MIN_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b001110>;
457class MIN_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b001110>;
458class MIN_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b001110>;
459
460class MINI_S_B_ENC : MSA_I5_FMT<0b100, 0b00, 0b000110>;
461class MINI_S_H_ENC : MSA_I5_FMT<0b100, 0b01, 0b000110>;
462class MINI_S_W_ENC : MSA_I5_FMT<0b100, 0b10, 0b000110>;
463class MINI_S_D_ENC : MSA_I5_FMT<0b100, 0b11, 0b000110>;
464
465class MINI_U_B_ENC : MSA_I5_FMT<0b101, 0b00, 0b000110>;
466class MINI_U_H_ENC : MSA_I5_FMT<0b101, 0b01, 0b000110>;
467class MINI_U_W_ENC : MSA_I5_FMT<0b101, 0b10, 0b000110>;
468class MINI_U_D_ENC : MSA_I5_FMT<0b101, 0b11, 0b000110>;
469
470class MOD_S_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b010010>;
471class MOD_S_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b010010>;
472class MOD_S_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b010010>;
473class MOD_S_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b010010>;
474
475class MOD_U_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b010010>;
476class MOD_U_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b010010>;
477class MOD_U_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b010010>;
478class MOD_U_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b010010>;
479
480class MSUB_Q_H_ENC : MSA_3RF_FMT<0b0100, 0b0, 0b011100>;
481class MSUB_Q_W_ENC : MSA_3RF_FMT<0b0100, 0b1, 0b011100>;
482
483class MSUBR_Q_H_ENC : MSA_3RF_FMT<0b0101, 0b0, 0b011100>;
484class MSUBR_Q_W_ENC : MSA_3RF_FMT<0b0101, 0b1, 0b011100>;
485
486class MSUBV_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b010010>;
487class MSUBV_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010010>;
488class MSUBV_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010010>;
489class MSUBV_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010010>;
490
491class MUL_Q_H_ENC : MSA_3RF_FMT<0b0000, 0b0, 0b011100>;
492class MUL_Q_W_ENC : MSA_3RF_FMT<0b0000, 0b1, 0b011100>;
493
494class MULR_Q_H_ENC : MSA_3RF_FMT<0b0001, 0b0, 0b011100>;
495class MULR_Q_W_ENC : MSA_3RF_FMT<0b0001, 0b1, 0b011100>;
496
497class MULV_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010010>;
498class MULV_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010010>;
499class MULV_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010010>;
500class MULV_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010010>;
501
502class NLOC_B_ENC : MSA_2R_FMT<0b11000010, 0b00, 0b011110>;
503class NLOC_H_ENC : MSA_2R_FMT<0b11000010, 0b01, 0b011110>;
504class NLOC_W_ENC : MSA_2R_FMT<0b11000010, 0b10, 0b011110>;
505class NLOC_D_ENC : MSA_2R_FMT<0b11000010, 0b11, 0b011110>;
506
507class NLZC_B_ENC : MSA_2R_FMT<0b11000011, 0b00, 0b011110>;
508class NLZC_H_ENC : MSA_2R_FMT<0b11000011, 0b01, 0b011110>;
509class NLZC_W_ENC : MSA_2R_FMT<0b11000011, 0b10, 0b011110>;
510class NLZC_D_ENC : MSA_2R_FMT<0b11000011, 0b11, 0b011110>;
511
Daniel Sanders869bdad2013-08-20 08:38:21 +0000512class NOR_V_ENC : MSA_VEC_FMT<0b00010, 0b011110>;
513
Jack Carterd12e8372013-08-15 14:22:07 +0000514class NORI_B_ENC : MSA_I8_FMT<0b10, 0b000000>;
515
Daniel Sanders869bdad2013-08-20 08:38:21 +0000516class OR_V_ENC : MSA_VEC_FMT<0b00001, 0b011110>;
517
Jack Carterd12e8372013-08-15 14:22:07 +0000518class ORI_B_ENC : MSA_I8_FMT<0b01, 0b000000>;
519
520class PCKEV_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b010100>;
521class PCKEV_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010100>;
522class PCKEV_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010100>;
523class PCKEV_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010100>;
524
525class PCKOD_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b010100>;
526class PCKOD_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b010100>;
527class PCKOD_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b010100>;
528class PCKOD_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b010100>;
529
530class PCNT_B_ENC : MSA_2R_FMT<0b11000001, 0b00, 0b011110>;
531class PCNT_H_ENC : MSA_2R_FMT<0b11000001, 0b01, 0b011110>;
532class PCNT_W_ENC : MSA_2R_FMT<0b11000001, 0b10, 0b011110>;
533class PCNT_D_ENC : MSA_2R_FMT<0b11000001, 0b11, 0b011110>;
534
535class SAT_S_B_ENC : MSA_BIT_B_FMT<0b000, 0b001010>;
536class SAT_S_H_ENC : MSA_BIT_H_FMT<0b000, 0b001010>;
537class SAT_S_W_ENC : MSA_BIT_W_FMT<0b000, 0b001010>;
538class SAT_S_D_ENC : MSA_BIT_D_FMT<0b000, 0b001010>;
539
540class SAT_U_B_ENC : MSA_BIT_B_FMT<0b001, 0b001010>;
541class SAT_U_H_ENC : MSA_BIT_H_FMT<0b001, 0b001010>;
542class SAT_U_W_ENC : MSA_BIT_W_FMT<0b001, 0b001010>;
543class SAT_U_D_ENC : MSA_BIT_D_FMT<0b001, 0b001010>;
544
545class SHF_B_ENC : MSA_I8_FMT<0b00, 0b000010>;
546class SHF_H_ENC : MSA_I8_FMT<0b01, 0b000010>;
547class SHF_W_ENC : MSA_I8_FMT<0b10, 0b000010>;
548
549class SLD_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010100>;
550class SLD_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010100>;
551class SLD_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010100>;
552class SLD_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010100>;
553
554class SLDI_B_ENC : MSA_ELM_B_FMT<0b0000, 0b011001>;
555class SLDI_H_ENC : MSA_ELM_H_FMT<0b0000, 0b011001>;
556class SLDI_W_ENC : MSA_ELM_W_FMT<0b0000, 0b011001>;
557class SLDI_D_ENC : MSA_ELM_D_FMT<0b0000, 0b011001>;
558
559class SLL_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b001101>;
560class SLL_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b001101>;
561class SLL_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b001101>;
562class SLL_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b001101>;
563
564class SLLI_B_ENC : MSA_BIT_B_FMT<0b000, 0b001001>;
565class SLLI_H_ENC : MSA_BIT_H_FMT<0b000, 0b001001>;
566class SLLI_W_ENC : MSA_BIT_W_FMT<0b000, 0b001001>;
567class SLLI_D_ENC : MSA_BIT_D_FMT<0b000, 0b001001>;
568
569class SPLAT_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010100>;
570class SPLAT_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010100>;
571class SPLAT_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010100>;
572class SPLAT_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010100>;
573
574class SPLATI_B_ENC : MSA_ELM_B_FMT<0b0001, 0b011001>;
575class SPLATI_H_ENC : MSA_ELM_H_FMT<0b0001, 0b011001>;
576class SPLATI_W_ENC : MSA_ELM_W_FMT<0b0001, 0b011001>;
577class SPLATI_D_ENC : MSA_ELM_D_FMT<0b0001, 0b011001>;
578
579class SRA_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b001101>;
580class SRA_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b001101>;
581class SRA_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b001101>;
582class SRA_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b001101>;
583
584class SRAI_B_ENC : MSA_BIT_B_FMT<0b001, 0b001001>;
585class SRAI_H_ENC : MSA_BIT_H_FMT<0b001, 0b001001>;
586class SRAI_W_ENC : MSA_BIT_W_FMT<0b001, 0b001001>;
587class SRAI_D_ENC : MSA_BIT_D_FMT<0b001, 0b001001>;
588
589class SRL_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b001101>;
590class SRL_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b001101>;
591class SRL_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b001101>;
592class SRL_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b001101>;
593
594class SRLI_B_ENC : MSA_BIT_B_FMT<0b010, 0b001001>;
595class SRLI_H_ENC : MSA_BIT_H_FMT<0b010, 0b001001>;
596class SRLI_W_ENC : MSA_BIT_W_FMT<0b010, 0b001001>;
597class SRLI_D_ENC : MSA_BIT_D_FMT<0b010, 0b001001>;
598
Jack Carter3a2c2d42013-08-13 20:54:07 +0000599class ST_B_ENC : MSA_I5_FMT<0b111, 0b00, 0b000111>;
600class ST_H_ENC : MSA_I5_FMT<0b111, 0b01, 0b000111>;
601class ST_W_ENC : MSA_I5_FMT<0b111, 0b10, 0b000111>;
602class ST_D_ENC : MSA_I5_FMT<0b111, 0b11, 0b000111>;
603
Jack Carterd12e8372013-08-15 14:22:07 +0000604class SUBS_S_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010001>;
605class SUBS_S_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010001>;
606class SUBS_S_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010001>;
607class SUBS_S_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010001>;
608
609class SUBS_U_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010001>;
610class SUBS_U_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010001>;
611class SUBS_U_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010001>;
612class SUBS_U_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010001>;
613
614class SUBSUS_U_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b010001>;
615class SUBSUS_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b010001>;
616class SUBSUS_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b010001>;
617class SUBSUS_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b010001>;
618
619class SUBSUU_S_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b010001>;
620class SUBSUU_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010001>;
621class SUBSUU_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010001>;
622class SUBSUU_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010001>;
623
624class SUBV_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b001110>;
625class SUBV_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b001110>;
626class SUBV_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b001110>;
627class SUBV_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b001110>;
628
629class SUBVI_B_ENC : MSA_I5_FMT<0b001, 0b00, 0b000110>;
630class SUBVI_H_ENC : MSA_I5_FMT<0b001, 0b01, 0b000110>;
631class SUBVI_W_ENC : MSA_I5_FMT<0b001, 0b10, 0b000110>;
632class SUBVI_D_ENC : MSA_I5_FMT<0b001, 0b11, 0b000110>;
633
634class VSHF_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010101>;
635class VSHF_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010101>;
636class VSHF_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010101>;
637class VSHF_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010101>;
638
Daniel Sanders869bdad2013-08-20 08:38:21 +0000639class XOR_V_ENC : MSA_VEC_FMT<0b00011, 0b011110>;
640
Jack Carterd12e8372013-08-15 14:22:07 +0000641class XORI_B_ENC : MSA_I8_FMT<0b11, 0b000000>;
642
Jack Carter3a2c2d42013-08-13 20:54:07 +0000643// Instruction desc.
Jack Carterbabdcc82013-08-15 12:24:57 +0000644class MSA_BIT_D_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
645 InstrItinClass itin, RegisterClass RCWD,
646 RegisterClass RCWS> {
647 dag OutOperandList = (outs RCWD:$wd);
648 dag InOperandList = (ins RCWS:$ws, uimm6:$u6);
649 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u6");
650 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt6:$u6))];
651 InstrItinClass Itinerary = itin;
652}
653
654class MSA_BIT_W_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
655 InstrItinClass itin, RegisterClass RCWD,
656 RegisterClass RCWS> {
657 dag OutOperandList = (outs RCWD:$wd);
658 dag InOperandList = (ins RCWS:$ws, uimm5:$u5);
659 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u5");
660 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt5:$u5))];
661 InstrItinClass Itinerary = itin;
662}
663
664class MSA_BIT_H_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
665 InstrItinClass itin, RegisterClass RCWD,
666 RegisterClass RCWS> {
667 dag OutOperandList = (outs RCWD:$wd);
668 dag InOperandList = (ins RCWS:$ws, uimm4:$u4);
669 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u4");
670 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt4:$u4))];
671 InstrItinClass Itinerary = itin;
672}
673
674class MSA_BIT_B_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
675 InstrItinClass itin, RegisterClass RCWD,
676 RegisterClass RCWS> {
677 dag OutOperandList = (outs RCWD:$wd);
678 dag InOperandList = (ins RCWS:$ws, uimm3:$u3);
679 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u3");
680 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt3:$u3))];
681 InstrItinClass Itinerary = itin;
682}
683
684class MSA_COPY_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
685 InstrItinClass itin, RegisterClass RCD,
686 RegisterClass RCWS> {
687 dag OutOperandList = (outs RCD:$rd);
688 dag InOperandList = (ins RCWS:$ws, uimm6:$n);
689 string AsmString = !strconcat(instr_asm, "\t$rd, $ws[$n]");
690 list<dag> Pattern = [(set RCD:$rd, (OpNode RCWS:$ws, immZExt6:$n))];
691 InstrItinClass Itinerary = itin;
692}
693
694class MSA_I5_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
695 InstrItinClass itin, RegisterClass RCWD,
696 RegisterClass RCWS> {
697 dag OutOperandList = (outs RCWD:$wd);
698 dag InOperandList = (ins RCWS:$ws, uimm5:$u5);
699 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u5");
700 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt5:$u5))];
701 InstrItinClass Itinerary = itin;
702}
703
704class MSA_SI5_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
705 InstrItinClass itin, RegisterClass RCWD,
706 RegisterClass RCWS> {
707 dag OutOperandList = (outs RCWD:$wd);
708 dag InOperandList = (ins RCWS:$ws, simm5:$s5);
709 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $s5");
710 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immSExt5:$s5))];
711 InstrItinClass Itinerary = itin;
712}
713
714class MSA_I8_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
715 InstrItinClass itin, RegisterClass RCWD,
716 RegisterClass RCWS> {
717 dag OutOperandList = (outs RCWD:$wd);
718 dag InOperandList = (ins RCWS:$ws, uimm8:$u8);
719 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u8");
720 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt8:$u8))];
721 InstrItinClass Itinerary = itin;
722}
723
724class MSA_I10_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
725 InstrItinClass itin, RegisterClass RCWD> {
726 dag OutOperandList = (outs RCWD:$wd);
727 dag InOperandList = (ins simm10:$i10);
728 string AsmString = !strconcat(instr_asm, "\t$wd, $i10");
729 list<dag> Pattern = [(set RCWD:$wd, (OpNode immSExt10:$i10))];
730 InstrItinClass Itinerary = itin;
731}
732
733class MSA_2R_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
734 InstrItinClass itin, RegisterClass RCWD,
735 RegisterClass RCWS> {
736 dag OutOperandList = (outs RCWD:$wd);
737 dag InOperandList = (ins RCWS:$ws);
738 string AsmString = !strconcat(instr_asm, "\t$wd, $ws");
739 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws))];
740 InstrItinClass Itinerary = itin;
741}
742
743class MSA_2RF_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
744 InstrItinClass itin, RegisterClass RCWD,
745 RegisterClass RCWS> :
746 MSA_2R_DESC_BASE<instr_asm, OpNode, itin, RCWD, RCWS>;
747
748
749class MSA_3R_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
750 InstrItinClass itin, RegisterClass RCWD,
751 RegisterClass RCWS, RegisterClass RCWT = RCWS> {
752 dag OutOperandList = (outs RCWD:$wd);
753 dag InOperandList = (ins RCWS:$ws, RCWT:$wt);
754 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $wt");
755 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, RCWT:$wt))];
756 InstrItinClass Itinerary = itin;
757}
758
759class MSA_3R_4R_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
760 InstrItinClass itin, RegisterClass RCWD,
761 RegisterClass RCWS, RegisterClass RCWT = RCWS> {
762 dag OutOperandList = (outs RCWD:$wd);
763 dag InOperandList = (ins RCWD:$wd_in, RCWS:$ws, RCWT:$wt);
764 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $wt");
765 list<dag> Pattern = [(set RCWD:$wd,
766 (OpNode RCWD:$wd_in, RCWS:$ws, RCWT:$wt))];
767 InstrItinClass Itinerary = itin;
768 string Constraints = "$wd = $wd_in";
769}
770
771class MSA_3RF_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
772 InstrItinClass itin, RegisterClass RCWD,
773 RegisterClass RCWS, RegisterClass RCWT = RCWS> :
774 MSA_3R_DESC_BASE<instr_asm, OpNode, itin, RCWD, RCWS, RCWT>;
775
776class MSA_3RF_4RF_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
777 InstrItinClass itin, RegisterClass RCWD,
778 RegisterClass RCWS, RegisterClass RCWT = RCWS> :
779 MSA_3R_4R_DESC_BASE<instr_asm, OpNode, itin, RCWD, RCWS, RCWT>;
780
781class MSA_INSERT_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
782 InstrItinClass itin, RegisterClass RCD,
783 RegisterClass RCWS> {
784 dag OutOperandList = (outs RCD:$wd);
785 dag InOperandList = (ins RCD:$wd_in, uimm6:$n, RCWS:$rs);
786 string AsmString = !strconcat(instr_asm, "\t$wd[$n], $rs");
787 list<dag> Pattern = [(set RCD:$wd, (OpNode RCD:$wd_in,
788 immZExt6:$n,
789 RCWS:$rs))];
790 InstrItinClass Itinerary = itin;
791 string Constraints = "$wd = $wd_in";
792}
793
Daniel Sandersf2a0f1d2013-08-20 09:22:54 +0000794class MSA_INSVE_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
795 InstrItinClass itin, RegisterClass RCD,
796 RegisterClass RCWS> {
797 dag OutOperandList = (outs RCD:$wd);
798 dag InOperandList = (ins RCD:$wd_in, uimm6:$n, RCWS:$ws);
799 string AsmString = !strconcat(instr_asm, "\t$wd[$n], $ws[0]");
800 list<dag> Pattern = [(set RCD:$wd, (OpNode RCD:$wd_in,
801 immZExt6:$n,
802 RCWS:$ws))];
803 InstrItinClass Itinerary = itin;
804 string Constraints = "$wd = $wd_in";
805}
806
Daniel Sanders869bdad2013-08-20 08:38:21 +0000807class MSA_VEC_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
808 InstrItinClass itin, RegisterClass RCWD,
809 RegisterClass RCWS, RegisterClass RCWT = RCWS> {
810 dag OutOperandList = (outs RCWD:$wd);
811 dag InOperandList = (ins RCWS:$ws, RCWT:$wt);
812 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $wt");
813 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, RCWT:$wt))];
814 InstrItinClass Itinerary = itin;
815}
816
Jack Carterbabdcc82013-08-15 12:24:57 +0000817class ADD_A_B_DESC : MSA_3R_DESC_BASE<"add_a.b", int_mips_add_a_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000818 MSA128B, MSA128B>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000819class ADD_A_H_DESC : MSA_3R_DESC_BASE<"add_a.h", int_mips_add_a_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000820 MSA128H, MSA128H>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000821class ADD_A_W_DESC : MSA_3R_DESC_BASE<"add_a.w", int_mips_add_a_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000822 MSA128W, MSA128W>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000823class ADD_A_D_DESC : MSA_3R_DESC_BASE<"add_a.d", int_mips_add_a_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000824 MSA128D, MSA128D>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000825
826class ADDS_A_B_DESC : MSA_3R_DESC_BASE<"adds_a.b", int_mips_adds_a_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000827 NoItinerary, MSA128B, MSA128B>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000828 IsCommutable;
829class ADDS_A_H_DESC : MSA_3R_DESC_BASE<"adds_a.h", int_mips_adds_a_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000830 NoItinerary, MSA128H, MSA128H>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000831 IsCommutable;
832class ADDS_A_W_DESC : MSA_3R_DESC_BASE<"adds_a.w", int_mips_adds_a_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000833 NoItinerary, MSA128W, MSA128W>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000834 IsCommutable;
835class ADDS_A_D_DESC : MSA_3R_DESC_BASE<"adds_a.d", int_mips_adds_a_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000836 NoItinerary, MSA128D, MSA128D>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000837 IsCommutable;
838
839class ADDS_S_B_DESC : MSA_3R_DESC_BASE<"adds_s.b", int_mips_adds_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000840 NoItinerary, MSA128B, MSA128B>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000841 IsCommutable;
842class ADDS_S_H_DESC : MSA_3R_DESC_BASE<"adds_s.h", int_mips_adds_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000843 NoItinerary, MSA128H, MSA128H>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000844 IsCommutable;
845class ADDS_S_W_DESC : MSA_3R_DESC_BASE<"adds_s.w", int_mips_adds_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000846 NoItinerary, MSA128W, MSA128W>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000847 IsCommutable;
848class ADDS_S_D_DESC : MSA_3R_DESC_BASE<"adds_s.d", int_mips_adds_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000849 NoItinerary, MSA128D, MSA128D>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000850 IsCommutable;
851
852class ADDS_U_B_DESC : MSA_3R_DESC_BASE<"adds_u.b", int_mips_adds_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000853 NoItinerary, MSA128B, MSA128B>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000854 IsCommutable;
855class ADDS_U_H_DESC : MSA_3R_DESC_BASE<"adds_u.h", int_mips_adds_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000856 NoItinerary, MSA128H, MSA128H>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000857 IsCommutable;
858class ADDS_U_W_DESC : MSA_3R_DESC_BASE<"adds_u.w", int_mips_adds_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000859 NoItinerary, MSA128W, MSA128W>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000860 IsCommutable;
861class ADDS_U_D_DESC : MSA_3R_DESC_BASE<"adds_u.d", int_mips_adds_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000862 NoItinerary, MSA128D, MSA128D>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000863 IsCommutable;
864
865class ADDV_B_DESC : MSA_3R_DESC_BASE<"addv.b", int_mips_addv_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000866 MSA128B, MSA128B>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000867class ADDV_H_DESC : MSA_3R_DESC_BASE<"addv.h", int_mips_addv_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000868 MSA128H, MSA128H>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000869class ADDV_W_DESC : MSA_3R_DESC_BASE<"addv.w", int_mips_addv_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000870 MSA128W, MSA128W>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000871class ADDV_D_DESC : MSA_3R_DESC_BASE<"addv.d", int_mips_addv_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000872 MSA128D, MSA128D>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000873
874class ADDVI_B_DESC : MSA_I5_DESC_BASE<"addvi.b", int_mips_addvi_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000875 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000876class ADDVI_H_DESC : MSA_I5_DESC_BASE<"addvi.h", int_mips_addvi_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000877 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000878class ADDVI_W_DESC : MSA_I5_DESC_BASE<"addvi.w", int_mips_addvi_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000879 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000880class ADDVI_D_DESC : MSA_I5_DESC_BASE<"addvi.d", int_mips_addvi_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000881 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000882
Daniel Sanders869bdad2013-08-20 08:38:21 +0000883class AND_V_DESC : MSA_VEC_DESC_BASE<"and.v", int_mips_and_v, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000884 MSA128B, MSA128B>;
Daniel Sanders869bdad2013-08-20 08:38:21 +0000885
Jack Carterbabdcc82013-08-15 12:24:57 +0000886class ANDI_B_DESC : MSA_I8_DESC_BASE<"andi.b", int_mips_andi_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000887 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000888
889class ASUB_S_B_DESC : MSA_3R_DESC_BASE<"asub_s.b", int_mips_asub_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000890 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000891class ASUB_S_H_DESC : MSA_3R_DESC_BASE<"asub_s.h", int_mips_asub_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000892 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000893class ASUB_S_W_DESC : MSA_3R_DESC_BASE<"asub_s.w", int_mips_asub_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000894 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000895class ASUB_S_D_DESC : MSA_3R_DESC_BASE<"asub_s.d", int_mips_asub_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000896 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000897
898class ASUB_U_B_DESC : MSA_3R_DESC_BASE<"asub_u.b", int_mips_asub_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000899 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000900class ASUB_U_H_DESC : MSA_3R_DESC_BASE<"asub_u.h", int_mips_asub_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000901 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000902class ASUB_U_W_DESC : MSA_3R_DESC_BASE<"asub_u.w", int_mips_asub_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000903 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000904class ASUB_U_D_DESC : MSA_3R_DESC_BASE<"asub_u.d", int_mips_asub_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000905 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000906
907class AVE_S_B_DESC : MSA_3R_DESC_BASE<"ave_s.b", int_mips_ave_s_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000908 MSA128B, MSA128B>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000909class AVE_S_H_DESC : MSA_3R_DESC_BASE<"ave_s.h", int_mips_ave_s_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000910 MSA128H, MSA128H>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000911class AVE_S_W_DESC : MSA_3R_DESC_BASE<"ave_s.w", int_mips_ave_s_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000912 MSA128W, MSA128W>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000913class AVE_S_D_DESC : MSA_3R_DESC_BASE<"ave_s.d", int_mips_ave_s_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000914 MSA128D, MSA128D>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000915
916class AVE_U_B_DESC : MSA_3R_DESC_BASE<"ave_u.b", int_mips_ave_u_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000917 MSA128B, MSA128B>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000918class AVE_U_H_DESC : MSA_3R_DESC_BASE<"ave_u.h", int_mips_ave_u_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000919 MSA128H, MSA128H>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000920class AVE_U_W_DESC : MSA_3R_DESC_BASE<"ave_u.w", int_mips_ave_u_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000921 MSA128W, MSA128W>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000922class AVE_U_D_DESC : MSA_3R_DESC_BASE<"ave_u.d", int_mips_ave_u_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000923 MSA128D, MSA128D>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000924
925class AVER_S_B_DESC : MSA_3R_DESC_BASE<"aver_s.b", int_mips_aver_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000926 NoItinerary, MSA128B, MSA128B>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000927 IsCommutable;
928class AVER_S_H_DESC : MSA_3R_DESC_BASE<"aver_s.h", int_mips_aver_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000929 NoItinerary, MSA128H, MSA128H>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000930 IsCommutable;
931class AVER_S_W_DESC : MSA_3R_DESC_BASE<"aver_s.w", int_mips_aver_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000932 NoItinerary, MSA128W, MSA128W>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000933 IsCommutable;
934class AVER_S_D_DESC : MSA_3R_DESC_BASE<"aver_s.d", int_mips_aver_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000935 NoItinerary, MSA128D, MSA128D>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000936 IsCommutable;
937
938class AVER_U_B_DESC : MSA_3R_DESC_BASE<"aver_u.b", int_mips_aver_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000939 NoItinerary, MSA128B, MSA128B>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000940 IsCommutable;
941class AVER_U_H_DESC : MSA_3R_DESC_BASE<"aver_u.h", int_mips_aver_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000942 NoItinerary, MSA128H, MSA128H>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000943 IsCommutable;
944class AVER_U_W_DESC : MSA_3R_DESC_BASE<"aver_u.w", int_mips_aver_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000945 NoItinerary, MSA128W, MSA128W>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000946 IsCommutable;
947class AVER_U_D_DESC : MSA_3R_DESC_BASE<"aver_u.d", int_mips_aver_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000948 NoItinerary, MSA128D, MSA128D>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000949 IsCommutable;
950
951class BCLR_B_DESC : MSA_3R_DESC_BASE<"bclr.b", int_mips_bclr_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000952 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000953class BCLR_H_DESC : MSA_3R_DESC_BASE<"bclr.h", int_mips_bclr_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000954 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000955class BCLR_W_DESC : MSA_3R_DESC_BASE<"bclr.w", int_mips_bclr_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000956 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000957class BCLR_D_DESC : MSA_3R_DESC_BASE<"bclr.d", int_mips_bclr_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000958 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000959
960class BCLRI_B_DESC : MSA_BIT_B_DESC_BASE<"bclri.b", int_mips_bclri_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000961 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000962class BCLRI_H_DESC : MSA_BIT_H_DESC_BASE<"bclri.h", int_mips_bclri_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000963 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000964class BCLRI_W_DESC : MSA_BIT_W_DESC_BASE<"bclri.w", int_mips_bclri_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000965 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000966class BCLRI_D_DESC : MSA_BIT_D_DESC_BASE<"bclri.d", int_mips_bclri_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000967 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000968
969class BINSL_B_DESC : MSA_3R_DESC_BASE<"binsl.b", int_mips_binsl_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000970 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000971class BINSL_H_DESC : MSA_3R_DESC_BASE<"binsl.h", int_mips_binsl_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000972 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000973class BINSL_W_DESC : MSA_3R_DESC_BASE<"binsl.w", int_mips_binsl_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000974 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000975class BINSL_D_DESC : MSA_3R_DESC_BASE<"binsl.d", int_mips_binsl_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000976 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000977
978class BINSLI_B_DESC : MSA_BIT_B_DESC_BASE<"binsli.b", int_mips_binsli_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000979 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000980class BINSLI_H_DESC : MSA_BIT_H_DESC_BASE<"binsli.h", int_mips_binsli_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000981 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000982class BINSLI_W_DESC : MSA_BIT_W_DESC_BASE<"binsli.w", int_mips_binsli_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000983 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000984class BINSLI_D_DESC : MSA_BIT_D_DESC_BASE<"binsli.d", int_mips_binsli_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000985 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000986
987class BINSR_B_DESC : MSA_3R_DESC_BASE<"binsr.b", int_mips_binsr_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000988 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000989class BINSR_H_DESC : MSA_3R_DESC_BASE<"binsr.h", int_mips_binsr_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000990 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000991class BINSR_W_DESC : MSA_3R_DESC_BASE<"binsr.w", int_mips_binsr_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000992 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000993class BINSR_D_DESC : MSA_3R_DESC_BASE<"binsr.d", int_mips_binsr_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000994 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000995
996class BINSRI_B_DESC : MSA_BIT_B_DESC_BASE<"binsri.b", int_mips_binsri_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000997 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000998class BINSRI_H_DESC : MSA_BIT_H_DESC_BASE<"binsri.h", int_mips_binsri_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000999 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001000class BINSRI_W_DESC : MSA_BIT_W_DESC_BASE<"binsri.w", int_mips_binsri_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001001 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001002class BINSRI_D_DESC : MSA_BIT_D_DESC_BASE<"binsri.d", int_mips_binsri_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001003 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001004
Daniel Sanders869bdad2013-08-20 08:38:21 +00001005class BMNZ_V_DESC : MSA_VEC_DESC_BASE<"bmnz.v", int_mips_bmnz_v, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001006 MSA128B, MSA128B>;
Daniel Sanders869bdad2013-08-20 08:38:21 +00001007
Jack Carterbabdcc82013-08-15 12:24:57 +00001008class BMNZI_B_DESC : MSA_I8_DESC_BASE<"bmnzi.b", int_mips_bmnzi_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001009 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001010
Daniel Sanders869bdad2013-08-20 08:38:21 +00001011class BMZ_V_DESC : MSA_VEC_DESC_BASE<"bmz.v", int_mips_bmz_v, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001012 MSA128B, MSA128B>;
Daniel Sanders869bdad2013-08-20 08:38:21 +00001013
Jack Carterbabdcc82013-08-15 12:24:57 +00001014class BMZI_B_DESC : MSA_I8_DESC_BASE<"bmzi.b", int_mips_bmzi_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001015 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001016
1017class BNEG_B_DESC : MSA_3R_DESC_BASE<"bneg.b", int_mips_bneg_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001018 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001019class BNEG_H_DESC : MSA_3R_DESC_BASE<"bneg.h", int_mips_bneg_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001020 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001021class BNEG_W_DESC : MSA_3R_DESC_BASE<"bneg.w", int_mips_bneg_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001022 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001023class BNEG_D_DESC : MSA_3R_DESC_BASE<"bneg.d", int_mips_bneg_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001024 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001025
1026class BNEGI_B_DESC : MSA_BIT_B_DESC_BASE<"bnegi.b", int_mips_bnegi_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001027 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001028class BNEGI_H_DESC : MSA_BIT_H_DESC_BASE<"bnegi.h", int_mips_bnegi_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001029 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001030class BNEGI_W_DESC : MSA_BIT_W_DESC_BASE<"bnegi.w", int_mips_bnegi_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001031 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001032class BNEGI_D_DESC : MSA_BIT_D_DESC_BASE<"bnegi.d", int_mips_bnegi_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001033 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001034
Daniel Sanders869bdad2013-08-20 08:38:21 +00001035class BSEL_V_DESC : MSA_VEC_DESC_BASE<"bsel.v", int_mips_bsel_v, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001036 MSA128B, MSA128B>;
Daniel Sanders869bdad2013-08-20 08:38:21 +00001037
Jack Carterbabdcc82013-08-15 12:24:57 +00001038class BSELI_B_DESC : MSA_I8_DESC_BASE<"bseli.b", int_mips_bseli_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001039 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001040
1041class BSET_B_DESC : MSA_3R_DESC_BASE<"bset.b", int_mips_bset_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001042 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001043class BSET_H_DESC : MSA_3R_DESC_BASE<"bset.h", int_mips_bset_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001044 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001045class BSET_W_DESC : MSA_3R_DESC_BASE<"bset.w", int_mips_bset_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001046 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001047class BSET_D_DESC : MSA_3R_DESC_BASE<"bset.d", int_mips_bset_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001048 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001049
1050class BSETI_B_DESC : MSA_BIT_B_DESC_BASE<"bseti.b", int_mips_bseti_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001051 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001052class BSETI_H_DESC : MSA_BIT_H_DESC_BASE<"bseti.h", int_mips_bseti_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001053 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001054class BSETI_W_DESC : MSA_BIT_W_DESC_BASE<"bseti.w", int_mips_bseti_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001055 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001056class BSETI_D_DESC : MSA_BIT_D_DESC_BASE<"bseti.d", int_mips_bseti_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001057 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001058
1059class CEQ_B_DESC : MSA_3R_DESC_BASE<"ceq.b", int_mips_ceq_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001060 MSA128B, MSA128B>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +00001061class CEQ_H_DESC : MSA_3R_DESC_BASE<"ceq.h", int_mips_ceq_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001062 MSA128H, MSA128H>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +00001063class CEQ_W_DESC : MSA_3R_DESC_BASE<"ceq.w", int_mips_ceq_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001064 MSA128W, MSA128W>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +00001065class CEQ_D_DESC : MSA_3R_DESC_BASE<"ceq.d", int_mips_ceq_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001066 MSA128D, MSA128D>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +00001067
1068class CEQI_B_DESC : MSA_SI5_DESC_BASE<"ceqi.b", int_mips_ceqi_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001069 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001070class CEQI_H_DESC : MSA_SI5_DESC_BASE<"ceqi.h", int_mips_ceqi_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001071 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001072class CEQI_W_DESC : MSA_SI5_DESC_BASE<"ceqi.w", int_mips_ceqi_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001073 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001074class CEQI_D_DESC : MSA_SI5_DESC_BASE<"ceqi.d", int_mips_ceqi_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001075 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001076
1077class CLE_S_B_DESC : MSA_3R_DESC_BASE<"cle_s.b", int_mips_cle_s_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001078 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001079class CLE_S_H_DESC : MSA_3R_DESC_BASE<"cle_s.h", int_mips_cle_s_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001080 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001081class CLE_S_W_DESC : MSA_3R_DESC_BASE<"cle_s.w", int_mips_cle_s_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001082 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001083class CLE_S_D_DESC : MSA_3R_DESC_BASE<"cle_s.d", int_mips_cle_s_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001084 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001085
1086class CLE_U_B_DESC : MSA_3R_DESC_BASE<"cle_u.b", int_mips_cle_u_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001087 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001088class CLE_U_H_DESC : MSA_3R_DESC_BASE<"cle_u.h", int_mips_cle_u_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001089 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001090class CLE_U_W_DESC : MSA_3R_DESC_BASE<"cle_u.w", int_mips_cle_u_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001091 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001092class CLE_U_D_DESC : MSA_3R_DESC_BASE<"cle_u.d", int_mips_cle_u_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001093 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001094
1095class CLEI_S_B_DESC : MSA_SI5_DESC_BASE<"clei_s.b", int_mips_clei_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001096 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001097class CLEI_S_H_DESC : MSA_SI5_DESC_BASE<"clei_s.h", int_mips_clei_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001098 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001099class CLEI_S_W_DESC : MSA_SI5_DESC_BASE<"clei_s.w", int_mips_clei_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001100 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001101class CLEI_S_D_DESC : MSA_SI5_DESC_BASE<"clei_s.d", int_mips_clei_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001102 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001103
1104class CLEI_U_B_DESC : MSA_SI5_DESC_BASE<"clei_u.b", int_mips_clei_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001105 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001106class CLEI_U_H_DESC : MSA_SI5_DESC_BASE<"clei_u.h", int_mips_clei_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001107 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001108class CLEI_U_W_DESC : MSA_SI5_DESC_BASE<"clei_u.w", int_mips_clei_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001109 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001110class CLEI_U_D_DESC : MSA_SI5_DESC_BASE<"clei_u.d", int_mips_clei_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001111 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001112
1113class CLT_S_B_DESC : MSA_3R_DESC_BASE<"clt_s.b", int_mips_clt_s_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001114 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001115class CLT_S_H_DESC : MSA_3R_DESC_BASE<"clt_s.h", int_mips_clt_s_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001116 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001117class CLT_S_W_DESC : MSA_3R_DESC_BASE<"clt_s.w", int_mips_clt_s_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001118 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001119class CLT_S_D_DESC : MSA_3R_DESC_BASE<"clt_s.d", int_mips_clt_s_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001120 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001121
1122class CLT_U_B_DESC : MSA_3R_DESC_BASE<"clt_u.b", int_mips_clt_u_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001123 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001124class CLT_U_H_DESC : MSA_3R_DESC_BASE<"clt_u.h", int_mips_clt_u_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001125 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001126class CLT_U_W_DESC : MSA_3R_DESC_BASE<"clt_u.w", int_mips_clt_u_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001127 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001128class CLT_U_D_DESC : MSA_3R_DESC_BASE<"clt_u.d", int_mips_clt_u_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001129 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001130
1131class CLTI_S_B_DESC : MSA_SI5_DESC_BASE<"clti_s.b", int_mips_clti_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001132 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001133class CLTI_S_H_DESC : MSA_SI5_DESC_BASE<"clti_s.h", int_mips_clti_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001134 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001135class CLTI_S_W_DESC : MSA_SI5_DESC_BASE<"clti_s.w", int_mips_clti_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001136 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001137class CLTI_S_D_DESC : MSA_SI5_DESC_BASE<"clti_s.d", int_mips_clti_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001138 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001139
1140class CLTI_U_B_DESC : MSA_SI5_DESC_BASE<"clti_u.b", int_mips_clti_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001141 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001142class CLTI_U_H_DESC : MSA_SI5_DESC_BASE<"clti_u.h", int_mips_clti_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001143 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001144class CLTI_U_W_DESC : MSA_SI5_DESC_BASE<"clti_u.w", int_mips_clti_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001145 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001146class CLTI_U_D_DESC : MSA_SI5_DESC_BASE<"clti_u.d", int_mips_clti_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001147 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001148
1149class COPY_S_B_DESC : MSA_COPY_DESC_BASE<"copy_s.b", int_mips_copy_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001150 NoItinerary, GPR32, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001151class COPY_S_H_DESC : MSA_COPY_DESC_BASE<"copy_s.h", int_mips_copy_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001152 NoItinerary, GPR32, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001153class COPY_S_W_DESC : MSA_COPY_DESC_BASE<"copy_s.w", int_mips_copy_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001154 NoItinerary, GPR32, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001155
1156class COPY_U_B_DESC : MSA_COPY_DESC_BASE<"copy_u.b", int_mips_copy_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001157 NoItinerary, GPR32, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001158class COPY_U_H_DESC : MSA_COPY_DESC_BASE<"copy_u.h", int_mips_copy_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001159 NoItinerary, GPR32, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001160class COPY_U_W_DESC : MSA_COPY_DESC_BASE<"copy_u.w", int_mips_copy_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001161 NoItinerary, GPR32, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001162
1163class DIV_S_B_DESC : MSA_3R_DESC_BASE<"div_s.b", int_mips_div_s_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001164 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001165class DIV_S_H_DESC : MSA_3R_DESC_BASE<"div_s.h", int_mips_div_s_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001166 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001167class DIV_S_W_DESC : MSA_3R_DESC_BASE<"div_s.w", int_mips_div_s_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001168 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001169class DIV_S_D_DESC : MSA_3R_DESC_BASE<"div_s.d", int_mips_div_s_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001170 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001171
1172class DIV_U_B_DESC : MSA_3R_DESC_BASE<"div_u.b", int_mips_div_u_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001173 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001174class DIV_U_H_DESC : MSA_3R_DESC_BASE<"div_u.h", int_mips_div_u_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001175 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001176class DIV_U_W_DESC : MSA_3R_DESC_BASE<"div_u.w", int_mips_div_u_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001177 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001178class DIV_U_D_DESC : MSA_3R_DESC_BASE<"div_u.d", int_mips_div_u_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001179 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001180
1181class DOTP_S_B_DESC : MSA_3R_DESC_BASE<"dotp_s.b", int_mips_dotp_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001182 NoItinerary, MSA128B, MSA128B>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001183 IsCommutable;
1184class DOTP_S_H_DESC : MSA_3R_DESC_BASE<"dotp_s.h", int_mips_dotp_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001185 NoItinerary, MSA128H, MSA128H>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001186 IsCommutable;
1187class DOTP_S_W_DESC : MSA_3R_DESC_BASE<"dotp_s.w", int_mips_dotp_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001188 NoItinerary, MSA128W, MSA128W>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001189 IsCommutable;
1190class DOTP_S_D_DESC : MSA_3R_DESC_BASE<"dotp_s.d", int_mips_dotp_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001191 NoItinerary, MSA128D, MSA128D>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001192 IsCommutable;
1193
1194class DOTP_U_B_DESC : MSA_3R_DESC_BASE<"dotp_u.b", int_mips_dotp_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001195 NoItinerary, MSA128B, MSA128B>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001196 IsCommutable;
1197class DOTP_U_H_DESC : MSA_3R_DESC_BASE<"dotp_u.h", int_mips_dotp_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001198 NoItinerary, MSA128H, MSA128H>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001199 IsCommutable;
1200class DOTP_U_W_DESC : MSA_3R_DESC_BASE<"dotp_u.w", int_mips_dotp_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001201 NoItinerary, MSA128W, MSA128W>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001202 IsCommutable;
1203class DOTP_U_D_DESC : MSA_3R_DESC_BASE<"dotp_u.d", int_mips_dotp_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001204 NoItinerary, MSA128D, MSA128D>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001205 IsCommutable;
1206
1207class DPADD_S_H_DESC : MSA_3R_4R_DESC_BASE<"dpadd_s.h", int_mips_dpadd_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001208 NoItinerary, MSA128H, MSA128B>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001209 IsCommutable;
1210class DPADD_S_W_DESC : MSA_3R_4R_DESC_BASE<"dpadd_s.w", int_mips_dpadd_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001211 NoItinerary, MSA128W, MSA128H>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001212 IsCommutable;
1213class DPADD_S_D_DESC : MSA_3R_4R_DESC_BASE<"dpadd_s.d", int_mips_dpadd_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001214 NoItinerary, MSA128D, MSA128W>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001215 IsCommutable;
1216
1217class DPADD_U_H_DESC : MSA_3R_4R_DESC_BASE<"dpadd_u.h", int_mips_dpadd_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001218 NoItinerary, MSA128H, MSA128B>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001219 IsCommutable;
1220class DPADD_U_W_DESC : MSA_3R_4R_DESC_BASE<"dpadd_u.w", int_mips_dpadd_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001221 NoItinerary, MSA128W, MSA128H>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001222 IsCommutable;
1223class DPADD_U_D_DESC : MSA_3R_4R_DESC_BASE<"dpadd_u.d", int_mips_dpadd_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001224 NoItinerary, MSA128D, MSA128W>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001225 IsCommutable;
1226
1227class DPSUB_S_H_DESC : MSA_3R_4R_DESC_BASE<"dpsub_s.h", int_mips_dpsub_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001228 NoItinerary, MSA128H, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001229class DPSUB_S_W_DESC : MSA_3R_4R_DESC_BASE<"dpsub_s.w", int_mips_dpsub_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001230 NoItinerary, MSA128W, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001231class DPSUB_S_D_DESC : MSA_3R_4R_DESC_BASE<"dpsub_s.d", int_mips_dpsub_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001232 NoItinerary, MSA128D, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001233
1234class DPSUB_U_H_DESC : MSA_3R_4R_DESC_BASE<"dpsub_u.h", int_mips_dpsub_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001235 NoItinerary, MSA128H, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001236class DPSUB_U_W_DESC : MSA_3R_4R_DESC_BASE<"dpsub_u.w", int_mips_dpsub_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001237 NoItinerary, MSA128W, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001238class DPSUB_U_D_DESC : MSA_3R_4R_DESC_BASE<"dpsub_u.d", int_mips_dpsub_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001239 NoItinerary, MSA128D, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001240
Jack Carterb95ee692013-08-15 13:45:36 +00001241class FADD_W_DESC : MSA_3RF_DESC_BASE<"fadd.w", int_mips_fadd_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001242 NoItinerary, MSA128W, MSA128W>,
Jack Carterb95ee692013-08-15 13:45:36 +00001243 IsCommutable;
1244class FADD_D_DESC : MSA_3RF_DESC_BASE<"fadd.d", int_mips_fadd_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001245 NoItinerary, MSA128D, MSA128D>,
Jack Carterb95ee692013-08-15 13:45:36 +00001246 IsCommutable;
1247
1248class FCEQ_W_DESC : MSA_3RF_DESC_BASE<"fceq.w", int_mips_fceq_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001249 NoItinerary, MSA128W, MSA128W>,
Jack Carterb95ee692013-08-15 13:45:36 +00001250 IsCommutable;
1251class FCEQ_D_DESC : MSA_3RF_DESC_BASE<"fceq.d", int_mips_fceq_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001252 NoItinerary, MSA128D, MSA128D>,
Jack Carterb95ee692013-08-15 13:45:36 +00001253 IsCommutable;
1254
Jack Carterb95ee692013-08-15 13:45:36 +00001255class FCLASS_W_DESC : MSA_2RF_DESC_BASE<"fclass.w", int_mips_fclass_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001256 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001257class FCLASS_D_DESC : MSA_2RF_DESC_BASE<"fclass.d", int_mips_fclass_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001258 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001259
1260class FCLE_W_DESC : MSA_3RF_DESC_BASE<"fcle.w", int_mips_fcle_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001261 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001262class FCLE_D_DESC : MSA_3RF_DESC_BASE<"fcle.d", int_mips_fcle_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001263 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001264
1265class FCLT_W_DESC : MSA_3RF_DESC_BASE<"fclt.w", int_mips_fclt_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001266 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001267class FCLT_D_DESC : MSA_3RF_DESC_BASE<"fclt.d", int_mips_fclt_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001268 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001269
1270class FCNE_W_DESC : MSA_3RF_DESC_BASE<"fcne.w", int_mips_fcne_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001271 NoItinerary, MSA128W, MSA128W>,
Jack Carterb95ee692013-08-15 13:45:36 +00001272 IsCommutable;
1273class FCNE_D_DESC : MSA_3RF_DESC_BASE<"fcne.d", int_mips_fcne_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001274 NoItinerary, MSA128D, MSA128D>,
Jack Carterb95ee692013-08-15 13:45:36 +00001275 IsCommutable;
1276
1277class FCUN_W_DESC : MSA_3RF_DESC_BASE<"fcun.w", int_mips_fcun_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001278 NoItinerary, MSA128W, MSA128W>,
Jack Carterb95ee692013-08-15 13:45:36 +00001279 IsCommutable;
1280class FCUN_D_DESC : MSA_3RF_DESC_BASE<"fcun.d", int_mips_fcun_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001281 NoItinerary, MSA128D, MSA128D>,
Jack Carterb95ee692013-08-15 13:45:36 +00001282 IsCommutable;
1283
1284class FDIV_W_DESC : MSA_3RF_DESC_BASE<"fdiv.w", int_mips_fdiv_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001285 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001286class FDIV_D_DESC : MSA_3RF_DESC_BASE<"fdiv.d", int_mips_fdiv_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001287 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001288
1289class FEXDO_H_DESC : MSA_3RF_DESC_BASE<"fexdo.h", int_mips_fexdo_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001290 NoItinerary, MSA128H, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001291class FEXDO_W_DESC : MSA_3RF_DESC_BASE<"fexdo.w", int_mips_fexdo_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001292 NoItinerary, MSA128W, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001293
1294class FEXP2_W_DESC : MSA_3RF_DESC_BASE<"fexp2.w", int_mips_fexp2_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001295 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001296class FEXP2_D_DESC : MSA_3RF_DESC_BASE<"fexp2.d", int_mips_fexp2_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001297 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001298
1299class FEXUPL_W_DESC : MSA_2RF_DESC_BASE<"fexupl.w", int_mips_fexupl_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001300 NoItinerary, MSA128W, MSA128H>;
Jack Carterb95ee692013-08-15 13:45:36 +00001301class FEXUPL_D_DESC : MSA_2RF_DESC_BASE<"fexupl.d", int_mips_fexupl_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001302 NoItinerary, MSA128D, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001303
1304class FEXUPR_W_DESC : MSA_2RF_DESC_BASE<"fexupr.w", int_mips_fexupr_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001305 NoItinerary, MSA128W, MSA128H>;
Jack Carterb95ee692013-08-15 13:45:36 +00001306class FEXUPR_D_DESC : MSA_2RF_DESC_BASE<"fexupr.d", int_mips_fexupr_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001307 NoItinerary, MSA128D, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001308
1309class FFINT_S_W_DESC : MSA_2RF_DESC_BASE<"ffint_s.w", int_mips_ffint_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001310 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001311class FFINT_S_D_DESC : MSA_2RF_DESC_BASE<"ffint_s.d", int_mips_ffint_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001312 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001313
1314class FFINT_U_W_DESC : MSA_2RF_DESC_BASE<"ffint_u.w", int_mips_ffint_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001315 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001316class FFINT_U_D_DESC : MSA_2RF_DESC_BASE<"ffint_u.d", int_mips_ffint_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001317 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001318
1319class FFQL_W_DESC : MSA_2RF_DESC_BASE<"ffql.w", int_mips_ffql_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001320 NoItinerary, MSA128W, MSA128H>;
Jack Carterb95ee692013-08-15 13:45:36 +00001321class FFQL_D_DESC : MSA_2RF_DESC_BASE<"ffql.d", int_mips_ffql_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001322 NoItinerary, MSA128D, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001323
1324class FFQR_W_DESC : MSA_2RF_DESC_BASE<"ffqr.w", int_mips_ffqr_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001325 NoItinerary, MSA128W, MSA128H>;
Jack Carterb95ee692013-08-15 13:45:36 +00001326class FFQR_D_DESC : MSA_2RF_DESC_BASE<"ffqr.d", int_mips_ffqr_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001327 NoItinerary, MSA128D, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001328
1329class FILL_B_DESC : MSA_2R_DESC_BASE<"fill.b", int_mips_fill_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001330 NoItinerary, MSA128B, GPR32>;
Jack Carterb95ee692013-08-15 13:45:36 +00001331class FILL_H_DESC : MSA_2R_DESC_BASE<"fill.h", int_mips_fill_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001332 NoItinerary, MSA128H, GPR32>;
Jack Carterb95ee692013-08-15 13:45:36 +00001333class FILL_W_DESC : MSA_2R_DESC_BASE<"fill.w", int_mips_fill_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001334 NoItinerary, MSA128W, GPR32>;
Jack Carterb95ee692013-08-15 13:45:36 +00001335
1336class FLOG2_W_DESC : MSA_2RF_DESC_BASE<"flog2.w", int_mips_flog2_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001337 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001338class FLOG2_D_DESC : MSA_2RF_DESC_BASE<"flog2.d", int_mips_flog2_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001339 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001340
1341class FMADD_W_DESC : MSA_3RF_4RF_DESC_BASE<"fmadd.w", int_mips_fmadd_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001342 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001343class FMADD_D_DESC : MSA_3RF_4RF_DESC_BASE<"fmadd.d", int_mips_fmadd_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001344 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001345
1346class FMAX_W_DESC : MSA_3RF_DESC_BASE<"fmax.w", int_mips_fmax_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001347 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001348class FMAX_D_DESC : MSA_3RF_DESC_BASE<"fmax.d", int_mips_fmax_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001349 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001350
1351class FMAX_A_W_DESC : MSA_3RF_DESC_BASE<"fmax_a.w", int_mips_fmax_a_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001352 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001353class FMAX_A_D_DESC : MSA_3RF_DESC_BASE<"fmax_a.d", int_mips_fmax_a_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001354 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001355
1356class FMIN_W_DESC : MSA_3RF_DESC_BASE<"fmin.w", int_mips_fmin_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001357 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001358class FMIN_D_DESC : MSA_3RF_DESC_BASE<"fmin.d", int_mips_fmin_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001359 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001360
1361class FMIN_A_W_DESC : MSA_3RF_DESC_BASE<"fmin_a.w", int_mips_fmin_a_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001362 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001363class FMIN_A_D_DESC : MSA_3RF_DESC_BASE<"fmin_a.d", int_mips_fmin_a_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001364 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001365
1366class FMSUB_W_DESC : MSA_3RF_4RF_DESC_BASE<"fmsub.w", int_mips_fmsub_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001367 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001368class FMSUB_D_DESC : MSA_3RF_4RF_DESC_BASE<"fmsub.d", int_mips_fmsub_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001369 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001370
1371class FMUL_W_DESC : MSA_3RF_DESC_BASE<"fmul.w", int_mips_fmul_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001372 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001373class FMUL_D_DESC : MSA_3RF_DESC_BASE<"fmul.d", int_mips_fmul_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001374 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001375
1376class FRINT_W_DESC : MSA_2RF_DESC_BASE<"frint.w", int_mips_frint_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001377 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001378class FRINT_D_DESC : MSA_2RF_DESC_BASE<"frint.d", int_mips_frint_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001379 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001380
1381class FRCP_W_DESC : MSA_2RF_DESC_BASE<"frcp.w", int_mips_frcp_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001382 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001383class FRCP_D_DESC : MSA_2RF_DESC_BASE<"frcp.d", int_mips_frcp_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001384 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001385
1386class FRSQRT_W_DESC : MSA_2RF_DESC_BASE<"frsqrt.w", int_mips_frsqrt_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001387 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001388class FRSQRT_D_DESC : MSA_2RF_DESC_BASE<"frsqrt.d", int_mips_frsqrt_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001389 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001390
1391class FSEQ_W_DESC : MSA_3RF_DESC_BASE<"fseq.w", int_mips_fseq_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001392 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001393class FSEQ_D_DESC : MSA_3RF_DESC_BASE<"fseq.d", int_mips_fseq_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001394 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001395
Jack Carterb95ee692013-08-15 13:45:36 +00001396class FSLE_W_DESC : MSA_3RF_DESC_BASE<"fsle.w", int_mips_fsle_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001397 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001398class FSLE_D_DESC : MSA_3RF_DESC_BASE<"fsle.d", int_mips_fsle_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001399 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001400
1401class FSLT_W_DESC : MSA_3RF_DESC_BASE<"fslt.w", int_mips_fslt_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001402 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001403class FSLT_D_DESC : MSA_3RF_DESC_BASE<"fslt.d", int_mips_fslt_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001404 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001405
1406class FSNE_W_DESC : MSA_3RF_DESC_BASE<"fsne.w", int_mips_fsne_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001407 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001408class FSNE_D_DESC : MSA_3RF_DESC_BASE<"fsne.d", int_mips_fsne_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001409 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001410
1411class FSQRT_W_DESC : MSA_2RF_DESC_BASE<"fsqrt.w", int_mips_fsqrt_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001412 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001413class FSQRT_D_DESC : MSA_2RF_DESC_BASE<"fsqrt.d", int_mips_fsqrt_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001414 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001415
1416class FSUB_W_DESC : MSA_3RF_DESC_BASE<"fsub.w", int_mips_fsub_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001417 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001418class FSUB_D_DESC : MSA_3RF_DESC_BASE<"fsub.d", int_mips_fsub_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001419 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001420
1421class FTINT_S_W_DESC : MSA_2RF_DESC_BASE<"ftint_s.w", int_mips_ftint_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001422 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001423class FTINT_S_D_DESC : MSA_2RF_DESC_BASE<"ftint_s.d", int_mips_ftint_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001424 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001425
1426class FTINT_U_W_DESC : MSA_2RF_DESC_BASE<"ftint_u.w", int_mips_ftint_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001427 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001428class FTINT_U_D_DESC : MSA_2RF_DESC_BASE<"ftint_u.d", int_mips_ftint_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001429 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001430
1431class FTQ_H_DESC : MSA_3RF_DESC_BASE<"ftq.h", int_mips_ftq_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001432 NoItinerary, MSA128H, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001433class FTQ_W_DESC : MSA_3RF_DESC_BASE<"ftq.w", int_mips_ftq_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001434 NoItinerary, MSA128W, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001435
Jack Carterbabdcc82013-08-15 12:24:57 +00001436class ILVEV_B_DESC : MSA_3R_DESC_BASE<"ilvev.b", int_mips_ilvev_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001437 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001438class ILVEV_H_DESC : MSA_3R_DESC_BASE<"ilvev.h", int_mips_ilvev_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001439 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001440class ILVEV_W_DESC : MSA_3R_DESC_BASE<"ilvev.w", int_mips_ilvev_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001441 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001442class ILVEV_D_DESC : MSA_3R_DESC_BASE<"ilvev.d", int_mips_ilvev_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001443 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001444
1445class ILVL_B_DESC : MSA_3R_DESC_BASE<"ilvl.b", int_mips_ilvl_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001446 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001447class ILVL_H_DESC : MSA_3R_DESC_BASE<"ilvl.h", int_mips_ilvl_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001448 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001449class ILVL_W_DESC : MSA_3R_DESC_BASE<"ilvl.w", int_mips_ilvl_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001450 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001451class ILVL_D_DESC : MSA_3R_DESC_BASE<"ilvl.d", int_mips_ilvl_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001452 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001453
1454class ILVOD_B_DESC : MSA_3R_DESC_BASE<"ilvod.b", int_mips_ilvod_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001455 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001456class ILVOD_H_DESC : MSA_3R_DESC_BASE<"ilvod.h", int_mips_ilvod_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001457 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001458class ILVOD_W_DESC : MSA_3R_DESC_BASE<"ilvod.w", int_mips_ilvod_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001459 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001460class ILVOD_D_DESC : MSA_3R_DESC_BASE<"ilvod.d", int_mips_ilvod_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001461 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001462
1463class ILVR_B_DESC : MSA_3R_DESC_BASE<"ilvr.b", int_mips_ilvr_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001464 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001465class ILVR_H_DESC : MSA_3R_DESC_BASE<"ilvr.h", int_mips_ilvr_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001466 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001467class ILVR_W_DESC : MSA_3R_DESC_BASE<"ilvr.w", int_mips_ilvr_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001468 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001469class ILVR_D_DESC : MSA_3R_DESC_BASE<"ilvr.d", int_mips_ilvr_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001470 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001471
1472class INSERT_B_DESC : MSA_INSERT_DESC_BASE<"insert.b", int_mips_insert_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001473 NoItinerary, MSA128B, GPR32>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001474class INSERT_H_DESC : MSA_INSERT_DESC_BASE<"insert.h", int_mips_insert_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001475 NoItinerary, MSA128H, GPR32>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001476class INSERT_W_DESC : MSA_INSERT_DESC_BASE<"insert.w", int_mips_insert_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001477 NoItinerary, MSA128W, GPR32>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001478
Daniel Sandersf2a0f1d2013-08-20 09:22:54 +00001479class INSVE_B_DESC : MSA_INSVE_DESC_BASE<"insve.b", int_mips_insve_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001480 NoItinerary, MSA128B, MSA128B>;
Daniel Sandersf2a0f1d2013-08-20 09:22:54 +00001481class INSVE_H_DESC : MSA_INSVE_DESC_BASE<"insve.h", int_mips_insve_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001482 NoItinerary, MSA128H, MSA128H>;
Daniel Sandersf2a0f1d2013-08-20 09:22:54 +00001483class INSVE_W_DESC : MSA_INSVE_DESC_BASE<"insve.w", int_mips_insve_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001484 NoItinerary, MSA128W, MSA128W>;
Daniel Sandersf2a0f1d2013-08-20 09:22:54 +00001485class INSVE_D_DESC : MSA_INSVE_DESC_BASE<"insve.d", int_mips_insve_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001486 NoItinerary, MSA128D, MSA128D>;
Daniel Sandersf2a0f1d2013-08-20 09:22:54 +00001487
Jack Carter3a2c2d42013-08-13 20:54:07 +00001488class LD_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
1489 ValueType TyNode, InstrItinClass itin, RegisterClass RCWD,
1490 Operand MemOpnd = mem, ComplexPattern Addr = addr> {
1491 dag OutOperandList = (outs RCWD:$wd);
1492 dag InOperandList = (ins MemOpnd:$addr);
1493 string AsmString = !strconcat(instr_asm, "\t$wd, $addr");
1494 list<dag> Pattern = [(set RCWD:$wd, (TyNode (OpNode Addr:$addr)))];
1495 InstrItinClass Itinerary = itin;
1496}
1497
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001498class LD_B_DESC : LD_DESC_BASE<"ld.b", load, v16i8, NoItinerary, MSA128B>;
1499class LD_H_DESC : LD_DESC_BASE<"ld.h", load, v8i16, NoItinerary, MSA128H>;
1500class LD_W_DESC : LD_DESC_BASE<"ld.w", load, v4i32, NoItinerary, MSA128W>;
1501class LD_D_DESC : LD_DESC_BASE<"ld.d", load, v2i64, NoItinerary, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001502
1503class LDI_B_DESC : MSA_I10_DESC_BASE<"ldi.b", int_mips_ldi_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001504 NoItinerary, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001505class LDI_H_DESC : MSA_I10_DESC_BASE<"ldi.h", int_mips_ldi_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001506 NoItinerary, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001507class LDI_W_DESC : MSA_I10_DESC_BASE<"ldi.w", int_mips_ldi_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001508 NoItinerary, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001509class LDI_D_DESC : MSA_I10_DESC_BASE<"ldi.d", int_mips_ldi_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001510 NoItinerary, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001511
Jack Carterd12e8372013-08-15 14:22:07 +00001512class MADD_Q_H_DESC : MSA_3RF_4RF_DESC_BASE<"madd_q.h", int_mips_madd_q_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001513 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001514class MADD_Q_W_DESC : MSA_3RF_4RF_DESC_BASE<"madd_q.w", int_mips_madd_q_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001515 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001516
1517class MADDR_Q_H_DESC : MSA_3RF_4RF_DESC_BASE<"maddr_q.h", int_mips_maddr_q_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001518 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001519class MADDR_Q_W_DESC : MSA_3RF_4RF_DESC_BASE<"maddr_q.w", int_mips_maddr_q_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001520 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001521
1522class MADDV_B_DESC : MSA_3R_4R_DESC_BASE<"maddv.b", int_mips_maddv_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001523 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001524class MADDV_H_DESC : MSA_3R_4R_DESC_BASE<"maddv.h", int_mips_maddv_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001525 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001526class MADDV_W_DESC : MSA_3R_4R_DESC_BASE<"maddv.w", int_mips_maddv_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001527 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001528class MADDV_D_DESC : MSA_3R_4R_DESC_BASE<"maddv.d", int_mips_maddv_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001529 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001530
1531class MAX_A_B_DESC : MSA_3R_DESC_BASE<"max_a.b", int_mips_max_a_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001532 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001533class MAX_A_H_DESC : MSA_3R_DESC_BASE<"max_a.h", int_mips_max_a_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001534 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001535class MAX_A_W_DESC : MSA_3R_DESC_BASE<"max_a.w", int_mips_max_a_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001536 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001537class MAX_A_D_DESC : MSA_3R_DESC_BASE<"max_a.d", int_mips_max_a_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001538 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001539
1540class MAX_S_B_DESC : MSA_3R_DESC_BASE<"max_s.b", int_mips_max_s_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001541 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001542class MAX_S_H_DESC : MSA_3R_DESC_BASE<"max_s.h", int_mips_max_s_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001543 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001544class MAX_S_W_DESC : MSA_3R_DESC_BASE<"max_s.w", int_mips_max_s_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001545 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001546class MAX_S_D_DESC : MSA_3R_DESC_BASE<"max_s.d", int_mips_max_s_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001547 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001548
1549class MAX_U_B_DESC : MSA_3R_DESC_BASE<"max_u.b", int_mips_max_u_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001550 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001551class MAX_U_H_DESC : MSA_3R_DESC_BASE<"max_u.h", int_mips_max_u_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001552 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001553class MAX_U_W_DESC : MSA_3R_DESC_BASE<"max_u.w", int_mips_max_u_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001554 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001555class MAX_U_D_DESC : MSA_3R_DESC_BASE<"max_u.d", int_mips_max_u_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001556 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001557
1558class MAXI_S_B_DESC : MSA_I5_DESC_BASE<"maxi_s.b", int_mips_maxi_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001559 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001560class MAXI_S_H_DESC : MSA_I5_DESC_BASE<"maxi_s.h", int_mips_maxi_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001561 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001562class MAXI_S_W_DESC : MSA_I5_DESC_BASE<"maxi_s.w", int_mips_maxi_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001563 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001564class MAXI_S_D_DESC : MSA_I5_DESC_BASE<"maxi_s.d", int_mips_maxi_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001565 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001566
1567class MAXI_U_B_DESC : MSA_I5_DESC_BASE<"maxi_u.b", int_mips_maxi_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001568 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001569class MAXI_U_H_DESC : MSA_I5_DESC_BASE<"maxi_u.h", int_mips_maxi_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001570 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001571class MAXI_U_W_DESC : MSA_I5_DESC_BASE<"maxi_u.w", int_mips_maxi_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001572 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001573class MAXI_U_D_DESC : MSA_I5_DESC_BASE<"maxi_u.d", int_mips_maxi_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001574 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001575
1576class MIN_A_B_DESC : MSA_3R_DESC_BASE<"min_a.b", int_mips_min_a_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001577 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001578class MIN_A_H_DESC : MSA_3R_DESC_BASE<"min_a.h", int_mips_min_a_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001579 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001580class MIN_A_W_DESC : MSA_3R_DESC_BASE<"min_a.w", int_mips_min_a_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001581 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001582class MIN_A_D_DESC : MSA_3R_DESC_BASE<"min_a.d", int_mips_min_a_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001583 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001584
1585class MIN_S_B_DESC : MSA_3R_DESC_BASE<"min_s.b", int_mips_min_s_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001586 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001587class MIN_S_H_DESC : MSA_3R_DESC_BASE<"min_s.h", int_mips_min_s_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001588 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001589class MIN_S_W_DESC : MSA_3R_DESC_BASE<"min_s.w", int_mips_min_s_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001590 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001591class MIN_S_D_DESC : MSA_3R_DESC_BASE<"min_s.d", int_mips_min_s_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001592 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001593
1594class MIN_U_B_DESC : MSA_3R_DESC_BASE<"min_u.b", int_mips_min_u_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001595 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001596class MIN_U_H_DESC : MSA_3R_DESC_BASE<"min_u.h", int_mips_min_u_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001597 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001598class MIN_U_W_DESC : MSA_3R_DESC_BASE<"min_u.w", int_mips_min_u_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001599 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001600class MIN_U_D_DESC : MSA_3R_DESC_BASE<"min_u.d", int_mips_min_u_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001601 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001602
1603class MINI_S_B_DESC : MSA_I5_DESC_BASE<"mini_s.b", int_mips_mini_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001604 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001605class MINI_S_H_DESC : MSA_I5_DESC_BASE<"mini_s.h", int_mips_mini_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001606 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001607class MINI_S_W_DESC : MSA_I5_DESC_BASE<"mini_s.w", int_mips_mini_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001608 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001609class MINI_S_D_DESC : MSA_I5_DESC_BASE<"mini_s.d", int_mips_mini_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001610 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001611
1612class MINI_U_B_DESC : MSA_I5_DESC_BASE<"mini_u.b", int_mips_mini_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001613 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001614class MINI_U_H_DESC : MSA_I5_DESC_BASE<"mini_u.h", int_mips_mini_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001615 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001616class MINI_U_W_DESC : MSA_I5_DESC_BASE<"mini_u.w", int_mips_mini_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001617 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001618class MINI_U_D_DESC : MSA_I5_DESC_BASE<"mini_u.d", int_mips_mini_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001619 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001620
1621class MOD_S_B_DESC : MSA_3R_DESC_BASE<"mod_s.b", int_mips_mod_s_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001622 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001623class MOD_S_H_DESC : MSA_3R_DESC_BASE<"mod_s.h", int_mips_mod_s_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001624 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001625class MOD_S_W_DESC : MSA_3R_DESC_BASE<"mod_s.w", int_mips_mod_s_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001626 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001627class MOD_S_D_DESC : MSA_3R_DESC_BASE<"mod_s.d", int_mips_mod_s_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001628 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001629
1630class MOD_U_B_DESC : MSA_3R_DESC_BASE<"mod_u.b", int_mips_mod_u_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001631 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001632class MOD_U_H_DESC : MSA_3R_DESC_BASE<"mod_u.h", int_mips_mod_u_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001633 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001634class MOD_U_W_DESC : MSA_3R_DESC_BASE<"mod_u.w", int_mips_mod_u_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001635 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001636class MOD_U_D_DESC : MSA_3R_DESC_BASE<"mod_u.d", int_mips_mod_u_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001637 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001638
1639class MSUB_Q_H_DESC : MSA_3RF_4RF_DESC_BASE<"msub_q.h", int_mips_msub_q_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001640 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001641class MSUB_Q_W_DESC : MSA_3RF_4RF_DESC_BASE<"msub_q.w", int_mips_msub_q_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001642 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001643
1644class MSUBR_Q_H_DESC : MSA_3RF_4RF_DESC_BASE<"msubr_q.h", int_mips_msubr_q_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001645 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001646class MSUBR_Q_W_DESC : MSA_3RF_4RF_DESC_BASE<"msubr_q.w", int_mips_msubr_q_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001647 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001648
1649class MSUBV_B_DESC : MSA_3R_4R_DESC_BASE<"msubv.b", int_mips_msubv_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001650 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001651class MSUBV_H_DESC : MSA_3R_4R_DESC_BASE<"msubv.h", int_mips_msubv_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001652 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001653class MSUBV_W_DESC : MSA_3R_4R_DESC_BASE<"msubv.w", int_mips_msubv_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001654 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001655class MSUBV_D_DESC : MSA_3R_4R_DESC_BASE<"msubv.d", int_mips_msubv_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001656 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001657
1658class MUL_Q_H_DESC : MSA_3RF_DESC_BASE<"mul_q.h", int_mips_mul_q_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001659 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001660class MUL_Q_W_DESC : MSA_3RF_DESC_BASE<"mul_q.w", int_mips_mul_q_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001661 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001662
1663class MULR_Q_H_DESC : MSA_3RF_DESC_BASE<"mulr_q.h", int_mips_mulr_q_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001664 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001665class MULR_Q_W_DESC : MSA_3RF_DESC_BASE<"mulr_q.w", int_mips_mulr_q_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001666 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001667
1668class MULV_B_DESC : MSA_3R_DESC_BASE<"mulv.b", int_mips_mulv_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001669 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001670class MULV_H_DESC : MSA_3R_DESC_BASE<"mulv.h", int_mips_mulv_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001671 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001672class MULV_W_DESC : MSA_3R_DESC_BASE<"mulv.w", int_mips_mulv_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001673 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001674class MULV_D_DESC : MSA_3R_DESC_BASE<"mulv.d", int_mips_mulv_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001675 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001676
1677class NLOC_B_DESC : MSA_2R_DESC_BASE<"nloc.b", int_mips_nloc_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001678 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001679class NLOC_H_DESC : MSA_2R_DESC_BASE<"nloc.h", int_mips_nloc_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001680 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001681class NLOC_W_DESC : MSA_2R_DESC_BASE<"nloc.w", int_mips_nloc_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001682 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001683class NLOC_D_DESC : MSA_2R_DESC_BASE<"nloc.d", int_mips_nloc_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001684 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001685
1686class NLZC_B_DESC : MSA_2R_DESC_BASE<"nlzc.b", int_mips_nlzc_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001687 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001688class NLZC_H_DESC : MSA_2R_DESC_BASE<"nlzc.h", int_mips_nlzc_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001689 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001690class NLZC_W_DESC : MSA_2R_DESC_BASE<"nlzc.w", int_mips_nlzc_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001691 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001692class NLZC_D_DESC : MSA_2R_DESC_BASE<"nlzc.d", int_mips_nlzc_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001693 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001694
Daniel Sanders869bdad2013-08-20 08:38:21 +00001695class NOR_V_DESC : MSA_VEC_DESC_BASE<"nor.v", int_mips_nor_v, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001696 MSA128B, MSA128B>;
Daniel Sanders869bdad2013-08-20 08:38:21 +00001697
Jack Carterd12e8372013-08-15 14:22:07 +00001698class NORI_B_DESC : MSA_I8_DESC_BASE<"nori.b", int_mips_nori_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001699 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001700
Daniel Sanders869bdad2013-08-20 08:38:21 +00001701class OR_V_DESC : MSA_VEC_DESC_BASE<"or.v", int_mips_or_v, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001702 MSA128B, MSA128B>;
Daniel Sanders869bdad2013-08-20 08:38:21 +00001703
Jack Carterd12e8372013-08-15 14:22:07 +00001704class ORI_B_DESC : MSA_I8_DESC_BASE<"ori.b", int_mips_ori_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001705 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001706
1707class PCKEV_B_DESC : MSA_3R_DESC_BASE<"pckev.b", int_mips_pckev_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001708 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001709class PCKEV_H_DESC : MSA_3R_DESC_BASE<"pckev.h", int_mips_pckev_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001710 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001711class PCKEV_W_DESC : MSA_3R_DESC_BASE<"pckev.w", int_mips_pckev_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001712 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001713class PCKEV_D_DESC : MSA_3R_DESC_BASE<"pckev.d", int_mips_pckev_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001714 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001715
1716class PCKOD_B_DESC : MSA_3R_DESC_BASE<"pckod.b", int_mips_pckod_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001717 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001718class PCKOD_H_DESC : MSA_3R_DESC_BASE<"pckod.h", int_mips_pckod_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001719 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001720class PCKOD_W_DESC : MSA_3R_DESC_BASE<"pckod.w", int_mips_pckod_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001721 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001722class PCKOD_D_DESC : MSA_3R_DESC_BASE<"pckod.d", int_mips_pckod_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001723 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001724
1725class PCNT_B_DESC : MSA_2R_DESC_BASE<"pcnt.b", int_mips_pcnt_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001726 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001727class PCNT_H_DESC : MSA_2R_DESC_BASE<"pcnt.h", int_mips_pcnt_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001728 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001729class PCNT_W_DESC : MSA_2R_DESC_BASE<"pcnt.w", int_mips_pcnt_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001730 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001731class PCNT_D_DESC : MSA_2R_DESC_BASE<"pcnt.d", int_mips_pcnt_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001732 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001733
1734class SAT_S_B_DESC : MSA_BIT_B_DESC_BASE<"sat_s.b", int_mips_sat_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001735 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001736class SAT_S_H_DESC : MSA_BIT_H_DESC_BASE<"sat_s.h", int_mips_sat_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001737 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001738class SAT_S_W_DESC : MSA_BIT_W_DESC_BASE<"sat_s.w", int_mips_sat_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001739 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001740class SAT_S_D_DESC : MSA_BIT_D_DESC_BASE<"sat_s.d", int_mips_sat_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001741 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001742
1743class SAT_U_B_DESC : MSA_BIT_B_DESC_BASE<"sat_u.b", int_mips_sat_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001744 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001745class SAT_U_H_DESC : MSA_BIT_H_DESC_BASE<"sat_u.h", int_mips_sat_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001746 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001747class SAT_U_W_DESC : MSA_BIT_W_DESC_BASE<"sat_u.w", int_mips_sat_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001748 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001749class SAT_U_D_DESC : MSA_BIT_D_DESC_BASE<"sat_u.d", int_mips_sat_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001750 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001751
1752class SHF_B_DESC : MSA_I8_DESC_BASE<"shf.b", int_mips_shf_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001753 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001754class SHF_H_DESC : MSA_I8_DESC_BASE<"shf.h", int_mips_shf_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001755 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001756class SHF_W_DESC : MSA_I8_DESC_BASE<"shf.w", int_mips_shf_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001757 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001758
1759class SLD_B_DESC : MSA_3R_DESC_BASE<"sld.b", int_mips_sld_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001760 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001761class SLD_H_DESC : MSA_3R_DESC_BASE<"sld.h", int_mips_sld_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001762 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001763class SLD_W_DESC : MSA_3R_DESC_BASE<"sld.w", int_mips_sld_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001764 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001765class SLD_D_DESC : MSA_3R_DESC_BASE<"sld.d", int_mips_sld_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001766 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001767
1768class SLDI_B_DESC : MSA_BIT_B_DESC_BASE<"sldi.b", int_mips_sldi_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001769 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001770class SLDI_H_DESC : MSA_BIT_H_DESC_BASE<"sldi.h", int_mips_sldi_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001771 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001772class SLDI_W_DESC : MSA_BIT_W_DESC_BASE<"sldi.w", int_mips_sldi_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001773 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001774class SLDI_D_DESC : MSA_BIT_D_DESC_BASE<"sldi.d", int_mips_sldi_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001775 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001776
1777class SLL_B_DESC : MSA_3R_DESC_BASE<"sll.b", int_mips_sll_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001778 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001779class SLL_H_DESC : MSA_3R_DESC_BASE<"sll.h", int_mips_sll_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001780 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001781class SLL_W_DESC : MSA_3R_DESC_BASE<"sll.w", int_mips_sll_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001782 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001783class SLL_D_DESC : MSA_3R_DESC_BASE<"sll.d", int_mips_sll_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001784 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001785
1786class SLLI_B_DESC : MSA_BIT_B_DESC_BASE<"slli.b", int_mips_slli_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001787 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001788class SLLI_H_DESC : MSA_BIT_H_DESC_BASE<"slli.h", int_mips_slli_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001789 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001790class SLLI_W_DESC : MSA_BIT_W_DESC_BASE<"slli.w", int_mips_slli_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001791 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001792class SLLI_D_DESC : MSA_BIT_D_DESC_BASE<"slli.d", int_mips_slli_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001793 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001794
1795class SPLAT_B_DESC : MSA_3R_DESC_BASE<"splat.b", int_mips_splat_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001796 MSA128B, MSA128B, GPR32>;
Jack Carterd12e8372013-08-15 14:22:07 +00001797class SPLAT_H_DESC : MSA_3R_DESC_BASE<"splat.h", int_mips_splat_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001798 MSA128H, MSA128H, GPR32>;
Jack Carterd12e8372013-08-15 14:22:07 +00001799class SPLAT_W_DESC : MSA_3R_DESC_BASE<"splat.w", int_mips_splat_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001800 MSA128W, MSA128W, GPR32>;
Jack Carterd12e8372013-08-15 14:22:07 +00001801class SPLAT_D_DESC : MSA_3R_DESC_BASE<"splat.d", int_mips_splat_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001802 MSA128D, MSA128D, GPR32>;
Jack Carterd12e8372013-08-15 14:22:07 +00001803
1804class SPLATI_B_DESC : MSA_BIT_B_DESC_BASE<"splati.b", int_mips_splati_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001805 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001806class SPLATI_H_DESC : MSA_BIT_H_DESC_BASE<"splati.h", int_mips_splati_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001807 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001808class SPLATI_W_DESC : MSA_BIT_W_DESC_BASE<"splati.w", int_mips_splati_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001809 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001810class SPLATI_D_DESC : MSA_BIT_D_DESC_BASE<"splati.d", int_mips_splati_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001811 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001812
1813class SRA_B_DESC : MSA_3R_DESC_BASE<"sra.b", int_mips_sra_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001814 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001815class SRA_H_DESC : MSA_3R_DESC_BASE<"sra.h", int_mips_sra_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001816 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001817class SRA_W_DESC : MSA_3R_DESC_BASE<"sra.w", int_mips_sra_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001818 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001819class SRA_D_DESC : MSA_3R_DESC_BASE<"sra.d", int_mips_sra_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001820 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001821
1822class SRAI_B_DESC : MSA_BIT_B_DESC_BASE<"srai.b", int_mips_srai_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001823 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001824class SRAI_H_DESC : MSA_BIT_H_DESC_BASE<"srai.h", int_mips_srai_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001825 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001826class SRAI_W_DESC : MSA_BIT_W_DESC_BASE<"srai.w", int_mips_srai_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001827 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001828class SRAI_D_DESC : MSA_BIT_D_DESC_BASE<"srai.d", int_mips_srai_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001829 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001830
1831class SRL_B_DESC : MSA_3R_DESC_BASE<"srl.b", int_mips_srl_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001832 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001833class SRL_H_DESC : MSA_3R_DESC_BASE<"srl.h", int_mips_srl_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001834 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001835class SRL_W_DESC : MSA_3R_DESC_BASE<"srl.w", int_mips_srl_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001836 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001837class SRL_D_DESC : MSA_3R_DESC_BASE<"srl.d", int_mips_srl_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001838 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001839
1840class SRLI_B_DESC : MSA_BIT_B_DESC_BASE<"srli.b", int_mips_srli_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001841 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001842class SRLI_H_DESC : MSA_BIT_H_DESC_BASE<"srli.h", int_mips_srli_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001843 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001844class SRLI_W_DESC : MSA_BIT_W_DESC_BASE<"srli.w", int_mips_srli_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001845 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001846class SRLI_D_DESC : MSA_BIT_D_DESC_BASE<"srli.d", int_mips_srli_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001847 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001848
Jack Carter3a2c2d42013-08-13 20:54:07 +00001849class ST_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
1850 ValueType TyNode, InstrItinClass itin, RegisterClass RCWD,
1851 Operand MemOpnd = mem, ComplexPattern Addr = addr> {
1852 dag OutOperandList = (outs);
1853 dag InOperandList = (ins RCWD:$wd, MemOpnd:$addr);
1854 string AsmString = !strconcat(instr_asm, "\t$wd, $addr");
1855 list<dag> Pattern = [(OpNode (TyNode RCWD:$wd), Addr:$addr)];
1856 InstrItinClass Itinerary = itin;
1857}
1858
1859// Load/Store
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001860class ST_B_DESC : ST_DESC_BASE<"st.b", store, v16i8, NoItinerary, MSA128B>;
1861class ST_H_DESC : ST_DESC_BASE<"st.h", store, v8i16, NoItinerary, MSA128H>;
1862class ST_W_DESC : ST_DESC_BASE<"st.w", store, v4i32, NoItinerary, MSA128W>;
1863class ST_D_DESC : ST_DESC_BASE<"st.d", store, v2i64, NoItinerary, MSA128D>;
Jack Carter3a2c2d42013-08-13 20:54:07 +00001864
Jack Carterd12e8372013-08-15 14:22:07 +00001865class SUBS_S_B_DESC : MSA_3R_DESC_BASE<"subs_s.b", int_mips_subs_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001866 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001867class SUBS_S_H_DESC : MSA_3R_DESC_BASE<"subs_s.h", int_mips_subs_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001868 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001869class SUBS_S_W_DESC : MSA_3R_DESC_BASE<"subs_s.w", int_mips_subs_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001870 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001871class SUBS_S_D_DESC : MSA_3R_DESC_BASE<"subs_s.d", int_mips_subs_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001872 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001873
1874class SUBS_U_B_DESC : MSA_3R_DESC_BASE<"subs_u.b", int_mips_subs_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001875 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001876class SUBS_U_H_DESC : MSA_3R_DESC_BASE<"subs_u.h", int_mips_subs_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001877 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001878class SUBS_U_W_DESC : MSA_3R_DESC_BASE<"subs_u.w", int_mips_subs_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001879 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001880class SUBS_U_D_DESC : MSA_3R_DESC_BASE<"subs_u.d", int_mips_subs_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001881 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001882
1883class SUBSUS_U_B_DESC : MSA_3R_DESC_BASE<"subsus_u.b", int_mips_subsus_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001884 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001885class SUBSUS_U_H_DESC : MSA_3R_DESC_BASE<"subsus_u.h", int_mips_subsus_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001886 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001887class SUBSUS_U_W_DESC : MSA_3R_DESC_BASE<"subsus_u.w", int_mips_subsus_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001888 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001889class SUBSUS_U_D_DESC : MSA_3R_DESC_BASE<"subsus_u.d", int_mips_subsus_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001890 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001891
1892class SUBSUU_S_B_DESC : MSA_3R_DESC_BASE<"subsuu_s.b", int_mips_subsuu_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001893 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001894class SUBSUU_S_H_DESC : MSA_3R_DESC_BASE<"subsuu_s.h", int_mips_subsuu_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001895 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001896class SUBSUU_S_W_DESC : MSA_3R_DESC_BASE<"subsuu_s.w", int_mips_subsuu_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001897 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001898class SUBSUU_S_D_DESC : MSA_3R_DESC_BASE<"subsuu_s.d", int_mips_subsuu_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001899 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001900
1901class SUBV_B_DESC : MSA_3R_DESC_BASE<"subv.b", int_mips_subv_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001902 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001903class SUBV_H_DESC : MSA_3R_DESC_BASE<"subv.h", int_mips_subv_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001904 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001905class SUBV_W_DESC : MSA_3R_DESC_BASE<"subv.w", int_mips_subv_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001906 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001907class SUBV_D_DESC : MSA_3R_DESC_BASE<"subv.d", int_mips_subv_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001908 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001909
1910class SUBVI_B_DESC : MSA_I5_DESC_BASE<"subvi.b", int_mips_subvi_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001911 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001912class SUBVI_H_DESC : MSA_I5_DESC_BASE<"subvi.h", int_mips_subvi_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001913 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001914class SUBVI_W_DESC : MSA_I5_DESC_BASE<"subvi.w", int_mips_subvi_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001915 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001916class SUBVI_D_DESC : MSA_I5_DESC_BASE<"subvi.d", int_mips_subvi_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001917 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001918
1919class VSHF_B_DESC : MSA_3R_DESC_BASE<"vshf.b", int_mips_vshf_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001920 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001921class VSHF_H_DESC : MSA_3R_DESC_BASE<"vshf.h", int_mips_vshf_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001922 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001923class VSHF_W_DESC : MSA_3R_DESC_BASE<"vshf.w", int_mips_vshf_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001924 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001925class VSHF_D_DESC : MSA_3R_DESC_BASE<"vshf.d", int_mips_vshf_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001926 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001927
Daniel Sanders869bdad2013-08-20 08:38:21 +00001928class XOR_V_DESC : MSA_VEC_DESC_BASE<"xor.v", int_mips_xor_v, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001929 MSA128B, MSA128B>;
Daniel Sanders869bdad2013-08-20 08:38:21 +00001930
Jack Carterd12e8372013-08-15 14:22:07 +00001931class XORI_B_DESC : MSA_I8_DESC_BASE<"xori.b", int_mips_xori_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001932 MSA128B, MSA128B>;
Jack Carter3a2c2d42013-08-13 20:54:07 +00001933// Instruction defs.
Jack Carterbabdcc82013-08-15 12:24:57 +00001934def ADD_A_B : ADD_A_B_ENC, ADD_A_B_DESC, Requires<[HasMSA]>;
1935def ADD_A_H : ADD_A_H_ENC, ADD_A_H_DESC, Requires<[HasMSA]>;
1936def ADD_A_W : ADD_A_W_ENC, ADD_A_W_DESC, Requires<[HasMSA]>;
1937def ADD_A_D : ADD_A_D_ENC, ADD_A_D_DESC, Requires<[HasMSA]>;
1938
1939def ADDS_A_B : ADDS_A_B_ENC, ADDS_A_B_DESC, Requires<[HasMSA]>;
1940def ADDS_A_H : ADDS_A_H_ENC, ADDS_A_H_DESC, Requires<[HasMSA]>;
1941def ADDS_A_W : ADDS_A_W_ENC, ADDS_A_W_DESC, Requires<[HasMSA]>;
1942def ADDS_A_D : ADDS_A_D_ENC, ADDS_A_D_DESC, Requires<[HasMSA]>;
1943
1944def ADDS_S_B : ADDS_S_B_ENC, ADDS_S_B_DESC, Requires<[HasMSA]>;
1945def ADDS_S_H : ADDS_S_H_ENC, ADDS_S_H_DESC, Requires<[HasMSA]>;
1946def ADDS_S_W : ADDS_S_W_ENC, ADDS_S_W_DESC, Requires<[HasMSA]>;
1947def ADDS_S_D : ADDS_S_D_ENC, ADDS_S_D_DESC, Requires<[HasMSA]>;
1948
1949def ADDS_U_B : ADDS_U_B_ENC, ADDS_U_B_DESC, Requires<[HasMSA]>;
1950def ADDS_U_H : ADDS_U_H_ENC, ADDS_U_H_DESC, Requires<[HasMSA]>;
1951def ADDS_U_W : ADDS_U_W_ENC, ADDS_U_W_DESC, Requires<[HasMSA]>;
1952def ADDS_U_D : ADDS_U_D_ENC, ADDS_U_D_DESC, Requires<[HasMSA]>;
1953
1954def ADDV_B : ADDV_B_ENC, ADDV_B_DESC, Requires<[HasMSA]>;
1955def ADDV_H : ADDV_H_ENC, ADDV_H_DESC, Requires<[HasMSA]>;
1956def ADDV_W : ADDV_W_ENC, ADDV_W_DESC, Requires<[HasMSA]>;
1957def ADDV_D : ADDV_D_ENC, ADDV_D_DESC, Requires<[HasMSA]>;
1958
1959def ADDVI_B : ADDVI_B_ENC, ADDVI_B_DESC, Requires<[HasMSA]>;
1960def ADDVI_H : ADDVI_H_ENC, ADDVI_H_DESC, Requires<[HasMSA]>;
1961def ADDVI_W : ADDVI_W_ENC, ADDVI_W_DESC, Requires<[HasMSA]>;
1962def ADDVI_D : ADDVI_D_ENC, ADDVI_D_DESC, Requires<[HasMSA]>;
1963
Daniel Sanders869bdad2013-08-20 08:38:21 +00001964def AND_V : AND_V_ENC, AND_V_DESC, Requires<[HasMSA]>;
1965
Jack Carterbabdcc82013-08-15 12:24:57 +00001966def ANDI_B : ANDI_B_ENC, ANDI_B_DESC, Requires<[HasMSA]>;
1967
1968def ASUB_S_B : ASUB_S_B_ENC, ASUB_S_B_DESC, Requires<[HasMSA]>;
1969def ASUB_S_H : ASUB_S_H_ENC, ASUB_S_H_DESC, Requires<[HasMSA]>;
1970def ASUB_S_W : ASUB_S_W_ENC, ASUB_S_W_DESC, Requires<[HasMSA]>;
1971def ASUB_S_D : ASUB_S_D_ENC, ASUB_S_D_DESC, Requires<[HasMSA]>;
1972
1973def ASUB_U_B : ASUB_U_B_ENC, ASUB_U_B_DESC, Requires<[HasMSA]>;
1974def ASUB_U_H : ASUB_U_H_ENC, ASUB_U_H_DESC, Requires<[HasMSA]>;
1975def ASUB_U_W : ASUB_U_W_ENC, ASUB_U_W_DESC, Requires<[HasMSA]>;
1976def ASUB_U_D : ASUB_U_D_ENC, ASUB_U_D_DESC, Requires<[HasMSA]>;
1977
1978def AVE_S_B : AVE_S_B_ENC, AVE_S_B_DESC, Requires<[HasMSA]>;
1979def AVE_S_H : AVE_S_H_ENC, AVE_S_H_DESC, Requires<[HasMSA]>;
1980def AVE_S_W : AVE_S_W_ENC, AVE_S_W_DESC, Requires<[HasMSA]>;
1981def AVE_S_D : AVE_S_D_ENC, AVE_S_D_DESC, Requires<[HasMSA]>;
1982
1983def AVE_U_B : AVE_U_B_ENC, AVE_U_B_DESC, Requires<[HasMSA]>;
1984def AVE_U_H : AVE_U_H_ENC, AVE_U_H_DESC, Requires<[HasMSA]>;
1985def AVE_U_W : AVE_U_W_ENC, AVE_U_W_DESC, Requires<[HasMSA]>;
1986def AVE_U_D : AVE_U_D_ENC, AVE_U_D_DESC, Requires<[HasMSA]>;
1987
1988def AVER_S_B : AVER_S_B_ENC, AVER_S_B_DESC, Requires<[HasMSA]>;
1989def AVER_S_H : AVER_S_H_ENC, AVER_S_H_DESC, Requires<[HasMSA]>;
1990def AVER_S_W : AVER_S_W_ENC, AVER_S_W_DESC, Requires<[HasMSA]>;
1991def AVER_S_D : AVER_S_D_ENC, AVER_S_D_DESC, Requires<[HasMSA]>;
1992
1993def AVER_U_B : AVER_U_B_ENC, AVER_U_B_DESC, Requires<[HasMSA]>;
1994def AVER_U_H : AVER_U_H_ENC, AVER_U_H_DESC, Requires<[HasMSA]>;
1995def AVER_U_W : AVER_U_W_ENC, AVER_U_W_DESC, Requires<[HasMSA]>;
1996def AVER_U_D : AVER_U_D_ENC, AVER_U_D_DESC, Requires<[HasMSA]>;
1997
1998def BCLR_B : BCLR_B_ENC, BCLR_B_DESC, Requires<[HasMSA]>;
1999def BCLR_H : BCLR_H_ENC, BCLR_H_DESC, Requires<[HasMSA]>;
2000def BCLR_W : BCLR_W_ENC, BCLR_W_DESC, Requires<[HasMSA]>;
2001def BCLR_D : BCLR_D_ENC, BCLR_D_DESC, Requires<[HasMSA]>;
2002
2003def BCLRI_B : BCLRI_B_ENC, BCLRI_B_DESC, Requires<[HasMSA]>;
2004def BCLRI_H : BCLRI_H_ENC, BCLRI_H_DESC, Requires<[HasMSA]>;
2005def BCLRI_W : BCLRI_W_ENC, BCLRI_W_DESC, Requires<[HasMSA]>;
2006def BCLRI_D : BCLRI_D_ENC, BCLRI_D_DESC, Requires<[HasMSA]>;
2007
2008def BINSL_B : BINSL_B_ENC, BINSL_B_DESC, Requires<[HasMSA]>;
2009def BINSL_H : BINSL_H_ENC, BINSL_H_DESC, Requires<[HasMSA]>;
2010def BINSL_W : BINSL_W_ENC, BINSL_W_DESC, Requires<[HasMSA]>;
2011def BINSL_D : BINSL_D_ENC, BINSL_D_DESC, Requires<[HasMSA]>;
2012
2013def BINSLI_B : BINSLI_B_ENC, BINSLI_B_DESC, Requires<[HasMSA]>;
2014def BINSLI_H : BINSLI_H_ENC, BINSLI_H_DESC, Requires<[HasMSA]>;
2015def BINSLI_W : BINSLI_W_ENC, BINSLI_W_DESC, Requires<[HasMSA]>;
2016def BINSLI_D : BINSLI_D_ENC, BINSLI_D_DESC, Requires<[HasMSA]>;
2017
2018def BINSR_B : BINSR_B_ENC, BINSR_B_DESC, Requires<[HasMSA]>;
2019def BINSR_H : BINSR_H_ENC, BINSR_H_DESC, Requires<[HasMSA]>;
2020def BINSR_W : BINSR_W_ENC, BINSR_W_DESC, Requires<[HasMSA]>;
2021def BINSR_D : BINSR_D_ENC, BINSR_D_DESC, Requires<[HasMSA]>;
2022
2023def BINSRI_B : BINSRI_B_ENC, BINSRI_B_DESC, Requires<[HasMSA]>;
2024def BINSRI_H : BINSRI_H_ENC, BINSRI_H_DESC, Requires<[HasMSA]>;
2025def BINSRI_W : BINSRI_W_ENC, BINSRI_W_DESC, Requires<[HasMSA]>;
2026def BINSRI_D : BINSRI_D_ENC, BINSRI_D_DESC, Requires<[HasMSA]>;
2027
Daniel Sanders869bdad2013-08-20 08:38:21 +00002028def BMNZ_V : BMNZ_V_ENC, BMNZ_V_DESC, Requires<[HasMSA]>;
2029
Jack Carterbabdcc82013-08-15 12:24:57 +00002030def BMNZI_B : BMNZI_B_ENC, BMNZI_B_DESC, Requires<[HasMSA]>;
2031
Daniel Sanders869bdad2013-08-20 08:38:21 +00002032def BMZ_V : BMZ_V_ENC, BMZ_V_DESC, Requires<[HasMSA]>;
2033
Jack Carterbabdcc82013-08-15 12:24:57 +00002034def BMZI_B : BMZI_B_ENC, BMZI_B_DESC, Requires<[HasMSA]>;
2035
2036def BNEG_B : BNEG_B_ENC, BNEG_B_DESC, Requires<[HasMSA]>;
2037def BNEG_H : BNEG_H_ENC, BNEG_H_DESC, Requires<[HasMSA]>;
2038def BNEG_W : BNEG_W_ENC, BNEG_W_DESC, Requires<[HasMSA]>;
2039def BNEG_D : BNEG_D_ENC, BNEG_D_DESC, Requires<[HasMSA]>;
2040
2041def BNEGI_B : BNEGI_B_ENC, BNEGI_B_DESC, Requires<[HasMSA]>;
2042def BNEGI_H : BNEGI_H_ENC, BNEGI_H_DESC, Requires<[HasMSA]>;
2043def BNEGI_W : BNEGI_W_ENC, BNEGI_W_DESC, Requires<[HasMSA]>;
2044def BNEGI_D : BNEGI_D_ENC, BNEGI_D_DESC, Requires<[HasMSA]>;
2045
Daniel Sanders869bdad2013-08-20 08:38:21 +00002046def BSEL_V : BSEL_V_ENC, BSEL_V_DESC, Requires<[HasMSA]>;
2047
Jack Carterbabdcc82013-08-15 12:24:57 +00002048def BSELI_B : BSELI_B_ENC, BSELI_B_DESC, Requires<[HasMSA]>;
2049
2050def BSET_B : BSET_B_ENC, BSET_B_DESC, Requires<[HasMSA]>;
2051def BSET_H : BSET_H_ENC, BSET_H_DESC, Requires<[HasMSA]>;
2052def BSET_W : BSET_W_ENC, BSET_W_DESC, Requires<[HasMSA]>;
2053def BSET_D : BSET_D_ENC, BSET_D_DESC, Requires<[HasMSA]>;
2054
2055def BSETI_B : BSETI_B_ENC, BSETI_B_DESC, Requires<[HasMSA]>;
2056def BSETI_H : BSETI_H_ENC, BSETI_H_DESC, Requires<[HasMSA]>;
2057def BSETI_W : BSETI_W_ENC, BSETI_W_DESC, Requires<[HasMSA]>;
2058def BSETI_D : BSETI_D_ENC, BSETI_D_DESC, Requires<[HasMSA]>;
2059
2060def CEQ_B : CEQ_B_ENC, CEQ_B_DESC, Requires<[HasMSA]>;
2061def CEQ_H : CEQ_H_ENC, CEQ_H_DESC, Requires<[HasMSA]>;
2062def CEQ_W : CEQ_W_ENC, CEQ_W_DESC, Requires<[HasMSA]>;
2063def CEQ_D : CEQ_D_ENC, CEQ_D_DESC, Requires<[HasMSA]>;
2064
2065def CEQI_B : CEQI_B_ENC, CEQI_B_DESC, Requires<[HasMSA]>;
2066def CEQI_H : CEQI_H_ENC, CEQI_H_DESC, Requires<[HasMSA]>;
2067def CEQI_W : CEQI_W_ENC, CEQI_W_DESC, Requires<[HasMSA]>;
2068def CEQI_D : CEQI_D_ENC, CEQI_D_DESC, Requires<[HasMSA]>;
2069
2070def CLE_S_B : CLE_S_B_ENC, CLE_S_B_DESC, Requires<[HasMSA]>;
2071def CLE_S_H : CLE_S_H_ENC, CLE_S_H_DESC, Requires<[HasMSA]>;
2072def CLE_S_W : CLE_S_W_ENC, CLE_S_W_DESC, Requires<[HasMSA]>;
2073def CLE_S_D : CLE_S_D_ENC, CLE_S_D_DESC, Requires<[HasMSA]>;
2074
2075def CLE_U_B : CLE_U_B_ENC, CLE_U_B_DESC, Requires<[HasMSA]>;
2076def CLE_U_H : CLE_U_H_ENC, CLE_U_H_DESC, Requires<[HasMSA]>;
2077def CLE_U_W : CLE_U_W_ENC, CLE_U_W_DESC, Requires<[HasMSA]>;
2078def CLE_U_D : CLE_U_D_ENC, CLE_U_D_DESC, Requires<[HasMSA]>;
2079
2080def CLEI_S_B : CLEI_S_B_ENC, CLEI_S_B_DESC, Requires<[HasMSA]>;
2081def CLEI_S_H : CLEI_S_H_ENC, CLEI_S_H_DESC, Requires<[HasMSA]>;
2082def CLEI_S_W : CLEI_S_W_ENC, CLEI_S_W_DESC, Requires<[HasMSA]>;
2083def CLEI_S_D : CLEI_S_D_ENC, CLEI_S_D_DESC, Requires<[HasMSA]>;
2084
2085def CLEI_U_B : CLEI_U_B_ENC, CLEI_U_B_DESC, Requires<[HasMSA]>;
2086def CLEI_U_H : CLEI_U_H_ENC, CLEI_U_H_DESC, Requires<[HasMSA]>;
2087def CLEI_U_W : CLEI_U_W_ENC, CLEI_U_W_DESC, Requires<[HasMSA]>;
2088def CLEI_U_D : CLEI_U_D_ENC, CLEI_U_D_DESC, Requires<[HasMSA]>;
2089
2090def CLT_S_B : CLT_S_B_ENC, CLT_S_B_DESC, Requires<[HasMSA]>;
2091def CLT_S_H : CLT_S_H_ENC, CLT_S_H_DESC, Requires<[HasMSA]>;
2092def CLT_S_W : CLT_S_W_ENC, CLT_S_W_DESC, Requires<[HasMSA]>;
2093def CLT_S_D : CLT_S_D_ENC, CLT_S_D_DESC, Requires<[HasMSA]>;
2094
2095def CLT_U_B : CLT_U_B_ENC, CLT_U_B_DESC, Requires<[HasMSA]>;
2096def CLT_U_H : CLT_U_H_ENC, CLT_U_H_DESC, Requires<[HasMSA]>;
2097def CLT_U_W : CLT_U_W_ENC, CLT_U_W_DESC, Requires<[HasMSA]>;
2098def CLT_U_D : CLT_U_D_ENC, CLT_U_D_DESC, Requires<[HasMSA]>;
2099
2100def CLTI_S_B : CLTI_S_B_ENC, CLTI_S_B_DESC, Requires<[HasMSA]>;
2101def CLTI_S_H : CLTI_S_H_ENC, CLTI_S_H_DESC, Requires<[HasMSA]>;
2102def CLTI_S_W : CLTI_S_W_ENC, CLTI_S_W_DESC, Requires<[HasMSA]>;
2103def CLTI_S_D : CLTI_S_D_ENC, CLTI_S_D_DESC, Requires<[HasMSA]>;
2104
2105def CLTI_U_B : CLTI_U_B_ENC, CLTI_U_B_DESC, Requires<[HasMSA]>;
2106def CLTI_U_H : CLTI_U_H_ENC, CLTI_U_H_DESC, Requires<[HasMSA]>;
2107def CLTI_U_W : CLTI_U_W_ENC, CLTI_U_W_DESC, Requires<[HasMSA]>;
2108def CLTI_U_D : CLTI_U_D_ENC, CLTI_U_D_DESC, Requires<[HasMSA]>;
2109
2110def COPY_S_B : COPY_S_B_ENC, COPY_S_B_DESC, Requires<[HasMSA]>;
2111def COPY_S_H : COPY_S_H_ENC, COPY_S_H_DESC, Requires<[HasMSA]>;
2112def COPY_S_W : COPY_S_W_ENC, COPY_S_W_DESC, Requires<[HasMSA]>;
2113
2114def COPY_U_B : COPY_U_B_ENC, COPY_U_B_DESC, Requires<[HasMSA]>;
2115def COPY_U_H : COPY_U_H_ENC, COPY_U_H_DESC, Requires<[HasMSA]>;
2116def COPY_U_W : COPY_U_W_ENC, COPY_U_W_DESC, Requires<[HasMSA]>;
2117
2118def DIV_S_B : DIV_S_B_ENC, DIV_S_B_DESC, Requires<[HasMSA]>;
2119def DIV_S_H : DIV_S_H_ENC, DIV_S_H_DESC, Requires<[HasMSA]>;
2120def DIV_S_W : DIV_S_W_ENC, DIV_S_W_DESC, Requires<[HasMSA]>;
2121def DIV_S_D : DIV_S_D_ENC, DIV_S_D_DESC, Requires<[HasMSA]>;
2122
2123def DIV_U_B : DIV_U_B_ENC, DIV_U_B_DESC, Requires<[HasMSA]>;
2124def DIV_U_H : DIV_U_H_ENC, DIV_U_H_DESC, Requires<[HasMSA]>;
2125def DIV_U_W : DIV_U_W_ENC, DIV_U_W_DESC, Requires<[HasMSA]>;
2126def DIV_U_D : DIV_U_D_ENC, DIV_U_D_DESC, Requires<[HasMSA]>;
2127
2128def DOTP_S_B : DOTP_S_B_ENC, DOTP_S_B_DESC, Requires<[HasMSA]>;
2129def DOTP_S_H : DOTP_S_H_ENC, DOTP_S_H_DESC, Requires<[HasMSA]>;
2130def DOTP_S_W : DOTP_S_W_ENC, DOTP_S_W_DESC, Requires<[HasMSA]>;
2131def DOTP_S_D : DOTP_S_D_ENC, DOTP_S_D_DESC, Requires<[HasMSA]>;
2132
2133def DOTP_U_B : DOTP_U_B_ENC, DOTP_U_B_DESC, Requires<[HasMSA]>;
2134def DOTP_U_H : DOTP_U_H_ENC, DOTP_U_H_DESC, Requires<[HasMSA]>;
2135def DOTP_U_W : DOTP_U_W_ENC, DOTP_U_W_DESC, Requires<[HasMSA]>;
2136def DOTP_U_D : DOTP_U_D_ENC, DOTP_U_D_DESC, Requires<[HasMSA]>;
2137
2138def DPADD_S_H : DPADD_S_H_ENC, DPADD_S_H_DESC, Requires<[HasMSA]>;
2139def DPADD_S_W : DPADD_S_W_ENC, DPADD_S_W_DESC, Requires<[HasMSA]>;
2140def DPADD_S_D : DPADD_S_D_ENC, DPADD_S_D_DESC, Requires<[HasMSA]>;
2141
2142def DPADD_U_H : DPADD_U_H_ENC, DPADD_U_H_DESC, Requires<[HasMSA]>;
2143def DPADD_U_W : DPADD_U_W_ENC, DPADD_U_W_DESC, Requires<[HasMSA]>;
2144def DPADD_U_D : DPADD_U_D_ENC, DPADD_U_D_DESC, Requires<[HasMSA]>;
2145
2146def DPSUB_S_H : DPSUB_S_H_ENC, DPSUB_S_H_DESC, Requires<[HasMSA]>;
2147def DPSUB_S_W : DPSUB_S_W_ENC, DPSUB_S_W_DESC, Requires<[HasMSA]>;
2148def DPSUB_S_D : DPSUB_S_D_ENC, DPSUB_S_D_DESC, Requires<[HasMSA]>;
2149
2150def DPSUB_U_H : DPSUB_U_H_ENC, DPSUB_U_H_DESC, Requires<[HasMSA]>;
2151def DPSUB_U_W : DPSUB_U_W_ENC, DPSUB_U_W_DESC, Requires<[HasMSA]>;
2152def DPSUB_U_D : DPSUB_U_D_ENC, DPSUB_U_D_DESC, Requires<[HasMSA]>;
2153
Jack Carterb95ee692013-08-15 13:45:36 +00002154def FADD_W : FADD_W_ENC, FADD_W_DESC, Requires<[HasMSA]>;
2155def FADD_D : FADD_D_ENC, FADD_D_DESC, Requires<[HasMSA]>;
2156
2157def FCEQ_W : FCEQ_W_ENC, FCEQ_W_DESC, Requires<[HasMSA]>;
2158def FCEQ_D : FCEQ_D_ENC, FCEQ_D_DESC, Requires<[HasMSA]>;
2159
2160def FCLE_W : FCLE_W_ENC, FCLE_W_DESC, Requires<[HasMSA]>;
2161def FCLE_D : FCLE_D_ENC, FCLE_D_DESC, Requires<[HasMSA]>;
2162
2163def FCLT_W : FCLT_W_ENC, FCLT_W_DESC, Requires<[HasMSA]>;
2164def FCLT_D : FCLT_D_ENC, FCLT_D_DESC, Requires<[HasMSA]>;
2165
2166def FCLASS_W : FCLASS_W_ENC, FCLASS_W_DESC, Requires<[HasMSA]>;
2167def FCLASS_D : FCLASS_D_ENC, FCLASS_D_DESC, Requires<[HasMSA]>;
2168
Jack Carterb95ee692013-08-15 13:45:36 +00002169def FCNE_W : FCNE_W_ENC, FCNE_W_DESC, Requires<[HasMSA]>;
2170def FCNE_D : FCNE_D_ENC, FCNE_D_DESC, Requires<[HasMSA]>;
2171
2172def FCUN_W : FCUN_W_ENC, FCUN_W_DESC, Requires<[HasMSA]>;
2173def FCUN_D : FCUN_D_ENC, FCUN_D_DESC, Requires<[HasMSA]>;
2174
2175def FDIV_W : FDIV_W_ENC, FDIV_W_DESC, Requires<[HasMSA]>;
2176def FDIV_D : FDIV_D_ENC, FDIV_D_DESC, Requires<[HasMSA]>;
2177
2178def FEXDO_H : FEXDO_H_ENC, FEXDO_H_DESC, Requires<[HasMSA]>;
2179def FEXDO_W : FEXDO_W_ENC, FEXDO_W_DESC, Requires<[HasMSA]>;
2180
2181def FEXP2_W : FEXP2_W_ENC, FEXP2_W_DESC, Requires<[HasMSA]>;
2182def FEXP2_D : FEXP2_D_ENC, FEXP2_D_DESC, Requires<[HasMSA]>;
2183
2184def FEXUPL_W : FEXUPL_W_ENC, FEXUPL_W_DESC, Requires<[HasMSA]>;
2185def FEXUPL_D : FEXUPL_D_ENC, FEXUPL_D_DESC, Requires<[HasMSA]>;
2186
2187def FEXUPR_W : FEXUPR_W_ENC, FEXUPR_W_DESC, Requires<[HasMSA]>;
2188def FEXUPR_D : FEXUPR_D_ENC, FEXUPR_D_DESC, Requires<[HasMSA]>;
2189
2190def FFINT_S_W : FFINT_S_W_ENC, FFINT_S_W_DESC, Requires<[HasMSA]>;
2191def FFINT_S_D : FFINT_S_D_ENC, FFINT_S_D_DESC, Requires<[HasMSA]>;
2192
2193def FFINT_U_W : FFINT_U_W_ENC, FFINT_U_W_DESC, Requires<[HasMSA]>;
2194def FFINT_U_D : FFINT_U_D_ENC, FFINT_U_D_DESC, Requires<[HasMSA]>;
2195
2196def FFQL_W : FFQL_W_ENC, FFQL_W_DESC, Requires<[HasMSA]>;
2197def FFQL_D : FFQL_D_ENC, FFQL_D_DESC, Requires<[HasMSA]>;
2198
2199def FFQR_W : FFQR_W_ENC, FFQR_W_DESC, Requires<[HasMSA]>;
2200def FFQR_D : FFQR_D_ENC, FFQR_D_DESC, Requires<[HasMSA]>;
2201
2202def FILL_B : FILL_B_ENC, FILL_B_DESC, Requires<[HasMSA]>;
2203def FILL_H : FILL_H_ENC, FILL_H_DESC, Requires<[HasMSA]>;
2204def FILL_W : FILL_W_ENC, FILL_W_DESC, Requires<[HasMSA]>;
2205
2206def FLOG2_W : FLOG2_W_ENC, FLOG2_W_DESC, Requires<[HasMSA]>;
2207def FLOG2_D : FLOG2_D_ENC, FLOG2_D_DESC, Requires<[HasMSA]>;
2208
2209def FMADD_W : FMADD_W_ENC, FMADD_W_DESC, Requires<[HasMSA]>;
2210def FMADD_D : FMADD_D_ENC, FMADD_D_DESC, Requires<[HasMSA]>;
2211
2212def FMAX_W : FMAX_W_ENC, FMAX_W_DESC, Requires<[HasMSA]>;
2213def FMAX_D : FMAX_D_ENC, FMAX_D_DESC, Requires<[HasMSA]>;
2214
2215def FMAX_A_W : FMAX_A_W_ENC, FMAX_A_W_DESC, Requires<[HasMSA]>;
2216def FMAX_A_D : FMAX_A_D_ENC, FMAX_A_D_DESC, Requires<[HasMSA]>;
2217
2218def FMIN_W : FMIN_W_ENC, FMIN_W_DESC, Requires<[HasMSA]>;
2219def FMIN_D : FMIN_D_ENC, FMIN_D_DESC, Requires<[HasMSA]>;
2220
2221def FMIN_A_W : FMIN_A_W_ENC, FMIN_A_W_DESC, Requires<[HasMSA]>;
2222def FMIN_A_D : FMIN_A_D_ENC, FMIN_A_D_DESC, Requires<[HasMSA]>;
2223
2224def FMSUB_W : FMSUB_W_ENC, FMSUB_W_DESC, Requires<[HasMSA]>;
2225def FMSUB_D : FMSUB_D_ENC, FMSUB_D_DESC, Requires<[HasMSA]>;
2226
2227def FMUL_W : FMUL_W_ENC, FMUL_W_DESC, Requires<[HasMSA]>;
2228def FMUL_D : FMUL_D_ENC, FMUL_D_DESC, Requires<[HasMSA]>;
2229
2230def FRINT_W : FRINT_W_ENC, FRINT_W_DESC, Requires<[HasMSA]>;
2231def FRINT_D : FRINT_D_ENC, FRINT_D_DESC, Requires<[HasMSA]>;
2232
2233def FRCP_W : FRCP_W_ENC, FRCP_W_DESC, Requires<[HasMSA]>;
2234def FRCP_D : FRCP_D_ENC, FRCP_D_DESC, Requires<[HasMSA]>;
2235
2236def FRSQRT_W : FRSQRT_W_ENC, FRSQRT_W_DESC, Requires<[HasMSA]>;
2237def FRSQRT_D : FRSQRT_D_ENC, FRSQRT_D_DESC, Requires<[HasMSA]>;
2238
2239def FSEQ_W : FSEQ_W_ENC, FSEQ_W_DESC, Requires<[HasMSA]>;
2240def FSEQ_D : FSEQ_D_ENC, FSEQ_D_DESC, Requires<[HasMSA]>;
2241
2242def FSLE_W : FSLE_W_ENC, FSLE_W_DESC, Requires<[HasMSA]>;
2243def FSLE_D : FSLE_D_ENC, FSLE_D_DESC, Requires<[HasMSA]>;
2244
2245def FSLT_W : FSLT_W_ENC, FSLT_W_DESC, Requires<[HasMSA]>;
2246def FSLT_D : FSLT_D_ENC, FSLT_D_DESC, Requires<[HasMSA]>;
2247
Jack Carterb95ee692013-08-15 13:45:36 +00002248def FSNE_W : FSNE_W_ENC, FSNE_W_DESC, Requires<[HasMSA]>;
2249def FSNE_D : FSNE_D_ENC, FSNE_D_DESC, Requires<[HasMSA]>;
2250
2251def FSQRT_W : FSQRT_W_ENC, FSQRT_W_DESC, Requires<[HasMSA]>;
2252def FSQRT_D : FSQRT_D_ENC, FSQRT_D_DESC, Requires<[HasMSA]>;
2253
2254def FSUB_W : FSUB_W_ENC, FSUB_W_DESC, Requires<[HasMSA]>;
2255def FSUB_D : FSUB_D_ENC, FSUB_D_DESC, Requires<[HasMSA]>;
2256
2257def FTINT_S_W : FTINT_S_W_ENC, FTINT_S_W_DESC, Requires<[HasMSA]>;
2258def FTINT_S_D : FTINT_S_D_ENC, FTINT_S_D_DESC, Requires<[HasMSA]>;
2259
2260def FTINT_U_W : FTINT_U_W_ENC, FTINT_U_W_DESC, Requires<[HasMSA]>;
2261def FTINT_U_D : FTINT_U_D_ENC, FTINT_U_D_DESC, Requires<[HasMSA]>;
2262
2263def FTQ_H : FTQ_H_ENC, FTQ_H_DESC, Requires<[HasMSA]>;
2264def FTQ_W : FTQ_W_ENC, FTQ_W_DESC, Requires<[HasMSA]>;
2265
Jack Carterbabdcc82013-08-15 12:24:57 +00002266def ILVEV_B : ILVEV_B_ENC, ILVEV_B_DESC, Requires<[HasMSA]>;
2267def ILVEV_H : ILVEV_H_ENC, ILVEV_H_DESC, Requires<[HasMSA]>;
2268def ILVEV_W : ILVEV_W_ENC, ILVEV_W_DESC, Requires<[HasMSA]>;
2269def ILVEV_D : ILVEV_D_ENC, ILVEV_D_DESC, Requires<[HasMSA]>;
2270
2271def ILVL_B : ILVL_B_ENC, ILVL_B_DESC, Requires<[HasMSA]>;
2272def ILVL_H : ILVL_H_ENC, ILVL_H_DESC, Requires<[HasMSA]>;
2273def ILVL_W : ILVL_W_ENC, ILVL_W_DESC, Requires<[HasMSA]>;
2274def ILVL_D : ILVL_D_ENC, ILVL_D_DESC, Requires<[HasMSA]>;
2275
2276def ILVOD_B : ILVOD_B_ENC, ILVOD_B_DESC, Requires<[HasMSA]>;
2277def ILVOD_H : ILVOD_H_ENC, ILVOD_H_DESC, Requires<[HasMSA]>;
2278def ILVOD_W : ILVOD_W_ENC, ILVOD_W_DESC, Requires<[HasMSA]>;
2279def ILVOD_D : ILVOD_D_ENC, ILVOD_D_DESC, Requires<[HasMSA]>;
2280
2281def ILVR_B : ILVR_B_ENC, ILVR_B_DESC, Requires<[HasMSA]>;
2282def ILVR_H : ILVR_H_ENC, ILVR_H_DESC, Requires<[HasMSA]>;
2283def ILVR_W : ILVR_W_ENC, ILVR_W_DESC, Requires<[HasMSA]>;
2284def ILVR_D : ILVR_D_ENC, ILVR_D_DESC, Requires<[HasMSA]>;
2285
2286def INSERT_B : INSERT_B_ENC, INSERT_B_DESC, Requires<[HasMSA]>;
2287def INSERT_H : INSERT_H_ENC, INSERT_H_DESC, Requires<[HasMSA]>;
2288def INSERT_W : INSERT_W_ENC, INSERT_W_DESC, Requires<[HasMSA]>;
2289
Daniel Sandersf2a0f1d2013-08-20 09:22:54 +00002290def INSVE_B : INSVE_B_ENC, INSVE_B_DESC, Requires<[HasMSA]>;
2291def INSVE_H : INSVE_H_ENC, INSVE_H_DESC, Requires<[HasMSA]>;
2292def INSVE_W : INSVE_W_ENC, INSVE_W_DESC, Requires<[HasMSA]>;
2293def INSVE_D : INSVE_D_ENC, INSVE_D_DESC, Requires<[HasMSA]>;
2294
Jack Carter3a2c2d42013-08-13 20:54:07 +00002295def LD_B: LD_B_ENC, LD_B_DESC, Requires<[HasMSA]>;
2296def LD_H: LD_H_ENC, LD_H_DESC, Requires<[HasMSA]>;
2297def LD_W: LD_W_ENC, LD_W_DESC, Requires<[HasMSA]>;
2298def LD_D: LD_D_ENC, LD_D_DESC, Requires<[HasMSA]>;
2299
Jack Carterbabdcc82013-08-15 12:24:57 +00002300def LDI_B : LDI_B_ENC, LDI_B_DESC, Requires<[HasMSA]>;
2301def LDI_H : LDI_H_ENC, LDI_H_DESC, Requires<[HasMSA]>;
2302def LDI_W : LDI_W_ENC, LDI_W_DESC, Requires<[HasMSA]>;
2303
Jack Carterd12e8372013-08-15 14:22:07 +00002304def MADD_Q_H : MADD_Q_H_ENC, MADD_Q_H_DESC, Requires<[HasMSA]>;
2305def MADD_Q_W : MADD_Q_W_ENC, MADD_Q_W_DESC, Requires<[HasMSA]>;
2306
2307def MADDR_Q_H : MADDR_Q_H_ENC, MADDR_Q_H_DESC, Requires<[HasMSA]>;
2308def MADDR_Q_W : MADDR_Q_W_ENC, MADDR_Q_W_DESC, Requires<[HasMSA]>;
2309
2310def MADDV_B : MADDV_B_ENC, MADDV_B_DESC, Requires<[HasMSA]>;
2311def MADDV_H : MADDV_H_ENC, MADDV_H_DESC, Requires<[HasMSA]>;
2312def MADDV_W : MADDV_W_ENC, MADDV_W_DESC, Requires<[HasMSA]>;
2313def MADDV_D : MADDV_D_ENC, MADDV_D_DESC, Requires<[HasMSA]>;
2314
2315def MAX_A_B : MAX_A_B_ENC, MAX_A_B_DESC, Requires<[HasMSA]>;
2316def MAX_A_H : MAX_A_H_ENC, MAX_A_H_DESC, Requires<[HasMSA]>;
2317def MAX_A_W : MAX_A_W_ENC, MAX_A_W_DESC, Requires<[HasMSA]>;
2318def MAX_A_D : MAX_A_D_ENC, MAX_A_D_DESC, Requires<[HasMSA]>;
2319
2320def MAX_S_B : MAX_S_B_ENC, MAX_S_B_DESC, Requires<[HasMSA]>;
2321def MAX_S_H : MAX_S_H_ENC, MAX_S_H_DESC, Requires<[HasMSA]>;
2322def MAX_S_W : MAX_S_W_ENC, MAX_S_W_DESC, Requires<[HasMSA]>;
2323def MAX_S_D : MAX_S_D_ENC, MAX_S_D_DESC, Requires<[HasMSA]>;
2324
2325def MAX_U_B : MAX_U_B_ENC, MAX_U_B_DESC, Requires<[HasMSA]>;
2326def MAX_U_H : MAX_U_H_ENC, MAX_U_H_DESC, Requires<[HasMSA]>;
2327def MAX_U_W : MAX_U_W_ENC, MAX_U_W_DESC, Requires<[HasMSA]>;
2328def MAX_U_D : MAX_U_D_ENC, MAX_U_D_DESC, Requires<[HasMSA]>;
2329
2330def MAXI_S_B : MAXI_S_B_ENC, MAXI_S_B_DESC, Requires<[HasMSA]>;
2331def MAXI_S_H : MAXI_S_H_ENC, MAXI_S_H_DESC, Requires<[HasMSA]>;
2332def MAXI_S_W : MAXI_S_W_ENC, MAXI_S_W_DESC, Requires<[HasMSA]>;
2333def MAXI_S_D : MAXI_S_D_ENC, MAXI_S_D_DESC, Requires<[HasMSA]>;
2334
2335def MAXI_U_B : MAXI_U_B_ENC, MAXI_U_B_DESC, Requires<[HasMSA]>;
2336def MAXI_U_H : MAXI_U_H_ENC, MAXI_U_H_DESC, Requires<[HasMSA]>;
2337def MAXI_U_W : MAXI_U_W_ENC, MAXI_U_W_DESC, Requires<[HasMSA]>;
2338def MAXI_U_D : MAXI_U_D_ENC, MAXI_U_D_DESC, Requires<[HasMSA]>;
2339
2340def MIN_A_B : MIN_A_B_ENC, MIN_A_B_DESC, Requires<[HasMSA]>;
2341def MIN_A_H : MIN_A_H_ENC, MIN_A_H_DESC, Requires<[HasMSA]>;
2342def MIN_A_W : MIN_A_W_ENC, MIN_A_W_DESC, Requires<[HasMSA]>;
2343def MIN_A_D : MIN_A_D_ENC, MIN_A_D_DESC, Requires<[HasMSA]>;
2344
2345def MIN_S_B : MIN_S_B_ENC, MIN_S_B_DESC, Requires<[HasMSA]>;
2346def MIN_S_H : MIN_S_H_ENC, MIN_S_H_DESC, Requires<[HasMSA]>;
2347def MIN_S_W : MIN_S_W_ENC, MIN_S_W_DESC, Requires<[HasMSA]>;
2348def MIN_S_D : MIN_S_D_ENC, MIN_S_D_DESC, Requires<[HasMSA]>;
2349
2350def MIN_U_B : MIN_U_B_ENC, MIN_U_B_DESC, Requires<[HasMSA]>;
2351def MIN_U_H : MIN_U_H_ENC, MIN_U_H_DESC, Requires<[HasMSA]>;
2352def MIN_U_W : MIN_U_W_ENC, MIN_U_W_DESC, Requires<[HasMSA]>;
2353def MIN_U_D : MIN_U_D_ENC, MIN_U_D_DESC, Requires<[HasMSA]>;
2354
2355def MINI_S_B : MINI_S_B_ENC, MINI_S_B_DESC, Requires<[HasMSA]>;
2356def MINI_S_H : MINI_S_H_ENC, MINI_S_H_DESC, Requires<[HasMSA]>;
2357def MINI_S_W : MINI_S_W_ENC, MINI_S_W_DESC, Requires<[HasMSA]>;
2358def MINI_S_D : MINI_S_D_ENC, MINI_S_D_DESC, Requires<[HasMSA]>;
2359
2360def MINI_U_B : MINI_U_B_ENC, MINI_U_B_DESC, Requires<[HasMSA]>;
2361def MINI_U_H : MINI_U_H_ENC, MINI_U_H_DESC, Requires<[HasMSA]>;
2362def MINI_U_W : MINI_U_W_ENC, MINI_U_W_DESC, Requires<[HasMSA]>;
2363def MINI_U_D : MINI_U_D_ENC, MINI_U_D_DESC, Requires<[HasMSA]>;
2364
2365def MOD_S_B : MOD_S_B_ENC, MOD_S_B_DESC, Requires<[HasMSA]>;
2366def MOD_S_H : MOD_S_H_ENC, MOD_S_H_DESC, Requires<[HasMSA]>;
2367def MOD_S_W : MOD_S_W_ENC, MOD_S_W_DESC, Requires<[HasMSA]>;
2368def MOD_S_D : MOD_S_D_ENC, MOD_S_D_DESC, Requires<[HasMSA]>;
2369
2370def MOD_U_B : MOD_U_B_ENC, MOD_U_B_DESC, Requires<[HasMSA]>;
2371def MOD_U_H : MOD_U_H_ENC, MOD_U_H_DESC, Requires<[HasMSA]>;
2372def MOD_U_W : MOD_U_W_ENC, MOD_U_W_DESC, Requires<[HasMSA]>;
2373def MOD_U_D : MOD_U_D_ENC, MOD_U_D_DESC, Requires<[HasMSA]>;
2374
2375def MSUB_Q_H : MSUB_Q_H_ENC, MSUB_Q_H_DESC, Requires<[HasMSA]>;
2376def MSUB_Q_W : MSUB_Q_W_ENC, MSUB_Q_W_DESC, Requires<[HasMSA]>;
2377
2378def MSUBR_Q_H : MSUBR_Q_H_ENC, MSUBR_Q_H_DESC, Requires<[HasMSA]>;
2379def MSUBR_Q_W : MSUBR_Q_W_ENC, MSUBR_Q_W_DESC, Requires<[HasMSA]>;
2380
2381def MSUBV_B : MSUBV_B_ENC, MSUBV_B_DESC, Requires<[HasMSA]>;
2382def MSUBV_H : MSUBV_H_ENC, MSUBV_H_DESC, Requires<[HasMSA]>;
2383def MSUBV_W : MSUBV_W_ENC, MSUBV_W_DESC, Requires<[HasMSA]>;
2384def MSUBV_D : MSUBV_D_ENC, MSUBV_D_DESC, Requires<[HasMSA]>;
2385
2386def MUL_Q_H : MUL_Q_H_ENC, MUL_Q_H_DESC, Requires<[HasMSA]>;
2387def MUL_Q_W : MUL_Q_W_ENC, MUL_Q_W_DESC, Requires<[HasMSA]>;
2388
2389def MULR_Q_H : MULR_Q_H_ENC, MULR_Q_H_DESC, Requires<[HasMSA]>;
2390def MULR_Q_W : MULR_Q_W_ENC, MULR_Q_W_DESC, Requires<[HasMSA]>;
2391
2392def MULV_B : MULV_B_ENC, MULV_B_DESC, Requires<[HasMSA]>;
2393def MULV_H : MULV_H_ENC, MULV_H_DESC, Requires<[HasMSA]>;
2394def MULV_W : MULV_W_ENC, MULV_W_DESC, Requires<[HasMSA]>;
2395def MULV_D : MULV_D_ENC, MULV_D_DESC, Requires<[HasMSA]>;
2396
2397def NLOC_B : NLOC_B_ENC, NLOC_B_DESC, Requires<[HasMSA]>;
2398def NLOC_H : NLOC_H_ENC, NLOC_H_DESC, Requires<[HasMSA]>;
2399def NLOC_W : NLOC_W_ENC, NLOC_W_DESC, Requires<[HasMSA]>;
2400def NLOC_D : NLOC_D_ENC, NLOC_D_DESC, Requires<[HasMSA]>;
2401
2402def NLZC_B : NLZC_B_ENC, NLZC_B_DESC, Requires<[HasMSA]>;
2403def NLZC_H : NLZC_H_ENC, NLZC_H_DESC, Requires<[HasMSA]>;
2404def NLZC_W : NLZC_W_ENC, NLZC_W_DESC, Requires<[HasMSA]>;
2405def NLZC_D : NLZC_D_ENC, NLZC_D_DESC, Requires<[HasMSA]>;
2406
Daniel Sanders869bdad2013-08-20 08:38:21 +00002407def NOR_V : NOR_V_ENC, NOR_V_DESC, Requires<[HasMSA]>;
2408
Jack Carterd12e8372013-08-15 14:22:07 +00002409def NORI_B : NORI_B_ENC, NORI_B_DESC, Requires<[HasMSA]>;
2410
Daniel Sanders869bdad2013-08-20 08:38:21 +00002411def OR_V : OR_V_ENC, OR_V_DESC, Requires<[HasMSA]>;
2412
Jack Carterd12e8372013-08-15 14:22:07 +00002413def ORI_B : ORI_B_ENC, ORI_B_DESC, Requires<[HasMSA]>;
2414
2415def PCKEV_B : PCKEV_B_ENC, PCKEV_B_DESC, Requires<[HasMSA]>;
2416def PCKEV_H : PCKEV_H_ENC, PCKEV_H_DESC, Requires<[HasMSA]>;
2417def PCKEV_W : PCKEV_W_ENC, PCKEV_W_DESC, Requires<[HasMSA]>;
2418def PCKEV_D : PCKEV_D_ENC, PCKEV_D_DESC, Requires<[HasMSA]>;
2419
2420def PCKOD_B : PCKOD_B_ENC, PCKOD_B_DESC, Requires<[HasMSA]>;
2421def PCKOD_H : PCKOD_H_ENC, PCKOD_H_DESC, Requires<[HasMSA]>;
2422def PCKOD_W : PCKOD_W_ENC, PCKOD_W_DESC, Requires<[HasMSA]>;
2423def PCKOD_D : PCKOD_D_ENC, PCKOD_D_DESC, Requires<[HasMSA]>;
2424
2425def PCNT_B : PCNT_B_ENC, PCNT_B_DESC, Requires<[HasMSA]>;
2426def PCNT_H : PCNT_H_ENC, PCNT_H_DESC, Requires<[HasMSA]>;
2427def PCNT_W : PCNT_W_ENC, PCNT_W_DESC, Requires<[HasMSA]>;
2428def PCNT_D : PCNT_D_ENC, PCNT_D_DESC, Requires<[HasMSA]>;
2429
2430def SAT_S_B : SAT_S_B_ENC, SAT_S_B_DESC, Requires<[HasMSA]>;
2431def SAT_S_H : SAT_S_H_ENC, SAT_S_H_DESC, Requires<[HasMSA]>;
2432def SAT_S_W : SAT_S_W_ENC, SAT_S_W_DESC, Requires<[HasMSA]>;
2433def SAT_S_D : SAT_S_D_ENC, SAT_S_D_DESC, Requires<[HasMSA]>;
2434
2435def SAT_U_B : SAT_U_B_ENC, SAT_U_B_DESC, Requires<[HasMSA]>;
2436def SAT_U_H : SAT_U_H_ENC, SAT_U_H_DESC, Requires<[HasMSA]>;
2437def SAT_U_W : SAT_U_W_ENC, SAT_U_W_DESC, Requires<[HasMSA]>;
2438def SAT_U_D : SAT_U_D_ENC, SAT_U_D_DESC, Requires<[HasMSA]>;
2439
2440def SHF_B : SHF_B_ENC, SHF_B_DESC, Requires<[HasMSA]>;
2441def SHF_H : SHF_H_ENC, SHF_H_DESC, Requires<[HasMSA]>;
2442def SHF_W : SHF_W_ENC, SHF_W_DESC, Requires<[HasMSA]>;
2443
2444def SLD_B : SLD_B_ENC, SLD_B_DESC, Requires<[HasMSA]>;
2445def SLD_H : SLD_H_ENC, SLD_H_DESC, Requires<[HasMSA]>;
2446def SLD_W : SLD_W_ENC, SLD_W_DESC, Requires<[HasMSA]>;
2447def SLD_D : SLD_D_ENC, SLD_D_DESC, Requires<[HasMSA]>;
2448
2449def SLDI_B : SLDI_B_ENC, SLDI_B_DESC, Requires<[HasMSA]>;
2450def SLDI_H : SLDI_H_ENC, SLDI_H_DESC, Requires<[HasMSA]>;
2451def SLDI_W : SLDI_W_ENC, SLDI_W_DESC, Requires<[HasMSA]>;
2452def SLDI_D : SLDI_D_ENC, SLDI_D_DESC, Requires<[HasMSA]>;
2453
2454def SLL_B : SLL_B_ENC, SLL_B_DESC, Requires<[HasMSA]>;
2455def SLL_H : SLL_H_ENC, SLL_H_DESC, Requires<[HasMSA]>;
2456def SLL_W : SLL_W_ENC, SLL_W_DESC, Requires<[HasMSA]>;
2457def SLL_D : SLL_D_ENC, SLL_D_DESC, Requires<[HasMSA]>;
2458
2459def SLLI_B : SLLI_B_ENC, SLLI_B_DESC, Requires<[HasMSA]>;
2460def SLLI_H : SLLI_H_ENC, SLLI_H_DESC, Requires<[HasMSA]>;
2461def SLLI_W : SLLI_W_ENC, SLLI_W_DESC, Requires<[HasMSA]>;
2462def SLLI_D : SLLI_D_ENC, SLLI_D_DESC, Requires<[HasMSA]>;
2463
2464def SPLAT_B : SPLAT_B_ENC, SPLAT_B_DESC, Requires<[HasMSA]>;
2465def SPLAT_H : SPLAT_H_ENC, SPLAT_H_DESC, Requires<[HasMSA]>;
2466def SPLAT_W : SPLAT_W_ENC, SPLAT_W_DESC, Requires<[HasMSA]>;
2467def SPLAT_D : SPLAT_D_ENC, SPLAT_D_DESC, Requires<[HasMSA]>;
2468
2469def SPLATI_B : SPLATI_B_ENC, SPLATI_B_DESC, Requires<[HasMSA]>;
2470def SPLATI_H : SPLATI_H_ENC, SPLATI_H_DESC, Requires<[HasMSA]>;
2471def SPLATI_W : SPLATI_W_ENC, SPLATI_W_DESC, Requires<[HasMSA]>;
2472def SPLATI_D : SPLATI_D_ENC, SPLATI_D_DESC, Requires<[HasMSA]>;
2473
2474def SRA_B : SRA_B_ENC, SRA_B_DESC, Requires<[HasMSA]>;
2475def SRA_H : SRA_H_ENC, SRA_H_DESC, Requires<[HasMSA]>;
2476def SRA_W : SRA_W_ENC, SRA_W_DESC, Requires<[HasMSA]>;
2477def SRA_D : SRA_D_ENC, SRA_D_DESC, Requires<[HasMSA]>;
2478
2479def SRAI_B : SRAI_B_ENC, SRAI_B_DESC, Requires<[HasMSA]>;
2480def SRAI_H : SRAI_H_ENC, SRAI_H_DESC, Requires<[HasMSA]>;
2481def SRAI_W : SRAI_W_ENC, SRAI_W_DESC, Requires<[HasMSA]>;
2482def SRAI_D : SRAI_D_ENC, SRAI_D_DESC, Requires<[HasMSA]>;
2483
2484def SRL_B : SRL_B_ENC, SRL_B_DESC, Requires<[HasMSA]>;
2485def SRL_H : SRL_H_ENC, SRL_H_DESC, Requires<[HasMSA]>;
2486def SRL_W : SRL_W_ENC, SRL_W_DESC, Requires<[HasMSA]>;
2487def SRL_D : SRL_D_ENC, SRL_D_DESC, Requires<[HasMSA]>;
2488
2489def SRLI_B : SRLI_B_ENC, SRLI_B_DESC, Requires<[HasMSA]>;
2490def SRLI_H : SRLI_H_ENC, SRLI_H_DESC, Requires<[HasMSA]>;
2491def SRLI_W : SRLI_W_ENC, SRLI_W_DESC, Requires<[HasMSA]>;
2492def SRLI_D : SRLI_D_ENC, SRLI_D_DESC, Requires<[HasMSA]>;
2493
Jack Carter3a2c2d42013-08-13 20:54:07 +00002494def ST_B: ST_B_ENC, ST_B_DESC, Requires<[HasMSA]>;
2495def ST_H: ST_H_ENC, ST_H_DESC, Requires<[HasMSA]>;
2496def ST_W: ST_W_ENC, ST_W_DESC, Requires<[HasMSA]>;
2497def ST_D: ST_D_ENC, ST_D_DESC, Requires<[HasMSA]>;
2498
Jack Carterd12e8372013-08-15 14:22:07 +00002499def SUBS_S_B : SUBS_S_B_ENC, SUBS_S_B_DESC, Requires<[HasMSA]>;
2500def SUBS_S_H : SUBS_S_H_ENC, SUBS_S_H_DESC, Requires<[HasMSA]>;
2501def SUBS_S_W : SUBS_S_W_ENC, SUBS_S_W_DESC, Requires<[HasMSA]>;
2502def SUBS_S_D : SUBS_S_D_ENC, SUBS_S_D_DESC, Requires<[HasMSA]>;
2503
2504def SUBS_U_B : SUBS_U_B_ENC, SUBS_U_B_DESC, Requires<[HasMSA]>;
2505def SUBS_U_H : SUBS_U_H_ENC, SUBS_U_H_DESC, Requires<[HasMSA]>;
2506def SUBS_U_W : SUBS_U_W_ENC, SUBS_U_W_DESC, Requires<[HasMSA]>;
2507def SUBS_U_D : SUBS_U_D_ENC, SUBS_U_D_DESC, Requires<[HasMSA]>;
2508
2509def SUBSUS_U_B : SUBSUS_U_B_ENC, SUBSUS_U_B_DESC, Requires<[HasMSA]>;
2510def SUBSUS_U_H : SUBSUS_U_H_ENC, SUBSUS_U_H_DESC, Requires<[HasMSA]>;
2511def SUBSUS_U_W : SUBSUS_U_W_ENC, SUBSUS_U_W_DESC, Requires<[HasMSA]>;
2512def SUBSUS_U_D : SUBSUS_U_D_ENC, SUBSUS_U_D_DESC, Requires<[HasMSA]>;
2513
2514def SUBSUU_S_B : SUBSUU_S_B_ENC, SUBSUU_S_B_DESC, Requires<[HasMSA]>;
2515def SUBSUU_S_H : SUBSUU_S_H_ENC, SUBSUU_S_H_DESC, Requires<[HasMSA]>;
2516def SUBSUU_S_W : SUBSUU_S_W_ENC, SUBSUU_S_W_DESC, Requires<[HasMSA]>;
2517def SUBSUU_S_D : SUBSUU_S_D_ENC, SUBSUU_S_D_DESC, Requires<[HasMSA]>;
2518
2519def SUBV_B : SUBV_B_ENC, SUBV_B_DESC, Requires<[HasMSA]>;
2520def SUBV_H : SUBV_H_ENC, SUBV_H_DESC, Requires<[HasMSA]>;
2521def SUBV_W : SUBV_W_ENC, SUBV_W_DESC, Requires<[HasMSA]>;
2522def SUBV_D : SUBV_D_ENC, SUBV_D_DESC, Requires<[HasMSA]>;
2523
2524def SUBVI_B : SUBVI_B_ENC, SUBVI_B_DESC, Requires<[HasMSA]>;
2525def SUBVI_H : SUBVI_H_ENC, SUBVI_H_DESC, Requires<[HasMSA]>;
2526def SUBVI_W : SUBVI_W_ENC, SUBVI_W_DESC, Requires<[HasMSA]>;
2527def SUBVI_D : SUBVI_D_ENC, SUBVI_D_DESC, Requires<[HasMSA]>;
2528
2529def VSHF_B : VSHF_B_ENC, VSHF_B_DESC, Requires<[HasMSA]>;
2530def VSHF_H : VSHF_H_ENC, VSHF_H_DESC, Requires<[HasMSA]>;
2531def VSHF_W : VSHF_W_ENC, VSHF_W_DESC, Requires<[HasMSA]>;
2532def VSHF_D : VSHF_D_ENC, VSHF_D_DESC, Requires<[HasMSA]>;
2533
Daniel Sanders869bdad2013-08-20 08:38:21 +00002534def XOR_V : XOR_V_ENC, XOR_V_DESC, Requires<[HasMSA]>;
2535
Jack Carterd12e8372013-08-15 14:22:07 +00002536def XORI_B : XORI_B_ENC, XORI_B_DESC, Requires<[HasMSA]>;
2537
Jack Carter3a2c2d42013-08-13 20:54:07 +00002538// Patterns.
Daniel Sanders70835f62013-08-27 09:40:30 +00002539class MSAPat<dag pattern, dag result, list<Predicate> pred = [HasMSA]> :
2540 Pat<pattern, result>, Requires<pred>;
Jack Carter3a2c2d42013-08-13 20:54:07 +00002541
Jack Carterb95ee692013-08-15 13:45:36 +00002542def LD_FH : MSAPat<(v8f16 (load addr:$addr)),
2543 (LD_H addr:$addr)>;
Jack Carterbabdcc82013-08-15 12:24:57 +00002544def LD_FW : MSAPat<(v4f32 (load addr:$addr)),
2545 (LD_W addr:$addr)>;
2546def LD_FD : MSAPat<(v2f64 (load addr:$addr)),
2547 (LD_D addr:$addr)>;
2548
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002549def ST_FH : MSAPat<(store (v8f16 MSA128H:$ws), addr:$addr),
2550 (ST_H MSA128H:$ws, addr:$addr)>;
2551def ST_FW : MSAPat<(store (v4f32 MSA128W:$ws), addr:$addr),
2552 (ST_W MSA128W:$ws, addr:$addr)>;
2553def ST_FD : MSAPat<(store (v2f64 MSA128D:$ws), addr:$addr),
2554 (ST_D MSA128D:$ws, addr:$addr)>;
Daniel Sanders70835f62013-08-27 09:40:30 +00002555
2556class MSABitconvertPat<ValueType DstVT, ValueType SrcVT,
2557 RegisterClass DstRC, list<Predicate> preds = [HasMSA]> :
2558 MSAPat<(DstVT (bitconvert SrcVT:$src)),
2559 (COPY_TO_REGCLASS SrcVT:$src, DstRC), preds>;
2560
2561// These are endian-independant because the element size doesnt change
2562def : MSABitconvertPat<v8i16, v8f16, MSA128H>;
2563def : MSABitconvertPat<v4i32, v4f32, MSA128W>;
2564def : MSABitconvertPat<v2i64, v2f64, MSA128D>;
2565def : MSABitconvertPat<v8f16, v8i16, MSA128H>;
2566def : MSABitconvertPat<v4f32, v4i32, MSA128W>;
2567def : MSABitconvertPat<v2f64, v2i64, MSA128D>;
2568
2569// Little endian bitcasts are always no-ops
2570def : MSABitconvertPat<v16i8, v8i16, MSA128B, [HasMSA, IsLE]>;
2571def : MSABitconvertPat<v16i8, v4i32, MSA128B, [HasMSA, IsLE]>;
2572def : MSABitconvertPat<v16i8, v2i64, MSA128B, [HasMSA, IsLE]>;
2573def : MSABitconvertPat<v16i8, v8f16, MSA128B, [HasMSA, IsLE]>;
2574def : MSABitconvertPat<v16i8, v4f32, MSA128B, [HasMSA, IsLE]>;
2575def : MSABitconvertPat<v16i8, v2f64, MSA128B, [HasMSA, IsLE]>;
2576
2577def : MSABitconvertPat<v8i16, v16i8, MSA128H, [HasMSA, IsLE]>;
2578def : MSABitconvertPat<v8i16, v4i32, MSA128H, [HasMSA, IsLE]>;
2579def : MSABitconvertPat<v8i16, v2i64, MSA128H, [HasMSA, IsLE]>;
2580def : MSABitconvertPat<v8i16, v4f32, MSA128H, [HasMSA, IsLE]>;
2581def : MSABitconvertPat<v8i16, v2f64, MSA128H, [HasMSA, IsLE]>;
2582
2583def : MSABitconvertPat<v4i32, v16i8, MSA128W, [HasMSA, IsLE]>;
2584def : MSABitconvertPat<v4i32, v8i16, MSA128W, [HasMSA, IsLE]>;
2585def : MSABitconvertPat<v4i32, v2i64, MSA128W, [HasMSA, IsLE]>;
2586def : MSABitconvertPat<v4i32, v8f16, MSA128W, [HasMSA, IsLE]>;
2587def : MSABitconvertPat<v4i32, v2f64, MSA128W, [HasMSA, IsLE]>;
2588
2589def : MSABitconvertPat<v2i64, v16i8, MSA128D, [HasMSA, IsLE]>;
2590def : MSABitconvertPat<v2i64, v8i16, MSA128D, [HasMSA, IsLE]>;
2591def : MSABitconvertPat<v2i64, v4i32, MSA128D, [HasMSA, IsLE]>;
2592def : MSABitconvertPat<v2i64, v8f16, MSA128D, [HasMSA, IsLE]>;
2593def : MSABitconvertPat<v2i64, v4f32, MSA128D, [HasMSA, IsLE]>;
2594
2595def : MSABitconvertPat<v4f32, v16i8, MSA128W, [HasMSA, IsLE]>;
2596def : MSABitconvertPat<v4f32, v8i16, MSA128W, [HasMSA, IsLE]>;
2597def : MSABitconvertPat<v4f32, v2i64, MSA128W, [HasMSA, IsLE]>;
2598def : MSABitconvertPat<v4f32, v8f16, MSA128W, [HasMSA, IsLE]>;
2599def : MSABitconvertPat<v4f32, v2f64, MSA128W, [HasMSA, IsLE]>;
2600
2601def : MSABitconvertPat<v2f64, v16i8, MSA128D, [HasMSA, IsLE]>;
2602def : MSABitconvertPat<v2f64, v8i16, MSA128D, [HasMSA, IsLE]>;
2603def : MSABitconvertPat<v2f64, v4i32, MSA128D, [HasMSA, IsLE]>;
2604def : MSABitconvertPat<v2f64, v8f16, MSA128D, [HasMSA, IsLE]>;
2605def : MSABitconvertPat<v2f64, v4f32, MSA128D, [HasMSA, IsLE]>;
2606
2607// Big endian bitcasts expand to shuffle instructions.
2608// This is because bitcast is defined to be a store/load sequence and the
2609// vector store/load instructions are mixed-endian with respect to the vector
2610// as a whole (little endian with respect to element order, but big endian
2611// elements).
2612
2613class MSABitconvertReverseQuartersPat<ValueType DstVT, ValueType SrcVT,
2614 RegisterClass DstRC, MSAInst Insn,
2615 RegisterClass ViaRC> :
2616 MSAPat<(DstVT (bitconvert SrcVT:$src)),
2617 (COPY_TO_REGCLASS (Insn (COPY_TO_REGCLASS SrcVT:$src, ViaRC), 27),
2618 DstRC),
2619 [HasMSA, IsBE]>;
2620
2621class MSABitconvertReverseHalvesPat<ValueType DstVT, ValueType SrcVT,
2622 RegisterClass DstRC, MSAInst Insn,
2623 RegisterClass ViaRC> :
2624 MSAPat<(DstVT (bitconvert SrcVT:$src)),
2625 (COPY_TO_REGCLASS (Insn (COPY_TO_REGCLASS SrcVT:$src, ViaRC), 177),
2626 DstRC),
2627 [HasMSA, IsBE]>;
2628
2629class MSABitconvertReverseBInHPat<ValueType DstVT, ValueType SrcVT,
2630 RegisterClass DstRC> :
2631 MSABitconvertReverseHalvesPat<DstVT, SrcVT, DstRC, SHF_B, MSA128B>;
2632
2633class MSABitconvertReverseBInWPat<ValueType DstVT, ValueType SrcVT,
2634 RegisterClass DstRC> :
2635 MSABitconvertReverseQuartersPat<DstVT, SrcVT, DstRC, SHF_B, MSA128B>;
2636
2637class MSABitconvertReverseBInDPat<ValueType DstVT, ValueType SrcVT,
2638 RegisterClass DstRC> :
2639 MSAPat<(DstVT (bitconvert SrcVT:$src)),
2640 (COPY_TO_REGCLASS
2641 (SHF_W
2642 (COPY_TO_REGCLASS
2643 (SHF_B (COPY_TO_REGCLASS SrcVT:$src, MSA128B), 27),
2644 MSA128W), 177),
2645 DstRC),
2646 [HasMSA, IsBE]>;
2647
2648class MSABitconvertReverseHInWPat<ValueType DstVT, ValueType SrcVT,
2649 RegisterClass DstRC> :
2650 MSABitconvertReverseHalvesPat<DstVT, SrcVT, DstRC, SHF_H, MSA128H>;
2651
2652class MSABitconvertReverseHInDPat<ValueType DstVT, ValueType SrcVT,
2653 RegisterClass DstRC> :
2654 MSABitconvertReverseQuartersPat<DstVT, SrcVT, DstRC, SHF_H, MSA128H>;
2655
2656class MSABitconvertReverseWInDPat<ValueType DstVT, ValueType SrcVT,
2657 RegisterClass DstRC> :
2658 MSABitconvertReverseHalvesPat<DstVT, SrcVT, DstRC, SHF_W, MSA128W>;
2659
2660def : MSABitconvertReverseBInHPat<v8i16, v16i8, MSA128H>;
2661def : MSABitconvertReverseBInHPat<v8f16, v16i8, MSA128H>;
2662def : MSABitconvertReverseBInWPat<v4i32, v16i8, MSA128W>;
2663def : MSABitconvertReverseBInWPat<v4f32, v16i8, MSA128W>;
2664def : MSABitconvertReverseBInDPat<v2i64, v16i8, MSA128D>;
2665def : MSABitconvertReverseBInDPat<v2f64, v16i8, MSA128D>;
2666
2667def : MSABitconvertReverseBInHPat<v16i8, v8i16, MSA128B>;
2668def : MSABitconvertReverseHInWPat<v4i32, v8i16, MSA128W>;
2669def : MSABitconvertReverseHInWPat<v4f32, v8i16, MSA128W>;
2670def : MSABitconvertReverseHInDPat<v2i64, v8i16, MSA128D>;
2671def : MSABitconvertReverseHInDPat<v2f64, v8i16, MSA128D>;
2672
2673def : MSABitconvertReverseBInHPat<v16i8, v8f16, MSA128B>;
2674def : MSABitconvertReverseHInWPat<v4i32, v8f16, MSA128W>;
2675def : MSABitconvertReverseHInWPat<v4f32, v8f16, MSA128W>;
2676def : MSABitconvertReverseHInDPat<v2i64, v8f16, MSA128D>;
2677def : MSABitconvertReverseHInDPat<v2f64, v8f16, MSA128D>;
2678
2679def : MSABitconvertReverseBInWPat<v16i8, v4i32, MSA128B>;
2680def : MSABitconvertReverseHInWPat<v8i16, v4i32, MSA128H>;
2681def : MSABitconvertReverseHInWPat<v8f16, v4i32, MSA128H>;
2682def : MSABitconvertReverseWInDPat<v2i64, v4i32, MSA128D>;
2683def : MSABitconvertReverseWInDPat<v2f64, v4i32, MSA128D>;
2684
2685def : MSABitconvertReverseBInWPat<v16i8, v4f32, MSA128B>;
2686def : MSABitconvertReverseHInWPat<v8i16, v4f32, MSA128H>;
2687def : MSABitconvertReverseHInWPat<v8f16, v4f32, MSA128H>;
2688def : MSABitconvertReverseWInDPat<v2i64, v4f32, MSA128D>;
2689def : MSABitconvertReverseWInDPat<v2f64, v4f32, MSA128D>;
2690
2691def : MSABitconvertReverseBInDPat<v16i8, v2i64, MSA128B>;
2692def : MSABitconvertReverseHInDPat<v8i16, v2i64, MSA128H>;
2693def : MSABitconvertReverseHInDPat<v8f16, v2i64, MSA128H>;
2694def : MSABitconvertReverseWInDPat<v4i32, v2i64, MSA128W>;
2695def : MSABitconvertReverseWInDPat<v4f32, v2i64, MSA128W>;
2696
2697def : MSABitconvertReverseBInDPat<v16i8, v2f64, MSA128B>;
2698def : MSABitconvertReverseHInDPat<v8i16, v2f64, MSA128H>;
2699def : MSABitconvertReverseHInDPat<v8f16, v2f64, MSA128H>;
2700def : MSABitconvertReverseWInDPat<v4i32, v2f64, MSA128W>;
2701def : MSABitconvertReverseWInDPat<v4f32, v2f64, MSA128W>;