blob: e53b29ec65794b24e85139afd0f16104ae33e148 [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
Daniel Sandersf9aa1d12013-08-28 10:26:24 +0000174class CFCMSA_ENC : MSA_ELM_FMT<0b0001111110, 0b011001>;
175
Jack Carterbabdcc82013-08-15 12:24:57 +0000176class CLE_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b001111>;
177class CLE_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b001111>;
178class CLE_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b001111>;
179class CLE_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b001111>;
180
181class CLE_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b001111>;
182class CLE_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b001111>;
183class CLE_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b001111>;
184class CLE_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b001111>;
185
186class CLEI_S_B_ENC : MSA_I5_FMT<0b100, 0b00, 0b000111>;
187class CLEI_S_H_ENC : MSA_I5_FMT<0b100, 0b01, 0b000111>;
188class CLEI_S_W_ENC : MSA_I5_FMT<0b100, 0b10, 0b000111>;
189class CLEI_S_D_ENC : MSA_I5_FMT<0b100, 0b11, 0b000111>;
190
191class CLEI_U_B_ENC : MSA_I5_FMT<0b101, 0b00, 0b000111>;
192class CLEI_U_H_ENC : MSA_I5_FMT<0b101, 0b01, 0b000111>;
193class CLEI_U_W_ENC : MSA_I5_FMT<0b101, 0b10, 0b000111>;
194class CLEI_U_D_ENC : MSA_I5_FMT<0b101, 0b11, 0b000111>;
195
196class CLT_S_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b001111>;
197class CLT_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b001111>;
198class CLT_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b001111>;
199class CLT_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b001111>;
200
201class CLT_U_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b001111>;
202class CLT_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b001111>;
203class CLT_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b001111>;
204class CLT_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b001111>;
205
206class CLTI_S_B_ENC : MSA_I5_FMT<0b010, 0b00, 0b000111>;
207class CLTI_S_H_ENC : MSA_I5_FMT<0b010, 0b01, 0b000111>;
208class CLTI_S_W_ENC : MSA_I5_FMT<0b010, 0b10, 0b000111>;
209class CLTI_S_D_ENC : MSA_I5_FMT<0b010, 0b11, 0b000111>;
210
211class CLTI_U_B_ENC : MSA_I5_FMT<0b011, 0b00, 0b000111>;
212class CLTI_U_H_ENC : MSA_I5_FMT<0b011, 0b01, 0b000111>;
213class CLTI_U_W_ENC : MSA_I5_FMT<0b011, 0b10, 0b000111>;
214class CLTI_U_D_ENC : MSA_I5_FMT<0b011, 0b11, 0b000111>;
215
216class COPY_S_B_ENC : MSA_ELM_B_FMT<0b0010, 0b011001>;
217class COPY_S_H_ENC : MSA_ELM_H_FMT<0b0010, 0b011001>;
218class COPY_S_W_ENC : MSA_ELM_W_FMT<0b0010, 0b011001>;
219
220class COPY_U_B_ENC : MSA_ELM_B_FMT<0b0011, 0b011001>;
221class COPY_U_H_ENC : MSA_ELM_H_FMT<0b0011, 0b011001>;
222class COPY_U_W_ENC : MSA_ELM_W_FMT<0b0011, 0b011001>;
223
Daniel Sandersf9aa1d12013-08-28 10:26:24 +0000224class CTCMSA_ENC : MSA_ELM_FMT<0b0000111110, 0b011001>;
225
Jack Carterbabdcc82013-08-15 12:24:57 +0000226class DIV_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b010010>;
227class DIV_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010010>;
228class DIV_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010010>;
229class DIV_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010010>;
230
231class DIV_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b010010>;
232class DIV_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010010>;
233class DIV_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010010>;
234class DIV_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010010>;
235
236class DOTP_S_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010011>;
237class DOTP_S_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010011>;
238class DOTP_S_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010011>;
239class DOTP_S_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010011>;
240
241class DOTP_U_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010011>;
242class DOTP_U_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010011>;
243class DOTP_U_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010011>;
244class DOTP_U_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010011>;
245
246class DPADD_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010011>;
247class DPADD_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010011>;
248class DPADD_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010011>;
249
250class DPADD_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b010011>;
251class DPADD_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b010011>;
252class DPADD_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b010011>;
253
254class DPSUB_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010011>;
255class DPSUB_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010011>;
256class DPSUB_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010011>;
257
258class DPSUB_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010011>;
259class DPSUB_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010011>;
260class DPSUB_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010011>;
261
Jack Carterb95ee692013-08-15 13:45:36 +0000262class FADD_W_ENC : MSA_3RF_FMT<0b0000, 0b0, 0b011011>;
263class FADD_D_ENC : MSA_3RF_FMT<0b0000, 0b1, 0b011011>;
264
Daniel Sanders0dc0dd42013-08-28 10:12:09 +0000265class FCAF_W_ENC : MSA_3RF_FMT<0b0000, 0b0, 0b011010>;
266class FCAF_D_ENC : MSA_3RF_FMT<0b0000, 0b1, 0b011010>;
267
Jack Carterb95ee692013-08-15 13:45:36 +0000268class FCEQ_W_ENC : MSA_3RF_FMT<0b0010, 0b0, 0b011010>;
269class FCEQ_D_ENC : MSA_3RF_FMT<0b0010, 0b1, 0b011010>;
270
Jack Carterb95ee692013-08-15 13:45:36 +0000271class FCLASS_W_ENC : MSA_2RF_FMT<0b110010000, 0b0, 0b011110>;
272class FCLASS_D_ENC : MSA_2RF_FMT<0b110010000, 0b1, 0b011110>;
273
274class FCLE_W_ENC : MSA_3RF_FMT<0b0110, 0b0, 0b011010>;
275class FCLE_D_ENC : MSA_3RF_FMT<0b0110, 0b1, 0b011010>;
276
277class FCLT_W_ENC : MSA_3RF_FMT<0b0100, 0b0, 0b011010>;
278class FCLT_D_ENC : MSA_3RF_FMT<0b0100, 0b1, 0b011010>;
279
Daniel Sanders0dc0dd42013-08-28 10:12:09 +0000280class FCNE_W_ENC : MSA_3RF_FMT<0b0011, 0b0, 0b011100>;
281class FCNE_D_ENC : MSA_3RF_FMT<0b0011, 0b1, 0b011100>;
282
283class FCOR_W_ENC : MSA_3RF_FMT<0b0001, 0b0, 0b011100>;
284class FCOR_D_ENC : MSA_3RF_FMT<0b0001, 0b1, 0b011100>;
285
286class FCUEQ_W_ENC : MSA_3RF_FMT<0b0011, 0b0, 0b011010>;
287class FCUEQ_D_ENC : MSA_3RF_FMT<0b0011, 0b1, 0b011010>;
288
289class FCULE_W_ENC : MSA_3RF_FMT<0b0111, 0b0, 0b011010>;
290class FCULE_D_ENC : MSA_3RF_FMT<0b0111, 0b1, 0b011010>;
291
292class FCULT_W_ENC : MSA_3RF_FMT<0b0101, 0b0, 0b011010>;
293class FCULT_D_ENC : MSA_3RF_FMT<0b0101, 0b1, 0b011010>;
Jack Carterb95ee692013-08-15 13:45:36 +0000294
295class FCUN_W_ENC : MSA_3RF_FMT<0b0001, 0b0, 0b011010>;
296class FCUN_D_ENC : MSA_3RF_FMT<0b0001, 0b1, 0b011010>;
297
Daniel Sanders0dc0dd42013-08-28 10:12:09 +0000298class FCUNE_W_ENC : MSA_3RF_FMT<0b0010, 0b0, 0b011100>;
299class FCUNE_D_ENC : MSA_3RF_FMT<0b0010, 0b1, 0b011100>;
300
Jack Carterb95ee692013-08-15 13:45:36 +0000301class FDIV_W_ENC : MSA_3RF_FMT<0b0011, 0b0, 0b011011>;
302class FDIV_D_ENC : MSA_3RF_FMT<0b0011, 0b1, 0b011011>;
303
304class FEXDO_H_ENC : MSA_3RF_FMT<0b1000, 0b0, 0b011011>;
305class FEXDO_W_ENC : MSA_3RF_FMT<0b1000, 0b1, 0b011011>;
306
307class FEXP2_W_ENC : MSA_3RF_FMT<0b0111, 0b0, 0b011011>;
308class FEXP2_D_ENC : MSA_3RF_FMT<0b0111, 0b1, 0b011011>;
309
310class FEXUPL_W_ENC : MSA_2RF_FMT<0b110011000, 0b0, 0b011110>;
311class FEXUPL_D_ENC : MSA_2RF_FMT<0b110011000, 0b1, 0b011110>;
312
313class FEXUPR_W_ENC : MSA_2RF_FMT<0b110011001, 0b0, 0b011110>;
314class FEXUPR_D_ENC : MSA_2RF_FMT<0b110011001, 0b1, 0b011110>;
315
316class FFINT_S_W_ENC : MSA_2RF_FMT<0b110011110, 0b0, 0b011110>;
317class FFINT_S_D_ENC : MSA_2RF_FMT<0b110011110, 0b1, 0b011110>;
318
319class FFINT_U_W_ENC : MSA_2RF_FMT<0b110011111, 0b0, 0b011110>;
320class FFINT_U_D_ENC : MSA_2RF_FMT<0b110011111, 0b1, 0b011110>;
321
322class FFQL_W_ENC : MSA_2RF_FMT<0b110011010, 0b0, 0b011110>;
323class FFQL_D_ENC : MSA_2RF_FMT<0b110011010, 0b1, 0b011110>;
324
325class FFQR_W_ENC : MSA_2RF_FMT<0b110011011, 0b0, 0b011110>;
326class FFQR_D_ENC : MSA_2RF_FMT<0b110011011, 0b1, 0b011110>;
327
328class FILL_B_ENC : MSA_2R_FMT<0b11000000, 0b00, 0b011110>;
329class FILL_H_ENC : MSA_2R_FMT<0b11000000, 0b01, 0b011110>;
330class FILL_W_ENC : MSA_2R_FMT<0b11000000, 0b10, 0b011110>;
331
332class FLOG2_W_ENC : MSA_2RF_FMT<0b110010111, 0b0, 0b011110>;
333class FLOG2_D_ENC : MSA_2RF_FMT<0b110010111, 0b1, 0b011110>;
334
335class FMADD_W_ENC : MSA_3RF_FMT<0b0100, 0b0, 0b011011>;
336class FMADD_D_ENC : MSA_3RF_FMT<0b0100, 0b1, 0b011011>;
337
338class FMAX_W_ENC : MSA_3RF_FMT<0b1110, 0b0, 0b011011>;
339class FMAX_D_ENC : MSA_3RF_FMT<0b1110, 0b1, 0b011011>;
340
341class FMAX_A_W_ENC : MSA_3RF_FMT<0b1111, 0b0, 0b011011>;
342class FMAX_A_D_ENC : MSA_3RF_FMT<0b1111, 0b1, 0b011011>;
343
344class FMIN_W_ENC : MSA_3RF_FMT<0b1100, 0b0, 0b011011>;
345class FMIN_D_ENC : MSA_3RF_FMT<0b1100, 0b1, 0b011011>;
346
347class FMIN_A_W_ENC : MSA_3RF_FMT<0b1101, 0b0, 0b011011>;
348class FMIN_A_D_ENC : MSA_3RF_FMT<0b1101, 0b1, 0b011011>;
349
350class FMSUB_W_ENC : MSA_3RF_FMT<0b0101, 0b0, 0b011011>;
351class FMSUB_D_ENC : MSA_3RF_FMT<0b0101, 0b1, 0b011011>;
352
353class FMUL_W_ENC : MSA_3RF_FMT<0b0010, 0b0, 0b011011>;
354class FMUL_D_ENC : MSA_3RF_FMT<0b0010, 0b1, 0b011011>;
355
356class FRINT_W_ENC : MSA_2RF_FMT<0b110010110, 0b0, 0b011110>;
357class FRINT_D_ENC : MSA_2RF_FMT<0b110010110, 0b1, 0b011110>;
358
359class FRCP_W_ENC : MSA_2RF_FMT<0b110010101, 0b0, 0b011110>;
360class FRCP_D_ENC : MSA_2RF_FMT<0b110010101, 0b1, 0b011110>;
361
362class FRSQRT_W_ENC : MSA_2RF_FMT<0b110010100, 0b0, 0b011110>;
363class FRSQRT_D_ENC : MSA_2RF_FMT<0b110010100, 0b1, 0b011110>;
364
Daniel Sanders0dc0dd42013-08-28 10:12:09 +0000365class FSAF_W_ENC : MSA_3RF_FMT<0b1000, 0b0, 0b011010>;
366class FSAF_D_ENC : MSA_3RF_FMT<0b1000, 0b1, 0b011010>;
367
Jack Carterb95ee692013-08-15 13:45:36 +0000368class FSEQ_W_ENC : MSA_3RF_FMT<0b1010, 0b0, 0b011010>;
369class FSEQ_D_ENC : MSA_3RF_FMT<0b1010, 0b1, 0b011010>;
370
Jack Carterb95ee692013-08-15 13:45:36 +0000371class FSLE_W_ENC : MSA_3RF_FMT<0b1110, 0b0, 0b011010>;
372class FSLE_D_ENC : MSA_3RF_FMT<0b1110, 0b1, 0b011010>;
373
374class FSLT_W_ENC : MSA_3RF_FMT<0b1100, 0b0, 0b011010>;
375class FSLT_D_ENC : MSA_3RF_FMT<0b1100, 0b1, 0b011010>;
376
Daniel Sanders0dc0dd42013-08-28 10:12:09 +0000377class FSNE_W_ENC : MSA_3RF_FMT<0b1011, 0b0, 0b011100>;
378class FSNE_D_ENC : MSA_3RF_FMT<0b1011, 0b1, 0b011100>;
379
380class FSOR_W_ENC : MSA_3RF_FMT<0b1001, 0b0, 0b011100>;
381class FSOR_D_ENC : MSA_3RF_FMT<0b1001, 0b1, 0b011100>;
Jack Carterb95ee692013-08-15 13:45:36 +0000382
383class FSQRT_W_ENC : MSA_2RF_FMT<0b110010011, 0b0, 0b011110>;
384class FSQRT_D_ENC : MSA_2RF_FMT<0b110010011, 0b1, 0b011110>;
385
386class FSUB_W_ENC : MSA_3RF_FMT<0b0001, 0b0, 0b011011>;
387class FSUB_D_ENC : MSA_3RF_FMT<0b0001, 0b1, 0b011011>;
388
Daniel Sanders0dc0dd42013-08-28 10:12:09 +0000389class FSUEQ_W_ENC : MSA_3RF_FMT<0b1011, 0b0, 0b011010>;
390class FSUEQ_D_ENC : MSA_3RF_FMT<0b1011, 0b1, 0b011010>;
391
392class FSULE_W_ENC : MSA_3RF_FMT<0b1111, 0b0, 0b011010>;
393class FSULE_D_ENC : MSA_3RF_FMT<0b1111, 0b1, 0b011010>;
394
395class FSULT_W_ENC : MSA_3RF_FMT<0b1101, 0b0, 0b011010>;
396class FSULT_D_ENC : MSA_3RF_FMT<0b1101, 0b1, 0b011010>;
397
398class FSUN_W_ENC : MSA_3RF_FMT<0b1001, 0b0, 0b011010>;
399class FSUN_D_ENC : MSA_3RF_FMT<0b1001, 0b1, 0b011010>;
400
401class FSUNE_W_ENC : MSA_3RF_FMT<0b1010, 0b0, 0b011100>;
402class FSUNE_D_ENC : MSA_3RF_FMT<0b1010, 0b1, 0b011100>;
403
404class FTRUNC_S_W_ENC : MSA_2RF_FMT<0b110100000, 0b0, 0b011110>;
405class FTRUNC_S_D_ENC : MSA_2RF_FMT<0b110100000, 0b1, 0b011110>;
406
407class FTRUNC_U_W_ENC : MSA_2RF_FMT<0b110100001, 0b0, 0b011110>;
408class FTRUNC_U_D_ENC : MSA_2RF_FMT<0b110100001, 0b1, 0b011110>;
409
Jack Carterb95ee692013-08-15 13:45:36 +0000410class FTINT_S_W_ENC : MSA_2RF_FMT<0b110011100, 0b0, 0b011110>;
411class FTINT_S_D_ENC : MSA_2RF_FMT<0b110011100, 0b1, 0b011110>;
412
413class FTINT_U_W_ENC : MSA_2RF_FMT<0b110011101, 0b0, 0b011110>;
414class FTINT_U_D_ENC : MSA_2RF_FMT<0b110011101, 0b1, 0b011110>;
415
416class FTQ_H_ENC : MSA_3RF_FMT<0b1010, 0b0, 0b011011>;
417class FTQ_W_ENC : MSA_3RF_FMT<0b1010, 0b1, 0b011011>;
418
Daniel Sanders0dc0dd42013-08-28 10:12:09 +0000419class HADD_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010101>;
420class HADD_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010101>;
421class HADD_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010101>;
422
423class HADD_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010101>;
424class HADD_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010101>;
425class HADD_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010101>;
426
427class HSUB_S_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b010101>;
428class HSUB_S_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b010101>;
429class HSUB_S_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b010101>;
430
431class HSUB_U_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b010101>;
432class HSUB_U_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b010101>;
433class HSUB_U_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b010101>;
434
Jack Carterbabdcc82013-08-15 12:24:57 +0000435class ILVEV_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b010100>;
436class ILVEV_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b010100>;
437class ILVEV_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b010100>;
438class ILVEV_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b010100>;
439
440class ILVL_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b010100>;
441class ILVL_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010100>;
442class ILVL_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010100>;
443class ILVL_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010100>;
444
445class ILVOD_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b010100>;
446class ILVOD_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b010100>;
447class ILVOD_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b010100>;
448class ILVOD_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b010100>;
449
450class ILVR_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b010100>;
451class ILVR_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010100>;
452class ILVR_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010100>;
453class ILVR_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010100>;
454
455class INSERT_B_ENC : MSA_ELM_B_FMT<0b0100, 0b011001>;
456class INSERT_H_ENC : MSA_ELM_H_FMT<0b0100, 0b011001>;
457class INSERT_W_ENC : MSA_ELM_W_FMT<0b0100, 0b011001>;
458
Daniel Sandersf2a0f1d2013-08-20 09:22:54 +0000459class INSVE_B_ENC : MSA_ELM_B_FMT<0b0101, 0b011001>;
460class INSVE_H_ENC : MSA_ELM_H_FMT<0b0101, 0b011001>;
461class INSVE_W_ENC : MSA_ELM_W_FMT<0b0101, 0b011001>;
462class INSVE_D_ENC : MSA_ELM_D_FMT<0b0101, 0b011001>;
463
Jack Carter3a2c2d42013-08-13 20:54:07 +0000464class LD_B_ENC : MSA_I5_FMT<0b110, 0b00, 0b000111>;
465class LD_H_ENC : MSA_I5_FMT<0b110, 0b01, 0b000111>;
466class LD_W_ENC : MSA_I5_FMT<0b110, 0b10, 0b000111>;
467class LD_D_ENC : MSA_I5_FMT<0b110, 0b11, 0b000111>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000468
469class LDI_B_ENC : MSA_I10_FMT<0b010, 0b00, 0b001100>;
470class LDI_H_ENC : MSA_I10_FMT<0b010, 0b01, 0b001100>;
471class LDI_W_ENC : MSA_I10_FMT<0b010, 0b10, 0b001100>;
472class LDI_D_ENC : MSA_I10_FMT<0b010, 0b11, 0b001100>;
473
Daniel Sanders0dc0dd42013-08-28 10:12:09 +0000474class MADD_Q_H_ENC : MSA_3RF_FMT<0b0101, 0b0, 0b011100>;
475class MADD_Q_W_ENC : MSA_3RF_FMT<0b0101, 0b1, 0b011100>;
Jack Carterd12e8372013-08-15 14:22:07 +0000476
Daniel Sanders0dc0dd42013-08-28 10:12:09 +0000477class MADDR_Q_H_ENC : MSA_3RF_FMT<0b1101, 0b0, 0b011100>;
478class MADDR_Q_W_ENC : MSA_3RF_FMT<0b1101, 0b1, 0b011100>;
Jack Carterd12e8372013-08-15 14:22:07 +0000479
480class MADDV_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010010>;
481class MADDV_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010010>;
482class MADDV_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010010>;
483class MADDV_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010010>;
484
485class MAX_A_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b001110>;
486class MAX_A_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b001110>;
487class MAX_A_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b001110>;
488class MAX_A_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b001110>;
489
490class MAX_S_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b001110>;
491class MAX_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b001110>;
492class MAX_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b001110>;
493class MAX_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b001110>;
494
495class MAX_U_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b001110>;
496class MAX_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b001110>;
497class MAX_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b001110>;
498class MAX_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b001110>;
499
500class MAXI_S_B_ENC : MSA_I5_FMT<0b010, 0b00, 0b000110>;
501class MAXI_S_H_ENC : MSA_I5_FMT<0b010, 0b01, 0b000110>;
502class MAXI_S_W_ENC : MSA_I5_FMT<0b010, 0b10, 0b000110>;
503class MAXI_S_D_ENC : MSA_I5_FMT<0b010, 0b11, 0b000110>;
504
505class MAXI_U_B_ENC : MSA_I5_FMT<0b011, 0b00, 0b000110>;
506class MAXI_U_H_ENC : MSA_I5_FMT<0b011, 0b01, 0b000110>;
507class MAXI_U_W_ENC : MSA_I5_FMT<0b011, 0b10, 0b000110>;
508class MAXI_U_D_ENC : MSA_I5_FMT<0b011, 0b11, 0b000110>;
509
510class MIN_A_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b001110>;
511class MIN_A_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b001110>;
512class MIN_A_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b001110>;
513class MIN_A_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b001110>;
514
515class MIN_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b001110>;
516class MIN_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b001110>;
517class MIN_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b001110>;
518class MIN_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b001110>;
519
520class MIN_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b001110>;
521class MIN_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b001110>;
522class MIN_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b001110>;
523class MIN_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b001110>;
524
525class MINI_S_B_ENC : MSA_I5_FMT<0b100, 0b00, 0b000110>;
526class MINI_S_H_ENC : MSA_I5_FMT<0b100, 0b01, 0b000110>;
527class MINI_S_W_ENC : MSA_I5_FMT<0b100, 0b10, 0b000110>;
528class MINI_S_D_ENC : MSA_I5_FMT<0b100, 0b11, 0b000110>;
529
530class MINI_U_B_ENC : MSA_I5_FMT<0b101, 0b00, 0b000110>;
531class MINI_U_H_ENC : MSA_I5_FMT<0b101, 0b01, 0b000110>;
532class MINI_U_W_ENC : MSA_I5_FMT<0b101, 0b10, 0b000110>;
533class MINI_U_D_ENC : MSA_I5_FMT<0b101, 0b11, 0b000110>;
534
535class MOD_S_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b010010>;
536class MOD_S_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b010010>;
537class MOD_S_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b010010>;
538class MOD_S_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b010010>;
539
540class MOD_U_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b010010>;
541class MOD_U_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b010010>;
542class MOD_U_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b010010>;
543class MOD_U_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b010010>;
544
Daniel Sanders0dc0dd42013-08-28 10:12:09 +0000545class MSUB_Q_H_ENC : MSA_3RF_FMT<0b0110, 0b0, 0b011100>;
546class MSUB_Q_W_ENC : MSA_3RF_FMT<0b0110, 0b1, 0b011100>;
Jack Carterd12e8372013-08-15 14:22:07 +0000547
Daniel Sanders0dc0dd42013-08-28 10:12:09 +0000548class MSUBR_Q_H_ENC : MSA_3RF_FMT<0b1110, 0b0, 0b011100>;
549class MSUBR_Q_W_ENC : MSA_3RF_FMT<0b1110, 0b1, 0b011100>;
Jack Carterd12e8372013-08-15 14:22:07 +0000550
551class MSUBV_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b010010>;
552class MSUBV_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010010>;
553class MSUBV_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010010>;
554class MSUBV_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010010>;
555
556class MUL_Q_H_ENC : MSA_3RF_FMT<0b0000, 0b0, 0b011100>;
557class MUL_Q_W_ENC : MSA_3RF_FMT<0b0000, 0b1, 0b011100>;
558
Daniel Sanders0dc0dd42013-08-28 10:12:09 +0000559class MULR_Q_H_ENC : MSA_3RF_FMT<0b1100, 0b0, 0b011100>;
560class MULR_Q_W_ENC : MSA_3RF_FMT<0b1100, 0b1, 0b011100>;
Jack Carterd12e8372013-08-15 14:22:07 +0000561
562class MULV_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010010>;
563class MULV_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010010>;
564class MULV_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010010>;
565class MULV_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010010>;
566
567class NLOC_B_ENC : MSA_2R_FMT<0b11000010, 0b00, 0b011110>;
568class NLOC_H_ENC : MSA_2R_FMT<0b11000010, 0b01, 0b011110>;
569class NLOC_W_ENC : MSA_2R_FMT<0b11000010, 0b10, 0b011110>;
570class NLOC_D_ENC : MSA_2R_FMT<0b11000010, 0b11, 0b011110>;
571
572class NLZC_B_ENC : MSA_2R_FMT<0b11000011, 0b00, 0b011110>;
573class NLZC_H_ENC : MSA_2R_FMT<0b11000011, 0b01, 0b011110>;
574class NLZC_W_ENC : MSA_2R_FMT<0b11000011, 0b10, 0b011110>;
575class NLZC_D_ENC : MSA_2R_FMT<0b11000011, 0b11, 0b011110>;
576
Daniel Sanders869bdad2013-08-20 08:38:21 +0000577class NOR_V_ENC : MSA_VEC_FMT<0b00010, 0b011110>;
578
Jack Carterd12e8372013-08-15 14:22:07 +0000579class NORI_B_ENC : MSA_I8_FMT<0b10, 0b000000>;
580
Daniel Sanders869bdad2013-08-20 08:38:21 +0000581class OR_V_ENC : MSA_VEC_FMT<0b00001, 0b011110>;
582
Jack Carterd12e8372013-08-15 14:22:07 +0000583class ORI_B_ENC : MSA_I8_FMT<0b01, 0b000000>;
584
585class PCKEV_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b010100>;
586class PCKEV_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010100>;
587class PCKEV_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010100>;
588class PCKEV_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010100>;
589
590class PCKOD_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b010100>;
591class PCKOD_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b010100>;
592class PCKOD_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b010100>;
593class PCKOD_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b010100>;
594
595class PCNT_B_ENC : MSA_2R_FMT<0b11000001, 0b00, 0b011110>;
596class PCNT_H_ENC : MSA_2R_FMT<0b11000001, 0b01, 0b011110>;
597class PCNT_W_ENC : MSA_2R_FMT<0b11000001, 0b10, 0b011110>;
598class PCNT_D_ENC : MSA_2R_FMT<0b11000001, 0b11, 0b011110>;
599
600class SAT_S_B_ENC : MSA_BIT_B_FMT<0b000, 0b001010>;
601class SAT_S_H_ENC : MSA_BIT_H_FMT<0b000, 0b001010>;
602class SAT_S_W_ENC : MSA_BIT_W_FMT<0b000, 0b001010>;
603class SAT_S_D_ENC : MSA_BIT_D_FMT<0b000, 0b001010>;
604
605class SAT_U_B_ENC : MSA_BIT_B_FMT<0b001, 0b001010>;
606class SAT_U_H_ENC : MSA_BIT_H_FMT<0b001, 0b001010>;
607class SAT_U_W_ENC : MSA_BIT_W_FMT<0b001, 0b001010>;
608class SAT_U_D_ENC : MSA_BIT_D_FMT<0b001, 0b001010>;
609
610class SHF_B_ENC : MSA_I8_FMT<0b00, 0b000010>;
611class SHF_H_ENC : MSA_I8_FMT<0b01, 0b000010>;
612class SHF_W_ENC : MSA_I8_FMT<0b10, 0b000010>;
613
614class SLD_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010100>;
615class SLD_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010100>;
616class SLD_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010100>;
617class SLD_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010100>;
618
619class SLDI_B_ENC : MSA_ELM_B_FMT<0b0000, 0b011001>;
620class SLDI_H_ENC : MSA_ELM_H_FMT<0b0000, 0b011001>;
621class SLDI_W_ENC : MSA_ELM_W_FMT<0b0000, 0b011001>;
622class SLDI_D_ENC : MSA_ELM_D_FMT<0b0000, 0b011001>;
623
624class SLL_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b001101>;
625class SLL_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b001101>;
626class SLL_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b001101>;
627class SLL_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b001101>;
628
629class SLLI_B_ENC : MSA_BIT_B_FMT<0b000, 0b001001>;
630class SLLI_H_ENC : MSA_BIT_H_FMT<0b000, 0b001001>;
631class SLLI_W_ENC : MSA_BIT_W_FMT<0b000, 0b001001>;
632class SLLI_D_ENC : MSA_BIT_D_FMT<0b000, 0b001001>;
633
634class SPLAT_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010100>;
635class SPLAT_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010100>;
636class SPLAT_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010100>;
637class SPLAT_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010100>;
638
639class SPLATI_B_ENC : MSA_ELM_B_FMT<0b0001, 0b011001>;
640class SPLATI_H_ENC : MSA_ELM_H_FMT<0b0001, 0b011001>;
641class SPLATI_W_ENC : MSA_ELM_W_FMT<0b0001, 0b011001>;
642class SPLATI_D_ENC : MSA_ELM_D_FMT<0b0001, 0b011001>;
643
644class SRA_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b001101>;
645class SRA_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b001101>;
646class SRA_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b001101>;
647class SRA_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b001101>;
648
649class SRAI_B_ENC : MSA_BIT_B_FMT<0b001, 0b001001>;
650class SRAI_H_ENC : MSA_BIT_H_FMT<0b001, 0b001001>;
651class SRAI_W_ENC : MSA_BIT_W_FMT<0b001, 0b001001>;
652class SRAI_D_ENC : MSA_BIT_D_FMT<0b001, 0b001001>;
653
Daniel Sanders0dc0dd42013-08-28 10:12:09 +0000654class SRAR_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010101>;
655class SRAR_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010101>;
656class SRAR_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010101>;
657class SRAR_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010101>;
658
659class SRARI_B_ENC : MSA_BIT_B_FMT<0b010, 0b001010>;
660class SRARI_H_ENC : MSA_BIT_H_FMT<0b010, 0b001010>;
661class SRARI_W_ENC : MSA_BIT_W_FMT<0b010, 0b001010>;
662class SRARI_D_ENC : MSA_BIT_D_FMT<0b010, 0b001010>;
663
Jack Carterd12e8372013-08-15 14:22:07 +0000664class SRL_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b001101>;
665class SRL_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b001101>;
666class SRL_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b001101>;
667class SRL_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b001101>;
668
669class SRLI_B_ENC : MSA_BIT_B_FMT<0b010, 0b001001>;
670class SRLI_H_ENC : MSA_BIT_H_FMT<0b010, 0b001001>;
671class SRLI_W_ENC : MSA_BIT_W_FMT<0b010, 0b001001>;
672class SRLI_D_ENC : MSA_BIT_D_FMT<0b010, 0b001001>;
673
Daniel Sanders0dc0dd42013-08-28 10:12:09 +0000674class SRLR_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b010101>;
675class SRLR_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010101>;
676class SRLR_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010101>;
677class SRLR_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010101>;
678
679class SRLRI_B_ENC : MSA_BIT_B_FMT<0b011, 0b001010>;
680class SRLRI_H_ENC : MSA_BIT_H_FMT<0b011, 0b001010>;
681class SRLRI_W_ENC : MSA_BIT_W_FMT<0b011, 0b001010>;
682class SRLRI_D_ENC : MSA_BIT_D_FMT<0b011, 0b001010>;
683
Jack Carter3a2c2d42013-08-13 20:54:07 +0000684class ST_B_ENC : MSA_I5_FMT<0b111, 0b00, 0b000111>;
685class ST_H_ENC : MSA_I5_FMT<0b111, 0b01, 0b000111>;
686class ST_W_ENC : MSA_I5_FMT<0b111, 0b10, 0b000111>;
687class ST_D_ENC : MSA_I5_FMT<0b111, 0b11, 0b000111>;
688
Jack Carterd12e8372013-08-15 14:22:07 +0000689class SUBS_S_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010001>;
690class SUBS_S_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010001>;
691class SUBS_S_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010001>;
692class SUBS_S_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010001>;
693
694class SUBS_U_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010001>;
695class SUBS_U_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010001>;
696class SUBS_U_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010001>;
697class SUBS_U_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010001>;
698
699class SUBSUS_U_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b010001>;
700class SUBSUS_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b010001>;
701class SUBSUS_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b010001>;
702class SUBSUS_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b010001>;
703
704class SUBSUU_S_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b010001>;
705class SUBSUU_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010001>;
706class SUBSUU_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010001>;
707class SUBSUU_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010001>;
708
709class SUBV_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b001110>;
710class SUBV_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b001110>;
711class SUBV_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b001110>;
712class SUBV_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b001110>;
713
714class SUBVI_B_ENC : MSA_I5_FMT<0b001, 0b00, 0b000110>;
715class SUBVI_H_ENC : MSA_I5_FMT<0b001, 0b01, 0b000110>;
716class SUBVI_W_ENC : MSA_I5_FMT<0b001, 0b10, 0b000110>;
717class SUBVI_D_ENC : MSA_I5_FMT<0b001, 0b11, 0b000110>;
718
719class VSHF_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010101>;
720class VSHF_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010101>;
721class VSHF_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010101>;
722class VSHF_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010101>;
723
Daniel Sanders869bdad2013-08-20 08:38:21 +0000724class XOR_V_ENC : MSA_VEC_FMT<0b00011, 0b011110>;
725
Jack Carterd12e8372013-08-15 14:22:07 +0000726class XORI_B_ENC : MSA_I8_FMT<0b11, 0b000000>;
727
Jack Carter3a2c2d42013-08-13 20:54:07 +0000728// Instruction desc.
Jack Carterbabdcc82013-08-15 12:24:57 +0000729class MSA_BIT_D_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
730 InstrItinClass itin, RegisterClass RCWD,
731 RegisterClass RCWS> {
732 dag OutOperandList = (outs RCWD:$wd);
733 dag InOperandList = (ins RCWS:$ws, uimm6:$u6);
734 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u6");
735 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt6:$u6))];
736 InstrItinClass Itinerary = itin;
737}
738
739class MSA_BIT_W_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
740 InstrItinClass itin, RegisterClass RCWD,
741 RegisterClass RCWS> {
742 dag OutOperandList = (outs RCWD:$wd);
743 dag InOperandList = (ins RCWS:$ws, uimm5:$u5);
744 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u5");
745 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt5:$u5))];
746 InstrItinClass Itinerary = itin;
747}
748
749class MSA_BIT_H_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
750 InstrItinClass itin, RegisterClass RCWD,
751 RegisterClass RCWS> {
752 dag OutOperandList = (outs RCWD:$wd);
753 dag InOperandList = (ins RCWS:$ws, uimm4:$u4);
754 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u4");
755 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt4:$u4))];
756 InstrItinClass Itinerary = itin;
757}
758
759class MSA_BIT_B_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
760 InstrItinClass itin, RegisterClass RCWD,
761 RegisterClass RCWS> {
762 dag OutOperandList = (outs RCWD:$wd);
763 dag InOperandList = (ins RCWS:$ws, uimm3:$u3);
764 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u3");
765 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt3:$u3))];
766 InstrItinClass Itinerary = itin;
767}
768
769class MSA_COPY_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
770 InstrItinClass itin, RegisterClass RCD,
771 RegisterClass RCWS> {
772 dag OutOperandList = (outs RCD:$rd);
773 dag InOperandList = (ins RCWS:$ws, uimm6:$n);
774 string AsmString = !strconcat(instr_asm, "\t$rd, $ws[$n]");
775 list<dag> Pattern = [(set RCD:$rd, (OpNode RCWS:$ws, immZExt6:$n))];
776 InstrItinClass Itinerary = itin;
777}
778
779class MSA_I5_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
780 InstrItinClass itin, RegisterClass RCWD,
781 RegisterClass RCWS> {
782 dag OutOperandList = (outs RCWD:$wd);
783 dag InOperandList = (ins RCWS:$ws, uimm5:$u5);
784 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u5");
785 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt5:$u5))];
786 InstrItinClass Itinerary = itin;
787}
788
789class MSA_SI5_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
790 InstrItinClass itin, RegisterClass RCWD,
791 RegisterClass RCWS> {
792 dag OutOperandList = (outs RCWD:$wd);
793 dag InOperandList = (ins RCWS:$ws, simm5:$s5);
794 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $s5");
795 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immSExt5:$s5))];
796 InstrItinClass Itinerary = itin;
797}
798
799class MSA_I8_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
800 InstrItinClass itin, RegisterClass RCWD,
801 RegisterClass RCWS> {
802 dag OutOperandList = (outs RCWD:$wd);
803 dag InOperandList = (ins RCWS:$ws, uimm8:$u8);
804 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u8");
805 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt8:$u8))];
806 InstrItinClass Itinerary = itin;
807}
808
809class MSA_I10_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
810 InstrItinClass itin, RegisterClass RCWD> {
811 dag OutOperandList = (outs RCWD:$wd);
812 dag InOperandList = (ins simm10:$i10);
813 string AsmString = !strconcat(instr_asm, "\t$wd, $i10");
814 list<dag> Pattern = [(set RCWD:$wd, (OpNode immSExt10:$i10))];
815 InstrItinClass Itinerary = itin;
816}
817
818class MSA_2R_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
819 InstrItinClass itin, RegisterClass RCWD,
820 RegisterClass RCWS> {
821 dag OutOperandList = (outs RCWD:$wd);
822 dag InOperandList = (ins RCWS:$ws);
823 string AsmString = !strconcat(instr_asm, "\t$wd, $ws");
824 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws))];
825 InstrItinClass Itinerary = itin;
826}
827
828class MSA_2RF_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
829 InstrItinClass itin, RegisterClass RCWD,
830 RegisterClass RCWS> :
831 MSA_2R_DESC_BASE<instr_asm, OpNode, itin, RCWD, RCWS>;
832
833
834class MSA_3R_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
835 InstrItinClass itin, RegisterClass RCWD,
836 RegisterClass RCWS, RegisterClass RCWT = RCWS> {
837 dag OutOperandList = (outs RCWD:$wd);
838 dag InOperandList = (ins RCWS:$ws, RCWT:$wt);
839 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $wt");
840 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, RCWT:$wt))];
841 InstrItinClass Itinerary = itin;
842}
843
844class MSA_3R_4R_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
845 InstrItinClass itin, RegisterClass RCWD,
846 RegisterClass RCWS, RegisterClass RCWT = RCWS> {
847 dag OutOperandList = (outs RCWD:$wd);
848 dag InOperandList = (ins RCWD:$wd_in, RCWS:$ws, RCWT:$wt);
849 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $wt");
850 list<dag> Pattern = [(set RCWD:$wd,
851 (OpNode RCWD:$wd_in, RCWS:$ws, RCWT:$wt))];
852 InstrItinClass Itinerary = itin;
853 string Constraints = "$wd = $wd_in";
854}
855
856class MSA_3RF_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
857 InstrItinClass itin, RegisterClass RCWD,
858 RegisterClass RCWS, RegisterClass RCWT = RCWS> :
859 MSA_3R_DESC_BASE<instr_asm, OpNode, itin, RCWD, RCWS, RCWT>;
860
861class MSA_3RF_4RF_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
862 InstrItinClass itin, RegisterClass RCWD,
863 RegisterClass RCWS, RegisterClass RCWT = RCWS> :
864 MSA_3R_4R_DESC_BASE<instr_asm, OpNode, itin, RCWD, RCWS, RCWT>;
865
866class MSA_INSERT_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
867 InstrItinClass itin, RegisterClass RCD,
868 RegisterClass RCWS> {
869 dag OutOperandList = (outs RCD:$wd);
870 dag InOperandList = (ins RCD:$wd_in, uimm6:$n, RCWS:$rs);
871 string AsmString = !strconcat(instr_asm, "\t$wd[$n], $rs");
872 list<dag> Pattern = [(set RCD:$wd, (OpNode RCD:$wd_in,
873 immZExt6:$n,
874 RCWS:$rs))];
875 InstrItinClass Itinerary = itin;
876 string Constraints = "$wd = $wd_in";
877}
878
Daniel Sandersf2a0f1d2013-08-20 09:22:54 +0000879class MSA_INSVE_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
880 InstrItinClass itin, RegisterClass RCD,
881 RegisterClass RCWS> {
882 dag OutOperandList = (outs RCD:$wd);
883 dag InOperandList = (ins RCD:$wd_in, uimm6:$n, RCWS:$ws);
884 string AsmString = !strconcat(instr_asm, "\t$wd[$n], $ws[0]");
885 list<dag> Pattern = [(set RCD:$wd, (OpNode RCD:$wd_in,
886 immZExt6:$n,
887 RCWS:$ws))];
888 InstrItinClass Itinerary = itin;
889 string Constraints = "$wd = $wd_in";
890}
891
Daniel Sanders869bdad2013-08-20 08:38:21 +0000892class MSA_VEC_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
893 InstrItinClass itin, RegisterClass RCWD,
894 RegisterClass RCWS, RegisterClass RCWT = RCWS> {
895 dag OutOperandList = (outs RCWD:$wd);
896 dag InOperandList = (ins RCWS:$ws, RCWT:$wt);
897 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $wt");
898 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, RCWT:$wt))];
899 InstrItinClass Itinerary = itin;
900}
901
Jack Carterbabdcc82013-08-15 12:24:57 +0000902class ADD_A_B_DESC : MSA_3R_DESC_BASE<"add_a.b", int_mips_add_a_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000903 MSA128B, MSA128B>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000904class ADD_A_H_DESC : MSA_3R_DESC_BASE<"add_a.h", int_mips_add_a_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000905 MSA128H, MSA128H>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000906class ADD_A_W_DESC : MSA_3R_DESC_BASE<"add_a.w", int_mips_add_a_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000907 MSA128W, MSA128W>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000908class ADD_A_D_DESC : MSA_3R_DESC_BASE<"add_a.d", int_mips_add_a_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000909 MSA128D, MSA128D>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000910
911class ADDS_A_B_DESC : MSA_3R_DESC_BASE<"adds_a.b", int_mips_adds_a_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000912 NoItinerary, MSA128B, MSA128B>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000913 IsCommutable;
914class ADDS_A_H_DESC : MSA_3R_DESC_BASE<"adds_a.h", int_mips_adds_a_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000915 NoItinerary, MSA128H, MSA128H>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000916 IsCommutable;
917class ADDS_A_W_DESC : MSA_3R_DESC_BASE<"adds_a.w", int_mips_adds_a_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000918 NoItinerary, MSA128W, MSA128W>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000919 IsCommutable;
920class ADDS_A_D_DESC : MSA_3R_DESC_BASE<"adds_a.d", int_mips_adds_a_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000921 NoItinerary, MSA128D, MSA128D>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000922 IsCommutable;
923
924class ADDS_S_B_DESC : MSA_3R_DESC_BASE<"adds_s.b", int_mips_adds_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000925 NoItinerary, MSA128B, MSA128B>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000926 IsCommutable;
927class ADDS_S_H_DESC : MSA_3R_DESC_BASE<"adds_s.h", int_mips_adds_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000928 NoItinerary, MSA128H, MSA128H>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000929 IsCommutable;
930class ADDS_S_W_DESC : MSA_3R_DESC_BASE<"adds_s.w", int_mips_adds_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000931 NoItinerary, MSA128W, MSA128W>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000932 IsCommutable;
933class ADDS_S_D_DESC : MSA_3R_DESC_BASE<"adds_s.d", int_mips_adds_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000934 NoItinerary, MSA128D, MSA128D>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000935 IsCommutable;
936
937class ADDS_U_B_DESC : MSA_3R_DESC_BASE<"adds_u.b", int_mips_adds_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000938 NoItinerary, MSA128B, MSA128B>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000939 IsCommutable;
940class ADDS_U_H_DESC : MSA_3R_DESC_BASE<"adds_u.h", int_mips_adds_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000941 NoItinerary, MSA128H, MSA128H>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000942 IsCommutable;
943class ADDS_U_W_DESC : MSA_3R_DESC_BASE<"adds_u.w", int_mips_adds_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000944 NoItinerary, MSA128W, MSA128W>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000945 IsCommutable;
946class ADDS_U_D_DESC : MSA_3R_DESC_BASE<"adds_u.d", int_mips_adds_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000947 NoItinerary, MSA128D, MSA128D>,
Jack Carterbabdcc82013-08-15 12:24:57 +0000948 IsCommutable;
949
950class ADDV_B_DESC : MSA_3R_DESC_BASE<"addv.b", int_mips_addv_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000951 MSA128B, MSA128B>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000952class ADDV_H_DESC : MSA_3R_DESC_BASE<"addv.h", int_mips_addv_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000953 MSA128H, MSA128H>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000954class ADDV_W_DESC : MSA_3R_DESC_BASE<"addv.w", int_mips_addv_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000955 MSA128W, MSA128W>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000956class ADDV_D_DESC : MSA_3R_DESC_BASE<"addv.d", int_mips_addv_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000957 MSA128D, MSA128D>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000958
959class ADDVI_B_DESC : MSA_I5_DESC_BASE<"addvi.b", int_mips_addvi_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000960 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000961class ADDVI_H_DESC : MSA_I5_DESC_BASE<"addvi.h", int_mips_addvi_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000962 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000963class ADDVI_W_DESC : MSA_I5_DESC_BASE<"addvi.w", int_mips_addvi_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000964 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000965class ADDVI_D_DESC : MSA_I5_DESC_BASE<"addvi.d", int_mips_addvi_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000966 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000967
Daniel Sanders869bdad2013-08-20 08:38:21 +0000968class AND_V_DESC : MSA_VEC_DESC_BASE<"and.v", int_mips_and_v, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000969 MSA128B, MSA128B>;
Daniel Sanders869bdad2013-08-20 08:38:21 +0000970
Jack Carterbabdcc82013-08-15 12:24:57 +0000971class ANDI_B_DESC : MSA_I8_DESC_BASE<"andi.b", int_mips_andi_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000972 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000973
974class ASUB_S_B_DESC : MSA_3R_DESC_BASE<"asub_s.b", int_mips_asub_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000975 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000976class ASUB_S_H_DESC : MSA_3R_DESC_BASE<"asub_s.h", int_mips_asub_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000977 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000978class ASUB_S_W_DESC : MSA_3R_DESC_BASE<"asub_s.w", int_mips_asub_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000979 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000980class ASUB_S_D_DESC : MSA_3R_DESC_BASE<"asub_s.d", int_mips_asub_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000981 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000982
983class ASUB_U_B_DESC : MSA_3R_DESC_BASE<"asub_u.b", int_mips_asub_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000984 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000985class ASUB_U_H_DESC : MSA_3R_DESC_BASE<"asub_u.h", int_mips_asub_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000986 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000987class ASUB_U_W_DESC : MSA_3R_DESC_BASE<"asub_u.w", int_mips_asub_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000988 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000989class ASUB_U_D_DESC : MSA_3R_DESC_BASE<"asub_u.d", int_mips_asub_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000990 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +0000991
992class AVE_S_B_DESC : MSA_3R_DESC_BASE<"ave_s.b", int_mips_ave_s_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000993 MSA128B, MSA128B>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000994class AVE_S_H_DESC : MSA_3R_DESC_BASE<"ave_s.h", int_mips_ave_s_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000995 MSA128H, MSA128H>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000996class AVE_S_W_DESC : MSA_3R_DESC_BASE<"ave_s.w", int_mips_ave_s_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000997 MSA128W, MSA128W>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +0000998class AVE_S_D_DESC : MSA_3R_DESC_BASE<"ave_s.d", int_mips_ave_s_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +0000999 MSA128D, MSA128D>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +00001000
1001class AVE_U_B_DESC : MSA_3R_DESC_BASE<"ave_u.b", int_mips_ave_u_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001002 MSA128B, MSA128B>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +00001003class AVE_U_H_DESC : MSA_3R_DESC_BASE<"ave_u.h", int_mips_ave_u_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001004 MSA128H, MSA128H>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +00001005class AVE_U_W_DESC : MSA_3R_DESC_BASE<"ave_u.w", int_mips_ave_u_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001006 MSA128W, MSA128W>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +00001007class AVE_U_D_DESC : MSA_3R_DESC_BASE<"ave_u.d", int_mips_ave_u_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001008 MSA128D, MSA128D>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +00001009
1010class AVER_S_B_DESC : MSA_3R_DESC_BASE<"aver_s.b", int_mips_aver_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001011 NoItinerary, MSA128B, MSA128B>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001012 IsCommutable;
1013class AVER_S_H_DESC : MSA_3R_DESC_BASE<"aver_s.h", int_mips_aver_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001014 NoItinerary, MSA128H, MSA128H>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001015 IsCommutable;
1016class AVER_S_W_DESC : MSA_3R_DESC_BASE<"aver_s.w", int_mips_aver_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001017 NoItinerary, MSA128W, MSA128W>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001018 IsCommutable;
1019class AVER_S_D_DESC : MSA_3R_DESC_BASE<"aver_s.d", int_mips_aver_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001020 NoItinerary, MSA128D, MSA128D>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001021 IsCommutable;
1022
1023class AVER_U_B_DESC : MSA_3R_DESC_BASE<"aver_u.b", int_mips_aver_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001024 NoItinerary, MSA128B, MSA128B>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001025 IsCommutable;
1026class AVER_U_H_DESC : MSA_3R_DESC_BASE<"aver_u.h", int_mips_aver_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001027 NoItinerary, MSA128H, MSA128H>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001028 IsCommutable;
1029class AVER_U_W_DESC : MSA_3R_DESC_BASE<"aver_u.w", int_mips_aver_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001030 NoItinerary, MSA128W, MSA128W>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001031 IsCommutable;
1032class AVER_U_D_DESC : MSA_3R_DESC_BASE<"aver_u.d", int_mips_aver_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001033 NoItinerary, MSA128D, MSA128D>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001034 IsCommutable;
1035
1036class BCLR_B_DESC : MSA_3R_DESC_BASE<"bclr.b", int_mips_bclr_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001037 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001038class BCLR_H_DESC : MSA_3R_DESC_BASE<"bclr.h", int_mips_bclr_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001039 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001040class BCLR_W_DESC : MSA_3R_DESC_BASE<"bclr.w", int_mips_bclr_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001041 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001042class BCLR_D_DESC : MSA_3R_DESC_BASE<"bclr.d", int_mips_bclr_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001043 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001044
1045class BCLRI_B_DESC : MSA_BIT_B_DESC_BASE<"bclri.b", int_mips_bclri_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001046 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001047class BCLRI_H_DESC : MSA_BIT_H_DESC_BASE<"bclri.h", int_mips_bclri_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001048 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001049class BCLRI_W_DESC : MSA_BIT_W_DESC_BASE<"bclri.w", int_mips_bclri_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001050 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001051class BCLRI_D_DESC : MSA_BIT_D_DESC_BASE<"bclri.d", int_mips_bclri_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001052 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001053
1054class BINSL_B_DESC : MSA_3R_DESC_BASE<"binsl.b", int_mips_binsl_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001055 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001056class BINSL_H_DESC : MSA_3R_DESC_BASE<"binsl.h", int_mips_binsl_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001057 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001058class BINSL_W_DESC : MSA_3R_DESC_BASE<"binsl.w", int_mips_binsl_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001059 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001060class BINSL_D_DESC : MSA_3R_DESC_BASE<"binsl.d", int_mips_binsl_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001061 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001062
1063class BINSLI_B_DESC : MSA_BIT_B_DESC_BASE<"binsli.b", int_mips_binsli_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001064 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001065class BINSLI_H_DESC : MSA_BIT_H_DESC_BASE<"binsli.h", int_mips_binsli_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001066 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001067class BINSLI_W_DESC : MSA_BIT_W_DESC_BASE<"binsli.w", int_mips_binsli_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001068 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001069class BINSLI_D_DESC : MSA_BIT_D_DESC_BASE<"binsli.d", int_mips_binsli_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001070 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001071
1072class BINSR_B_DESC : MSA_3R_DESC_BASE<"binsr.b", int_mips_binsr_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001073 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001074class BINSR_H_DESC : MSA_3R_DESC_BASE<"binsr.h", int_mips_binsr_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001075 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001076class BINSR_W_DESC : MSA_3R_DESC_BASE<"binsr.w", int_mips_binsr_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001077 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001078class BINSR_D_DESC : MSA_3R_DESC_BASE<"binsr.d", int_mips_binsr_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001079 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001080
1081class BINSRI_B_DESC : MSA_BIT_B_DESC_BASE<"binsri.b", int_mips_binsri_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001082 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001083class BINSRI_H_DESC : MSA_BIT_H_DESC_BASE<"binsri.h", int_mips_binsri_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001084 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001085class BINSRI_W_DESC : MSA_BIT_W_DESC_BASE<"binsri.w", int_mips_binsri_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001086 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001087class BINSRI_D_DESC : MSA_BIT_D_DESC_BASE<"binsri.d", int_mips_binsri_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001088 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001089
Daniel Sanders869bdad2013-08-20 08:38:21 +00001090class BMNZ_V_DESC : MSA_VEC_DESC_BASE<"bmnz.v", int_mips_bmnz_v, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001091 MSA128B, MSA128B>;
Daniel Sanders869bdad2013-08-20 08:38:21 +00001092
Jack Carterbabdcc82013-08-15 12:24:57 +00001093class BMNZI_B_DESC : MSA_I8_DESC_BASE<"bmnzi.b", int_mips_bmnzi_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001094 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001095
Daniel Sanders869bdad2013-08-20 08:38:21 +00001096class BMZ_V_DESC : MSA_VEC_DESC_BASE<"bmz.v", int_mips_bmz_v, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001097 MSA128B, MSA128B>;
Daniel Sanders869bdad2013-08-20 08:38:21 +00001098
Jack Carterbabdcc82013-08-15 12:24:57 +00001099class BMZI_B_DESC : MSA_I8_DESC_BASE<"bmzi.b", int_mips_bmzi_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001100 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001101
1102class BNEG_B_DESC : MSA_3R_DESC_BASE<"bneg.b", int_mips_bneg_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001103 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001104class BNEG_H_DESC : MSA_3R_DESC_BASE<"bneg.h", int_mips_bneg_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001105 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001106class BNEG_W_DESC : MSA_3R_DESC_BASE<"bneg.w", int_mips_bneg_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001107 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001108class BNEG_D_DESC : MSA_3R_DESC_BASE<"bneg.d", int_mips_bneg_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001109 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001110
1111class BNEGI_B_DESC : MSA_BIT_B_DESC_BASE<"bnegi.b", int_mips_bnegi_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001112 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001113class BNEGI_H_DESC : MSA_BIT_H_DESC_BASE<"bnegi.h", int_mips_bnegi_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001114 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001115class BNEGI_W_DESC : MSA_BIT_W_DESC_BASE<"bnegi.w", int_mips_bnegi_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001116 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001117class BNEGI_D_DESC : MSA_BIT_D_DESC_BASE<"bnegi.d", int_mips_bnegi_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001118 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001119
Daniel Sanders869bdad2013-08-20 08:38:21 +00001120class BSEL_V_DESC : MSA_VEC_DESC_BASE<"bsel.v", int_mips_bsel_v, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001121 MSA128B, MSA128B>;
Daniel Sanders869bdad2013-08-20 08:38:21 +00001122
Jack Carterbabdcc82013-08-15 12:24:57 +00001123class BSELI_B_DESC : MSA_I8_DESC_BASE<"bseli.b", int_mips_bseli_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001124 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001125
1126class BSET_B_DESC : MSA_3R_DESC_BASE<"bset.b", int_mips_bset_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001127 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001128class BSET_H_DESC : MSA_3R_DESC_BASE<"bset.h", int_mips_bset_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001129 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001130class BSET_W_DESC : MSA_3R_DESC_BASE<"bset.w", int_mips_bset_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001131 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001132class BSET_D_DESC : MSA_3R_DESC_BASE<"bset.d", int_mips_bset_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001133 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001134
1135class BSETI_B_DESC : MSA_BIT_B_DESC_BASE<"bseti.b", int_mips_bseti_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001136 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001137class BSETI_H_DESC : MSA_BIT_H_DESC_BASE<"bseti.h", int_mips_bseti_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001138 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001139class BSETI_W_DESC : MSA_BIT_W_DESC_BASE<"bseti.w", int_mips_bseti_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001140 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001141class BSETI_D_DESC : MSA_BIT_D_DESC_BASE<"bseti.d", int_mips_bseti_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001142 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001143
1144class CEQ_B_DESC : MSA_3R_DESC_BASE<"ceq.b", int_mips_ceq_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001145 MSA128B, MSA128B>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +00001146class CEQ_H_DESC : MSA_3R_DESC_BASE<"ceq.h", int_mips_ceq_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001147 MSA128H, MSA128H>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +00001148class CEQ_W_DESC : MSA_3R_DESC_BASE<"ceq.w", int_mips_ceq_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001149 MSA128W, MSA128W>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +00001150class CEQ_D_DESC : MSA_3R_DESC_BASE<"ceq.d", int_mips_ceq_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001151 MSA128D, MSA128D>, IsCommutable;
Jack Carterbabdcc82013-08-15 12:24:57 +00001152
1153class CEQI_B_DESC : MSA_SI5_DESC_BASE<"ceqi.b", int_mips_ceqi_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001154 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001155class CEQI_H_DESC : MSA_SI5_DESC_BASE<"ceqi.h", int_mips_ceqi_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001156 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001157class CEQI_W_DESC : MSA_SI5_DESC_BASE<"ceqi.w", int_mips_ceqi_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001158 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001159class CEQI_D_DESC : MSA_SI5_DESC_BASE<"ceqi.d", int_mips_ceqi_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001160 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001161
Daniel Sandersf9aa1d12013-08-28 10:26:24 +00001162class CFCMSA_DESC {
1163 dag OutOperandList = (outs GPR32:$rd);
1164 dag InOperandList = (ins MSACtrl:$cs);
1165 string AsmString = "cfcmsa\t$rd, $cs";
1166 InstrItinClass Itinerary = NoItinerary;
1167 bit hasSideEffects = 1;
1168}
1169
Jack Carterbabdcc82013-08-15 12:24:57 +00001170class CLE_S_B_DESC : MSA_3R_DESC_BASE<"cle_s.b", int_mips_cle_s_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001171 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001172class CLE_S_H_DESC : MSA_3R_DESC_BASE<"cle_s.h", int_mips_cle_s_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001173 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001174class CLE_S_W_DESC : MSA_3R_DESC_BASE<"cle_s.w", int_mips_cle_s_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001175 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001176class CLE_S_D_DESC : MSA_3R_DESC_BASE<"cle_s.d", int_mips_cle_s_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001177 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001178
1179class CLE_U_B_DESC : MSA_3R_DESC_BASE<"cle_u.b", int_mips_cle_u_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001180 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001181class CLE_U_H_DESC : MSA_3R_DESC_BASE<"cle_u.h", int_mips_cle_u_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001182 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001183class CLE_U_W_DESC : MSA_3R_DESC_BASE<"cle_u.w", int_mips_cle_u_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001184 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001185class CLE_U_D_DESC : MSA_3R_DESC_BASE<"cle_u.d", int_mips_cle_u_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001186 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001187
1188class CLEI_S_B_DESC : MSA_SI5_DESC_BASE<"clei_s.b", int_mips_clei_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001189 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001190class CLEI_S_H_DESC : MSA_SI5_DESC_BASE<"clei_s.h", int_mips_clei_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001191 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001192class CLEI_S_W_DESC : MSA_SI5_DESC_BASE<"clei_s.w", int_mips_clei_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001193 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001194class CLEI_S_D_DESC : MSA_SI5_DESC_BASE<"clei_s.d", int_mips_clei_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001195 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001196
1197class CLEI_U_B_DESC : MSA_SI5_DESC_BASE<"clei_u.b", int_mips_clei_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001198 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001199class CLEI_U_H_DESC : MSA_SI5_DESC_BASE<"clei_u.h", int_mips_clei_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001200 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001201class CLEI_U_W_DESC : MSA_SI5_DESC_BASE<"clei_u.w", int_mips_clei_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001202 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001203class CLEI_U_D_DESC : MSA_SI5_DESC_BASE<"clei_u.d", int_mips_clei_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001204 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001205
1206class CLT_S_B_DESC : MSA_3R_DESC_BASE<"clt_s.b", int_mips_clt_s_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001207 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001208class CLT_S_H_DESC : MSA_3R_DESC_BASE<"clt_s.h", int_mips_clt_s_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001209 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001210class CLT_S_W_DESC : MSA_3R_DESC_BASE<"clt_s.w", int_mips_clt_s_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001211 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001212class CLT_S_D_DESC : MSA_3R_DESC_BASE<"clt_s.d", int_mips_clt_s_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001213 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001214
1215class CLT_U_B_DESC : MSA_3R_DESC_BASE<"clt_u.b", int_mips_clt_u_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001216 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001217class CLT_U_H_DESC : MSA_3R_DESC_BASE<"clt_u.h", int_mips_clt_u_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001218 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001219class CLT_U_W_DESC : MSA_3R_DESC_BASE<"clt_u.w", int_mips_clt_u_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001220 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001221class CLT_U_D_DESC : MSA_3R_DESC_BASE<"clt_u.d", int_mips_clt_u_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001222 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001223
1224class CLTI_S_B_DESC : MSA_SI5_DESC_BASE<"clti_s.b", int_mips_clti_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001225 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001226class CLTI_S_H_DESC : MSA_SI5_DESC_BASE<"clti_s.h", int_mips_clti_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001227 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001228class CLTI_S_W_DESC : MSA_SI5_DESC_BASE<"clti_s.w", int_mips_clti_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001229 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001230class CLTI_S_D_DESC : MSA_SI5_DESC_BASE<"clti_s.d", int_mips_clti_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001231 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001232
1233class CLTI_U_B_DESC : MSA_SI5_DESC_BASE<"clti_u.b", int_mips_clti_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001234 NoItinerary, MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001235class CLTI_U_H_DESC : MSA_SI5_DESC_BASE<"clti_u.h", int_mips_clti_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001236 NoItinerary, MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001237class CLTI_U_W_DESC : MSA_SI5_DESC_BASE<"clti_u.w", int_mips_clti_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001238 NoItinerary, MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001239class CLTI_U_D_DESC : MSA_SI5_DESC_BASE<"clti_u.d", int_mips_clti_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001240 NoItinerary, MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001241
1242class COPY_S_B_DESC : MSA_COPY_DESC_BASE<"copy_s.b", int_mips_copy_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001243 NoItinerary, GPR32, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001244class COPY_S_H_DESC : MSA_COPY_DESC_BASE<"copy_s.h", int_mips_copy_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001245 NoItinerary, GPR32, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001246class COPY_S_W_DESC : MSA_COPY_DESC_BASE<"copy_s.w", int_mips_copy_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001247 NoItinerary, GPR32, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001248
1249class COPY_U_B_DESC : MSA_COPY_DESC_BASE<"copy_u.b", int_mips_copy_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001250 NoItinerary, GPR32, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001251class COPY_U_H_DESC : MSA_COPY_DESC_BASE<"copy_u.h", int_mips_copy_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001252 NoItinerary, GPR32, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001253class COPY_U_W_DESC : MSA_COPY_DESC_BASE<"copy_u.w", int_mips_copy_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001254 NoItinerary, GPR32, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001255
Daniel Sandersf9aa1d12013-08-28 10:26:24 +00001256class CTCMSA_DESC {
1257 dag OutOperandList = (outs);
1258 dag InOperandList = (ins MSACtrl:$cd, GPR32:$rs);
1259 string AsmString = "ctcmsa\t$cd, $rs";
1260 InstrItinClass Itinerary = NoItinerary;
1261 bit hasSideEffects = 1;
1262}
1263
Jack Carterbabdcc82013-08-15 12:24:57 +00001264class DIV_S_B_DESC : MSA_3R_DESC_BASE<"div_s.b", int_mips_div_s_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001265 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001266class DIV_S_H_DESC : MSA_3R_DESC_BASE<"div_s.h", int_mips_div_s_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001267 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001268class DIV_S_W_DESC : MSA_3R_DESC_BASE<"div_s.w", int_mips_div_s_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001269 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001270class DIV_S_D_DESC : MSA_3R_DESC_BASE<"div_s.d", int_mips_div_s_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001271 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001272
1273class DIV_U_B_DESC : MSA_3R_DESC_BASE<"div_u.b", int_mips_div_u_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001274 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001275class DIV_U_H_DESC : MSA_3R_DESC_BASE<"div_u.h", int_mips_div_u_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001276 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001277class DIV_U_W_DESC : MSA_3R_DESC_BASE<"div_u.w", int_mips_div_u_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001278 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001279class DIV_U_D_DESC : MSA_3R_DESC_BASE<"div_u.d", int_mips_div_u_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001280 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001281
1282class DOTP_S_B_DESC : MSA_3R_DESC_BASE<"dotp_s.b", int_mips_dotp_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001283 NoItinerary, MSA128B, MSA128B>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001284 IsCommutable;
1285class DOTP_S_H_DESC : MSA_3R_DESC_BASE<"dotp_s.h", int_mips_dotp_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001286 NoItinerary, MSA128H, MSA128H>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001287 IsCommutable;
1288class DOTP_S_W_DESC : MSA_3R_DESC_BASE<"dotp_s.w", int_mips_dotp_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001289 NoItinerary, MSA128W, MSA128W>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001290 IsCommutable;
1291class DOTP_S_D_DESC : MSA_3R_DESC_BASE<"dotp_s.d", int_mips_dotp_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001292 NoItinerary, MSA128D, MSA128D>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001293 IsCommutable;
1294
1295class DOTP_U_B_DESC : MSA_3R_DESC_BASE<"dotp_u.b", int_mips_dotp_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001296 NoItinerary, MSA128B, MSA128B>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001297 IsCommutable;
1298class DOTP_U_H_DESC : MSA_3R_DESC_BASE<"dotp_u.h", int_mips_dotp_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001299 NoItinerary, MSA128H, MSA128H>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001300 IsCommutable;
1301class DOTP_U_W_DESC : MSA_3R_DESC_BASE<"dotp_u.w", int_mips_dotp_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001302 NoItinerary, MSA128W, MSA128W>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001303 IsCommutable;
1304class DOTP_U_D_DESC : MSA_3R_DESC_BASE<"dotp_u.d", int_mips_dotp_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001305 NoItinerary, MSA128D, MSA128D>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001306 IsCommutable;
1307
1308class DPADD_S_H_DESC : MSA_3R_4R_DESC_BASE<"dpadd_s.h", int_mips_dpadd_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001309 NoItinerary, MSA128H, MSA128B>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001310 IsCommutable;
1311class DPADD_S_W_DESC : MSA_3R_4R_DESC_BASE<"dpadd_s.w", int_mips_dpadd_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001312 NoItinerary, MSA128W, MSA128H>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001313 IsCommutable;
1314class DPADD_S_D_DESC : MSA_3R_4R_DESC_BASE<"dpadd_s.d", int_mips_dpadd_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001315 NoItinerary, MSA128D, MSA128W>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001316 IsCommutable;
1317
1318class DPADD_U_H_DESC : MSA_3R_4R_DESC_BASE<"dpadd_u.h", int_mips_dpadd_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001319 NoItinerary, MSA128H, MSA128B>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001320 IsCommutable;
1321class DPADD_U_W_DESC : MSA_3R_4R_DESC_BASE<"dpadd_u.w", int_mips_dpadd_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001322 NoItinerary, MSA128W, MSA128H>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001323 IsCommutable;
1324class DPADD_U_D_DESC : MSA_3R_4R_DESC_BASE<"dpadd_u.d", int_mips_dpadd_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001325 NoItinerary, MSA128D, MSA128W>,
Jack Carterbabdcc82013-08-15 12:24:57 +00001326 IsCommutable;
1327
1328class DPSUB_S_H_DESC : MSA_3R_4R_DESC_BASE<"dpsub_s.h", int_mips_dpsub_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001329 NoItinerary, MSA128H, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001330class DPSUB_S_W_DESC : MSA_3R_4R_DESC_BASE<"dpsub_s.w", int_mips_dpsub_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001331 NoItinerary, MSA128W, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001332class DPSUB_S_D_DESC : MSA_3R_4R_DESC_BASE<"dpsub_s.d", int_mips_dpsub_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001333 NoItinerary, MSA128D, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001334
1335class DPSUB_U_H_DESC : MSA_3R_4R_DESC_BASE<"dpsub_u.h", int_mips_dpsub_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001336 NoItinerary, MSA128H, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001337class DPSUB_U_W_DESC : MSA_3R_4R_DESC_BASE<"dpsub_u.w", int_mips_dpsub_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001338 NoItinerary, MSA128W, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001339class DPSUB_U_D_DESC : MSA_3R_4R_DESC_BASE<"dpsub_u.d", int_mips_dpsub_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001340 NoItinerary, MSA128D, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001341
Jack Carterb95ee692013-08-15 13:45:36 +00001342class FADD_W_DESC : MSA_3RF_DESC_BASE<"fadd.w", int_mips_fadd_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001343 NoItinerary, MSA128W, MSA128W>,
Jack Carterb95ee692013-08-15 13:45:36 +00001344 IsCommutable;
1345class FADD_D_DESC : MSA_3RF_DESC_BASE<"fadd.d", int_mips_fadd_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001346 NoItinerary, MSA128D, MSA128D>,
Jack Carterb95ee692013-08-15 13:45:36 +00001347 IsCommutable;
1348
Daniel Sanders0dc0dd42013-08-28 10:12:09 +00001349class FCAF_W_DESC : MSA_3RF_DESC_BASE<"fcaf.w", int_mips_fcaf_w,
1350 NoItinerary, MSA128W, MSA128W>,
1351 IsCommutable;
1352class FCAF_D_DESC : MSA_3RF_DESC_BASE<"fcaf.d", int_mips_fcaf_d,
1353 NoItinerary, MSA128D, MSA128D>,
1354 IsCommutable;
1355
Jack Carterb95ee692013-08-15 13:45:36 +00001356class FCEQ_W_DESC : MSA_3RF_DESC_BASE<"fceq.w", int_mips_fceq_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001357 NoItinerary, MSA128W, MSA128W>,
Jack Carterb95ee692013-08-15 13:45:36 +00001358 IsCommutable;
1359class FCEQ_D_DESC : MSA_3RF_DESC_BASE<"fceq.d", int_mips_fceq_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001360 NoItinerary, MSA128D, MSA128D>,
Jack Carterb95ee692013-08-15 13:45:36 +00001361 IsCommutable;
1362
Jack Carterb95ee692013-08-15 13:45:36 +00001363class FCLASS_W_DESC : MSA_2RF_DESC_BASE<"fclass.w", int_mips_fclass_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001364 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001365class FCLASS_D_DESC : MSA_2RF_DESC_BASE<"fclass.d", int_mips_fclass_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001366 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001367
1368class FCLE_W_DESC : MSA_3RF_DESC_BASE<"fcle.w", int_mips_fcle_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001369 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001370class FCLE_D_DESC : MSA_3RF_DESC_BASE<"fcle.d", int_mips_fcle_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001371 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001372
1373class FCLT_W_DESC : MSA_3RF_DESC_BASE<"fclt.w", int_mips_fclt_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001374 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001375class FCLT_D_DESC : MSA_3RF_DESC_BASE<"fclt.d", int_mips_fclt_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001376 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001377
1378class FCNE_W_DESC : MSA_3RF_DESC_BASE<"fcne.w", int_mips_fcne_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001379 NoItinerary, MSA128W, MSA128W>,
Jack Carterb95ee692013-08-15 13:45:36 +00001380 IsCommutable;
1381class FCNE_D_DESC : MSA_3RF_DESC_BASE<"fcne.d", int_mips_fcne_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001382 NoItinerary, MSA128D, MSA128D>,
Jack Carterb95ee692013-08-15 13:45:36 +00001383 IsCommutable;
1384
Daniel Sanders0dc0dd42013-08-28 10:12:09 +00001385class FCOR_W_DESC : MSA_3RF_DESC_BASE<"fcor.w", int_mips_fcor_w,
1386 NoItinerary, MSA128W, MSA128W>,
1387 IsCommutable;
1388class FCOR_D_DESC : MSA_3RF_DESC_BASE<"fcor.d", int_mips_fcor_d,
1389 NoItinerary, MSA128D, MSA128D>,
1390 IsCommutable;
1391
1392class FCUEQ_W_DESC : MSA_3RF_DESC_BASE<"fcueq.w", int_mips_fcueq_w,
1393 NoItinerary, MSA128W, MSA128W>,
1394 IsCommutable;
1395class FCUEQ_D_DESC : MSA_3RF_DESC_BASE<"fcueq.d", int_mips_fcueq_d,
1396 NoItinerary, MSA128D, MSA128D>,
1397 IsCommutable;
1398
1399class FCULE_W_DESC : MSA_3RF_DESC_BASE<"fcule.w", int_mips_fcule_w,
1400 NoItinerary, MSA128W, MSA128W>,
1401 IsCommutable;
1402class FCULE_D_DESC : MSA_3RF_DESC_BASE<"fcule.d", int_mips_fcule_d,
1403 NoItinerary, MSA128D, MSA128D>,
1404 IsCommutable;
1405
1406class FCULT_W_DESC : MSA_3RF_DESC_BASE<"fcult.w", int_mips_fcult_w,
1407 NoItinerary, MSA128W, MSA128W>,
1408 IsCommutable;
1409class FCULT_D_DESC : MSA_3RF_DESC_BASE<"fcult.d", int_mips_fcult_d,
1410 NoItinerary, MSA128D, MSA128D>,
1411 IsCommutable;
1412
Jack Carterb95ee692013-08-15 13:45:36 +00001413class FCUN_W_DESC : MSA_3RF_DESC_BASE<"fcun.w", int_mips_fcun_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001414 NoItinerary, MSA128W, MSA128W>,
Jack Carterb95ee692013-08-15 13:45:36 +00001415 IsCommutable;
1416class FCUN_D_DESC : MSA_3RF_DESC_BASE<"fcun.d", int_mips_fcun_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001417 NoItinerary, MSA128D, MSA128D>,
Jack Carterb95ee692013-08-15 13:45:36 +00001418 IsCommutable;
1419
Daniel Sanders0dc0dd42013-08-28 10:12:09 +00001420class FCUNE_W_DESC : MSA_3RF_DESC_BASE<"fcune.w", int_mips_fcune_w,
1421 NoItinerary, MSA128W, MSA128W>,
1422 IsCommutable;
1423class FCUNE_D_DESC : MSA_3RF_DESC_BASE<"fcune.d", int_mips_fcune_d,
1424 NoItinerary, MSA128D, MSA128D>,
1425 IsCommutable;
1426
Jack Carterb95ee692013-08-15 13:45:36 +00001427class FDIV_W_DESC : MSA_3RF_DESC_BASE<"fdiv.w", int_mips_fdiv_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001428 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001429class FDIV_D_DESC : MSA_3RF_DESC_BASE<"fdiv.d", int_mips_fdiv_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001430 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001431
1432class FEXDO_H_DESC : MSA_3RF_DESC_BASE<"fexdo.h", int_mips_fexdo_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001433 NoItinerary, MSA128H, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001434class FEXDO_W_DESC : MSA_3RF_DESC_BASE<"fexdo.w", int_mips_fexdo_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001435 NoItinerary, MSA128W, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001436
1437class FEXP2_W_DESC : MSA_3RF_DESC_BASE<"fexp2.w", int_mips_fexp2_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001438 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001439class FEXP2_D_DESC : MSA_3RF_DESC_BASE<"fexp2.d", int_mips_fexp2_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001440 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001441
1442class FEXUPL_W_DESC : MSA_2RF_DESC_BASE<"fexupl.w", int_mips_fexupl_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001443 NoItinerary, MSA128W, MSA128H>;
Jack Carterb95ee692013-08-15 13:45:36 +00001444class FEXUPL_D_DESC : MSA_2RF_DESC_BASE<"fexupl.d", int_mips_fexupl_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001445 NoItinerary, MSA128D, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001446
1447class FEXUPR_W_DESC : MSA_2RF_DESC_BASE<"fexupr.w", int_mips_fexupr_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001448 NoItinerary, MSA128W, MSA128H>;
Jack Carterb95ee692013-08-15 13:45:36 +00001449class FEXUPR_D_DESC : MSA_2RF_DESC_BASE<"fexupr.d", int_mips_fexupr_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001450 NoItinerary, MSA128D, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001451
1452class FFINT_S_W_DESC : MSA_2RF_DESC_BASE<"ffint_s.w", int_mips_ffint_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001453 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001454class FFINT_S_D_DESC : MSA_2RF_DESC_BASE<"ffint_s.d", int_mips_ffint_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001455 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001456
1457class FFINT_U_W_DESC : MSA_2RF_DESC_BASE<"ffint_u.w", int_mips_ffint_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001458 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001459class FFINT_U_D_DESC : MSA_2RF_DESC_BASE<"ffint_u.d", int_mips_ffint_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001460 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001461
1462class FFQL_W_DESC : MSA_2RF_DESC_BASE<"ffql.w", int_mips_ffql_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001463 NoItinerary, MSA128W, MSA128H>;
Jack Carterb95ee692013-08-15 13:45:36 +00001464class FFQL_D_DESC : MSA_2RF_DESC_BASE<"ffql.d", int_mips_ffql_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001465 NoItinerary, MSA128D, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001466
1467class FFQR_W_DESC : MSA_2RF_DESC_BASE<"ffqr.w", int_mips_ffqr_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001468 NoItinerary, MSA128W, MSA128H>;
Jack Carterb95ee692013-08-15 13:45:36 +00001469class FFQR_D_DESC : MSA_2RF_DESC_BASE<"ffqr.d", int_mips_ffqr_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001470 NoItinerary, MSA128D, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001471
1472class FILL_B_DESC : MSA_2R_DESC_BASE<"fill.b", int_mips_fill_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001473 NoItinerary, MSA128B, GPR32>;
Jack Carterb95ee692013-08-15 13:45:36 +00001474class FILL_H_DESC : MSA_2R_DESC_BASE<"fill.h", int_mips_fill_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001475 NoItinerary, MSA128H, GPR32>;
Jack Carterb95ee692013-08-15 13:45:36 +00001476class FILL_W_DESC : MSA_2R_DESC_BASE<"fill.w", int_mips_fill_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001477 NoItinerary, MSA128W, GPR32>;
Jack Carterb95ee692013-08-15 13:45:36 +00001478
1479class FLOG2_W_DESC : MSA_2RF_DESC_BASE<"flog2.w", int_mips_flog2_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001480 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001481class FLOG2_D_DESC : MSA_2RF_DESC_BASE<"flog2.d", int_mips_flog2_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001482 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001483
1484class FMADD_W_DESC : MSA_3RF_4RF_DESC_BASE<"fmadd.w", int_mips_fmadd_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001485 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001486class FMADD_D_DESC : MSA_3RF_4RF_DESC_BASE<"fmadd.d", int_mips_fmadd_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001487 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001488
1489class FMAX_W_DESC : MSA_3RF_DESC_BASE<"fmax.w", int_mips_fmax_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001490 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001491class FMAX_D_DESC : MSA_3RF_DESC_BASE<"fmax.d", int_mips_fmax_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001492 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001493
1494class FMAX_A_W_DESC : MSA_3RF_DESC_BASE<"fmax_a.w", int_mips_fmax_a_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001495 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001496class FMAX_A_D_DESC : MSA_3RF_DESC_BASE<"fmax_a.d", int_mips_fmax_a_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001497 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001498
1499class FMIN_W_DESC : MSA_3RF_DESC_BASE<"fmin.w", int_mips_fmin_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001500 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001501class FMIN_D_DESC : MSA_3RF_DESC_BASE<"fmin.d", int_mips_fmin_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001502 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001503
1504class FMIN_A_W_DESC : MSA_3RF_DESC_BASE<"fmin_a.w", int_mips_fmin_a_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001505 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001506class FMIN_A_D_DESC : MSA_3RF_DESC_BASE<"fmin_a.d", int_mips_fmin_a_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001507 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001508
1509class FMSUB_W_DESC : MSA_3RF_4RF_DESC_BASE<"fmsub.w", int_mips_fmsub_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001510 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001511class FMSUB_D_DESC : MSA_3RF_4RF_DESC_BASE<"fmsub.d", int_mips_fmsub_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001512 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001513
1514class FMUL_W_DESC : MSA_3RF_DESC_BASE<"fmul.w", int_mips_fmul_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001515 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001516class FMUL_D_DESC : MSA_3RF_DESC_BASE<"fmul.d", int_mips_fmul_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001517 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001518
1519class FRINT_W_DESC : MSA_2RF_DESC_BASE<"frint.w", int_mips_frint_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001520 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001521class FRINT_D_DESC : MSA_2RF_DESC_BASE<"frint.d", int_mips_frint_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001522 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001523
1524class FRCP_W_DESC : MSA_2RF_DESC_BASE<"frcp.w", int_mips_frcp_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001525 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001526class FRCP_D_DESC : MSA_2RF_DESC_BASE<"frcp.d", int_mips_frcp_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001527 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001528
1529class FRSQRT_W_DESC : MSA_2RF_DESC_BASE<"frsqrt.w", int_mips_frsqrt_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001530 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001531class FRSQRT_D_DESC : MSA_2RF_DESC_BASE<"frsqrt.d", int_mips_frsqrt_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001532 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001533
Daniel Sanders0dc0dd42013-08-28 10:12:09 +00001534class FSAF_W_DESC : MSA_3RF_DESC_BASE<"fsaf.w", int_mips_fsaf_w,
1535 NoItinerary, MSA128W, MSA128W>;
1536class FSAF_D_DESC : MSA_3RF_DESC_BASE<"fsaf.d", int_mips_fsaf_d,
1537 NoItinerary, MSA128D, MSA128D>;
1538
Jack Carterb95ee692013-08-15 13:45:36 +00001539class FSEQ_W_DESC : MSA_3RF_DESC_BASE<"fseq.w", int_mips_fseq_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001540 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001541class FSEQ_D_DESC : MSA_3RF_DESC_BASE<"fseq.d", int_mips_fseq_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001542 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001543
Jack Carterb95ee692013-08-15 13:45:36 +00001544class FSLE_W_DESC : MSA_3RF_DESC_BASE<"fsle.w", int_mips_fsle_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001545 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001546class FSLE_D_DESC : MSA_3RF_DESC_BASE<"fsle.d", int_mips_fsle_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001547 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001548
1549class FSLT_W_DESC : MSA_3RF_DESC_BASE<"fslt.w", int_mips_fslt_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001550 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001551class FSLT_D_DESC : MSA_3RF_DESC_BASE<"fslt.d", int_mips_fslt_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001552 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001553
1554class FSNE_W_DESC : MSA_3RF_DESC_BASE<"fsne.w", int_mips_fsne_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001555 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001556class FSNE_D_DESC : MSA_3RF_DESC_BASE<"fsne.d", int_mips_fsne_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001557 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001558
Daniel Sanders0dc0dd42013-08-28 10:12:09 +00001559class FSOR_W_DESC : MSA_3RF_DESC_BASE<"fsor.w", int_mips_fsor_w,
1560 NoItinerary, MSA128W, MSA128W>;
1561class FSOR_D_DESC : MSA_3RF_DESC_BASE<"fsor.d", int_mips_fsor_d,
1562 NoItinerary, MSA128D, MSA128D>;
1563
Jack Carterb95ee692013-08-15 13:45:36 +00001564class FSQRT_W_DESC : MSA_2RF_DESC_BASE<"fsqrt.w", int_mips_fsqrt_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001565 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001566class FSQRT_D_DESC : MSA_2RF_DESC_BASE<"fsqrt.d", int_mips_fsqrt_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001567 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001568
1569class FSUB_W_DESC : MSA_3RF_DESC_BASE<"fsub.w", int_mips_fsub_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001570 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001571class FSUB_D_DESC : MSA_3RF_DESC_BASE<"fsub.d", int_mips_fsub_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001572 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001573
Daniel Sanders0dc0dd42013-08-28 10:12:09 +00001574class FSUEQ_W_DESC : MSA_3RF_DESC_BASE<"fsueq.w", int_mips_fsueq_w,
1575 NoItinerary, MSA128W, MSA128W>;
1576class FSUEQ_D_DESC : MSA_3RF_DESC_BASE<"fsueq.d", int_mips_fsueq_d,
1577 NoItinerary, MSA128D, MSA128D>;
1578
1579class FSULE_W_DESC : MSA_3RF_DESC_BASE<"fsule.w", int_mips_fsule_w,
1580 NoItinerary, MSA128W, MSA128W>;
1581class FSULE_D_DESC : MSA_3RF_DESC_BASE<"fsule.d", int_mips_fsule_d,
1582 NoItinerary, MSA128D, MSA128D>;
1583
1584class FSULT_W_DESC : MSA_3RF_DESC_BASE<"fsult.w", int_mips_fsult_w,
1585 NoItinerary, MSA128W, MSA128W>;
1586class FSULT_D_DESC : MSA_3RF_DESC_BASE<"fsult.d", int_mips_fsult_d,
1587 NoItinerary, MSA128D, MSA128D>;
1588
1589class FSUN_W_DESC : MSA_3RF_DESC_BASE<"fsun.w", int_mips_fsun_w,
1590 NoItinerary, MSA128W, MSA128W>;
1591class FSUN_D_DESC : MSA_3RF_DESC_BASE<"fsun.d", int_mips_fsun_d,
1592 NoItinerary, MSA128D, MSA128D>;
1593
1594class FSUNE_W_DESC : MSA_3RF_DESC_BASE<"fsune.w", int_mips_fsune_w,
1595 NoItinerary, MSA128W, MSA128W>;
1596class FSUNE_D_DESC : MSA_3RF_DESC_BASE<"fsune.d", int_mips_fsune_d,
1597 NoItinerary, MSA128D, MSA128D>;
1598
1599class FTRUNC_S_W_DESC : MSA_2RF_DESC_BASE<"ftrunc_s.w", int_mips_ftrunc_s_w,
1600 NoItinerary, MSA128W, MSA128W>;
1601class FTRUNC_S_D_DESC : MSA_2RF_DESC_BASE<"ftrunc_s.d", int_mips_ftrunc_s_d,
1602 NoItinerary, MSA128D, MSA128D>;
1603
1604class FTRUNC_U_W_DESC : MSA_2RF_DESC_BASE<"ftrunc_u.w", int_mips_ftrunc_u_w,
1605 NoItinerary, MSA128W, MSA128W>;
1606class FTRUNC_U_D_DESC : MSA_2RF_DESC_BASE<"ftrunc_u.d", int_mips_ftrunc_u_d,
1607 NoItinerary, MSA128D, MSA128D>;
1608
Jack Carterb95ee692013-08-15 13:45:36 +00001609class FTINT_S_W_DESC : MSA_2RF_DESC_BASE<"ftint_s.w", int_mips_ftint_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001610 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001611class FTINT_S_D_DESC : MSA_2RF_DESC_BASE<"ftint_s.d", int_mips_ftint_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001612 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001613
1614class FTINT_U_W_DESC : MSA_2RF_DESC_BASE<"ftint_u.w", int_mips_ftint_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001615 NoItinerary, MSA128W, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001616class FTINT_U_D_DESC : MSA_2RF_DESC_BASE<"ftint_u.d", int_mips_ftint_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001617 NoItinerary, MSA128D, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001618
1619class FTQ_H_DESC : MSA_3RF_DESC_BASE<"ftq.h", int_mips_ftq_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001620 NoItinerary, MSA128H, MSA128W>;
Jack Carterb95ee692013-08-15 13:45:36 +00001621class FTQ_W_DESC : MSA_3RF_DESC_BASE<"ftq.w", int_mips_ftq_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001622 NoItinerary, MSA128W, MSA128D>;
Jack Carterb95ee692013-08-15 13:45:36 +00001623
Daniel Sanders0dc0dd42013-08-28 10:12:09 +00001624class HADD_S_H_DESC : MSA_3R_DESC_BASE<"hadd_s.h", int_mips_hadd_s_h,
1625 NoItinerary, MSA128H, MSA128B>;
1626class HADD_S_W_DESC : MSA_3R_DESC_BASE<"hadd_s.w", int_mips_hadd_s_w,
1627 NoItinerary, MSA128W, MSA128H>;
1628class HADD_S_D_DESC : MSA_3R_DESC_BASE<"hadd_s.d", int_mips_hadd_s_d,
1629 NoItinerary, MSA128D, MSA128W>;
1630
1631class HADD_U_H_DESC : MSA_3R_DESC_BASE<"hadd_u.h", int_mips_hadd_u_h,
1632 NoItinerary, MSA128H, MSA128B>;
1633class HADD_U_W_DESC : MSA_3R_DESC_BASE<"hadd_u.w", int_mips_hadd_u_w,
1634 NoItinerary, MSA128W, MSA128H>;
1635class HADD_U_D_DESC : MSA_3R_DESC_BASE<"hadd_u.d", int_mips_hadd_u_d,
1636 NoItinerary, MSA128D, MSA128W>;
1637
1638class HSUB_S_H_DESC : MSA_3R_DESC_BASE<"hsub_s.h", int_mips_hsub_s_h,
1639 NoItinerary, MSA128H, MSA128B>;
1640class HSUB_S_W_DESC : MSA_3R_DESC_BASE<"hsub_s.w", int_mips_hsub_s_w,
1641 NoItinerary, MSA128W, MSA128H>;
1642class HSUB_S_D_DESC : MSA_3R_DESC_BASE<"hsub_s.d", int_mips_hsub_s_d,
1643 NoItinerary, MSA128D, MSA128W>;
1644
1645class HSUB_U_H_DESC : MSA_3R_DESC_BASE<"hsub_u.h", int_mips_hsub_u_h,
1646 NoItinerary, MSA128H, MSA128B>;
1647class HSUB_U_W_DESC : MSA_3R_DESC_BASE<"hsub_u.w", int_mips_hsub_u_w,
1648 NoItinerary, MSA128W, MSA128H>;
1649class HSUB_U_D_DESC : MSA_3R_DESC_BASE<"hsub_u.d", int_mips_hsub_u_d,
1650 NoItinerary, MSA128D, MSA128W>;
1651
Jack Carterbabdcc82013-08-15 12:24:57 +00001652class ILVEV_B_DESC : MSA_3R_DESC_BASE<"ilvev.b", int_mips_ilvev_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001653 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001654class ILVEV_H_DESC : MSA_3R_DESC_BASE<"ilvev.h", int_mips_ilvev_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001655 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001656class ILVEV_W_DESC : MSA_3R_DESC_BASE<"ilvev.w", int_mips_ilvev_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001657 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001658class ILVEV_D_DESC : MSA_3R_DESC_BASE<"ilvev.d", int_mips_ilvev_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001659 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001660
1661class ILVL_B_DESC : MSA_3R_DESC_BASE<"ilvl.b", int_mips_ilvl_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001662 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001663class ILVL_H_DESC : MSA_3R_DESC_BASE<"ilvl.h", int_mips_ilvl_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001664 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001665class ILVL_W_DESC : MSA_3R_DESC_BASE<"ilvl.w", int_mips_ilvl_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001666 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001667class ILVL_D_DESC : MSA_3R_DESC_BASE<"ilvl.d", int_mips_ilvl_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001668 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001669
1670class ILVOD_B_DESC : MSA_3R_DESC_BASE<"ilvod.b", int_mips_ilvod_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001671 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001672class ILVOD_H_DESC : MSA_3R_DESC_BASE<"ilvod.h", int_mips_ilvod_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001673 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001674class ILVOD_W_DESC : MSA_3R_DESC_BASE<"ilvod.w", int_mips_ilvod_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001675 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001676class ILVOD_D_DESC : MSA_3R_DESC_BASE<"ilvod.d", int_mips_ilvod_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001677 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001678
1679class ILVR_B_DESC : MSA_3R_DESC_BASE<"ilvr.b", int_mips_ilvr_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001680 MSA128B, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001681class ILVR_H_DESC : MSA_3R_DESC_BASE<"ilvr.h", int_mips_ilvr_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001682 MSA128H, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001683class ILVR_W_DESC : MSA_3R_DESC_BASE<"ilvr.w", int_mips_ilvr_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001684 MSA128W, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001685class ILVR_D_DESC : MSA_3R_DESC_BASE<"ilvr.d", int_mips_ilvr_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001686 MSA128D, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001687
1688class INSERT_B_DESC : MSA_INSERT_DESC_BASE<"insert.b", int_mips_insert_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001689 NoItinerary, MSA128B, GPR32>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001690class INSERT_H_DESC : MSA_INSERT_DESC_BASE<"insert.h", int_mips_insert_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001691 NoItinerary, MSA128H, GPR32>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001692class INSERT_W_DESC : MSA_INSERT_DESC_BASE<"insert.w", int_mips_insert_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001693 NoItinerary, MSA128W, GPR32>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001694
Daniel Sandersf2a0f1d2013-08-20 09:22:54 +00001695class INSVE_B_DESC : MSA_INSVE_DESC_BASE<"insve.b", int_mips_insve_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001696 NoItinerary, MSA128B, MSA128B>;
Daniel Sandersf2a0f1d2013-08-20 09:22:54 +00001697class INSVE_H_DESC : MSA_INSVE_DESC_BASE<"insve.h", int_mips_insve_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001698 NoItinerary, MSA128H, MSA128H>;
Daniel Sandersf2a0f1d2013-08-20 09:22:54 +00001699class INSVE_W_DESC : MSA_INSVE_DESC_BASE<"insve.w", int_mips_insve_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001700 NoItinerary, MSA128W, MSA128W>;
Daniel Sandersf2a0f1d2013-08-20 09:22:54 +00001701class INSVE_D_DESC : MSA_INSVE_DESC_BASE<"insve.d", int_mips_insve_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001702 NoItinerary, MSA128D, MSA128D>;
Daniel Sandersf2a0f1d2013-08-20 09:22:54 +00001703
Jack Carter3a2c2d42013-08-13 20:54:07 +00001704class LD_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
1705 ValueType TyNode, InstrItinClass itin, RegisterClass RCWD,
1706 Operand MemOpnd = mem, ComplexPattern Addr = addr> {
1707 dag OutOperandList = (outs RCWD:$wd);
1708 dag InOperandList = (ins MemOpnd:$addr);
1709 string AsmString = !strconcat(instr_asm, "\t$wd, $addr");
1710 list<dag> Pattern = [(set RCWD:$wd, (TyNode (OpNode Addr:$addr)))];
1711 InstrItinClass Itinerary = itin;
1712}
1713
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001714class LD_B_DESC : LD_DESC_BASE<"ld.b", load, v16i8, NoItinerary, MSA128B>;
1715class LD_H_DESC : LD_DESC_BASE<"ld.h", load, v8i16, NoItinerary, MSA128H>;
1716class LD_W_DESC : LD_DESC_BASE<"ld.w", load, v4i32, NoItinerary, MSA128W>;
1717class LD_D_DESC : LD_DESC_BASE<"ld.d", load, v2i64, NoItinerary, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001718
1719class LDI_B_DESC : MSA_I10_DESC_BASE<"ldi.b", int_mips_ldi_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001720 NoItinerary, MSA128B>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001721class LDI_H_DESC : MSA_I10_DESC_BASE<"ldi.h", int_mips_ldi_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001722 NoItinerary, MSA128H>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001723class LDI_W_DESC : MSA_I10_DESC_BASE<"ldi.w", int_mips_ldi_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001724 NoItinerary, MSA128W>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001725class LDI_D_DESC : MSA_I10_DESC_BASE<"ldi.d", int_mips_ldi_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001726 NoItinerary, MSA128D>;
Jack Carterbabdcc82013-08-15 12:24:57 +00001727
Jack Carterd12e8372013-08-15 14:22:07 +00001728class MADD_Q_H_DESC : MSA_3RF_4RF_DESC_BASE<"madd_q.h", int_mips_madd_q_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001729 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001730class MADD_Q_W_DESC : MSA_3RF_4RF_DESC_BASE<"madd_q.w", int_mips_madd_q_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001731 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001732
1733class MADDR_Q_H_DESC : MSA_3RF_4RF_DESC_BASE<"maddr_q.h", int_mips_maddr_q_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001734 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001735class MADDR_Q_W_DESC : MSA_3RF_4RF_DESC_BASE<"maddr_q.w", int_mips_maddr_q_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001736 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001737
1738class MADDV_B_DESC : MSA_3R_4R_DESC_BASE<"maddv.b", int_mips_maddv_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001739 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001740class MADDV_H_DESC : MSA_3R_4R_DESC_BASE<"maddv.h", int_mips_maddv_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001741 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001742class MADDV_W_DESC : MSA_3R_4R_DESC_BASE<"maddv.w", int_mips_maddv_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001743 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001744class MADDV_D_DESC : MSA_3R_4R_DESC_BASE<"maddv.d", int_mips_maddv_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001745 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001746
1747class MAX_A_B_DESC : MSA_3R_DESC_BASE<"max_a.b", int_mips_max_a_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001748 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001749class MAX_A_H_DESC : MSA_3R_DESC_BASE<"max_a.h", int_mips_max_a_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001750 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001751class MAX_A_W_DESC : MSA_3R_DESC_BASE<"max_a.w", int_mips_max_a_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001752 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001753class MAX_A_D_DESC : MSA_3R_DESC_BASE<"max_a.d", int_mips_max_a_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001754 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001755
1756class MAX_S_B_DESC : MSA_3R_DESC_BASE<"max_s.b", int_mips_max_s_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001757 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001758class MAX_S_H_DESC : MSA_3R_DESC_BASE<"max_s.h", int_mips_max_s_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001759 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001760class MAX_S_W_DESC : MSA_3R_DESC_BASE<"max_s.w", int_mips_max_s_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001761 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001762class MAX_S_D_DESC : MSA_3R_DESC_BASE<"max_s.d", int_mips_max_s_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001763 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001764
1765class MAX_U_B_DESC : MSA_3R_DESC_BASE<"max_u.b", int_mips_max_u_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001766 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001767class MAX_U_H_DESC : MSA_3R_DESC_BASE<"max_u.h", int_mips_max_u_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001768 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001769class MAX_U_W_DESC : MSA_3R_DESC_BASE<"max_u.w", int_mips_max_u_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001770 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001771class MAX_U_D_DESC : MSA_3R_DESC_BASE<"max_u.d", int_mips_max_u_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001772 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001773
1774class MAXI_S_B_DESC : MSA_I5_DESC_BASE<"maxi_s.b", int_mips_maxi_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001775 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001776class MAXI_S_H_DESC : MSA_I5_DESC_BASE<"maxi_s.h", int_mips_maxi_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001777 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001778class MAXI_S_W_DESC : MSA_I5_DESC_BASE<"maxi_s.w", int_mips_maxi_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001779 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001780class MAXI_S_D_DESC : MSA_I5_DESC_BASE<"maxi_s.d", int_mips_maxi_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001781 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001782
1783class MAXI_U_B_DESC : MSA_I5_DESC_BASE<"maxi_u.b", int_mips_maxi_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001784 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001785class MAXI_U_H_DESC : MSA_I5_DESC_BASE<"maxi_u.h", int_mips_maxi_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001786 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001787class MAXI_U_W_DESC : MSA_I5_DESC_BASE<"maxi_u.w", int_mips_maxi_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001788 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001789class MAXI_U_D_DESC : MSA_I5_DESC_BASE<"maxi_u.d", int_mips_maxi_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001790 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001791
1792class MIN_A_B_DESC : MSA_3R_DESC_BASE<"min_a.b", int_mips_min_a_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001793 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001794class MIN_A_H_DESC : MSA_3R_DESC_BASE<"min_a.h", int_mips_min_a_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001795 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001796class MIN_A_W_DESC : MSA_3R_DESC_BASE<"min_a.w", int_mips_min_a_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001797 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001798class MIN_A_D_DESC : MSA_3R_DESC_BASE<"min_a.d", int_mips_min_a_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001799 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001800
1801class MIN_S_B_DESC : MSA_3R_DESC_BASE<"min_s.b", int_mips_min_s_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001802 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001803class MIN_S_H_DESC : MSA_3R_DESC_BASE<"min_s.h", int_mips_min_s_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001804 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001805class MIN_S_W_DESC : MSA_3R_DESC_BASE<"min_s.w", int_mips_min_s_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001806 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001807class MIN_S_D_DESC : MSA_3R_DESC_BASE<"min_s.d", int_mips_min_s_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001808 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001809
1810class MIN_U_B_DESC : MSA_3R_DESC_BASE<"min_u.b", int_mips_min_u_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001811 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001812class MIN_U_H_DESC : MSA_3R_DESC_BASE<"min_u.h", int_mips_min_u_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001813 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001814class MIN_U_W_DESC : MSA_3R_DESC_BASE<"min_u.w", int_mips_min_u_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001815 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001816class MIN_U_D_DESC : MSA_3R_DESC_BASE<"min_u.d", int_mips_min_u_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001817 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001818
1819class MINI_S_B_DESC : MSA_I5_DESC_BASE<"mini_s.b", int_mips_mini_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001820 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001821class MINI_S_H_DESC : MSA_I5_DESC_BASE<"mini_s.h", int_mips_mini_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001822 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001823class MINI_S_W_DESC : MSA_I5_DESC_BASE<"mini_s.w", int_mips_mini_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001824 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001825class MINI_S_D_DESC : MSA_I5_DESC_BASE<"mini_s.d", int_mips_mini_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001826 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001827
1828class MINI_U_B_DESC : MSA_I5_DESC_BASE<"mini_u.b", int_mips_mini_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001829 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001830class MINI_U_H_DESC : MSA_I5_DESC_BASE<"mini_u.h", int_mips_mini_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001831 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001832class MINI_U_W_DESC : MSA_I5_DESC_BASE<"mini_u.w", int_mips_mini_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001833 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001834class MINI_U_D_DESC : MSA_I5_DESC_BASE<"mini_u.d", int_mips_mini_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001835 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001836
1837class MOD_S_B_DESC : MSA_3R_DESC_BASE<"mod_s.b", int_mips_mod_s_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001838 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001839class MOD_S_H_DESC : MSA_3R_DESC_BASE<"mod_s.h", int_mips_mod_s_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001840 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001841class MOD_S_W_DESC : MSA_3R_DESC_BASE<"mod_s.w", int_mips_mod_s_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001842 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001843class MOD_S_D_DESC : MSA_3R_DESC_BASE<"mod_s.d", int_mips_mod_s_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001844 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001845
1846class MOD_U_B_DESC : MSA_3R_DESC_BASE<"mod_u.b", int_mips_mod_u_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001847 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001848class MOD_U_H_DESC : MSA_3R_DESC_BASE<"mod_u.h", int_mips_mod_u_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001849 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001850class MOD_U_W_DESC : MSA_3R_DESC_BASE<"mod_u.w", int_mips_mod_u_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001851 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001852class MOD_U_D_DESC : MSA_3R_DESC_BASE<"mod_u.d", int_mips_mod_u_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001853 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001854
1855class MSUB_Q_H_DESC : MSA_3RF_4RF_DESC_BASE<"msub_q.h", int_mips_msub_q_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001856 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001857class MSUB_Q_W_DESC : MSA_3RF_4RF_DESC_BASE<"msub_q.w", int_mips_msub_q_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001858 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001859
1860class MSUBR_Q_H_DESC : MSA_3RF_4RF_DESC_BASE<"msubr_q.h", int_mips_msubr_q_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001861 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001862class MSUBR_Q_W_DESC : MSA_3RF_4RF_DESC_BASE<"msubr_q.w", int_mips_msubr_q_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001863 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001864
1865class MSUBV_B_DESC : MSA_3R_4R_DESC_BASE<"msubv.b", int_mips_msubv_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001866 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001867class MSUBV_H_DESC : MSA_3R_4R_DESC_BASE<"msubv.h", int_mips_msubv_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001868 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001869class MSUBV_W_DESC : MSA_3R_4R_DESC_BASE<"msubv.w", int_mips_msubv_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001870 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001871class MSUBV_D_DESC : MSA_3R_4R_DESC_BASE<"msubv.d", int_mips_msubv_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001872 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001873
1874class MUL_Q_H_DESC : MSA_3RF_DESC_BASE<"mul_q.h", int_mips_mul_q_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001875 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001876class MUL_Q_W_DESC : MSA_3RF_DESC_BASE<"mul_q.w", int_mips_mul_q_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001877 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001878
1879class MULR_Q_H_DESC : MSA_3RF_DESC_BASE<"mulr_q.h", int_mips_mulr_q_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001880 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001881class MULR_Q_W_DESC : MSA_3RF_DESC_BASE<"mulr_q.w", int_mips_mulr_q_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001882 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001883
1884class MULV_B_DESC : MSA_3R_DESC_BASE<"mulv.b", int_mips_mulv_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001885 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001886class MULV_H_DESC : MSA_3R_DESC_BASE<"mulv.h", int_mips_mulv_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001887 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001888class MULV_W_DESC : MSA_3R_DESC_BASE<"mulv.w", int_mips_mulv_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001889 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001890class MULV_D_DESC : MSA_3R_DESC_BASE<"mulv.d", int_mips_mulv_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001891 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001892
1893class NLOC_B_DESC : MSA_2R_DESC_BASE<"nloc.b", int_mips_nloc_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001894 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001895class NLOC_H_DESC : MSA_2R_DESC_BASE<"nloc.h", int_mips_nloc_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001896 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001897class NLOC_W_DESC : MSA_2R_DESC_BASE<"nloc.w", int_mips_nloc_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001898 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001899class NLOC_D_DESC : MSA_2R_DESC_BASE<"nloc.d", int_mips_nloc_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001900 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001901
1902class NLZC_B_DESC : MSA_2R_DESC_BASE<"nlzc.b", int_mips_nlzc_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001903 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001904class NLZC_H_DESC : MSA_2R_DESC_BASE<"nlzc.h", int_mips_nlzc_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001905 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001906class NLZC_W_DESC : MSA_2R_DESC_BASE<"nlzc.w", int_mips_nlzc_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001907 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001908class NLZC_D_DESC : MSA_2R_DESC_BASE<"nlzc.d", int_mips_nlzc_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001909 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001910
Daniel Sanders869bdad2013-08-20 08:38:21 +00001911class NOR_V_DESC : MSA_VEC_DESC_BASE<"nor.v", int_mips_nor_v, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001912 MSA128B, MSA128B>;
Daniel Sanders869bdad2013-08-20 08:38:21 +00001913
Jack Carterd12e8372013-08-15 14:22:07 +00001914class NORI_B_DESC : MSA_I8_DESC_BASE<"nori.b", int_mips_nori_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001915 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001916
Daniel Sanders869bdad2013-08-20 08:38:21 +00001917class OR_V_DESC : MSA_VEC_DESC_BASE<"or.v", int_mips_or_v, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001918 MSA128B, MSA128B>;
Daniel Sanders869bdad2013-08-20 08:38:21 +00001919
Jack Carterd12e8372013-08-15 14:22:07 +00001920class ORI_B_DESC : MSA_I8_DESC_BASE<"ori.b", int_mips_ori_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001921 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001922
1923class PCKEV_B_DESC : MSA_3R_DESC_BASE<"pckev.b", int_mips_pckev_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001924 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001925class PCKEV_H_DESC : MSA_3R_DESC_BASE<"pckev.h", int_mips_pckev_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001926 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001927class PCKEV_W_DESC : MSA_3R_DESC_BASE<"pckev.w", int_mips_pckev_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001928 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001929class PCKEV_D_DESC : MSA_3R_DESC_BASE<"pckev.d", int_mips_pckev_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001930 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001931
1932class PCKOD_B_DESC : MSA_3R_DESC_BASE<"pckod.b", int_mips_pckod_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001933 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001934class PCKOD_H_DESC : MSA_3R_DESC_BASE<"pckod.h", int_mips_pckod_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001935 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001936class PCKOD_W_DESC : MSA_3R_DESC_BASE<"pckod.w", int_mips_pckod_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001937 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001938class PCKOD_D_DESC : MSA_3R_DESC_BASE<"pckod.d", int_mips_pckod_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001939 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001940
1941class PCNT_B_DESC : MSA_2R_DESC_BASE<"pcnt.b", int_mips_pcnt_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001942 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001943class PCNT_H_DESC : MSA_2R_DESC_BASE<"pcnt.h", int_mips_pcnt_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001944 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001945class PCNT_W_DESC : MSA_2R_DESC_BASE<"pcnt.w", int_mips_pcnt_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001946 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001947class PCNT_D_DESC : MSA_2R_DESC_BASE<"pcnt.d", int_mips_pcnt_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001948 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001949
1950class SAT_S_B_DESC : MSA_BIT_B_DESC_BASE<"sat_s.b", int_mips_sat_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001951 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001952class SAT_S_H_DESC : MSA_BIT_H_DESC_BASE<"sat_s.h", int_mips_sat_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001953 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001954class SAT_S_W_DESC : MSA_BIT_W_DESC_BASE<"sat_s.w", int_mips_sat_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001955 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001956class SAT_S_D_DESC : MSA_BIT_D_DESC_BASE<"sat_s.d", int_mips_sat_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001957 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001958
1959class SAT_U_B_DESC : MSA_BIT_B_DESC_BASE<"sat_u.b", int_mips_sat_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001960 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001961class SAT_U_H_DESC : MSA_BIT_H_DESC_BASE<"sat_u.h", int_mips_sat_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001962 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001963class SAT_U_W_DESC : MSA_BIT_W_DESC_BASE<"sat_u.w", int_mips_sat_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001964 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001965class SAT_U_D_DESC : MSA_BIT_D_DESC_BASE<"sat_u.d", int_mips_sat_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001966 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001967
1968class SHF_B_DESC : MSA_I8_DESC_BASE<"shf.b", int_mips_shf_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001969 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001970class SHF_H_DESC : MSA_I8_DESC_BASE<"shf.h", int_mips_shf_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001971 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001972class SHF_W_DESC : MSA_I8_DESC_BASE<"shf.w", int_mips_shf_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001973 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001974
1975class SLD_B_DESC : MSA_3R_DESC_BASE<"sld.b", int_mips_sld_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001976 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001977class SLD_H_DESC : MSA_3R_DESC_BASE<"sld.h", int_mips_sld_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001978 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001979class SLD_W_DESC : MSA_3R_DESC_BASE<"sld.w", int_mips_sld_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001980 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001981class SLD_D_DESC : MSA_3R_DESC_BASE<"sld.d", int_mips_sld_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001982 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001983
1984class SLDI_B_DESC : MSA_BIT_B_DESC_BASE<"sldi.b", int_mips_sldi_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001985 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001986class SLDI_H_DESC : MSA_BIT_H_DESC_BASE<"sldi.h", int_mips_sldi_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001987 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001988class SLDI_W_DESC : MSA_BIT_W_DESC_BASE<"sldi.w", int_mips_sldi_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001989 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001990class SLDI_D_DESC : MSA_BIT_D_DESC_BASE<"sldi.d", int_mips_sldi_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001991 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00001992
1993class SLL_B_DESC : MSA_3R_DESC_BASE<"sll.b", int_mips_sll_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001994 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00001995class SLL_H_DESC : MSA_3R_DESC_BASE<"sll.h", int_mips_sll_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001996 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00001997class SLL_W_DESC : MSA_3R_DESC_BASE<"sll.w", int_mips_sll_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00001998 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00001999class SLL_D_DESC : MSA_3R_DESC_BASE<"sll.d", int_mips_sll_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002000 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00002001
2002class SLLI_B_DESC : MSA_BIT_B_DESC_BASE<"slli.b", int_mips_slli_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002003 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00002004class SLLI_H_DESC : MSA_BIT_H_DESC_BASE<"slli.h", int_mips_slli_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002005 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00002006class SLLI_W_DESC : MSA_BIT_W_DESC_BASE<"slli.w", int_mips_slli_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002007 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00002008class SLLI_D_DESC : MSA_BIT_D_DESC_BASE<"slli.d", int_mips_slli_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002009 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00002010
2011class SPLAT_B_DESC : MSA_3R_DESC_BASE<"splat.b", int_mips_splat_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002012 MSA128B, MSA128B, GPR32>;
Jack Carterd12e8372013-08-15 14:22:07 +00002013class SPLAT_H_DESC : MSA_3R_DESC_BASE<"splat.h", int_mips_splat_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002014 MSA128H, MSA128H, GPR32>;
Jack Carterd12e8372013-08-15 14:22:07 +00002015class SPLAT_W_DESC : MSA_3R_DESC_BASE<"splat.w", int_mips_splat_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002016 MSA128W, MSA128W, GPR32>;
Jack Carterd12e8372013-08-15 14:22:07 +00002017class SPLAT_D_DESC : MSA_3R_DESC_BASE<"splat.d", int_mips_splat_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002018 MSA128D, MSA128D, GPR32>;
Jack Carterd12e8372013-08-15 14:22:07 +00002019
2020class SPLATI_B_DESC : MSA_BIT_B_DESC_BASE<"splati.b", int_mips_splati_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002021 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00002022class SPLATI_H_DESC : MSA_BIT_H_DESC_BASE<"splati.h", int_mips_splati_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002023 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00002024class SPLATI_W_DESC : MSA_BIT_W_DESC_BASE<"splati.w", int_mips_splati_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002025 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00002026class SPLATI_D_DESC : MSA_BIT_D_DESC_BASE<"splati.d", int_mips_splati_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002027 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00002028
2029class SRA_B_DESC : MSA_3R_DESC_BASE<"sra.b", int_mips_sra_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002030 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00002031class SRA_H_DESC : MSA_3R_DESC_BASE<"sra.h", int_mips_sra_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002032 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00002033class SRA_W_DESC : MSA_3R_DESC_BASE<"sra.w", int_mips_sra_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002034 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00002035class SRA_D_DESC : MSA_3R_DESC_BASE<"sra.d", int_mips_sra_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002036 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00002037
2038class SRAI_B_DESC : MSA_BIT_B_DESC_BASE<"srai.b", int_mips_srai_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002039 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00002040class SRAI_H_DESC : MSA_BIT_H_DESC_BASE<"srai.h", int_mips_srai_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002041 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00002042class SRAI_W_DESC : MSA_BIT_W_DESC_BASE<"srai.w", int_mips_srai_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002043 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00002044class SRAI_D_DESC : MSA_BIT_D_DESC_BASE<"srai.d", int_mips_srai_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002045 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00002046
Daniel Sanders0dc0dd42013-08-28 10:12:09 +00002047class SRAR_B_DESC : MSA_3R_DESC_BASE<"srar.b", int_mips_srar_b, NoItinerary,
2048 MSA128B, MSA128B>;
2049class SRAR_H_DESC : MSA_3R_DESC_BASE<"srar.h", int_mips_srar_h, NoItinerary,
2050 MSA128H, MSA128H>;
2051class SRAR_W_DESC : MSA_3R_DESC_BASE<"srar.w", int_mips_srar_w, NoItinerary,
2052 MSA128W, MSA128W>;
2053class SRAR_D_DESC : MSA_3R_DESC_BASE<"srar.d", int_mips_srar_d, NoItinerary,
2054 MSA128D, MSA128D>;
2055
2056class SRARI_B_DESC : MSA_BIT_B_DESC_BASE<"srari.b", int_mips_srari_b,
2057 NoItinerary, MSA128B, MSA128B>;
2058class SRARI_H_DESC : MSA_BIT_H_DESC_BASE<"srari.h", int_mips_srari_h,
2059 NoItinerary, MSA128H, MSA128H>;
2060class SRARI_W_DESC : MSA_BIT_W_DESC_BASE<"srari.w", int_mips_srari_w,
2061 NoItinerary, MSA128W, MSA128W>;
2062class SRARI_D_DESC : MSA_BIT_D_DESC_BASE<"srari.d", int_mips_srari_d,
2063 NoItinerary, MSA128D, MSA128D>;
2064
Jack Carterd12e8372013-08-15 14:22:07 +00002065class SRL_B_DESC : MSA_3R_DESC_BASE<"srl.b", int_mips_srl_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002066 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00002067class SRL_H_DESC : MSA_3R_DESC_BASE<"srl.h", int_mips_srl_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002068 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00002069class SRL_W_DESC : MSA_3R_DESC_BASE<"srl.w", int_mips_srl_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002070 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00002071class SRL_D_DESC : MSA_3R_DESC_BASE<"srl.d", int_mips_srl_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002072 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00002073
2074class SRLI_B_DESC : MSA_BIT_B_DESC_BASE<"srli.b", int_mips_srli_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002075 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00002076class SRLI_H_DESC : MSA_BIT_H_DESC_BASE<"srli.h", int_mips_srli_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002077 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00002078class SRLI_W_DESC : MSA_BIT_W_DESC_BASE<"srli.w", int_mips_srli_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002079 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00002080class SRLI_D_DESC : MSA_BIT_D_DESC_BASE<"srli.d", int_mips_srli_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002081 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00002082
Daniel Sanders0dc0dd42013-08-28 10:12:09 +00002083class SRLR_B_DESC : MSA_3R_DESC_BASE<"srlr.b", int_mips_srlr_b, NoItinerary,
2084 MSA128B, MSA128B>;
2085class SRLR_H_DESC : MSA_3R_DESC_BASE<"srlr.h", int_mips_srlr_h, NoItinerary,
2086 MSA128H, MSA128H>;
2087class SRLR_W_DESC : MSA_3R_DESC_BASE<"srlr.w", int_mips_srlr_w, NoItinerary,
2088 MSA128W, MSA128W>;
2089class SRLR_D_DESC : MSA_3R_DESC_BASE<"srlr.d", int_mips_srlr_d, NoItinerary,
2090 MSA128D, MSA128D>;
2091
2092class SRLRI_B_DESC : MSA_BIT_B_DESC_BASE<"srlri.b", int_mips_srlri_b,
2093 NoItinerary, MSA128B, MSA128B>;
2094class SRLRI_H_DESC : MSA_BIT_H_DESC_BASE<"srlri.h", int_mips_srlri_h,
2095 NoItinerary, MSA128H, MSA128H>;
2096class SRLRI_W_DESC : MSA_BIT_W_DESC_BASE<"srlri.w", int_mips_srlri_w,
2097 NoItinerary, MSA128W, MSA128W>;
2098class SRLRI_D_DESC : MSA_BIT_D_DESC_BASE<"srlri.d", int_mips_srlri_d,
2099 NoItinerary, MSA128D, MSA128D>;
2100
Jack Carter3a2c2d42013-08-13 20:54:07 +00002101class ST_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
2102 ValueType TyNode, InstrItinClass itin, RegisterClass RCWD,
2103 Operand MemOpnd = mem, ComplexPattern Addr = addr> {
2104 dag OutOperandList = (outs);
2105 dag InOperandList = (ins RCWD:$wd, MemOpnd:$addr);
2106 string AsmString = !strconcat(instr_asm, "\t$wd, $addr");
2107 list<dag> Pattern = [(OpNode (TyNode RCWD:$wd), Addr:$addr)];
2108 InstrItinClass Itinerary = itin;
2109}
2110
2111// Load/Store
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002112class ST_B_DESC : ST_DESC_BASE<"st.b", store, v16i8, NoItinerary, MSA128B>;
2113class ST_H_DESC : ST_DESC_BASE<"st.h", store, v8i16, NoItinerary, MSA128H>;
2114class ST_W_DESC : ST_DESC_BASE<"st.w", store, v4i32, NoItinerary, MSA128W>;
2115class ST_D_DESC : ST_DESC_BASE<"st.d", store, v2i64, NoItinerary, MSA128D>;
Jack Carter3a2c2d42013-08-13 20:54:07 +00002116
Jack Carterd12e8372013-08-15 14:22:07 +00002117class SUBS_S_B_DESC : MSA_3R_DESC_BASE<"subs_s.b", int_mips_subs_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002118 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00002119class SUBS_S_H_DESC : MSA_3R_DESC_BASE<"subs_s.h", int_mips_subs_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002120 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00002121class SUBS_S_W_DESC : MSA_3R_DESC_BASE<"subs_s.w", int_mips_subs_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002122 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00002123class SUBS_S_D_DESC : MSA_3R_DESC_BASE<"subs_s.d", int_mips_subs_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002124 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00002125
2126class SUBS_U_B_DESC : MSA_3R_DESC_BASE<"subs_u.b", int_mips_subs_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002127 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00002128class SUBS_U_H_DESC : MSA_3R_DESC_BASE<"subs_u.h", int_mips_subs_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002129 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00002130class SUBS_U_W_DESC : MSA_3R_DESC_BASE<"subs_u.w", int_mips_subs_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002131 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00002132class SUBS_U_D_DESC : MSA_3R_DESC_BASE<"subs_u.d", int_mips_subs_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002133 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00002134
2135class SUBSUS_U_B_DESC : MSA_3R_DESC_BASE<"subsus_u.b", int_mips_subsus_u_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002136 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00002137class SUBSUS_U_H_DESC : MSA_3R_DESC_BASE<"subsus_u.h", int_mips_subsus_u_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002138 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00002139class SUBSUS_U_W_DESC : MSA_3R_DESC_BASE<"subsus_u.w", int_mips_subsus_u_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002140 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00002141class SUBSUS_U_D_DESC : MSA_3R_DESC_BASE<"subsus_u.d", int_mips_subsus_u_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002142 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00002143
2144class SUBSUU_S_B_DESC : MSA_3R_DESC_BASE<"subsuu_s.b", int_mips_subsuu_s_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002145 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00002146class SUBSUU_S_H_DESC : MSA_3R_DESC_BASE<"subsuu_s.h", int_mips_subsuu_s_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002147 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00002148class SUBSUU_S_W_DESC : MSA_3R_DESC_BASE<"subsuu_s.w", int_mips_subsuu_s_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002149 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00002150class SUBSUU_S_D_DESC : MSA_3R_DESC_BASE<"subsuu_s.d", int_mips_subsuu_s_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002151 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00002152
2153class SUBV_B_DESC : MSA_3R_DESC_BASE<"subv.b", int_mips_subv_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002154 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00002155class SUBV_H_DESC : MSA_3R_DESC_BASE<"subv.h", int_mips_subv_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002156 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00002157class SUBV_W_DESC : MSA_3R_DESC_BASE<"subv.w", int_mips_subv_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002158 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00002159class SUBV_D_DESC : MSA_3R_DESC_BASE<"subv.d", int_mips_subv_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002160 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00002161
2162class SUBVI_B_DESC : MSA_I5_DESC_BASE<"subvi.b", int_mips_subvi_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002163 MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00002164class SUBVI_H_DESC : MSA_I5_DESC_BASE<"subvi.h", int_mips_subvi_h, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002165 MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00002166class SUBVI_W_DESC : MSA_I5_DESC_BASE<"subvi.w", int_mips_subvi_w, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002167 MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00002168class SUBVI_D_DESC : MSA_I5_DESC_BASE<"subvi.d", int_mips_subvi_d, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002169 MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00002170
2171class VSHF_B_DESC : MSA_3R_DESC_BASE<"vshf.b", int_mips_vshf_b,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002172 NoItinerary, MSA128B, MSA128B>;
Jack Carterd12e8372013-08-15 14:22:07 +00002173class VSHF_H_DESC : MSA_3R_DESC_BASE<"vshf.h", int_mips_vshf_h,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002174 NoItinerary, MSA128H, MSA128H>;
Jack Carterd12e8372013-08-15 14:22:07 +00002175class VSHF_W_DESC : MSA_3R_DESC_BASE<"vshf.w", int_mips_vshf_w,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002176 NoItinerary, MSA128W, MSA128W>;
Jack Carterd12e8372013-08-15 14:22:07 +00002177class VSHF_D_DESC : MSA_3R_DESC_BASE<"vshf.d", int_mips_vshf_d,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002178 NoItinerary, MSA128D, MSA128D>;
Jack Carterd12e8372013-08-15 14:22:07 +00002179
Daniel Sanders869bdad2013-08-20 08:38:21 +00002180class XOR_V_DESC : MSA_VEC_DESC_BASE<"xor.v", int_mips_xor_v, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002181 MSA128B, MSA128B>;
Daniel Sanders869bdad2013-08-20 08:38:21 +00002182
Jack Carterd12e8372013-08-15 14:22:07 +00002183class XORI_B_DESC : MSA_I8_DESC_BASE<"xori.b", int_mips_xori_b, NoItinerary,
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002184 MSA128B, MSA128B>;
Jack Carter3a2c2d42013-08-13 20:54:07 +00002185// Instruction defs.
Jack Carterbabdcc82013-08-15 12:24:57 +00002186def ADD_A_B : ADD_A_B_ENC, ADD_A_B_DESC, Requires<[HasMSA]>;
2187def ADD_A_H : ADD_A_H_ENC, ADD_A_H_DESC, Requires<[HasMSA]>;
2188def ADD_A_W : ADD_A_W_ENC, ADD_A_W_DESC, Requires<[HasMSA]>;
2189def ADD_A_D : ADD_A_D_ENC, ADD_A_D_DESC, Requires<[HasMSA]>;
2190
2191def ADDS_A_B : ADDS_A_B_ENC, ADDS_A_B_DESC, Requires<[HasMSA]>;
2192def ADDS_A_H : ADDS_A_H_ENC, ADDS_A_H_DESC, Requires<[HasMSA]>;
2193def ADDS_A_W : ADDS_A_W_ENC, ADDS_A_W_DESC, Requires<[HasMSA]>;
2194def ADDS_A_D : ADDS_A_D_ENC, ADDS_A_D_DESC, Requires<[HasMSA]>;
2195
2196def ADDS_S_B : ADDS_S_B_ENC, ADDS_S_B_DESC, Requires<[HasMSA]>;
2197def ADDS_S_H : ADDS_S_H_ENC, ADDS_S_H_DESC, Requires<[HasMSA]>;
2198def ADDS_S_W : ADDS_S_W_ENC, ADDS_S_W_DESC, Requires<[HasMSA]>;
2199def ADDS_S_D : ADDS_S_D_ENC, ADDS_S_D_DESC, Requires<[HasMSA]>;
2200
2201def ADDS_U_B : ADDS_U_B_ENC, ADDS_U_B_DESC, Requires<[HasMSA]>;
2202def ADDS_U_H : ADDS_U_H_ENC, ADDS_U_H_DESC, Requires<[HasMSA]>;
2203def ADDS_U_W : ADDS_U_W_ENC, ADDS_U_W_DESC, Requires<[HasMSA]>;
2204def ADDS_U_D : ADDS_U_D_ENC, ADDS_U_D_DESC, Requires<[HasMSA]>;
2205
2206def ADDV_B : ADDV_B_ENC, ADDV_B_DESC, Requires<[HasMSA]>;
2207def ADDV_H : ADDV_H_ENC, ADDV_H_DESC, Requires<[HasMSA]>;
2208def ADDV_W : ADDV_W_ENC, ADDV_W_DESC, Requires<[HasMSA]>;
2209def ADDV_D : ADDV_D_ENC, ADDV_D_DESC, Requires<[HasMSA]>;
2210
2211def ADDVI_B : ADDVI_B_ENC, ADDVI_B_DESC, Requires<[HasMSA]>;
2212def ADDVI_H : ADDVI_H_ENC, ADDVI_H_DESC, Requires<[HasMSA]>;
2213def ADDVI_W : ADDVI_W_ENC, ADDVI_W_DESC, Requires<[HasMSA]>;
2214def ADDVI_D : ADDVI_D_ENC, ADDVI_D_DESC, Requires<[HasMSA]>;
2215
Daniel Sanders869bdad2013-08-20 08:38:21 +00002216def AND_V : AND_V_ENC, AND_V_DESC, Requires<[HasMSA]>;
2217
Jack Carterbabdcc82013-08-15 12:24:57 +00002218def ANDI_B : ANDI_B_ENC, ANDI_B_DESC, Requires<[HasMSA]>;
2219
2220def ASUB_S_B : ASUB_S_B_ENC, ASUB_S_B_DESC, Requires<[HasMSA]>;
2221def ASUB_S_H : ASUB_S_H_ENC, ASUB_S_H_DESC, Requires<[HasMSA]>;
2222def ASUB_S_W : ASUB_S_W_ENC, ASUB_S_W_DESC, Requires<[HasMSA]>;
2223def ASUB_S_D : ASUB_S_D_ENC, ASUB_S_D_DESC, Requires<[HasMSA]>;
2224
2225def ASUB_U_B : ASUB_U_B_ENC, ASUB_U_B_DESC, Requires<[HasMSA]>;
2226def ASUB_U_H : ASUB_U_H_ENC, ASUB_U_H_DESC, Requires<[HasMSA]>;
2227def ASUB_U_W : ASUB_U_W_ENC, ASUB_U_W_DESC, Requires<[HasMSA]>;
2228def ASUB_U_D : ASUB_U_D_ENC, ASUB_U_D_DESC, Requires<[HasMSA]>;
2229
2230def AVE_S_B : AVE_S_B_ENC, AVE_S_B_DESC, Requires<[HasMSA]>;
2231def AVE_S_H : AVE_S_H_ENC, AVE_S_H_DESC, Requires<[HasMSA]>;
2232def AVE_S_W : AVE_S_W_ENC, AVE_S_W_DESC, Requires<[HasMSA]>;
2233def AVE_S_D : AVE_S_D_ENC, AVE_S_D_DESC, Requires<[HasMSA]>;
2234
2235def AVE_U_B : AVE_U_B_ENC, AVE_U_B_DESC, Requires<[HasMSA]>;
2236def AVE_U_H : AVE_U_H_ENC, AVE_U_H_DESC, Requires<[HasMSA]>;
2237def AVE_U_W : AVE_U_W_ENC, AVE_U_W_DESC, Requires<[HasMSA]>;
2238def AVE_U_D : AVE_U_D_ENC, AVE_U_D_DESC, Requires<[HasMSA]>;
2239
2240def AVER_S_B : AVER_S_B_ENC, AVER_S_B_DESC, Requires<[HasMSA]>;
2241def AVER_S_H : AVER_S_H_ENC, AVER_S_H_DESC, Requires<[HasMSA]>;
2242def AVER_S_W : AVER_S_W_ENC, AVER_S_W_DESC, Requires<[HasMSA]>;
2243def AVER_S_D : AVER_S_D_ENC, AVER_S_D_DESC, Requires<[HasMSA]>;
2244
2245def AVER_U_B : AVER_U_B_ENC, AVER_U_B_DESC, Requires<[HasMSA]>;
2246def AVER_U_H : AVER_U_H_ENC, AVER_U_H_DESC, Requires<[HasMSA]>;
2247def AVER_U_W : AVER_U_W_ENC, AVER_U_W_DESC, Requires<[HasMSA]>;
2248def AVER_U_D : AVER_U_D_ENC, AVER_U_D_DESC, Requires<[HasMSA]>;
2249
2250def BCLR_B : BCLR_B_ENC, BCLR_B_DESC, Requires<[HasMSA]>;
2251def BCLR_H : BCLR_H_ENC, BCLR_H_DESC, Requires<[HasMSA]>;
2252def BCLR_W : BCLR_W_ENC, BCLR_W_DESC, Requires<[HasMSA]>;
2253def BCLR_D : BCLR_D_ENC, BCLR_D_DESC, Requires<[HasMSA]>;
2254
2255def BCLRI_B : BCLRI_B_ENC, BCLRI_B_DESC, Requires<[HasMSA]>;
2256def BCLRI_H : BCLRI_H_ENC, BCLRI_H_DESC, Requires<[HasMSA]>;
2257def BCLRI_W : BCLRI_W_ENC, BCLRI_W_DESC, Requires<[HasMSA]>;
2258def BCLRI_D : BCLRI_D_ENC, BCLRI_D_DESC, Requires<[HasMSA]>;
2259
2260def BINSL_B : BINSL_B_ENC, BINSL_B_DESC, Requires<[HasMSA]>;
2261def BINSL_H : BINSL_H_ENC, BINSL_H_DESC, Requires<[HasMSA]>;
2262def BINSL_W : BINSL_W_ENC, BINSL_W_DESC, Requires<[HasMSA]>;
2263def BINSL_D : BINSL_D_ENC, BINSL_D_DESC, Requires<[HasMSA]>;
2264
2265def BINSLI_B : BINSLI_B_ENC, BINSLI_B_DESC, Requires<[HasMSA]>;
2266def BINSLI_H : BINSLI_H_ENC, BINSLI_H_DESC, Requires<[HasMSA]>;
2267def BINSLI_W : BINSLI_W_ENC, BINSLI_W_DESC, Requires<[HasMSA]>;
2268def BINSLI_D : BINSLI_D_ENC, BINSLI_D_DESC, Requires<[HasMSA]>;
2269
2270def BINSR_B : BINSR_B_ENC, BINSR_B_DESC, Requires<[HasMSA]>;
2271def BINSR_H : BINSR_H_ENC, BINSR_H_DESC, Requires<[HasMSA]>;
2272def BINSR_W : BINSR_W_ENC, BINSR_W_DESC, Requires<[HasMSA]>;
2273def BINSR_D : BINSR_D_ENC, BINSR_D_DESC, Requires<[HasMSA]>;
2274
2275def BINSRI_B : BINSRI_B_ENC, BINSRI_B_DESC, Requires<[HasMSA]>;
2276def BINSRI_H : BINSRI_H_ENC, BINSRI_H_DESC, Requires<[HasMSA]>;
2277def BINSRI_W : BINSRI_W_ENC, BINSRI_W_DESC, Requires<[HasMSA]>;
2278def BINSRI_D : BINSRI_D_ENC, BINSRI_D_DESC, Requires<[HasMSA]>;
2279
Daniel Sanders869bdad2013-08-20 08:38:21 +00002280def BMNZ_V : BMNZ_V_ENC, BMNZ_V_DESC, Requires<[HasMSA]>;
2281
Jack Carterbabdcc82013-08-15 12:24:57 +00002282def BMNZI_B : BMNZI_B_ENC, BMNZI_B_DESC, Requires<[HasMSA]>;
2283
Daniel Sanders869bdad2013-08-20 08:38:21 +00002284def BMZ_V : BMZ_V_ENC, BMZ_V_DESC, Requires<[HasMSA]>;
2285
Jack Carterbabdcc82013-08-15 12:24:57 +00002286def BMZI_B : BMZI_B_ENC, BMZI_B_DESC, Requires<[HasMSA]>;
2287
2288def BNEG_B : BNEG_B_ENC, BNEG_B_DESC, Requires<[HasMSA]>;
2289def BNEG_H : BNEG_H_ENC, BNEG_H_DESC, Requires<[HasMSA]>;
2290def BNEG_W : BNEG_W_ENC, BNEG_W_DESC, Requires<[HasMSA]>;
2291def BNEG_D : BNEG_D_ENC, BNEG_D_DESC, Requires<[HasMSA]>;
2292
2293def BNEGI_B : BNEGI_B_ENC, BNEGI_B_DESC, Requires<[HasMSA]>;
2294def BNEGI_H : BNEGI_H_ENC, BNEGI_H_DESC, Requires<[HasMSA]>;
2295def BNEGI_W : BNEGI_W_ENC, BNEGI_W_DESC, Requires<[HasMSA]>;
2296def BNEGI_D : BNEGI_D_ENC, BNEGI_D_DESC, Requires<[HasMSA]>;
2297
Daniel Sanders869bdad2013-08-20 08:38:21 +00002298def BSEL_V : BSEL_V_ENC, BSEL_V_DESC, Requires<[HasMSA]>;
2299
Jack Carterbabdcc82013-08-15 12:24:57 +00002300def BSELI_B : BSELI_B_ENC, BSELI_B_DESC, Requires<[HasMSA]>;
2301
2302def BSET_B : BSET_B_ENC, BSET_B_DESC, Requires<[HasMSA]>;
2303def BSET_H : BSET_H_ENC, BSET_H_DESC, Requires<[HasMSA]>;
2304def BSET_W : BSET_W_ENC, BSET_W_DESC, Requires<[HasMSA]>;
2305def BSET_D : BSET_D_ENC, BSET_D_DESC, Requires<[HasMSA]>;
2306
2307def BSETI_B : BSETI_B_ENC, BSETI_B_DESC, Requires<[HasMSA]>;
2308def BSETI_H : BSETI_H_ENC, BSETI_H_DESC, Requires<[HasMSA]>;
2309def BSETI_W : BSETI_W_ENC, BSETI_W_DESC, Requires<[HasMSA]>;
2310def BSETI_D : BSETI_D_ENC, BSETI_D_DESC, Requires<[HasMSA]>;
2311
2312def CEQ_B : CEQ_B_ENC, CEQ_B_DESC, Requires<[HasMSA]>;
2313def CEQ_H : CEQ_H_ENC, CEQ_H_DESC, Requires<[HasMSA]>;
2314def CEQ_W : CEQ_W_ENC, CEQ_W_DESC, Requires<[HasMSA]>;
2315def CEQ_D : CEQ_D_ENC, CEQ_D_DESC, Requires<[HasMSA]>;
2316
2317def CEQI_B : CEQI_B_ENC, CEQI_B_DESC, Requires<[HasMSA]>;
2318def CEQI_H : CEQI_H_ENC, CEQI_H_DESC, Requires<[HasMSA]>;
2319def CEQI_W : CEQI_W_ENC, CEQI_W_DESC, Requires<[HasMSA]>;
2320def CEQI_D : CEQI_D_ENC, CEQI_D_DESC, Requires<[HasMSA]>;
2321
Daniel Sandersf9aa1d12013-08-28 10:26:24 +00002322def CFCMSA : CFCMSA_ENC, CFCMSA_DESC, Requires<[HasMSA]>;
2323
Jack Carterbabdcc82013-08-15 12:24:57 +00002324def CLE_S_B : CLE_S_B_ENC, CLE_S_B_DESC, Requires<[HasMSA]>;
2325def CLE_S_H : CLE_S_H_ENC, CLE_S_H_DESC, Requires<[HasMSA]>;
2326def CLE_S_W : CLE_S_W_ENC, CLE_S_W_DESC, Requires<[HasMSA]>;
2327def CLE_S_D : CLE_S_D_ENC, CLE_S_D_DESC, Requires<[HasMSA]>;
2328
2329def CLE_U_B : CLE_U_B_ENC, CLE_U_B_DESC, Requires<[HasMSA]>;
2330def CLE_U_H : CLE_U_H_ENC, CLE_U_H_DESC, Requires<[HasMSA]>;
2331def CLE_U_W : CLE_U_W_ENC, CLE_U_W_DESC, Requires<[HasMSA]>;
2332def CLE_U_D : CLE_U_D_ENC, CLE_U_D_DESC, Requires<[HasMSA]>;
2333
2334def CLEI_S_B : CLEI_S_B_ENC, CLEI_S_B_DESC, Requires<[HasMSA]>;
2335def CLEI_S_H : CLEI_S_H_ENC, CLEI_S_H_DESC, Requires<[HasMSA]>;
2336def CLEI_S_W : CLEI_S_W_ENC, CLEI_S_W_DESC, Requires<[HasMSA]>;
2337def CLEI_S_D : CLEI_S_D_ENC, CLEI_S_D_DESC, Requires<[HasMSA]>;
2338
2339def CLEI_U_B : CLEI_U_B_ENC, CLEI_U_B_DESC, Requires<[HasMSA]>;
2340def CLEI_U_H : CLEI_U_H_ENC, CLEI_U_H_DESC, Requires<[HasMSA]>;
2341def CLEI_U_W : CLEI_U_W_ENC, CLEI_U_W_DESC, Requires<[HasMSA]>;
2342def CLEI_U_D : CLEI_U_D_ENC, CLEI_U_D_DESC, Requires<[HasMSA]>;
2343
2344def CLT_S_B : CLT_S_B_ENC, CLT_S_B_DESC, Requires<[HasMSA]>;
2345def CLT_S_H : CLT_S_H_ENC, CLT_S_H_DESC, Requires<[HasMSA]>;
2346def CLT_S_W : CLT_S_W_ENC, CLT_S_W_DESC, Requires<[HasMSA]>;
2347def CLT_S_D : CLT_S_D_ENC, CLT_S_D_DESC, Requires<[HasMSA]>;
2348
2349def CLT_U_B : CLT_U_B_ENC, CLT_U_B_DESC, Requires<[HasMSA]>;
2350def CLT_U_H : CLT_U_H_ENC, CLT_U_H_DESC, Requires<[HasMSA]>;
2351def CLT_U_W : CLT_U_W_ENC, CLT_U_W_DESC, Requires<[HasMSA]>;
2352def CLT_U_D : CLT_U_D_ENC, CLT_U_D_DESC, Requires<[HasMSA]>;
2353
2354def CLTI_S_B : CLTI_S_B_ENC, CLTI_S_B_DESC, Requires<[HasMSA]>;
2355def CLTI_S_H : CLTI_S_H_ENC, CLTI_S_H_DESC, Requires<[HasMSA]>;
2356def CLTI_S_W : CLTI_S_W_ENC, CLTI_S_W_DESC, Requires<[HasMSA]>;
2357def CLTI_S_D : CLTI_S_D_ENC, CLTI_S_D_DESC, Requires<[HasMSA]>;
2358
2359def CLTI_U_B : CLTI_U_B_ENC, CLTI_U_B_DESC, Requires<[HasMSA]>;
2360def CLTI_U_H : CLTI_U_H_ENC, CLTI_U_H_DESC, Requires<[HasMSA]>;
2361def CLTI_U_W : CLTI_U_W_ENC, CLTI_U_W_DESC, Requires<[HasMSA]>;
2362def CLTI_U_D : CLTI_U_D_ENC, CLTI_U_D_DESC, Requires<[HasMSA]>;
2363
2364def COPY_S_B : COPY_S_B_ENC, COPY_S_B_DESC, Requires<[HasMSA]>;
2365def COPY_S_H : COPY_S_H_ENC, COPY_S_H_DESC, Requires<[HasMSA]>;
2366def COPY_S_W : COPY_S_W_ENC, COPY_S_W_DESC, Requires<[HasMSA]>;
2367
2368def COPY_U_B : COPY_U_B_ENC, COPY_U_B_DESC, Requires<[HasMSA]>;
2369def COPY_U_H : COPY_U_H_ENC, COPY_U_H_DESC, Requires<[HasMSA]>;
2370def COPY_U_W : COPY_U_W_ENC, COPY_U_W_DESC, Requires<[HasMSA]>;
2371
Daniel Sandersf9aa1d12013-08-28 10:26:24 +00002372def CTCMSA : CTCMSA_ENC, CTCMSA_DESC, Requires<[HasMSA]>;
2373
Jack Carterbabdcc82013-08-15 12:24:57 +00002374def DIV_S_B : DIV_S_B_ENC, DIV_S_B_DESC, Requires<[HasMSA]>;
2375def DIV_S_H : DIV_S_H_ENC, DIV_S_H_DESC, Requires<[HasMSA]>;
2376def DIV_S_W : DIV_S_W_ENC, DIV_S_W_DESC, Requires<[HasMSA]>;
2377def DIV_S_D : DIV_S_D_ENC, DIV_S_D_DESC, Requires<[HasMSA]>;
2378
2379def DIV_U_B : DIV_U_B_ENC, DIV_U_B_DESC, Requires<[HasMSA]>;
2380def DIV_U_H : DIV_U_H_ENC, DIV_U_H_DESC, Requires<[HasMSA]>;
2381def DIV_U_W : DIV_U_W_ENC, DIV_U_W_DESC, Requires<[HasMSA]>;
2382def DIV_U_D : DIV_U_D_ENC, DIV_U_D_DESC, Requires<[HasMSA]>;
2383
2384def DOTP_S_B : DOTP_S_B_ENC, DOTP_S_B_DESC, Requires<[HasMSA]>;
2385def DOTP_S_H : DOTP_S_H_ENC, DOTP_S_H_DESC, Requires<[HasMSA]>;
2386def DOTP_S_W : DOTP_S_W_ENC, DOTP_S_W_DESC, Requires<[HasMSA]>;
2387def DOTP_S_D : DOTP_S_D_ENC, DOTP_S_D_DESC, Requires<[HasMSA]>;
2388
2389def DOTP_U_B : DOTP_U_B_ENC, DOTP_U_B_DESC, Requires<[HasMSA]>;
2390def DOTP_U_H : DOTP_U_H_ENC, DOTP_U_H_DESC, Requires<[HasMSA]>;
2391def DOTP_U_W : DOTP_U_W_ENC, DOTP_U_W_DESC, Requires<[HasMSA]>;
2392def DOTP_U_D : DOTP_U_D_ENC, DOTP_U_D_DESC, Requires<[HasMSA]>;
2393
2394def DPADD_S_H : DPADD_S_H_ENC, DPADD_S_H_DESC, Requires<[HasMSA]>;
2395def DPADD_S_W : DPADD_S_W_ENC, DPADD_S_W_DESC, Requires<[HasMSA]>;
2396def DPADD_S_D : DPADD_S_D_ENC, DPADD_S_D_DESC, Requires<[HasMSA]>;
2397
2398def DPADD_U_H : DPADD_U_H_ENC, DPADD_U_H_DESC, Requires<[HasMSA]>;
2399def DPADD_U_W : DPADD_U_W_ENC, DPADD_U_W_DESC, Requires<[HasMSA]>;
2400def DPADD_U_D : DPADD_U_D_ENC, DPADD_U_D_DESC, Requires<[HasMSA]>;
2401
2402def DPSUB_S_H : DPSUB_S_H_ENC, DPSUB_S_H_DESC, Requires<[HasMSA]>;
2403def DPSUB_S_W : DPSUB_S_W_ENC, DPSUB_S_W_DESC, Requires<[HasMSA]>;
2404def DPSUB_S_D : DPSUB_S_D_ENC, DPSUB_S_D_DESC, Requires<[HasMSA]>;
2405
2406def DPSUB_U_H : DPSUB_U_H_ENC, DPSUB_U_H_DESC, Requires<[HasMSA]>;
2407def DPSUB_U_W : DPSUB_U_W_ENC, DPSUB_U_W_DESC, Requires<[HasMSA]>;
2408def DPSUB_U_D : DPSUB_U_D_ENC, DPSUB_U_D_DESC, Requires<[HasMSA]>;
2409
Jack Carterb95ee692013-08-15 13:45:36 +00002410def FADD_W : FADD_W_ENC, FADD_W_DESC, Requires<[HasMSA]>;
2411def FADD_D : FADD_D_ENC, FADD_D_DESC, Requires<[HasMSA]>;
2412
Daniel Sanders0dc0dd42013-08-28 10:12:09 +00002413def FCAF_W : FCAF_W_ENC, FCAF_W_DESC, Requires<[HasMSA]>;
2414def FCAF_D : FCAF_D_ENC, FCAF_D_DESC, Requires<[HasMSA]>;
2415
Jack Carterb95ee692013-08-15 13:45:36 +00002416def FCEQ_W : FCEQ_W_ENC, FCEQ_W_DESC, Requires<[HasMSA]>;
2417def FCEQ_D : FCEQ_D_ENC, FCEQ_D_DESC, Requires<[HasMSA]>;
2418
2419def FCLE_W : FCLE_W_ENC, FCLE_W_DESC, Requires<[HasMSA]>;
2420def FCLE_D : FCLE_D_ENC, FCLE_D_DESC, Requires<[HasMSA]>;
2421
2422def FCLT_W : FCLT_W_ENC, FCLT_W_DESC, Requires<[HasMSA]>;
2423def FCLT_D : FCLT_D_ENC, FCLT_D_DESC, Requires<[HasMSA]>;
2424
2425def FCLASS_W : FCLASS_W_ENC, FCLASS_W_DESC, Requires<[HasMSA]>;
2426def FCLASS_D : FCLASS_D_ENC, FCLASS_D_DESC, Requires<[HasMSA]>;
2427
Jack Carterb95ee692013-08-15 13:45:36 +00002428def FCNE_W : FCNE_W_ENC, FCNE_W_DESC, Requires<[HasMSA]>;
2429def FCNE_D : FCNE_D_ENC, FCNE_D_DESC, Requires<[HasMSA]>;
2430
Daniel Sanders0dc0dd42013-08-28 10:12:09 +00002431def FCOR_W : FCOR_W_ENC, FCOR_W_DESC, Requires<[HasMSA]>;
2432def FCOR_D : FCOR_D_ENC, FCOR_D_DESC, Requires<[HasMSA]>;
2433
2434def FCUEQ_W : FCUEQ_W_ENC, FCUEQ_W_DESC, Requires<[HasMSA]>;
2435def FCUEQ_D : FCUEQ_D_ENC, FCUEQ_D_DESC, Requires<[HasMSA]>;
2436
2437def FCULE_W : FCULE_W_ENC, FCULE_W_DESC, Requires<[HasMSA]>;
2438def FCULE_D : FCULE_D_ENC, FCULE_D_DESC, Requires<[HasMSA]>;
2439
2440def FCULT_W : FCULT_W_ENC, FCULT_W_DESC, Requires<[HasMSA]>;
2441def FCULT_D : FCULT_D_ENC, FCULT_D_DESC, Requires<[HasMSA]>;
2442
Jack Carterb95ee692013-08-15 13:45:36 +00002443def FCUN_W : FCUN_W_ENC, FCUN_W_DESC, Requires<[HasMSA]>;
2444def FCUN_D : FCUN_D_ENC, FCUN_D_DESC, Requires<[HasMSA]>;
2445
Daniel Sanders0dc0dd42013-08-28 10:12:09 +00002446def FCUNE_W : FCUNE_W_ENC, FCUNE_W_DESC, Requires<[HasMSA]>;
2447def FCUNE_D : FCUNE_D_ENC, FCUNE_D_DESC, Requires<[HasMSA]>;
2448
Jack Carterb95ee692013-08-15 13:45:36 +00002449def FDIV_W : FDIV_W_ENC, FDIV_W_DESC, Requires<[HasMSA]>;
2450def FDIV_D : FDIV_D_ENC, FDIV_D_DESC, Requires<[HasMSA]>;
2451
2452def FEXDO_H : FEXDO_H_ENC, FEXDO_H_DESC, Requires<[HasMSA]>;
2453def FEXDO_W : FEXDO_W_ENC, FEXDO_W_DESC, Requires<[HasMSA]>;
2454
2455def FEXP2_W : FEXP2_W_ENC, FEXP2_W_DESC, Requires<[HasMSA]>;
2456def FEXP2_D : FEXP2_D_ENC, FEXP2_D_DESC, Requires<[HasMSA]>;
2457
2458def FEXUPL_W : FEXUPL_W_ENC, FEXUPL_W_DESC, Requires<[HasMSA]>;
2459def FEXUPL_D : FEXUPL_D_ENC, FEXUPL_D_DESC, Requires<[HasMSA]>;
2460
2461def FEXUPR_W : FEXUPR_W_ENC, FEXUPR_W_DESC, Requires<[HasMSA]>;
2462def FEXUPR_D : FEXUPR_D_ENC, FEXUPR_D_DESC, Requires<[HasMSA]>;
2463
2464def FFINT_S_W : FFINT_S_W_ENC, FFINT_S_W_DESC, Requires<[HasMSA]>;
2465def FFINT_S_D : FFINT_S_D_ENC, FFINT_S_D_DESC, Requires<[HasMSA]>;
2466
2467def FFINT_U_W : FFINT_U_W_ENC, FFINT_U_W_DESC, Requires<[HasMSA]>;
2468def FFINT_U_D : FFINT_U_D_ENC, FFINT_U_D_DESC, Requires<[HasMSA]>;
2469
2470def FFQL_W : FFQL_W_ENC, FFQL_W_DESC, Requires<[HasMSA]>;
2471def FFQL_D : FFQL_D_ENC, FFQL_D_DESC, Requires<[HasMSA]>;
2472
2473def FFQR_W : FFQR_W_ENC, FFQR_W_DESC, Requires<[HasMSA]>;
2474def FFQR_D : FFQR_D_ENC, FFQR_D_DESC, Requires<[HasMSA]>;
2475
2476def FILL_B : FILL_B_ENC, FILL_B_DESC, Requires<[HasMSA]>;
2477def FILL_H : FILL_H_ENC, FILL_H_DESC, Requires<[HasMSA]>;
2478def FILL_W : FILL_W_ENC, FILL_W_DESC, Requires<[HasMSA]>;
2479
2480def FLOG2_W : FLOG2_W_ENC, FLOG2_W_DESC, Requires<[HasMSA]>;
2481def FLOG2_D : FLOG2_D_ENC, FLOG2_D_DESC, Requires<[HasMSA]>;
2482
2483def FMADD_W : FMADD_W_ENC, FMADD_W_DESC, Requires<[HasMSA]>;
2484def FMADD_D : FMADD_D_ENC, FMADD_D_DESC, Requires<[HasMSA]>;
2485
2486def FMAX_W : FMAX_W_ENC, FMAX_W_DESC, Requires<[HasMSA]>;
2487def FMAX_D : FMAX_D_ENC, FMAX_D_DESC, Requires<[HasMSA]>;
2488
2489def FMAX_A_W : FMAX_A_W_ENC, FMAX_A_W_DESC, Requires<[HasMSA]>;
2490def FMAX_A_D : FMAX_A_D_ENC, FMAX_A_D_DESC, Requires<[HasMSA]>;
2491
2492def FMIN_W : FMIN_W_ENC, FMIN_W_DESC, Requires<[HasMSA]>;
2493def FMIN_D : FMIN_D_ENC, FMIN_D_DESC, Requires<[HasMSA]>;
2494
2495def FMIN_A_W : FMIN_A_W_ENC, FMIN_A_W_DESC, Requires<[HasMSA]>;
2496def FMIN_A_D : FMIN_A_D_ENC, FMIN_A_D_DESC, Requires<[HasMSA]>;
2497
2498def FMSUB_W : FMSUB_W_ENC, FMSUB_W_DESC, Requires<[HasMSA]>;
2499def FMSUB_D : FMSUB_D_ENC, FMSUB_D_DESC, Requires<[HasMSA]>;
2500
2501def FMUL_W : FMUL_W_ENC, FMUL_W_DESC, Requires<[HasMSA]>;
2502def FMUL_D : FMUL_D_ENC, FMUL_D_DESC, Requires<[HasMSA]>;
2503
2504def FRINT_W : FRINT_W_ENC, FRINT_W_DESC, Requires<[HasMSA]>;
2505def FRINT_D : FRINT_D_ENC, FRINT_D_DESC, Requires<[HasMSA]>;
2506
2507def FRCP_W : FRCP_W_ENC, FRCP_W_DESC, Requires<[HasMSA]>;
2508def FRCP_D : FRCP_D_ENC, FRCP_D_DESC, Requires<[HasMSA]>;
2509
2510def FRSQRT_W : FRSQRT_W_ENC, FRSQRT_W_DESC, Requires<[HasMSA]>;
2511def FRSQRT_D : FRSQRT_D_ENC, FRSQRT_D_DESC, Requires<[HasMSA]>;
2512
Daniel Sanders0dc0dd42013-08-28 10:12:09 +00002513def FSAF_W : FSAF_W_ENC, FSAF_W_DESC, Requires<[HasMSA]>;
2514def FSAF_D : FSAF_D_ENC, FSAF_D_DESC, Requires<[HasMSA]>;
2515
Jack Carterb95ee692013-08-15 13:45:36 +00002516def FSEQ_W : FSEQ_W_ENC, FSEQ_W_DESC, Requires<[HasMSA]>;
2517def FSEQ_D : FSEQ_D_ENC, FSEQ_D_DESC, Requires<[HasMSA]>;
2518
2519def FSLE_W : FSLE_W_ENC, FSLE_W_DESC, Requires<[HasMSA]>;
2520def FSLE_D : FSLE_D_ENC, FSLE_D_DESC, Requires<[HasMSA]>;
2521
2522def FSLT_W : FSLT_W_ENC, FSLT_W_DESC, Requires<[HasMSA]>;
2523def FSLT_D : FSLT_D_ENC, FSLT_D_DESC, Requires<[HasMSA]>;
2524
Jack Carterb95ee692013-08-15 13:45:36 +00002525def FSNE_W : FSNE_W_ENC, FSNE_W_DESC, Requires<[HasMSA]>;
2526def FSNE_D : FSNE_D_ENC, FSNE_D_DESC, Requires<[HasMSA]>;
2527
Daniel Sanders0dc0dd42013-08-28 10:12:09 +00002528def FSOR_W : FSOR_W_ENC, FSOR_W_DESC, Requires<[HasMSA]>;
2529def FSOR_D : FSOR_D_ENC, FSOR_D_DESC, Requires<[HasMSA]>;
2530
Jack Carterb95ee692013-08-15 13:45:36 +00002531def FSQRT_W : FSQRT_W_ENC, FSQRT_W_DESC, Requires<[HasMSA]>;
2532def FSQRT_D : FSQRT_D_ENC, FSQRT_D_DESC, Requires<[HasMSA]>;
2533
2534def FSUB_W : FSUB_W_ENC, FSUB_W_DESC, Requires<[HasMSA]>;
2535def FSUB_D : FSUB_D_ENC, FSUB_D_DESC, Requires<[HasMSA]>;
2536
Daniel Sanders0dc0dd42013-08-28 10:12:09 +00002537def FSUEQ_W : FSUEQ_W_ENC, FSUEQ_W_DESC, Requires<[HasMSA]>;
2538def FSUEQ_D : FSUEQ_D_ENC, FSUEQ_D_DESC, Requires<[HasMSA]>;
2539
2540def FSULE_W : FSULE_W_ENC, FSULE_W_DESC, Requires<[HasMSA]>;
2541def FSULE_D : FSULE_D_ENC, FSULE_D_DESC, Requires<[HasMSA]>;
2542
2543def FSULT_W : FSULT_W_ENC, FSULT_W_DESC, Requires<[HasMSA]>;
2544def FSULT_D : FSULT_D_ENC, FSULT_D_DESC, Requires<[HasMSA]>;
2545
2546def FSUN_W : FSUN_W_ENC, FSUN_W_DESC, Requires<[HasMSA]>;
2547def FSUN_D : FSUN_D_ENC, FSUN_D_DESC, Requires<[HasMSA]>;
2548
2549def FSUNE_W : FSUNE_W_ENC, FSUNE_W_DESC, Requires<[HasMSA]>;
2550def FSUNE_D : FSUNE_D_ENC, FSUNE_D_DESC, Requires<[HasMSA]>;
2551
2552def FTRUNC_S_W : FTRUNC_S_W_ENC, FTRUNC_S_W_DESC, Requires<[HasMSA]>;
2553def FTRUNC_S_D : FTRUNC_S_D_ENC, FTRUNC_S_D_DESC, Requires<[HasMSA]>;
2554
2555def FTRUNC_U_W : FTRUNC_U_W_ENC, FTRUNC_U_W_DESC, Requires<[HasMSA]>;
2556def FTRUNC_U_D : FTRUNC_U_D_ENC, FTRUNC_U_D_DESC, Requires<[HasMSA]>;
2557
Jack Carterb95ee692013-08-15 13:45:36 +00002558def FTINT_S_W : FTINT_S_W_ENC, FTINT_S_W_DESC, Requires<[HasMSA]>;
2559def FTINT_S_D : FTINT_S_D_ENC, FTINT_S_D_DESC, Requires<[HasMSA]>;
2560
2561def FTINT_U_W : FTINT_U_W_ENC, FTINT_U_W_DESC, Requires<[HasMSA]>;
2562def FTINT_U_D : FTINT_U_D_ENC, FTINT_U_D_DESC, Requires<[HasMSA]>;
2563
2564def FTQ_H : FTQ_H_ENC, FTQ_H_DESC, Requires<[HasMSA]>;
2565def FTQ_W : FTQ_W_ENC, FTQ_W_DESC, Requires<[HasMSA]>;
2566
Daniel Sanders0dc0dd42013-08-28 10:12:09 +00002567def HADD_S_H : HADD_S_H_ENC, HADD_S_H_DESC, Requires<[HasMSA]>;
2568def HADD_S_W : HADD_S_W_ENC, HADD_S_W_DESC, Requires<[HasMSA]>;
2569def HADD_S_D : HADD_S_D_ENC, HADD_S_D_DESC, Requires<[HasMSA]>;
2570
2571def HADD_U_H : HADD_U_H_ENC, HADD_U_H_DESC, Requires<[HasMSA]>;
2572def HADD_U_W : HADD_U_W_ENC, HADD_U_W_DESC, Requires<[HasMSA]>;
2573def HADD_U_D : HADD_U_D_ENC, HADD_U_D_DESC, Requires<[HasMSA]>;
2574
2575def HSUB_S_H : HSUB_S_H_ENC, HSUB_S_H_DESC, Requires<[HasMSA]>;
2576def HSUB_S_W : HSUB_S_W_ENC, HSUB_S_W_DESC, Requires<[HasMSA]>;
2577def HSUB_S_D : HSUB_S_D_ENC, HSUB_S_D_DESC, Requires<[HasMSA]>;
2578
2579def HSUB_U_H : HSUB_U_H_ENC, HSUB_U_H_DESC, Requires<[HasMSA]>;
2580def HSUB_U_W : HSUB_U_W_ENC, HSUB_U_W_DESC, Requires<[HasMSA]>;
2581def HSUB_U_D : HSUB_U_D_ENC, HSUB_U_D_DESC, Requires<[HasMSA]>;
2582
Jack Carterbabdcc82013-08-15 12:24:57 +00002583def ILVEV_B : ILVEV_B_ENC, ILVEV_B_DESC, Requires<[HasMSA]>;
2584def ILVEV_H : ILVEV_H_ENC, ILVEV_H_DESC, Requires<[HasMSA]>;
2585def ILVEV_W : ILVEV_W_ENC, ILVEV_W_DESC, Requires<[HasMSA]>;
2586def ILVEV_D : ILVEV_D_ENC, ILVEV_D_DESC, Requires<[HasMSA]>;
2587
2588def ILVL_B : ILVL_B_ENC, ILVL_B_DESC, Requires<[HasMSA]>;
2589def ILVL_H : ILVL_H_ENC, ILVL_H_DESC, Requires<[HasMSA]>;
2590def ILVL_W : ILVL_W_ENC, ILVL_W_DESC, Requires<[HasMSA]>;
2591def ILVL_D : ILVL_D_ENC, ILVL_D_DESC, Requires<[HasMSA]>;
2592
2593def ILVOD_B : ILVOD_B_ENC, ILVOD_B_DESC, Requires<[HasMSA]>;
2594def ILVOD_H : ILVOD_H_ENC, ILVOD_H_DESC, Requires<[HasMSA]>;
2595def ILVOD_W : ILVOD_W_ENC, ILVOD_W_DESC, Requires<[HasMSA]>;
2596def ILVOD_D : ILVOD_D_ENC, ILVOD_D_DESC, Requires<[HasMSA]>;
2597
2598def ILVR_B : ILVR_B_ENC, ILVR_B_DESC, Requires<[HasMSA]>;
2599def ILVR_H : ILVR_H_ENC, ILVR_H_DESC, Requires<[HasMSA]>;
2600def ILVR_W : ILVR_W_ENC, ILVR_W_DESC, Requires<[HasMSA]>;
2601def ILVR_D : ILVR_D_ENC, ILVR_D_DESC, Requires<[HasMSA]>;
2602
2603def INSERT_B : INSERT_B_ENC, INSERT_B_DESC, Requires<[HasMSA]>;
2604def INSERT_H : INSERT_H_ENC, INSERT_H_DESC, Requires<[HasMSA]>;
2605def INSERT_W : INSERT_W_ENC, INSERT_W_DESC, Requires<[HasMSA]>;
2606
Daniel Sandersf2a0f1d2013-08-20 09:22:54 +00002607def INSVE_B : INSVE_B_ENC, INSVE_B_DESC, Requires<[HasMSA]>;
2608def INSVE_H : INSVE_H_ENC, INSVE_H_DESC, Requires<[HasMSA]>;
2609def INSVE_W : INSVE_W_ENC, INSVE_W_DESC, Requires<[HasMSA]>;
2610def INSVE_D : INSVE_D_ENC, INSVE_D_DESC, Requires<[HasMSA]>;
2611
Jack Carter3a2c2d42013-08-13 20:54:07 +00002612def LD_B: LD_B_ENC, LD_B_DESC, Requires<[HasMSA]>;
2613def LD_H: LD_H_ENC, LD_H_DESC, Requires<[HasMSA]>;
2614def LD_W: LD_W_ENC, LD_W_DESC, Requires<[HasMSA]>;
2615def LD_D: LD_D_ENC, LD_D_DESC, Requires<[HasMSA]>;
2616
Jack Carterbabdcc82013-08-15 12:24:57 +00002617def LDI_B : LDI_B_ENC, LDI_B_DESC, Requires<[HasMSA]>;
2618def LDI_H : LDI_H_ENC, LDI_H_DESC, Requires<[HasMSA]>;
2619def LDI_W : LDI_W_ENC, LDI_W_DESC, Requires<[HasMSA]>;
2620
Jack Carterd12e8372013-08-15 14:22:07 +00002621def MADD_Q_H : MADD_Q_H_ENC, MADD_Q_H_DESC, Requires<[HasMSA]>;
2622def MADD_Q_W : MADD_Q_W_ENC, MADD_Q_W_DESC, Requires<[HasMSA]>;
2623
2624def MADDR_Q_H : MADDR_Q_H_ENC, MADDR_Q_H_DESC, Requires<[HasMSA]>;
2625def MADDR_Q_W : MADDR_Q_W_ENC, MADDR_Q_W_DESC, Requires<[HasMSA]>;
2626
2627def MADDV_B : MADDV_B_ENC, MADDV_B_DESC, Requires<[HasMSA]>;
2628def MADDV_H : MADDV_H_ENC, MADDV_H_DESC, Requires<[HasMSA]>;
2629def MADDV_W : MADDV_W_ENC, MADDV_W_DESC, Requires<[HasMSA]>;
2630def MADDV_D : MADDV_D_ENC, MADDV_D_DESC, Requires<[HasMSA]>;
2631
2632def MAX_A_B : MAX_A_B_ENC, MAX_A_B_DESC, Requires<[HasMSA]>;
2633def MAX_A_H : MAX_A_H_ENC, MAX_A_H_DESC, Requires<[HasMSA]>;
2634def MAX_A_W : MAX_A_W_ENC, MAX_A_W_DESC, Requires<[HasMSA]>;
2635def MAX_A_D : MAX_A_D_ENC, MAX_A_D_DESC, Requires<[HasMSA]>;
2636
2637def MAX_S_B : MAX_S_B_ENC, MAX_S_B_DESC, Requires<[HasMSA]>;
2638def MAX_S_H : MAX_S_H_ENC, MAX_S_H_DESC, Requires<[HasMSA]>;
2639def MAX_S_W : MAX_S_W_ENC, MAX_S_W_DESC, Requires<[HasMSA]>;
2640def MAX_S_D : MAX_S_D_ENC, MAX_S_D_DESC, Requires<[HasMSA]>;
2641
2642def MAX_U_B : MAX_U_B_ENC, MAX_U_B_DESC, Requires<[HasMSA]>;
2643def MAX_U_H : MAX_U_H_ENC, MAX_U_H_DESC, Requires<[HasMSA]>;
2644def MAX_U_W : MAX_U_W_ENC, MAX_U_W_DESC, Requires<[HasMSA]>;
2645def MAX_U_D : MAX_U_D_ENC, MAX_U_D_DESC, Requires<[HasMSA]>;
2646
2647def MAXI_S_B : MAXI_S_B_ENC, MAXI_S_B_DESC, Requires<[HasMSA]>;
2648def MAXI_S_H : MAXI_S_H_ENC, MAXI_S_H_DESC, Requires<[HasMSA]>;
2649def MAXI_S_W : MAXI_S_W_ENC, MAXI_S_W_DESC, Requires<[HasMSA]>;
2650def MAXI_S_D : MAXI_S_D_ENC, MAXI_S_D_DESC, Requires<[HasMSA]>;
2651
2652def MAXI_U_B : MAXI_U_B_ENC, MAXI_U_B_DESC, Requires<[HasMSA]>;
2653def MAXI_U_H : MAXI_U_H_ENC, MAXI_U_H_DESC, Requires<[HasMSA]>;
2654def MAXI_U_W : MAXI_U_W_ENC, MAXI_U_W_DESC, Requires<[HasMSA]>;
2655def MAXI_U_D : MAXI_U_D_ENC, MAXI_U_D_DESC, Requires<[HasMSA]>;
2656
2657def MIN_A_B : MIN_A_B_ENC, MIN_A_B_DESC, Requires<[HasMSA]>;
2658def MIN_A_H : MIN_A_H_ENC, MIN_A_H_DESC, Requires<[HasMSA]>;
2659def MIN_A_W : MIN_A_W_ENC, MIN_A_W_DESC, Requires<[HasMSA]>;
2660def MIN_A_D : MIN_A_D_ENC, MIN_A_D_DESC, Requires<[HasMSA]>;
2661
2662def MIN_S_B : MIN_S_B_ENC, MIN_S_B_DESC, Requires<[HasMSA]>;
2663def MIN_S_H : MIN_S_H_ENC, MIN_S_H_DESC, Requires<[HasMSA]>;
2664def MIN_S_W : MIN_S_W_ENC, MIN_S_W_DESC, Requires<[HasMSA]>;
2665def MIN_S_D : MIN_S_D_ENC, MIN_S_D_DESC, Requires<[HasMSA]>;
2666
2667def MIN_U_B : MIN_U_B_ENC, MIN_U_B_DESC, Requires<[HasMSA]>;
2668def MIN_U_H : MIN_U_H_ENC, MIN_U_H_DESC, Requires<[HasMSA]>;
2669def MIN_U_W : MIN_U_W_ENC, MIN_U_W_DESC, Requires<[HasMSA]>;
2670def MIN_U_D : MIN_U_D_ENC, MIN_U_D_DESC, Requires<[HasMSA]>;
2671
2672def MINI_S_B : MINI_S_B_ENC, MINI_S_B_DESC, Requires<[HasMSA]>;
2673def MINI_S_H : MINI_S_H_ENC, MINI_S_H_DESC, Requires<[HasMSA]>;
2674def MINI_S_W : MINI_S_W_ENC, MINI_S_W_DESC, Requires<[HasMSA]>;
2675def MINI_S_D : MINI_S_D_ENC, MINI_S_D_DESC, Requires<[HasMSA]>;
2676
2677def MINI_U_B : MINI_U_B_ENC, MINI_U_B_DESC, Requires<[HasMSA]>;
2678def MINI_U_H : MINI_U_H_ENC, MINI_U_H_DESC, Requires<[HasMSA]>;
2679def MINI_U_W : MINI_U_W_ENC, MINI_U_W_DESC, Requires<[HasMSA]>;
2680def MINI_U_D : MINI_U_D_ENC, MINI_U_D_DESC, Requires<[HasMSA]>;
2681
2682def MOD_S_B : MOD_S_B_ENC, MOD_S_B_DESC, Requires<[HasMSA]>;
2683def MOD_S_H : MOD_S_H_ENC, MOD_S_H_DESC, Requires<[HasMSA]>;
2684def MOD_S_W : MOD_S_W_ENC, MOD_S_W_DESC, Requires<[HasMSA]>;
2685def MOD_S_D : MOD_S_D_ENC, MOD_S_D_DESC, Requires<[HasMSA]>;
2686
2687def MOD_U_B : MOD_U_B_ENC, MOD_U_B_DESC, Requires<[HasMSA]>;
2688def MOD_U_H : MOD_U_H_ENC, MOD_U_H_DESC, Requires<[HasMSA]>;
2689def MOD_U_W : MOD_U_W_ENC, MOD_U_W_DESC, Requires<[HasMSA]>;
2690def MOD_U_D : MOD_U_D_ENC, MOD_U_D_DESC, Requires<[HasMSA]>;
2691
2692def MSUB_Q_H : MSUB_Q_H_ENC, MSUB_Q_H_DESC, Requires<[HasMSA]>;
2693def MSUB_Q_W : MSUB_Q_W_ENC, MSUB_Q_W_DESC, Requires<[HasMSA]>;
2694
2695def MSUBR_Q_H : MSUBR_Q_H_ENC, MSUBR_Q_H_DESC, Requires<[HasMSA]>;
2696def MSUBR_Q_W : MSUBR_Q_W_ENC, MSUBR_Q_W_DESC, Requires<[HasMSA]>;
2697
2698def MSUBV_B : MSUBV_B_ENC, MSUBV_B_DESC, Requires<[HasMSA]>;
2699def MSUBV_H : MSUBV_H_ENC, MSUBV_H_DESC, Requires<[HasMSA]>;
2700def MSUBV_W : MSUBV_W_ENC, MSUBV_W_DESC, Requires<[HasMSA]>;
2701def MSUBV_D : MSUBV_D_ENC, MSUBV_D_DESC, Requires<[HasMSA]>;
2702
2703def MUL_Q_H : MUL_Q_H_ENC, MUL_Q_H_DESC, Requires<[HasMSA]>;
2704def MUL_Q_W : MUL_Q_W_ENC, MUL_Q_W_DESC, Requires<[HasMSA]>;
2705
2706def MULR_Q_H : MULR_Q_H_ENC, MULR_Q_H_DESC, Requires<[HasMSA]>;
2707def MULR_Q_W : MULR_Q_W_ENC, MULR_Q_W_DESC, Requires<[HasMSA]>;
2708
2709def MULV_B : MULV_B_ENC, MULV_B_DESC, Requires<[HasMSA]>;
2710def MULV_H : MULV_H_ENC, MULV_H_DESC, Requires<[HasMSA]>;
2711def MULV_W : MULV_W_ENC, MULV_W_DESC, Requires<[HasMSA]>;
2712def MULV_D : MULV_D_ENC, MULV_D_DESC, Requires<[HasMSA]>;
2713
2714def NLOC_B : NLOC_B_ENC, NLOC_B_DESC, Requires<[HasMSA]>;
2715def NLOC_H : NLOC_H_ENC, NLOC_H_DESC, Requires<[HasMSA]>;
2716def NLOC_W : NLOC_W_ENC, NLOC_W_DESC, Requires<[HasMSA]>;
2717def NLOC_D : NLOC_D_ENC, NLOC_D_DESC, Requires<[HasMSA]>;
2718
2719def NLZC_B : NLZC_B_ENC, NLZC_B_DESC, Requires<[HasMSA]>;
2720def NLZC_H : NLZC_H_ENC, NLZC_H_DESC, Requires<[HasMSA]>;
2721def NLZC_W : NLZC_W_ENC, NLZC_W_DESC, Requires<[HasMSA]>;
2722def NLZC_D : NLZC_D_ENC, NLZC_D_DESC, Requires<[HasMSA]>;
2723
Daniel Sanders869bdad2013-08-20 08:38:21 +00002724def NOR_V : NOR_V_ENC, NOR_V_DESC, Requires<[HasMSA]>;
2725
Jack Carterd12e8372013-08-15 14:22:07 +00002726def NORI_B : NORI_B_ENC, NORI_B_DESC, Requires<[HasMSA]>;
2727
Daniel Sanders869bdad2013-08-20 08:38:21 +00002728def OR_V : OR_V_ENC, OR_V_DESC, Requires<[HasMSA]>;
2729
Jack Carterd12e8372013-08-15 14:22:07 +00002730def ORI_B : ORI_B_ENC, ORI_B_DESC, Requires<[HasMSA]>;
2731
2732def PCKEV_B : PCKEV_B_ENC, PCKEV_B_DESC, Requires<[HasMSA]>;
2733def PCKEV_H : PCKEV_H_ENC, PCKEV_H_DESC, Requires<[HasMSA]>;
2734def PCKEV_W : PCKEV_W_ENC, PCKEV_W_DESC, Requires<[HasMSA]>;
2735def PCKEV_D : PCKEV_D_ENC, PCKEV_D_DESC, Requires<[HasMSA]>;
2736
2737def PCKOD_B : PCKOD_B_ENC, PCKOD_B_DESC, Requires<[HasMSA]>;
2738def PCKOD_H : PCKOD_H_ENC, PCKOD_H_DESC, Requires<[HasMSA]>;
2739def PCKOD_W : PCKOD_W_ENC, PCKOD_W_DESC, Requires<[HasMSA]>;
2740def PCKOD_D : PCKOD_D_ENC, PCKOD_D_DESC, Requires<[HasMSA]>;
2741
2742def PCNT_B : PCNT_B_ENC, PCNT_B_DESC, Requires<[HasMSA]>;
2743def PCNT_H : PCNT_H_ENC, PCNT_H_DESC, Requires<[HasMSA]>;
2744def PCNT_W : PCNT_W_ENC, PCNT_W_DESC, Requires<[HasMSA]>;
2745def PCNT_D : PCNT_D_ENC, PCNT_D_DESC, Requires<[HasMSA]>;
2746
2747def SAT_S_B : SAT_S_B_ENC, SAT_S_B_DESC, Requires<[HasMSA]>;
2748def SAT_S_H : SAT_S_H_ENC, SAT_S_H_DESC, Requires<[HasMSA]>;
2749def SAT_S_W : SAT_S_W_ENC, SAT_S_W_DESC, Requires<[HasMSA]>;
2750def SAT_S_D : SAT_S_D_ENC, SAT_S_D_DESC, Requires<[HasMSA]>;
2751
2752def SAT_U_B : SAT_U_B_ENC, SAT_U_B_DESC, Requires<[HasMSA]>;
2753def SAT_U_H : SAT_U_H_ENC, SAT_U_H_DESC, Requires<[HasMSA]>;
2754def SAT_U_W : SAT_U_W_ENC, SAT_U_W_DESC, Requires<[HasMSA]>;
2755def SAT_U_D : SAT_U_D_ENC, SAT_U_D_DESC, Requires<[HasMSA]>;
2756
2757def SHF_B : SHF_B_ENC, SHF_B_DESC, Requires<[HasMSA]>;
2758def SHF_H : SHF_H_ENC, SHF_H_DESC, Requires<[HasMSA]>;
2759def SHF_W : SHF_W_ENC, SHF_W_DESC, Requires<[HasMSA]>;
2760
2761def SLD_B : SLD_B_ENC, SLD_B_DESC, Requires<[HasMSA]>;
2762def SLD_H : SLD_H_ENC, SLD_H_DESC, Requires<[HasMSA]>;
2763def SLD_W : SLD_W_ENC, SLD_W_DESC, Requires<[HasMSA]>;
2764def SLD_D : SLD_D_ENC, SLD_D_DESC, Requires<[HasMSA]>;
2765
2766def SLDI_B : SLDI_B_ENC, SLDI_B_DESC, Requires<[HasMSA]>;
2767def SLDI_H : SLDI_H_ENC, SLDI_H_DESC, Requires<[HasMSA]>;
2768def SLDI_W : SLDI_W_ENC, SLDI_W_DESC, Requires<[HasMSA]>;
2769def SLDI_D : SLDI_D_ENC, SLDI_D_DESC, Requires<[HasMSA]>;
2770
2771def SLL_B : SLL_B_ENC, SLL_B_DESC, Requires<[HasMSA]>;
2772def SLL_H : SLL_H_ENC, SLL_H_DESC, Requires<[HasMSA]>;
2773def SLL_W : SLL_W_ENC, SLL_W_DESC, Requires<[HasMSA]>;
2774def SLL_D : SLL_D_ENC, SLL_D_DESC, Requires<[HasMSA]>;
2775
2776def SLLI_B : SLLI_B_ENC, SLLI_B_DESC, Requires<[HasMSA]>;
2777def SLLI_H : SLLI_H_ENC, SLLI_H_DESC, Requires<[HasMSA]>;
2778def SLLI_W : SLLI_W_ENC, SLLI_W_DESC, Requires<[HasMSA]>;
2779def SLLI_D : SLLI_D_ENC, SLLI_D_DESC, Requires<[HasMSA]>;
2780
2781def SPLAT_B : SPLAT_B_ENC, SPLAT_B_DESC, Requires<[HasMSA]>;
2782def SPLAT_H : SPLAT_H_ENC, SPLAT_H_DESC, Requires<[HasMSA]>;
2783def SPLAT_W : SPLAT_W_ENC, SPLAT_W_DESC, Requires<[HasMSA]>;
2784def SPLAT_D : SPLAT_D_ENC, SPLAT_D_DESC, Requires<[HasMSA]>;
2785
2786def SPLATI_B : SPLATI_B_ENC, SPLATI_B_DESC, Requires<[HasMSA]>;
2787def SPLATI_H : SPLATI_H_ENC, SPLATI_H_DESC, Requires<[HasMSA]>;
2788def SPLATI_W : SPLATI_W_ENC, SPLATI_W_DESC, Requires<[HasMSA]>;
2789def SPLATI_D : SPLATI_D_ENC, SPLATI_D_DESC, Requires<[HasMSA]>;
2790
2791def SRA_B : SRA_B_ENC, SRA_B_DESC, Requires<[HasMSA]>;
2792def SRA_H : SRA_H_ENC, SRA_H_DESC, Requires<[HasMSA]>;
2793def SRA_W : SRA_W_ENC, SRA_W_DESC, Requires<[HasMSA]>;
2794def SRA_D : SRA_D_ENC, SRA_D_DESC, Requires<[HasMSA]>;
2795
2796def SRAI_B : SRAI_B_ENC, SRAI_B_DESC, Requires<[HasMSA]>;
2797def SRAI_H : SRAI_H_ENC, SRAI_H_DESC, Requires<[HasMSA]>;
2798def SRAI_W : SRAI_W_ENC, SRAI_W_DESC, Requires<[HasMSA]>;
2799def SRAI_D : SRAI_D_ENC, SRAI_D_DESC, Requires<[HasMSA]>;
2800
Daniel Sanders0dc0dd42013-08-28 10:12:09 +00002801def SRAR_B : SRAR_B_ENC, SRAR_B_DESC, Requires<[HasMSA]>;
2802def SRAR_H : SRAR_H_ENC, SRAR_H_DESC, Requires<[HasMSA]>;
2803def SRAR_W : SRAR_W_ENC, SRAR_W_DESC, Requires<[HasMSA]>;
2804def SRAR_D : SRAR_D_ENC, SRAR_D_DESC, Requires<[HasMSA]>;
2805
2806def SRARI_B : SRARI_B_ENC, SRARI_B_DESC, Requires<[HasMSA]>;
2807def SRARI_H : SRARI_H_ENC, SRARI_H_DESC, Requires<[HasMSA]>;
2808def SRARI_W : SRARI_W_ENC, SRARI_W_DESC, Requires<[HasMSA]>;
2809def SRARI_D : SRARI_D_ENC, SRARI_D_DESC, Requires<[HasMSA]>;
2810
Jack Carterd12e8372013-08-15 14:22:07 +00002811def SRL_B : SRL_B_ENC, SRL_B_DESC, Requires<[HasMSA]>;
2812def SRL_H : SRL_H_ENC, SRL_H_DESC, Requires<[HasMSA]>;
2813def SRL_W : SRL_W_ENC, SRL_W_DESC, Requires<[HasMSA]>;
2814def SRL_D : SRL_D_ENC, SRL_D_DESC, Requires<[HasMSA]>;
2815
2816def SRLI_B : SRLI_B_ENC, SRLI_B_DESC, Requires<[HasMSA]>;
2817def SRLI_H : SRLI_H_ENC, SRLI_H_DESC, Requires<[HasMSA]>;
2818def SRLI_W : SRLI_W_ENC, SRLI_W_DESC, Requires<[HasMSA]>;
2819def SRLI_D : SRLI_D_ENC, SRLI_D_DESC, Requires<[HasMSA]>;
2820
Daniel Sanders0dc0dd42013-08-28 10:12:09 +00002821def SRLR_B : SRLR_B_ENC, SRLR_B_DESC, Requires<[HasMSA]>;
2822def SRLR_H : SRLR_H_ENC, SRLR_H_DESC, Requires<[HasMSA]>;
2823def SRLR_W : SRLR_W_ENC, SRLR_W_DESC, Requires<[HasMSA]>;
2824def SRLR_D : SRLR_D_ENC, SRLR_D_DESC, Requires<[HasMSA]>;
2825
2826def SRLRI_B : SRLRI_B_ENC, SRLRI_B_DESC, Requires<[HasMSA]>;
2827def SRLRI_H : SRLRI_H_ENC, SRLRI_H_DESC, Requires<[HasMSA]>;
2828def SRLRI_W : SRLRI_W_ENC, SRLRI_W_DESC, Requires<[HasMSA]>;
2829def SRLRI_D : SRLRI_D_ENC, SRLRI_D_DESC, Requires<[HasMSA]>;
2830
Jack Carter3a2c2d42013-08-13 20:54:07 +00002831def ST_B: ST_B_ENC, ST_B_DESC, Requires<[HasMSA]>;
2832def ST_H: ST_H_ENC, ST_H_DESC, Requires<[HasMSA]>;
2833def ST_W: ST_W_ENC, ST_W_DESC, Requires<[HasMSA]>;
2834def ST_D: ST_D_ENC, ST_D_DESC, Requires<[HasMSA]>;
2835
Jack Carterd12e8372013-08-15 14:22:07 +00002836def SUBS_S_B : SUBS_S_B_ENC, SUBS_S_B_DESC, Requires<[HasMSA]>;
2837def SUBS_S_H : SUBS_S_H_ENC, SUBS_S_H_DESC, Requires<[HasMSA]>;
2838def SUBS_S_W : SUBS_S_W_ENC, SUBS_S_W_DESC, Requires<[HasMSA]>;
2839def SUBS_S_D : SUBS_S_D_ENC, SUBS_S_D_DESC, Requires<[HasMSA]>;
2840
2841def SUBS_U_B : SUBS_U_B_ENC, SUBS_U_B_DESC, Requires<[HasMSA]>;
2842def SUBS_U_H : SUBS_U_H_ENC, SUBS_U_H_DESC, Requires<[HasMSA]>;
2843def SUBS_U_W : SUBS_U_W_ENC, SUBS_U_W_DESC, Requires<[HasMSA]>;
2844def SUBS_U_D : SUBS_U_D_ENC, SUBS_U_D_DESC, Requires<[HasMSA]>;
2845
2846def SUBSUS_U_B : SUBSUS_U_B_ENC, SUBSUS_U_B_DESC, Requires<[HasMSA]>;
2847def SUBSUS_U_H : SUBSUS_U_H_ENC, SUBSUS_U_H_DESC, Requires<[HasMSA]>;
2848def SUBSUS_U_W : SUBSUS_U_W_ENC, SUBSUS_U_W_DESC, Requires<[HasMSA]>;
2849def SUBSUS_U_D : SUBSUS_U_D_ENC, SUBSUS_U_D_DESC, Requires<[HasMSA]>;
2850
2851def SUBSUU_S_B : SUBSUU_S_B_ENC, SUBSUU_S_B_DESC, Requires<[HasMSA]>;
2852def SUBSUU_S_H : SUBSUU_S_H_ENC, SUBSUU_S_H_DESC, Requires<[HasMSA]>;
2853def SUBSUU_S_W : SUBSUU_S_W_ENC, SUBSUU_S_W_DESC, Requires<[HasMSA]>;
2854def SUBSUU_S_D : SUBSUU_S_D_ENC, SUBSUU_S_D_DESC, Requires<[HasMSA]>;
2855
2856def SUBV_B : SUBV_B_ENC, SUBV_B_DESC, Requires<[HasMSA]>;
2857def SUBV_H : SUBV_H_ENC, SUBV_H_DESC, Requires<[HasMSA]>;
2858def SUBV_W : SUBV_W_ENC, SUBV_W_DESC, Requires<[HasMSA]>;
2859def SUBV_D : SUBV_D_ENC, SUBV_D_DESC, Requires<[HasMSA]>;
2860
2861def SUBVI_B : SUBVI_B_ENC, SUBVI_B_DESC, Requires<[HasMSA]>;
2862def SUBVI_H : SUBVI_H_ENC, SUBVI_H_DESC, Requires<[HasMSA]>;
2863def SUBVI_W : SUBVI_W_ENC, SUBVI_W_DESC, Requires<[HasMSA]>;
2864def SUBVI_D : SUBVI_D_ENC, SUBVI_D_DESC, Requires<[HasMSA]>;
2865
2866def VSHF_B : VSHF_B_ENC, VSHF_B_DESC, Requires<[HasMSA]>;
2867def VSHF_H : VSHF_H_ENC, VSHF_H_DESC, Requires<[HasMSA]>;
2868def VSHF_W : VSHF_W_ENC, VSHF_W_DESC, Requires<[HasMSA]>;
2869def VSHF_D : VSHF_D_ENC, VSHF_D_DESC, Requires<[HasMSA]>;
2870
Daniel Sanders869bdad2013-08-20 08:38:21 +00002871def XOR_V : XOR_V_ENC, XOR_V_DESC, Requires<[HasMSA]>;
2872
Jack Carterd12e8372013-08-15 14:22:07 +00002873def XORI_B : XORI_B_ENC, XORI_B_DESC, Requires<[HasMSA]>;
2874
Jack Carter3a2c2d42013-08-13 20:54:07 +00002875// Patterns.
Daniel Sanders70835f62013-08-27 09:40:30 +00002876class MSAPat<dag pattern, dag result, list<Predicate> pred = [HasMSA]> :
2877 Pat<pattern, result>, Requires<pred>;
Jack Carter3a2c2d42013-08-13 20:54:07 +00002878
Jack Carterb95ee692013-08-15 13:45:36 +00002879def LD_FH : MSAPat<(v8f16 (load addr:$addr)),
2880 (LD_H addr:$addr)>;
Jack Carterbabdcc82013-08-15 12:24:57 +00002881def LD_FW : MSAPat<(v4f32 (load addr:$addr)),
2882 (LD_W addr:$addr)>;
2883def LD_FD : MSAPat<(v2f64 (load addr:$addr)),
2884 (LD_D addr:$addr)>;
2885
Daniel Sanders3c9a0ad2013-08-23 10:10:13 +00002886def ST_FH : MSAPat<(store (v8f16 MSA128H:$ws), addr:$addr),
2887 (ST_H MSA128H:$ws, addr:$addr)>;
2888def ST_FW : MSAPat<(store (v4f32 MSA128W:$ws), addr:$addr),
2889 (ST_W MSA128W:$ws, addr:$addr)>;
2890def ST_FD : MSAPat<(store (v2f64 MSA128D:$ws), addr:$addr),
2891 (ST_D MSA128D:$ws, addr:$addr)>;
Daniel Sanders70835f62013-08-27 09:40:30 +00002892
2893class MSABitconvertPat<ValueType DstVT, ValueType SrcVT,
2894 RegisterClass DstRC, list<Predicate> preds = [HasMSA]> :
2895 MSAPat<(DstVT (bitconvert SrcVT:$src)),
2896 (COPY_TO_REGCLASS SrcVT:$src, DstRC), preds>;
2897
2898// These are endian-independant because the element size doesnt change
2899def : MSABitconvertPat<v8i16, v8f16, MSA128H>;
2900def : MSABitconvertPat<v4i32, v4f32, MSA128W>;
2901def : MSABitconvertPat<v2i64, v2f64, MSA128D>;
2902def : MSABitconvertPat<v8f16, v8i16, MSA128H>;
2903def : MSABitconvertPat<v4f32, v4i32, MSA128W>;
2904def : MSABitconvertPat<v2f64, v2i64, MSA128D>;
2905
2906// Little endian bitcasts are always no-ops
2907def : MSABitconvertPat<v16i8, v8i16, MSA128B, [HasMSA, IsLE]>;
2908def : MSABitconvertPat<v16i8, v4i32, MSA128B, [HasMSA, IsLE]>;
2909def : MSABitconvertPat<v16i8, v2i64, MSA128B, [HasMSA, IsLE]>;
2910def : MSABitconvertPat<v16i8, v8f16, MSA128B, [HasMSA, IsLE]>;
2911def : MSABitconvertPat<v16i8, v4f32, MSA128B, [HasMSA, IsLE]>;
2912def : MSABitconvertPat<v16i8, v2f64, MSA128B, [HasMSA, IsLE]>;
2913
2914def : MSABitconvertPat<v8i16, v16i8, MSA128H, [HasMSA, IsLE]>;
2915def : MSABitconvertPat<v8i16, v4i32, MSA128H, [HasMSA, IsLE]>;
2916def : MSABitconvertPat<v8i16, v2i64, MSA128H, [HasMSA, IsLE]>;
2917def : MSABitconvertPat<v8i16, v4f32, MSA128H, [HasMSA, IsLE]>;
2918def : MSABitconvertPat<v8i16, v2f64, MSA128H, [HasMSA, IsLE]>;
2919
2920def : MSABitconvertPat<v4i32, v16i8, MSA128W, [HasMSA, IsLE]>;
2921def : MSABitconvertPat<v4i32, v8i16, MSA128W, [HasMSA, IsLE]>;
2922def : MSABitconvertPat<v4i32, v2i64, MSA128W, [HasMSA, IsLE]>;
2923def : MSABitconvertPat<v4i32, v8f16, MSA128W, [HasMSA, IsLE]>;
2924def : MSABitconvertPat<v4i32, v2f64, MSA128W, [HasMSA, IsLE]>;
2925
2926def : MSABitconvertPat<v2i64, v16i8, MSA128D, [HasMSA, IsLE]>;
2927def : MSABitconvertPat<v2i64, v8i16, MSA128D, [HasMSA, IsLE]>;
2928def : MSABitconvertPat<v2i64, v4i32, MSA128D, [HasMSA, IsLE]>;
2929def : MSABitconvertPat<v2i64, v8f16, MSA128D, [HasMSA, IsLE]>;
2930def : MSABitconvertPat<v2i64, v4f32, MSA128D, [HasMSA, IsLE]>;
2931
2932def : MSABitconvertPat<v4f32, v16i8, MSA128W, [HasMSA, IsLE]>;
2933def : MSABitconvertPat<v4f32, v8i16, MSA128W, [HasMSA, IsLE]>;
2934def : MSABitconvertPat<v4f32, v2i64, MSA128W, [HasMSA, IsLE]>;
2935def : MSABitconvertPat<v4f32, v8f16, MSA128W, [HasMSA, IsLE]>;
2936def : MSABitconvertPat<v4f32, v2f64, MSA128W, [HasMSA, IsLE]>;
2937
2938def : MSABitconvertPat<v2f64, v16i8, MSA128D, [HasMSA, IsLE]>;
2939def : MSABitconvertPat<v2f64, v8i16, MSA128D, [HasMSA, IsLE]>;
2940def : MSABitconvertPat<v2f64, v4i32, MSA128D, [HasMSA, IsLE]>;
2941def : MSABitconvertPat<v2f64, v8f16, MSA128D, [HasMSA, IsLE]>;
2942def : MSABitconvertPat<v2f64, v4f32, MSA128D, [HasMSA, IsLE]>;
2943
2944// Big endian bitcasts expand to shuffle instructions.
2945// This is because bitcast is defined to be a store/load sequence and the
2946// vector store/load instructions are mixed-endian with respect to the vector
2947// as a whole (little endian with respect to element order, but big endian
2948// elements).
2949
2950class MSABitconvertReverseQuartersPat<ValueType DstVT, ValueType SrcVT,
2951 RegisterClass DstRC, MSAInst Insn,
2952 RegisterClass ViaRC> :
2953 MSAPat<(DstVT (bitconvert SrcVT:$src)),
2954 (COPY_TO_REGCLASS (Insn (COPY_TO_REGCLASS SrcVT:$src, ViaRC), 27),
2955 DstRC),
2956 [HasMSA, IsBE]>;
2957
2958class MSABitconvertReverseHalvesPat<ValueType DstVT, ValueType SrcVT,
2959 RegisterClass DstRC, MSAInst Insn,
2960 RegisterClass ViaRC> :
2961 MSAPat<(DstVT (bitconvert SrcVT:$src)),
2962 (COPY_TO_REGCLASS (Insn (COPY_TO_REGCLASS SrcVT:$src, ViaRC), 177),
2963 DstRC),
2964 [HasMSA, IsBE]>;
2965
2966class MSABitconvertReverseBInHPat<ValueType DstVT, ValueType SrcVT,
2967 RegisterClass DstRC> :
2968 MSABitconvertReverseHalvesPat<DstVT, SrcVT, DstRC, SHF_B, MSA128B>;
2969
2970class MSABitconvertReverseBInWPat<ValueType DstVT, ValueType SrcVT,
2971 RegisterClass DstRC> :
2972 MSABitconvertReverseQuartersPat<DstVT, SrcVT, DstRC, SHF_B, MSA128B>;
2973
2974class MSABitconvertReverseBInDPat<ValueType DstVT, ValueType SrcVT,
2975 RegisterClass DstRC> :
2976 MSAPat<(DstVT (bitconvert SrcVT:$src)),
2977 (COPY_TO_REGCLASS
2978 (SHF_W
2979 (COPY_TO_REGCLASS
2980 (SHF_B (COPY_TO_REGCLASS SrcVT:$src, MSA128B), 27),
2981 MSA128W), 177),
2982 DstRC),
2983 [HasMSA, IsBE]>;
2984
2985class MSABitconvertReverseHInWPat<ValueType DstVT, ValueType SrcVT,
2986 RegisterClass DstRC> :
2987 MSABitconvertReverseHalvesPat<DstVT, SrcVT, DstRC, SHF_H, MSA128H>;
2988
2989class MSABitconvertReverseHInDPat<ValueType DstVT, ValueType SrcVT,
2990 RegisterClass DstRC> :
2991 MSABitconvertReverseQuartersPat<DstVT, SrcVT, DstRC, SHF_H, MSA128H>;
2992
2993class MSABitconvertReverseWInDPat<ValueType DstVT, ValueType SrcVT,
2994 RegisterClass DstRC> :
2995 MSABitconvertReverseHalvesPat<DstVT, SrcVT, DstRC, SHF_W, MSA128W>;
2996
2997def : MSABitconvertReverseBInHPat<v8i16, v16i8, MSA128H>;
2998def : MSABitconvertReverseBInHPat<v8f16, v16i8, MSA128H>;
2999def : MSABitconvertReverseBInWPat<v4i32, v16i8, MSA128W>;
3000def : MSABitconvertReverseBInWPat<v4f32, v16i8, MSA128W>;
3001def : MSABitconvertReverseBInDPat<v2i64, v16i8, MSA128D>;
3002def : MSABitconvertReverseBInDPat<v2f64, v16i8, MSA128D>;
3003
3004def : MSABitconvertReverseBInHPat<v16i8, v8i16, MSA128B>;
3005def : MSABitconvertReverseHInWPat<v4i32, v8i16, MSA128W>;
3006def : MSABitconvertReverseHInWPat<v4f32, v8i16, MSA128W>;
3007def : MSABitconvertReverseHInDPat<v2i64, v8i16, MSA128D>;
3008def : MSABitconvertReverseHInDPat<v2f64, v8i16, MSA128D>;
3009
3010def : MSABitconvertReverseBInHPat<v16i8, v8f16, MSA128B>;
3011def : MSABitconvertReverseHInWPat<v4i32, v8f16, MSA128W>;
3012def : MSABitconvertReverseHInWPat<v4f32, v8f16, MSA128W>;
3013def : MSABitconvertReverseHInDPat<v2i64, v8f16, MSA128D>;
3014def : MSABitconvertReverseHInDPat<v2f64, v8f16, MSA128D>;
3015
3016def : MSABitconvertReverseBInWPat<v16i8, v4i32, MSA128B>;
3017def : MSABitconvertReverseHInWPat<v8i16, v4i32, MSA128H>;
3018def : MSABitconvertReverseHInWPat<v8f16, v4i32, MSA128H>;
3019def : MSABitconvertReverseWInDPat<v2i64, v4i32, MSA128D>;
3020def : MSABitconvertReverseWInDPat<v2f64, v4i32, MSA128D>;
3021
3022def : MSABitconvertReverseBInWPat<v16i8, v4f32, MSA128B>;
3023def : MSABitconvertReverseHInWPat<v8i16, v4f32, MSA128H>;
3024def : MSABitconvertReverseHInWPat<v8f16, v4f32, MSA128H>;
3025def : MSABitconvertReverseWInDPat<v2i64, v4f32, MSA128D>;
3026def : MSABitconvertReverseWInDPat<v2f64, v4f32, MSA128D>;
3027
3028def : MSABitconvertReverseBInDPat<v16i8, v2i64, MSA128B>;
3029def : MSABitconvertReverseHInDPat<v8i16, v2i64, MSA128H>;
3030def : MSABitconvertReverseHInDPat<v8f16, v2i64, MSA128H>;
3031def : MSABitconvertReverseWInDPat<v4i32, v2i64, MSA128W>;
3032def : MSABitconvertReverseWInDPat<v4f32, v2i64, MSA128W>;
3033
3034def : MSABitconvertReverseBInDPat<v16i8, v2f64, MSA128B>;
3035def : MSABitconvertReverseHInDPat<v8i16, v2f64, MSA128H>;
3036def : MSABitconvertReverseHInDPat<v8f16, v2f64, MSA128H>;
3037def : MSABitconvertReverseWInDPat<v4i32, v2f64, MSA128W>;
3038def : MSABitconvertReverseWInDPat<v4f32, v2f64, MSA128W>;