IntrinsicsMips.td revision 4d835f1cbe5d8c5f6cea4040bea9b180927a1c05
1//===- IntrinsicsMips.td - Defines Mips intrinsics ---------*- 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 defines all of the MIPS-specific intrinsics.
11//
12//===----------------------------------------------------------------------===//
13
14//===----------------------------------------------------------------------===//
15// MIPS DSP data types
16def mips_v2q15_ty: LLVMType<v2i16>;
17def mips_v4q7_ty: LLVMType<v4i8>;
18def mips_q31_ty: LLVMType<i32>;
19
20let TargetPrefix = "mips" in {  // All intrinsics start with "llvm.mips.".
21
22//===----------------------------------------------------------------------===//
23// MIPS DSP Rev 1
24
25//===----------------------------------------------------------------------===//
26// Addition/subtraction
27
28def int_mips_addu_qb : GCCBuiltin<"__builtin_mips_addu_qb">,
29  Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [Commutative]>;
30def int_mips_addu_s_qb : GCCBuiltin<"__builtin_mips_addu_s_qb">,
31  Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [Commutative]>;
32def int_mips_subu_qb : GCCBuiltin<"__builtin_mips_subu_qb">,
33  Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
34def int_mips_subu_s_qb : GCCBuiltin<"__builtin_mips_subu_s_qb">,
35  Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
36
37def int_mips_addq_ph : GCCBuiltin<"__builtin_mips_addq_ph">,
38  Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [Commutative]>;
39def int_mips_addq_s_ph : GCCBuiltin<"__builtin_mips_addq_s_ph">,
40  Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [Commutative]>;
41def int_mips_subq_ph : GCCBuiltin<"__builtin_mips_subq_ph">,
42  Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], []>;
43def int_mips_subq_s_ph : GCCBuiltin<"__builtin_mips_subq_s_ph">,
44  Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], []>;
45
46def int_mips_madd: GCCBuiltin<"__builtin_mips_madd">,
47  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty],
48            [IntrNoMem, Commutative]>;
49def int_mips_maddu: GCCBuiltin<"__builtin_mips_maddu">,
50  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty],
51            [IntrNoMem, Commutative]>;
52
53def int_mips_msub: GCCBuiltin<"__builtin_mips_msub">,
54  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty],
55            [IntrNoMem]>;
56def int_mips_msubu: GCCBuiltin<"__builtin_mips_msubu">,
57  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty],
58            [IntrNoMem]>;
59
60def int_mips_addq_s_w: GCCBuiltin<"__builtin_mips_addq_s_w">,
61  Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty], [Commutative]>;
62def int_mips_subq_s_w: GCCBuiltin<"__builtin_mips_subq_s_w">,
63  Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty], []>;
64
65def int_mips_addsc: GCCBuiltin<"__builtin_mips_addsc">,
66  Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [Commutative]>;
67def int_mips_addwc: GCCBuiltin<"__builtin_mips_addwc">,
68  Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [Commutative]>;
69
70def int_mips_modsub: GCCBuiltin<"__builtin_mips_modsub">,
71  Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>;
72
73def int_mips_raddu_w_qb: GCCBuiltin<"__builtin_mips_raddu_w_qb">,
74  Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty], [IntrNoMem]>;
75
76//===----------------------------------------------------------------------===//
77// Absolute value
78
79def int_mips_absq_s_ph: GCCBuiltin<"__builtin_mips_absq_s_ph">,
80  Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty], []>;
81def int_mips_absq_s_w: GCCBuiltin<"__builtin_mips_absq_s_w">,
82  Intrinsic<[mips_q31_ty], [mips_q31_ty], []>;
83
84//===----------------------------------------------------------------------===//
85// Precision reduce/expand
86
87def int_mips_precrq_qb_ph: GCCBuiltin<"__builtin_mips_precrq_qb_ph">,
88  Intrinsic<[llvm_v4i8_ty], [mips_v2q15_ty, mips_v2q15_ty], [IntrNoMem]>;
89def int_mips_precrqu_s_qb_ph: GCCBuiltin<"__builtin_mips_precrqu_s_qb_ph">,
90  Intrinsic<[llvm_v4i8_ty], [mips_v2q15_ty, mips_v2q15_ty], []>;
91def int_mips_precrq_ph_w: GCCBuiltin<"__builtin_mips_precrq_ph_w">,
92  Intrinsic<[mips_v2q15_ty], [mips_q31_ty, mips_q31_ty], [IntrNoMem]>;
93def int_mips_precrq_rs_ph_w: GCCBuiltin<"__builtin_mips_precrq_rs_ph_w">,
94  Intrinsic<[mips_v2q15_ty], [mips_q31_ty, mips_q31_ty], []>;
95def int_mips_preceq_w_phl: GCCBuiltin<"__builtin_mips_preceq_w_phl">,
96  Intrinsic<[mips_q31_ty], [mips_v2q15_ty], [IntrNoMem]>;
97def int_mips_preceq_w_phr: GCCBuiltin<"__builtin_mips_preceq_w_phr">,
98  Intrinsic<[mips_q31_ty], [mips_v2q15_ty], [IntrNoMem]>;
99def int_mips_precequ_ph_qbl: GCCBuiltin<"__builtin_mips_precequ_ph_qbl">,
100  Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
101def int_mips_precequ_ph_qbr: GCCBuiltin<"__builtin_mips_precequ_ph_qbr">,
102  Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
103def int_mips_precequ_ph_qbla: GCCBuiltin<"__builtin_mips_precequ_ph_qbla">,
104  Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
105def int_mips_precequ_ph_qbra: GCCBuiltin<"__builtin_mips_precequ_ph_qbra">,
106  Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
107def int_mips_preceu_ph_qbl: GCCBuiltin<"__builtin_mips_preceu_ph_qbl">,
108  Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
109def int_mips_preceu_ph_qbr: GCCBuiltin<"__builtin_mips_preceu_ph_qbr">,
110  Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
111def int_mips_preceu_ph_qbla: GCCBuiltin<"__builtin_mips_preceu_ph_qbla">,
112  Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
113def int_mips_preceu_ph_qbra: GCCBuiltin<"__builtin_mips_preceu_ph_qbra">,
114  Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
115
116//===----------------------------------------------------------------------===//
117// Shift
118
119def int_mips_shll_qb: GCCBuiltin<"__builtin_mips_shll_qb">,
120  Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_i32_ty], []>;
121def int_mips_shrl_qb: GCCBuiltin<"__builtin_mips_shrl_qb">,
122  Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_i32_ty], [IntrNoMem]>;
123def int_mips_shll_ph: GCCBuiltin<"__builtin_mips_shll_ph">,
124  Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, llvm_i32_ty], []>;
125def int_mips_shll_s_ph: GCCBuiltin<"__builtin_mips_shll_s_ph">,
126  Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, llvm_i32_ty], []>;
127def int_mips_shra_ph: GCCBuiltin<"__builtin_mips_shra_ph">,
128  Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, llvm_i32_ty], [IntrNoMem]>;
129def int_mips_shra_r_ph: GCCBuiltin<"__builtin_mips_shra_r_ph">,
130  Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, llvm_i32_ty], [IntrNoMem]>;
131def int_mips_shll_s_w: GCCBuiltin<"__builtin_mips_shll_s_w">,
132  Intrinsic<[mips_q31_ty], [mips_q31_ty, llvm_i32_ty], []>;
133def int_mips_shra_r_w: GCCBuiltin<"__builtin_mips_shra_r_w">,
134  Intrinsic<[mips_q31_ty], [mips_q31_ty, llvm_i32_ty], [IntrNoMem]>;
135def int_mips_shilo: GCCBuiltin<"__builtin_mips_shilo">,
136  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty], [IntrNoMem]>;
137
138//===----------------------------------------------------------------------===//
139// Multiplication
140
141def int_mips_muleu_s_ph_qbl: GCCBuiltin<"__builtin_mips_muleu_s_ph_qbl">,
142  Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty, mips_v2q15_ty], []>;
143def int_mips_muleu_s_ph_qbr: GCCBuiltin<"__builtin_mips_muleu_s_ph_qbr">,
144  Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty, mips_v2q15_ty], []>;
145def int_mips_mulq_rs_ph: GCCBuiltin<"__builtin_mips_mulq_rs_ph">,
146  Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [Commutative]>;
147def int_mips_muleq_s_w_phl: GCCBuiltin<"__builtin_mips_muleq_s_w_phl">,
148  Intrinsic<[mips_q31_ty], [mips_v2q15_ty, mips_v2q15_ty], [Commutative]>;
149def int_mips_muleq_s_w_phr: GCCBuiltin<"__builtin_mips_muleq_s_w_phr">,
150  Intrinsic<[mips_q31_ty], [mips_v2q15_ty, mips_v2q15_ty], [Commutative]>;
151def int_mips_mulsaq_s_w_ph: GCCBuiltin<"__builtin_mips_mulsaq_s_w_ph">,
152  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
153def int_mips_maq_s_w_phl: GCCBuiltin<"__builtin_mips_maq_s_w_phl">,
154  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
155def int_mips_maq_s_w_phr: GCCBuiltin<"__builtin_mips_maq_s_w_phr">,
156  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
157def int_mips_maq_sa_w_phl: GCCBuiltin<"__builtin_mips_maq_sa_w_phl">,
158  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
159def int_mips_maq_sa_w_phr: GCCBuiltin<"__builtin_mips_maq_sa_w_phr">,
160  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
161def int_mips_mult: GCCBuiltin<"__builtin_mips_mult">,
162  Intrinsic<[llvm_i64_ty], [llvm_i32_ty, llvm_i32_ty],
163            [IntrNoMem, Commutative]>;
164def int_mips_multu: GCCBuiltin<"__builtin_mips_multu">,
165  Intrinsic<[llvm_i64_ty], [llvm_i32_ty, llvm_i32_ty],
166            [IntrNoMem, Commutative]>;
167
168//===----------------------------------------------------------------------===//
169// Dot product with accumulate/subtract
170
171def int_mips_dpau_h_qbl: GCCBuiltin<"__builtin_mips_dpau_h_qbl">,
172  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v4i8_ty, llvm_v4i8_ty],
173            [IntrNoMem]>;
174def int_mips_dpau_h_qbr: GCCBuiltin<"__builtin_mips_dpau_h_qbr">,
175  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v4i8_ty, llvm_v4i8_ty],
176            [IntrNoMem]>;
177def int_mips_dpsu_h_qbl: GCCBuiltin<"__builtin_mips_dpsu_h_qbl">,
178  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v4i8_ty, llvm_v4i8_ty],
179            [IntrNoMem]>;
180def int_mips_dpsu_h_qbr: GCCBuiltin<"__builtin_mips_dpsu_h_qbr">,
181  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v4i8_ty, llvm_v4i8_ty],
182            [IntrNoMem]>;
183def int_mips_dpaq_s_w_ph: GCCBuiltin<"__builtin_mips_dpaq_s_w_ph">,
184  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
185def int_mips_dpsq_s_w_ph: GCCBuiltin<"__builtin_mips_dpsq_s_w_ph">,
186  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
187def int_mips_dpaq_sa_l_w: GCCBuiltin<"__builtin_mips_dpaq_sa_l_w">,
188  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_q31_ty, mips_q31_ty], []>;
189def int_mips_dpsq_sa_l_w: GCCBuiltin<"__builtin_mips_dpsq_sa_l_w">,
190  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_q31_ty, mips_q31_ty], []>;
191
192//===----------------------------------------------------------------------===//
193// Comparison
194
195def int_mips_cmpu_eq_qb: GCCBuiltin<"__builtin_mips_cmpu_eq_qb">,
196  Intrinsic<[], [llvm_v4i8_ty, llvm_v4i8_ty], [Commutative]>;
197def int_mips_cmpu_lt_qb: GCCBuiltin<"__builtin_mips_cmpu_lt_qb">,
198  Intrinsic<[], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
199def int_mips_cmpu_le_qb: GCCBuiltin<"__builtin_mips_cmpu_le_qb">,
200  Intrinsic<[], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
201def int_mips_cmpgu_eq_qb: GCCBuiltin<"__builtin_mips_cmpgu_eq_qb">,
202  Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [Commutative]>;
203def int_mips_cmpgu_lt_qb: GCCBuiltin<"__builtin_mips_cmpgu_lt_qb">,
204  Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
205def int_mips_cmpgu_le_qb: GCCBuiltin<"__builtin_mips_cmpgu_le_qb">,
206  Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
207def int_mips_cmp_eq_ph: GCCBuiltin<"__builtin_mips_cmp_eq_ph">,
208  Intrinsic<[], [mips_v2q15_ty, mips_v2q15_ty], [Commutative]>;
209def int_mips_cmp_lt_ph: GCCBuiltin<"__builtin_mips_cmp_lt_ph">,
210  Intrinsic<[], [mips_v2q15_ty, mips_v2q15_ty], []>;
211def int_mips_cmp_le_ph: GCCBuiltin<"__builtin_mips_cmp_le_ph">,
212  Intrinsic<[], [mips_v2q15_ty, mips_v2q15_ty], []>;
213
214//===----------------------------------------------------------------------===//
215// Extracting
216
217def int_mips_extr_s_h: GCCBuiltin<"__builtin_mips_extr_s_h">,
218  Intrinsic<[llvm_i32_ty], [llvm_i64_ty, llvm_i32_ty], []>;
219def int_mips_extr_w: GCCBuiltin<"__builtin_mips_extr_w">,
220  Intrinsic<[llvm_i32_ty], [llvm_i64_ty, llvm_i32_ty], []>;
221def int_mips_extr_rs_w: GCCBuiltin<"__builtin_mips_extr_rs_w">,
222  Intrinsic<[llvm_i32_ty], [llvm_i64_ty, llvm_i32_ty], []>;
223def int_mips_extr_r_w: GCCBuiltin<"__builtin_mips_extr_r_w">,
224  Intrinsic<[llvm_i32_ty], [llvm_i64_ty, llvm_i32_ty], []>;
225def int_mips_extp: GCCBuiltin<"__builtin_mips_extp">,
226  Intrinsic<[llvm_i32_ty], [llvm_i64_ty, llvm_i32_ty], []>;
227def int_mips_extpdp: GCCBuiltin<"__builtin_mips_extpdp">,
228  Intrinsic<[llvm_i32_ty], [llvm_i64_ty, llvm_i32_ty], []>;
229
230//===----------------------------------------------------------------------===//
231// Misc
232
233def int_mips_wrdsp: GCCBuiltin<"__builtin_mips_wrdsp">,
234  Intrinsic<[], [llvm_i32_ty, llvm_i32_ty], []>;
235def int_mips_rddsp: GCCBuiltin<"__builtin_mips_rddsp">,
236  Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrReadMem]>;
237
238def int_mips_insv: GCCBuiltin<"__builtin_mips_insv">,
239  Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [IntrReadMem]>;
240def int_mips_bitrev: GCCBuiltin<"__builtin_mips_bitrev">,
241  Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrNoMem]>;
242
243def int_mips_packrl_ph: GCCBuiltin<"__builtin_mips_packrl_ph">,
244  Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [IntrNoMem]>;
245
246def int_mips_repl_qb: GCCBuiltin<"__builtin_mips_repl_qb">,
247  Intrinsic<[llvm_v4i8_ty], [llvm_i32_ty], [IntrNoMem]>;
248def int_mips_repl_ph: GCCBuiltin<"__builtin_mips_repl_ph">,
249  Intrinsic<[mips_v2q15_ty], [llvm_i32_ty], [IntrNoMem]>;
250
251def int_mips_pick_qb: GCCBuiltin<"__builtin_mips_pick_qb">,
252  Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [IntrReadMem]>;
253def int_mips_pick_ph: GCCBuiltin<"__builtin_mips_pick_ph">,
254  Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [IntrReadMem]>;
255
256def int_mips_mthlip: GCCBuiltin<"__builtin_mips_mthlip">,
257  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty], []>;
258
259def int_mips_bposge32: GCCBuiltin<"__builtin_mips_bposge32">,
260  Intrinsic<[llvm_i32_ty], [], [IntrReadMem]>;
261
262def int_mips_lbux: GCCBuiltin<"__builtin_mips_lbux">,
263  Intrinsic<[llvm_i32_ty], [llvm_ptr_ty, llvm_i32_ty], [IntrReadArgMem]>;
264def int_mips_lhx: GCCBuiltin<"__builtin_mips_lhx">,
265  Intrinsic<[llvm_i32_ty], [llvm_ptr_ty, llvm_i32_ty], [IntrReadArgMem]>;
266def int_mips_lwx: GCCBuiltin<"__builtin_mips_lwx">,
267  Intrinsic<[llvm_i32_ty], [llvm_ptr_ty, llvm_i32_ty], [IntrReadArgMem]>;
268
269//===----------------------------------------------------------------------===//
270// MIPS DSP Rev 2
271
272def int_mips_absq_s_qb: GCCBuiltin<"__builtin_mips_absq_s_qb">,
273  Intrinsic<[mips_v4q7_ty], [mips_v4q7_ty], []>;
274
275def int_mips_addqh_ph: GCCBuiltin<"__builtin_mips_addqh_ph">,
276  Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty],
277            [IntrNoMem, Commutative]>;
278def int_mips_addqh_r_ph: GCCBuiltin<"__builtin_mips_addqh_r_ph">,
279  Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty],
280            [IntrNoMem, Commutative]>;
281def int_mips_addqh_w: GCCBuiltin<"__builtin_mips_addqh_w">,
282  Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty],
283            [IntrNoMem, Commutative]>;
284def int_mips_addqh_r_w: GCCBuiltin<"__builtin_mips_addqh_r_w">,
285  Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty],
286            [IntrNoMem, Commutative]>;
287
288def int_mips_addu_ph: GCCBuiltin<"__builtin_mips_addu_ph">,
289  Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_v2i16_ty], [Commutative]>;
290def int_mips_addu_s_ph: GCCBuiltin<"__builtin_mips_addu_s_ph">,
291  Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_v2i16_ty], [Commutative]>;
292
293def int_mips_adduh_qb: GCCBuiltin<"__builtin_mips_adduh_qb">,
294  Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty],
295            [IntrNoMem, Commutative]>;
296def int_mips_adduh_r_qb: GCCBuiltin<"__builtin_mips_adduh_r_qb">,
297  Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty],
298            [IntrNoMem, Commutative]>;
299
300def int_mips_append: GCCBuiltin<"__builtin_mips_append">,
301  Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
302  [IntrNoMem]>;
303def int_mips_balign: GCCBuiltin<"__builtin_mips_balign">,
304  Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
305  [IntrNoMem]>;
306
307def int_mips_cmpgdu_eq_qb: GCCBuiltin<"__builtin_mips_cmpgdu_eq_qb">,
308  Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [Commutative]>;
309def int_mips_cmpgdu_lt_qb: GCCBuiltin<"__builtin_mips_cmpgdu_lt_qb">,
310  Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
311def int_mips_cmpgdu_le_qb: GCCBuiltin<"__builtin_mips_cmpgdu_le_qb">,
312  Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
313
314def int_mips_dpa_w_ph: GCCBuiltin<"__builtin_mips_dpa_w_ph">,
315  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v2i16_ty, llvm_v2i16_ty],
316            [IntrNoMem]>;
317def int_mips_dps_w_ph: GCCBuiltin<"__builtin_mips_dps_w_ph">,
318  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v2i16_ty, llvm_v2i16_ty],
319            [IntrNoMem]>;
320
321def int_mips_dpaqx_s_w_ph: GCCBuiltin<"__builtin_mips_dpaqx_s_w_ph">,
322  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
323def int_mips_dpaqx_sa_w_ph: GCCBuiltin<"__builtin_mips_dpaqx_sa_w_ph">,
324  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
325def int_mips_dpax_w_ph: GCCBuiltin<"__builtin_mips_dpax_w_ph">,
326  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v2i16_ty, llvm_v2i16_ty],
327            [IntrNoMem]>;
328def int_mips_dpsx_w_ph: GCCBuiltin<"__builtin_mips_dpsx_w_ph">,
329  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v2i16_ty, llvm_v2i16_ty],
330            [IntrNoMem]>;
331def int_mips_dpsqx_s_w_ph: GCCBuiltin<"__builtin_mips_dpsqx_s_w_ph">,
332  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
333def int_mips_dpsqx_sa_w_ph: GCCBuiltin<"__builtin_mips_dpsqx_sa_w_ph">,
334  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
335
336def int_mips_mul_ph: GCCBuiltin<"__builtin_mips_mul_ph">,
337  Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_v2i16_ty], [Commutative]>;
338def int_mips_mul_s_ph: GCCBuiltin<"__builtin_mips_mul_s_ph">,
339  Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_v2i16_ty], [Commutative]>;
340
341def int_mips_mulq_rs_w: GCCBuiltin<"__builtin_mips_mulq_rs_w">,
342  Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty], [Commutative]>;
343def int_mips_mulq_s_ph: GCCBuiltin<"__builtin_mips_mulq_s_ph">,
344  Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [Commutative]>;
345def int_mips_mulq_s_w: GCCBuiltin<"__builtin_mips_mulq_s_w">,
346  Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty], [Commutative]>;
347def int_mips_mulsa_w_ph: GCCBuiltin<"__builtin_mips_mulsa_w_ph">,
348  Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v2i16_ty, llvm_v2i16_ty],
349            [IntrNoMem]>;
350
351def int_mips_precr_qb_ph: GCCBuiltin<"__builtin_mips_precr_qb_ph">,
352  Intrinsic<[llvm_v4i8_ty], [llvm_v2i16_ty, llvm_v2i16_ty], []>;
353def int_mips_precr_sra_ph_w: GCCBuiltin<"__builtin_mips_precr_sra_ph_w">,
354  Intrinsic<[llvm_v2i16_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
355            [IntrNoMem]>;
356def int_mips_precr_sra_r_ph_w: GCCBuiltin<"__builtin_mips_precr_sra_r_ph_w">,
357  Intrinsic<[llvm_v2i16_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
358            [IntrNoMem]>;
359
360def int_mips_prepend: GCCBuiltin<"__builtin_mips_prepend">,
361  Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
362  [IntrNoMem]>;
363
364def int_mips_shra_qb: GCCBuiltin<"__builtin_mips_shra_qb">,
365  Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_i32_ty], [IntrNoMem]>;
366def int_mips_shra_r_qb: GCCBuiltin<"__builtin_mips_shra_r_qb">,
367  Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_i32_ty], [IntrNoMem]>;
368def int_mips_shrl_ph: GCCBuiltin<"__builtin_mips_shrl_ph">,
369  Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_i32_ty], [IntrNoMem]>;
370
371def int_mips_subqh_ph: GCCBuiltin<"__builtin_mips_subqh_ph">,
372  Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [IntrNoMem]>;
373def int_mips_subqh_r_ph: GCCBuiltin<"__builtin_mips_subqh_r_ph">,
374  Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [IntrNoMem]>;
375def int_mips_subqh_w: GCCBuiltin<"__builtin_mips_subqh_w">,
376  Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty], [IntrNoMem]>;
377def int_mips_subqh_r_w: GCCBuiltin<"__builtin_mips_subqh_r_w">,
378  Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty], [IntrNoMem]>;
379
380def int_mips_subu_ph: GCCBuiltin<"__builtin_mips_subu_ph">,
381  Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_v2i16_ty], []>;
382def int_mips_subu_s_ph: GCCBuiltin<"__builtin_mips_subu_s_ph">,
383  Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_v2i16_ty], []>;
384
385def int_mips_subuh_qb: GCCBuiltin<"__builtin_mips_subuh_qb">,
386  Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [IntrNoMem]>;
387def int_mips_subuh_r_qb: GCCBuiltin<"__builtin_mips_subuh_r_qb">,
388  Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [IntrNoMem]>;
389
390//===----------------------------------------------------------------------===//
391// MIPS MSA
392
393//===----------------------------------------------------------------------===//
394// Addition/subtraction
395
396def int_mips_add_a_b : GCCBuiltin<"__builtin_msa_add_a_b">,
397  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
398  [Commutative, IntrNoMem]>;
399def int_mips_add_a_h : GCCBuiltin<"__builtin_msa_add_a_h">,
400  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
401  [Commutative, IntrNoMem]>;
402def int_mips_add_a_w : GCCBuiltin<"__builtin_msa_add_a_w">,
403  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
404  [Commutative, IntrNoMem]>;
405def int_mips_add_a_d : GCCBuiltin<"__builtin_msa_add_a_d">,
406  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
407  [Commutative, IntrNoMem]>;
408
409def int_mips_adds_a_b : GCCBuiltin<"__builtin_msa_adds_a_b">,
410  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
411  [Commutative, IntrNoMem]>;
412def int_mips_adds_a_h : GCCBuiltin<"__builtin_msa_adds_a_h">,
413  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
414  [Commutative, IntrNoMem]>;
415def int_mips_adds_a_w : GCCBuiltin<"__builtin_msa_adds_a_w">,
416  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
417  [Commutative, IntrNoMem]>;
418def int_mips_adds_a_d : GCCBuiltin<"__builtin_msa_adds_a_d">,
419  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
420  [Commutative, IntrNoMem]>;
421
422def int_mips_adds_s_b : GCCBuiltin<"__builtin_msa_adds_s_b">,
423  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
424  [Commutative, IntrNoMem]>;
425def int_mips_adds_s_h : GCCBuiltin<"__builtin_msa_adds_s_h">,
426  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
427  [Commutative, IntrNoMem]>;
428def int_mips_adds_s_w : GCCBuiltin<"__builtin_msa_adds_s_w">,
429  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
430  [Commutative, IntrNoMem]>;
431def int_mips_adds_s_d : GCCBuiltin<"__builtin_msa_adds_s_d">,
432  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
433  [Commutative, IntrNoMem]>;
434
435def int_mips_adds_u_b : GCCBuiltin<"__builtin_msa_adds_u_b">,
436  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
437  [Commutative, IntrNoMem]>;
438def int_mips_adds_u_h : GCCBuiltin<"__builtin_msa_adds_u_h">,
439  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
440  [Commutative, IntrNoMem]>;
441def int_mips_adds_u_w : GCCBuiltin<"__builtin_msa_adds_u_w">,
442  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
443  [Commutative, IntrNoMem]>;
444def int_mips_adds_u_d : GCCBuiltin<"__builtin_msa_adds_u_d">,
445  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
446  [Commutative, IntrNoMem]>;
447
448def int_mips_addv_b : GCCBuiltin<"__builtin_msa_addv_b">,
449  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
450  [Commutative, IntrNoMem]>;
451def int_mips_addv_h : GCCBuiltin<"__builtin_msa_addv_h">,
452  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
453  [Commutative, IntrNoMem]>;
454def int_mips_addv_w : GCCBuiltin<"__builtin_msa_addv_w">,
455  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
456  [Commutative, IntrNoMem]>;
457def int_mips_addv_d : GCCBuiltin<"__builtin_msa_addv_d">,
458  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
459  [Commutative, IntrNoMem]>;
460
461def int_mips_addvi_b : GCCBuiltin<"__builtin_msa_addvi_b">,
462  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty],
463  [Commutative, IntrNoMem]>;
464def int_mips_addvi_h : GCCBuiltin<"__builtin_msa_addvi_h">,
465  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty],
466  [Commutative, IntrNoMem]>;
467def int_mips_addvi_w : GCCBuiltin<"__builtin_msa_addvi_w">,
468  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty],
469  [Commutative, IntrNoMem]>;
470def int_mips_addvi_d : GCCBuiltin<"__builtin_msa_addvi_d">,
471  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty],
472  [Commutative, IntrNoMem]>;
473
474def int_mips_and_v : GCCBuiltin<"__builtin_msa_and_v">,
475  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
476
477def int_mips_andi_b : GCCBuiltin<"__builtin_msa_andi_b">,
478  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
479
480def int_mips_asub_s_b : GCCBuiltin<"__builtin_msa_asub_s_b">,
481  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
482def int_mips_asub_s_h : GCCBuiltin<"__builtin_msa_asub_s_h">,
483  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
484def int_mips_asub_s_w : GCCBuiltin<"__builtin_msa_asub_s_w">,
485  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
486def int_mips_asub_s_d : GCCBuiltin<"__builtin_msa_asub_s_d">,
487  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
488
489def int_mips_asub_u_b : GCCBuiltin<"__builtin_msa_asub_u_b">,
490  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
491def int_mips_asub_u_h : GCCBuiltin<"__builtin_msa_asub_u_h">,
492  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
493def int_mips_asub_u_w : GCCBuiltin<"__builtin_msa_asub_u_w">,
494  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
495def int_mips_asub_u_d : GCCBuiltin<"__builtin_msa_asub_u_d">,
496  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
497
498def int_mips_ave_s_b : GCCBuiltin<"__builtin_msa_ave_s_b">,
499  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
500  [Commutative, IntrNoMem]>;
501def int_mips_ave_s_h : GCCBuiltin<"__builtin_msa_ave_s_h">,
502  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
503  [Commutative, IntrNoMem]>;
504def int_mips_ave_s_w : GCCBuiltin<"__builtin_msa_ave_s_w">,
505  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
506  [Commutative, IntrNoMem]>;
507def int_mips_ave_s_d : GCCBuiltin<"__builtin_msa_ave_s_d">,
508  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
509  [Commutative, IntrNoMem]>;
510
511def int_mips_ave_u_b : GCCBuiltin<"__builtin_msa_ave_u_b">,
512  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
513  [Commutative, IntrNoMem]>;
514def int_mips_ave_u_h : GCCBuiltin<"__builtin_msa_ave_u_h">,
515  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
516  [Commutative, IntrNoMem]>;
517def int_mips_ave_u_w : GCCBuiltin<"__builtin_msa_ave_u_w">,
518  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
519  [Commutative, IntrNoMem]>;
520def int_mips_ave_u_d : GCCBuiltin<"__builtin_msa_ave_u_d">,
521  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
522  [Commutative, IntrNoMem]>;
523
524def int_mips_aver_s_b : GCCBuiltin<"__builtin_msa_aver_s_b">,
525  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
526  [Commutative, IntrNoMem]>;
527def int_mips_aver_s_h : GCCBuiltin<"__builtin_msa_aver_s_h">,
528  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
529  [Commutative, IntrNoMem]>;
530def int_mips_aver_s_w : GCCBuiltin<"__builtin_msa_aver_s_w">,
531  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
532  [Commutative, IntrNoMem]>;
533def int_mips_aver_s_d : GCCBuiltin<"__builtin_msa_aver_s_d">,
534  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
535  [Commutative, IntrNoMem]>;
536
537def int_mips_aver_u_b : GCCBuiltin<"__builtin_msa_aver_u_b">,
538  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
539  [Commutative, IntrNoMem]>;
540def int_mips_aver_u_h : GCCBuiltin<"__builtin_msa_aver_u_h">,
541  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
542  [Commutative, IntrNoMem]>;
543def int_mips_aver_u_w : GCCBuiltin<"__builtin_msa_aver_u_w">,
544  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
545  [Commutative, IntrNoMem]>;
546def int_mips_aver_u_d : GCCBuiltin<"__builtin_msa_aver_u_d">,
547  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
548  [Commutative, IntrNoMem]>;
549
550def int_mips_bclr_b : GCCBuiltin<"__builtin_msa_bclr_b">,
551  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
552def int_mips_bclr_h : GCCBuiltin<"__builtin_msa_bclr_h">,
553  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
554def int_mips_bclr_w : GCCBuiltin<"__builtin_msa_bclr_w">,
555  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
556def int_mips_bclr_d : GCCBuiltin<"__builtin_msa_bclr_d">,
557  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
558
559def int_mips_bclri_b : GCCBuiltin<"__builtin_msa_bclri_b">,
560  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
561def int_mips_bclri_h : GCCBuiltin<"__builtin_msa_bclri_h">,
562  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
563def int_mips_bclri_w : GCCBuiltin<"__builtin_msa_bclri_w">,
564  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
565def int_mips_bclri_d : GCCBuiltin<"__builtin_msa_bclri_d">,
566  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
567
568def int_mips_binsl_b : GCCBuiltin<"__builtin_msa_binsl_b">,
569  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
570def int_mips_binsl_h : GCCBuiltin<"__builtin_msa_binsl_h">,
571  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
572def int_mips_binsl_w : GCCBuiltin<"__builtin_msa_binsl_w">,
573  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
574def int_mips_binsl_d : GCCBuiltin<"__builtin_msa_binsl_d">,
575  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
576
577def int_mips_binsli_b : GCCBuiltin<"__builtin_msa_binsli_b">,
578  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
579def int_mips_binsli_h : GCCBuiltin<"__builtin_msa_binsli_h">,
580  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
581def int_mips_binsli_w : GCCBuiltin<"__builtin_msa_binsli_w">,
582  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
583def int_mips_binsli_d : GCCBuiltin<"__builtin_msa_binsli_d">,
584  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
585
586def int_mips_binsr_b : GCCBuiltin<"__builtin_msa_binsr_b">,
587  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
588def int_mips_binsr_h : GCCBuiltin<"__builtin_msa_binsr_h">,
589  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
590def int_mips_binsr_w : GCCBuiltin<"__builtin_msa_binsr_w">,
591  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
592def int_mips_binsr_d : GCCBuiltin<"__builtin_msa_binsr_d">,
593  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
594
595def int_mips_binsri_b : GCCBuiltin<"__builtin_msa_binsri_b">,
596  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
597def int_mips_binsri_h : GCCBuiltin<"__builtin_msa_binsri_h">,
598  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
599def int_mips_binsri_w : GCCBuiltin<"__builtin_msa_binsri_w">,
600  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
601def int_mips_binsri_d : GCCBuiltin<"__builtin_msa_binsri_d">,
602  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
603
604def int_mips_bmnz_v : GCCBuiltin<"__builtin_msa_bmnz_v">,
605  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
606
607def int_mips_bmnzi_b : GCCBuiltin<"__builtin_msa_bmnzi_b">,
608  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
609
610def int_mips_bmz_v : GCCBuiltin<"__builtin_msa_bmz_v">,
611  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
612
613def int_mips_bmzi_b : GCCBuiltin<"__builtin_msa_bmzi_b">,
614  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
615
616def int_mips_bneg_b : GCCBuiltin<"__builtin_msa_bneg_b">,
617  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
618def int_mips_bneg_h : GCCBuiltin<"__builtin_msa_bneg_h">,
619  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
620def int_mips_bneg_w : GCCBuiltin<"__builtin_msa_bneg_w">,
621  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
622def int_mips_bneg_d : GCCBuiltin<"__builtin_msa_bneg_d">,
623  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
624
625def int_mips_bnegi_b : GCCBuiltin<"__builtin_msa_bnegi_b">,
626  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
627def int_mips_bnegi_h : GCCBuiltin<"__builtin_msa_bnegi_h">,
628  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
629def int_mips_bnegi_w : GCCBuiltin<"__builtin_msa_bnegi_w">,
630  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
631def int_mips_bnegi_d : GCCBuiltin<"__builtin_msa_bnegi_d">,
632  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
633
634def int_mips_bnz_b : GCCBuiltin<"__builtin_msa_bnz_b">,
635  Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty], [IntrNoMem]>;
636def int_mips_bnz_h : GCCBuiltin<"__builtin_msa_bnz_h">,
637  Intrinsic<[llvm_i32_ty], [llvm_v8i16_ty], [IntrNoMem]>;
638def int_mips_bnz_w : GCCBuiltin<"__builtin_msa_bnz_w">,
639  Intrinsic<[llvm_i32_ty], [llvm_v4i32_ty], [IntrNoMem]>;
640def int_mips_bnz_d : GCCBuiltin<"__builtin_msa_bnz_d">,
641  Intrinsic<[llvm_i32_ty], [llvm_v2i64_ty], [IntrNoMem]>;
642
643def int_mips_bnz_v : GCCBuiltin<"__builtin_msa_bnz_v">,
644  Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty], [IntrNoMem]>;
645
646def int_mips_bsel_v : GCCBuiltin<"__builtin_msa_bsel_v">,
647  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty],
648            [IntrNoMem]>;
649
650def int_mips_bseli_b : GCCBuiltin<"__builtin_msa_bseli_b">,
651  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty],
652            [IntrNoMem]>;
653
654def int_mips_bset_b : GCCBuiltin<"__builtin_msa_bset_b">,
655  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
656def int_mips_bset_h : GCCBuiltin<"__builtin_msa_bset_h">,
657  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
658def int_mips_bset_w : GCCBuiltin<"__builtin_msa_bset_w">,
659  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
660def int_mips_bset_d : GCCBuiltin<"__builtin_msa_bset_d">,
661  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
662
663def int_mips_bseti_b : GCCBuiltin<"__builtin_msa_bseti_b">,
664  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
665def int_mips_bseti_h : GCCBuiltin<"__builtin_msa_bseti_h">,
666  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
667def int_mips_bseti_w : GCCBuiltin<"__builtin_msa_bseti_w">,
668  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
669def int_mips_bseti_d : GCCBuiltin<"__builtin_msa_bseti_d">,
670  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
671
672def int_mips_bz_b : GCCBuiltin<"__builtin_msa_bz_b">,
673  Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty], [IntrNoMem]>;
674def int_mips_bz_h : GCCBuiltin<"__builtin_msa_bz_h">,
675  Intrinsic<[llvm_i32_ty], [llvm_v8i16_ty], [IntrNoMem]>;
676def int_mips_bz_w : GCCBuiltin<"__builtin_msa_bz_w">,
677  Intrinsic<[llvm_i32_ty], [llvm_v4i32_ty], [IntrNoMem]>;
678def int_mips_bz_d : GCCBuiltin<"__builtin_msa_bz_d">,
679  Intrinsic<[llvm_i32_ty], [llvm_v2i64_ty], [IntrNoMem]>;
680
681def int_mips_bz_v : GCCBuiltin<"__builtin_msa_bz_v">,
682  Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty], [IntrNoMem]>;
683
684def int_mips_ceq_b : GCCBuiltin<"__builtin_msa_ceq_b">,
685  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
686def int_mips_ceq_h : GCCBuiltin<"__builtin_msa_ceq_h">,
687  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
688def int_mips_ceq_w : GCCBuiltin<"__builtin_msa_ceq_w">,
689  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
690def int_mips_ceq_d : GCCBuiltin<"__builtin_msa_ceq_d">,
691  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
692
693def int_mips_ceqi_b : GCCBuiltin<"__builtin_msa_ceqi_b">,
694  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
695def int_mips_ceqi_h : GCCBuiltin<"__builtin_msa_ceqi_h">,
696  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
697def int_mips_ceqi_w : GCCBuiltin<"__builtin_msa_ceqi_w">,
698  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
699def int_mips_ceqi_d : GCCBuiltin<"__builtin_msa_ceqi_d">,
700  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
701
702def int_mips_cfcmsa : GCCBuiltin<"__builtin_msa_cfcmsa">,
703  Intrinsic<[llvm_i32_ty], [llvm_i32_ty], []>;
704
705def int_mips_cle_s_b : GCCBuiltin<"__builtin_msa_cle_s_b">,
706  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
707def int_mips_cle_s_h : GCCBuiltin<"__builtin_msa_cle_s_h">,
708  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
709def int_mips_cle_s_w : GCCBuiltin<"__builtin_msa_cle_s_w">,
710  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
711def int_mips_cle_s_d : GCCBuiltin<"__builtin_msa_cle_s_d">,
712  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
713
714def int_mips_cle_u_b : GCCBuiltin<"__builtin_msa_cle_u_b">,
715  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
716def int_mips_cle_u_h : GCCBuiltin<"__builtin_msa_cle_u_h">,
717  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
718def int_mips_cle_u_w : GCCBuiltin<"__builtin_msa_cle_u_w">,
719  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
720def int_mips_cle_u_d : GCCBuiltin<"__builtin_msa_cle_u_d">,
721  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
722
723def int_mips_clei_s_b : GCCBuiltin<"__builtin_msa_clei_s_b">,
724  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
725def int_mips_clei_s_h : GCCBuiltin<"__builtin_msa_clei_s_h">,
726  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
727def int_mips_clei_s_w : GCCBuiltin<"__builtin_msa_clei_s_w">,
728  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
729def int_mips_clei_s_d : GCCBuiltin<"__builtin_msa_clei_s_d">,
730  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
731
732def int_mips_clei_u_b : GCCBuiltin<"__builtin_msa_clei_u_b">,
733  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
734def int_mips_clei_u_h : GCCBuiltin<"__builtin_msa_clei_u_h">,
735  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
736def int_mips_clei_u_w : GCCBuiltin<"__builtin_msa_clei_u_w">,
737  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
738def int_mips_clei_u_d : GCCBuiltin<"__builtin_msa_clei_u_d">,
739  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
740
741def int_mips_clt_s_b : GCCBuiltin<"__builtin_msa_clt_s_b">,
742  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
743def int_mips_clt_s_h : GCCBuiltin<"__builtin_msa_clt_s_h">,
744  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
745def int_mips_clt_s_w : GCCBuiltin<"__builtin_msa_clt_s_w">,
746  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
747def int_mips_clt_s_d : GCCBuiltin<"__builtin_msa_clt_s_d">,
748  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
749
750def int_mips_clt_u_b : GCCBuiltin<"__builtin_msa_clt_u_b">,
751  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
752def int_mips_clt_u_h : GCCBuiltin<"__builtin_msa_clt_u_h">,
753  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
754def int_mips_clt_u_w : GCCBuiltin<"__builtin_msa_clt_u_w">,
755  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
756def int_mips_clt_u_d : GCCBuiltin<"__builtin_msa_clt_u_d">,
757  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
758
759def int_mips_clti_s_b : GCCBuiltin<"__builtin_msa_clti_s_b">,
760  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
761def int_mips_clti_s_h : GCCBuiltin<"__builtin_msa_clti_s_h">,
762  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
763def int_mips_clti_s_w : GCCBuiltin<"__builtin_msa_clti_s_w">,
764  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
765def int_mips_clti_s_d : GCCBuiltin<"__builtin_msa_clti_s_d">,
766  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
767
768def int_mips_clti_u_b : GCCBuiltin<"__builtin_msa_clti_u_b">,
769  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
770def int_mips_clti_u_h : GCCBuiltin<"__builtin_msa_clti_u_h">,
771  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
772def int_mips_clti_u_w : GCCBuiltin<"__builtin_msa_clti_u_w">,
773  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
774def int_mips_clti_u_d : GCCBuiltin<"__builtin_msa_clti_u_d">,
775  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
776
777def int_mips_copy_s_b : GCCBuiltin<"__builtin_msa_copy_s_b">,
778  Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
779def int_mips_copy_s_h : GCCBuiltin<"__builtin_msa_copy_s_h">,
780  Intrinsic<[llvm_i32_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
781def int_mips_copy_s_w : GCCBuiltin<"__builtin_msa_copy_s_w">,
782  Intrinsic<[llvm_i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
783def int_mips_copy_s_d : GCCBuiltin<"__builtin_msa_copy_s_d">,
784  Intrinsic<[llvm_i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
785
786def int_mips_copy_u_b : GCCBuiltin<"__builtin_msa_copy_u_b">,
787  Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
788def int_mips_copy_u_h : GCCBuiltin<"__builtin_msa_copy_u_h">,
789  Intrinsic<[llvm_i32_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
790def int_mips_copy_u_w : GCCBuiltin<"__builtin_msa_copy_u_w">,
791  Intrinsic<[llvm_i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
792def int_mips_copy_u_d : GCCBuiltin<"__builtin_msa_copy_u_d">,
793  Intrinsic<[llvm_i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
794
795def int_mips_ctcmsa : GCCBuiltin<"__builtin_msa_ctcmsa">,
796  Intrinsic<[], [llvm_i32_ty, llvm_i32_ty], []>;
797
798def int_mips_div_s_b : GCCBuiltin<"__builtin_msa_div_s_b">,
799  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
800def int_mips_div_s_h : GCCBuiltin<"__builtin_msa_div_s_h">,
801  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
802def int_mips_div_s_w : GCCBuiltin<"__builtin_msa_div_s_w">,
803  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
804def int_mips_div_s_d : GCCBuiltin<"__builtin_msa_div_s_d">,
805  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
806
807def int_mips_div_u_b : GCCBuiltin<"__builtin_msa_div_u_b">,
808  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
809def int_mips_div_u_h : GCCBuiltin<"__builtin_msa_div_u_h">,
810  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
811def int_mips_div_u_w : GCCBuiltin<"__builtin_msa_div_u_w">,
812  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
813def int_mips_div_u_d : GCCBuiltin<"__builtin_msa_div_u_d">,
814  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
815
816def int_mips_dotp_s_h : GCCBuiltin<"__builtin_msa_dotp_s_h">,
817  Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
818def int_mips_dotp_s_w : GCCBuiltin<"__builtin_msa_dotp_s_w">,
819  Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
820def int_mips_dotp_s_d : GCCBuiltin<"__builtin_msa_dotp_s_d">,
821  Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
822
823def int_mips_dotp_u_h : GCCBuiltin<"__builtin_msa_dotp_u_h">,
824  Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
825def int_mips_dotp_u_w : GCCBuiltin<"__builtin_msa_dotp_u_w">,
826  Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
827def int_mips_dotp_u_d : GCCBuiltin<"__builtin_msa_dotp_u_d">,
828  Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
829
830def int_mips_dpadd_s_h : GCCBuiltin<"__builtin_msa_dpadd_s_h">,
831  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v16i8_ty, llvm_v16i8_ty],
832  [IntrNoMem]>;
833def int_mips_dpadd_s_w : GCCBuiltin<"__builtin_msa_dpadd_s_w">,
834  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v8i16_ty, llvm_v8i16_ty],
835  [IntrNoMem]>;
836def int_mips_dpadd_s_d : GCCBuiltin<"__builtin_msa_dpadd_s_d">,
837  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v4i32_ty, llvm_v4i32_ty],
838  [IntrNoMem]>;
839
840def int_mips_dpadd_u_h : GCCBuiltin<"__builtin_msa_dpadd_u_h">,
841  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v16i8_ty, llvm_v16i8_ty],
842  [IntrNoMem]>;
843def int_mips_dpadd_u_w : GCCBuiltin<"__builtin_msa_dpadd_u_w">,
844  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v8i16_ty, llvm_v8i16_ty],
845  [IntrNoMem]>;
846def int_mips_dpadd_u_d : GCCBuiltin<"__builtin_msa_dpadd_u_d">,
847  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v4i32_ty, llvm_v4i32_ty],
848  [IntrNoMem]>;
849
850def int_mips_dpsub_s_h : GCCBuiltin<"__builtin_msa_dpsub_s_h">,
851  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v16i8_ty, llvm_v16i8_ty],
852  [IntrNoMem]>;
853def int_mips_dpsub_s_w : GCCBuiltin<"__builtin_msa_dpsub_s_w">,
854  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v8i16_ty, llvm_v8i16_ty],
855  [IntrNoMem]>;
856def int_mips_dpsub_s_d : GCCBuiltin<"__builtin_msa_dpsub_s_d">,
857  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v4i32_ty, llvm_v4i32_ty],
858  [IntrNoMem]>;
859
860def int_mips_dpsub_u_h : GCCBuiltin<"__builtin_msa_dpsub_u_h">,
861  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v16i8_ty, llvm_v16i8_ty],
862  [IntrNoMem]>;
863def int_mips_dpsub_u_w : GCCBuiltin<"__builtin_msa_dpsub_u_w">,
864  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v8i16_ty, llvm_v8i16_ty],
865  [IntrNoMem]>;
866def int_mips_dpsub_u_d : GCCBuiltin<"__builtin_msa_dpsub_u_d">,
867  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v4i32_ty, llvm_v4i32_ty],
868  [IntrNoMem]>;
869
870def int_mips_fadd_w : GCCBuiltin<"__builtin_msa_fadd_w">,
871  Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
872def int_mips_fadd_d : GCCBuiltin<"__builtin_msa_fadd_d">,
873  Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
874
875def int_mips_fcaf_w : GCCBuiltin<"__builtin_msa_fcaf_w">,
876  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
877def int_mips_fcaf_d : GCCBuiltin<"__builtin_msa_fcaf_d">,
878  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
879
880def int_mips_fceq_w : GCCBuiltin<"__builtin_msa_fceq_w">,
881  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
882def int_mips_fceq_d : GCCBuiltin<"__builtin_msa_fceq_d">,
883  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
884
885def int_mips_fcle_w : GCCBuiltin<"__builtin_msa_fcle_w">,
886  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
887def int_mips_fcle_d : GCCBuiltin<"__builtin_msa_fcle_d">,
888  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
889
890def int_mips_fclt_w : GCCBuiltin<"__builtin_msa_fclt_w">,
891  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
892def int_mips_fclt_d : GCCBuiltin<"__builtin_msa_fclt_d">,
893  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
894
895def int_mips_fclass_w : GCCBuiltin<"__builtin_msa_fclass_w">,
896  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
897def int_mips_fclass_d : GCCBuiltin<"__builtin_msa_fclass_d">,
898  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
899
900def int_mips_fcne_w : GCCBuiltin<"__builtin_msa_fcne_w">,
901  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
902def int_mips_fcne_d : GCCBuiltin<"__builtin_msa_fcne_d">,
903  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
904
905def int_mips_fcor_w : GCCBuiltin<"__builtin_msa_fcor_w">,
906  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
907def int_mips_fcor_d : GCCBuiltin<"__builtin_msa_fcor_d">,
908  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
909
910def int_mips_fcueq_w : GCCBuiltin<"__builtin_msa_fcueq_w">,
911  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
912def int_mips_fcueq_d : GCCBuiltin<"__builtin_msa_fcueq_d">,
913  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
914
915def int_mips_fcule_w : GCCBuiltin<"__builtin_msa_fcule_w">,
916  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
917def int_mips_fcule_d : GCCBuiltin<"__builtin_msa_fcule_d">,
918  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
919
920def int_mips_fcult_w : GCCBuiltin<"__builtin_msa_fcult_w">,
921  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
922def int_mips_fcult_d : GCCBuiltin<"__builtin_msa_fcult_d">,
923  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
924
925def int_mips_fcun_w : GCCBuiltin<"__builtin_msa_fcun_w">,
926  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
927def int_mips_fcun_d : GCCBuiltin<"__builtin_msa_fcun_d">,
928  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
929
930def int_mips_fcune_w : GCCBuiltin<"__builtin_msa_fcune_w">,
931  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
932def int_mips_fcune_d : GCCBuiltin<"__builtin_msa_fcune_d">,
933  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
934
935def int_mips_fdiv_w : GCCBuiltin<"__builtin_msa_fdiv_w">,
936  Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
937def int_mips_fdiv_d : GCCBuiltin<"__builtin_msa_fdiv_d">,
938  Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
939
940def int_mips_fexdo_h : GCCBuiltin<"__builtin_msa_fexdo_h">,
941  Intrinsic<[llvm_v8f16_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
942def int_mips_fexdo_w : GCCBuiltin<"__builtin_msa_fexdo_w">,
943  Intrinsic<[llvm_v4f32_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
944
945def int_mips_fexp2_w : GCCBuiltin<"__builtin_msa_fexp2_w">,
946  Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4i32_ty], [IntrNoMem]>;
947def int_mips_fexp2_d : GCCBuiltin<"__builtin_msa_fexp2_d">,
948  Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2i64_ty], [IntrNoMem]>;
949
950def int_mips_fexupl_w : GCCBuiltin<"__builtin_msa_fexupl_w">,
951  Intrinsic<[llvm_v4f32_ty], [llvm_v8f16_ty], [IntrNoMem]>;
952def int_mips_fexupl_d : GCCBuiltin<"__builtin_msa_fexupl_d">,
953  Intrinsic<[llvm_v2f64_ty], [llvm_v4f32_ty], [IntrNoMem]>;
954
955def int_mips_fexupr_w : GCCBuiltin<"__builtin_msa_fexupr_w">,
956  Intrinsic<[llvm_v4f32_ty], [llvm_v8f16_ty], [IntrNoMem]>;
957def int_mips_fexupr_d : GCCBuiltin<"__builtin_msa_fexupr_d">,
958  Intrinsic<[llvm_v2f64_ty], [llvm_v4f32_ty], [IntrNoMem]>;
959
960def int_mips_ffint_s_w : GCCBuiltin<"__builtin_msa_ffint_s_w">,
961  Intrinsic<[llvm_v4f32_ty], [llvm_v4i32_ty], [IntrNoMem]>;
962def int_mips_ffint_s_d : GCCBuiltin<"__builtin_msa_ffint_s_d">,
963  Intrinsic<[llvm_v2f64_ty], [llvm_v2i64_ty], [IntrNoMem]>;
964
965def int_mips_ffint_u_w : GCCBuiltin<"__builtin_msa_ffint_u_w">,
966  Intrinsic<[llvm_v4f32_ty], [llvm_v4i32_ty], [IntrNoMem]>;
967def int_mips_ffint_u_d : GCCBuiltin<"__builtin_msa_ffint_u_d">,
968  Intrinsic<[llvm_v2f64_ty], [llvm_v2i64_ty], [IntrNoMem]>;
969
970def int_mips_ffql_w : GCCBuiltin<"__builtin_msa_ffql_w">,
971  Intrinsic<[llvm_v4f32_ty], [llvm_v8i16_ty], [IntrNoMem]>;
972def int_mips_ffql_d : GCCBuiltin<"__builtin_msa_ffql_d">,
973  Intrinsic<[llvm_v2f64_ty], [llvm_v4i32_ty], [IntrNoMem]>;
974
975def int_mips_ffqr_w : GCCBuiltin<"__builtin_msa_ffqr_w">,
976  Intrinsic<[llvm_v4f32_ty], [llvm_v8i16_ty], [IntrNoMem]>;
977def int_mips_ffqr_d : GCCBuiltin<"__builtin_msa_ffqr_d">,
978  Intrinsic<[llvm_v2f64_ty], [llvm_v4i32_ty], [IntrNoMem]>;
979
980def int_mips_fill_b : GCCBuiltin<"__builtin_msa_fill_b">,
981  Intrinsic<[llvm_v16i8_ty], [llvm_i32_ty], [IntrNoMem]>;
982def int_mips_fill_h : GCCBuiltin<"__builtin_msa_fill_h">,
983  Intrinsic<[llvm_v8i16_ty], [llvm_i32_ty], [IntrNoMem]>;
984def int_mips_fill_w : GCCBuiltin<"__builtin_msa_fill_w">,
985  Intrinsic<[llvm_v4i32_ty], [llvm_i32_ty], [IntrNoMem]>;
986def int_mips_fill_d : GCCBuiltin<"__builtin_msa_fill_d">,
987  Intrinsic<[llvm_v2i64_ty], [llvm_i64_ty], [IntrNoMem]>;
988
989def int_mips_flog2_w : GCCBuiltin<"__builtin_msa_flog2_w">,
990  Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
991def int_mips_flog2_d : GCCBuiltin<"__builtin_msa_flog2_d">,
992  Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
993
994def int_mips_fmadd_w : GCCBuiltin<"__builtin_msa_fmadd_w">,
995  Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty],
996            [IntrNoMem]>;
997def int_mips_fmadd_d : GCCBuiltin<"__builtin_msa_fmadd_d">,
998  Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty],
999            [IntrNoMem]>;
1000
1001def int_mips_fmax_w : GCCBuiltin<"__builtin_msa_fmax_w">,
1002  Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
1003def int_mips_fmax_d : GCCBuiltin<"__builtin_msa_fmax_d">,
1004  Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
1005
1006def int_mips_fmax_a_w : GCCBuiltin<"__builtin_msa_fmax_a_w">,
1007  Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
1008def int_mips_fmax_a_d : GCCBuiltin<"__builtin_msa_fmax_a_d">,
1009  Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
1010
1011def int_mips_fmin_w : GCCBuiltin<"__builtin_msa_fmin_w">,
1012  Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
1013def int_mips_fmin_d : GCCBuiltin<"__builtin_msa_fmin_d">,
1014  Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
1015
1016def int_mips_fmin_a_w : GCCBuiltin<"__builtin_msa_fmin_a_w">,
1017  Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
1018def int_mips_fmin_a_d : GCCBuiltin<"__builtin_msa_fmin_a_d">,
1019  Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
1020
1021def int_mips_fmsub_w : GCCBuiltin<"__builtin_msa_fmsub_w">,
1022  Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty],
1023            [IntrNoMem]>;
1024def int_mips_fmsub_d : GCCBuiltin<"__builtin_msa_fmsub_d">,
1025  Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty],
1026            [IntrNoMem]>;
1027
1028def int_mips_fmul_w : GCCBuiltin<"__builtin_msa_fmul_w">,
1029  Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
1030def int_mips_fmul_d : GCCBuiltin<"__builtin_msa_fmul_d">,
1031  Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
1032
1033def int_mips_frint_w : GCCBuiltin<"__builtin_msa_frint_w">,
1034  Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
1035def int_mips_frint_d : GCCBuiltin<"__builtin_msa_frint_d">,
1036  Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
1037
1038def int_mips_frcp_w : GCCBuiltin<"__builtin_msa_frcp_w">,
1039  Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
1040def int_mips_frcp_d : GCCBuiltin<"__builtin_msa_frcp_d">,
1041  Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
1042
1043def int_mips_frsqrt_w : GCCBuiltin<"__builtin_msa_frsqrt_w">,
1044  Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
1045def int_mips_frsqrt_d : GCCBuiltin<"__builtin_msa_frsqrt_d">,
1046  Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
1047
1048def int_mips_fsaf_w : GCCBuiltin<"__builtin_msa_fsaf_w">,
1049  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
1050def int_mips_fsaf_d : GCCBuiltin<"__builtin_msa_fsaf_d">,
1051  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
1052
1053def int_mips_fseq_w : GCCBuiltin<"__builtin_msa_fseq_w">,
1054  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
1055def int_mips_fseq_d : GCCBuiltin<"__builtin_msa_fseq_d">,
1056  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
1057
1058def int_mips_fsle_w : GCCBuiltin<"__builtin_msa_fsle_w">,
1059  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
1060def int_mips_fsle_d : GCCBuiltin<"__builtin_msa_fsle_d">,
1061  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
1062
1063def int_mips_fslt_w : GCCBuiltin<"__builtin_msa_fslt_w">,
1064  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
1065def int_mips_fslt_d : GCCBuiltin<"__builtin_msa_fslt_d">,
1066  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
1067
1068def int_mips_fsne_w : GCCBuiltin<"__builtin_msa_fsne_w">,
1069  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
1070def int_mips_fsne_d : GCCBuiltin<"__builtin_msa_fsne_d">,
1071  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
1072
1073def int_mips_fsor_w : GCCBuiltin<"__builtin_msa_fsor_w">,
1074  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
1075def int_mips_fsor_d : GCCBuiltin<"__builtin_msa_fsor_d">,
1076  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
1077
1078def int_mips_fsqrt_w : GCCBuiltin<"__builtin_msa_fsqrt_w">,
1079  Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
1080def int_mips_fsqrt_d : GCCBuiltin<"__builtin_msa_fsqrt_d">,
1081  Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
1082
1083def int_mips_fsub_w : GCCBuiltin<"__builtin_msa_fsub_w">,
1084  Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
1085def int_mips_fsub_d : GCCBuiltin<"__builtin_msa_fsub_d">,
1086  Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
1087
1088def int_mips_fsueq_w : GCCBuiltin<"__builtin_msa_fsueq_w">,
1089  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
1090def int_mips_fsueq_d : GCCBuiltin<"__builtin_msa_fsueq_d">,
1091  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
1092
1093def int_mips_fsule_w : GCCBuiltin<"__builtin_msa_fsule_w">,
1094  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
1095def int_mips_fsule_d : GCCBuiltin<"__builtin_msa_fsule_d">,
1096  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
1097
1098def int_mips_fsult_w : GCCBuiltin<"__builtin_msa_fsult_w">,
1099  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
1100def int_mips_fsult_d : GCCBuiltin<"__builtin_msa_fsult_d">,
1101  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
1102
1103def int_mips_fsun_w : GCCBuiltin<"__builtin_msa_fsun_w">,
1104  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
1105def int_mips_fsun_d : GCCBuiltin<"__builtin_msa_fsun_d">,
1106  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
1107
1108def int_mips_fsune_w : GCCBuiltin<"__builtin_msa_fsune_w">,
1109  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
1110def int_mips_fsune_d : GCCBuiltin<"__builtin_msa_fsune_d">,
1111  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
1112
1113def int_mips_ftint_s_w : GCCBuiltin<"__builtin_msa_ftint_s_w">,
1114  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
1115def int_mips_ftint_s_d : GCCBuiltin<"__builtin_msa_ftint_s_d">,
1116  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
1117
1118def int_mips_ftint_u_w : GCCBuiltin<"__builtin_msa_ftint_u_w">,
1119  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
1120def int_mips_ftint_u_d : GCCBuiltin<"__builtin_msa_ftint_u_d">,
1121  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
1122
1123def int_mips_ftq_h : GCCBuiltin<"__builtin_msa_ftq_h">,
1124  Intrinsic<[llvm_v8i16_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
1125def int_mips_ftq_w : GCCBuiltin<"__builtin_msa_ftq_w">,
1126  Intrinsic<[llvm_v4i32_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
1127
1128def int_mips_ftrunc_s_w : GCCBuiltin<"__builtin_msa_ftrunc_s_w">,
1129  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
1130def int_mips_ftrunc_s_d : GCCBuiltin<"__builtin_msa_ftrunc_s_d">,
1131  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
1132
1133def int_mips_ftrunc_u_w : GCCBuiltin<"__builtin_msa_ftrunc_u_w">,
1134  Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
1135def int_mips_ftrunc_u_d : GCCBuiltin<"__builtin_msa_ftrunc_u_d">,
1136  Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
1137
1138def int_mips_hadd_s_h : GCCBuiltin<"__builtin_msa_hadd_s_h">,
1139  Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1140def int_mips_hadd_s_w : GCCBuiltin<"__builtin_msa_hadd_s_w">,
1141  Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1142def int_mips_hadd_s_d : GCCBuiltin<"__builtin_msa_hadd_s_d">,
1143  Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1144
1145def int_mips_hadd_u_h : GCCBuiltin<"__builtin_msa_hadd_u_h">,
1146  Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1147def int_mips_hadd_u_w : GCCBuiltin<"__builtin_msa_hadd_u_w">,
1148  Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1149def int_mips_hadd_u_d : GCCBuiltin<"__builtin_msa_hadd_u_d">,
1150  Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1151
1152def int_mips_hsub_s_h : GCCBuiltin<"__builtin_msa_hsub_s_h">,
1153  Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1154def int_mips_hsub_s_w : GCCBuiltin<"__builtin_msa_hsub_s_w">,
1155  Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1156def int_mips_hsub_s_d : GCCBuiltin<"__builtin_msa_hsub_s_d">,
1157  Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1158
1159def int_mips_hsub_u_h : GCCBuiltin<"__builtin_msa_hsub_u_h">,
1160  Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1161def int_mips_hsub_u_w : GCCBuiltin<"__builtin_msa_hsub_u_w">,
1162  Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1163def int_mips_hsub_u_d : GCCBuiltin<"__builtin_msa_hsub_u_d">,
1164  Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1165
1166def int_mips_ilvev_b : GCCBuiltin<"__builtin_msa_ilvev_b">,
1167  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1168def int_mips_ilvev_h : GCCBuiltin<"__builtin_msa_ilvev_h">,
1169  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1170def int_mips_ilvev_w : GCCBuiltin<"__builtin_msa_ilvev_w">,
1171  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1172def int_mips_ilvev_d : GCCBuiltin<"__builtin_msa_ilvev_d">,
1173  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1174
1175def int_mips_ilvl_b : GCCBuiltin<"__builtin_msa_ilvl_b">,
1176  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1177def int_mips_ilvl_h : GCCBuiltin<"__builtin_msa_ilvl_h">,
1178  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1179def int_mips_ilvl_w : GCCBuiltin<"__builtin_msa_ilvl_w">,
1180  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1181def int_mips_ilvl_d : GCCBuiltin<"__builtin_msa_ilvl_d">,
1182  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1183
1184def int_mips_ilvod_b : GCCBuiltin<"__builtin_msa_ilvod_b">,
1185  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1186def int_mips_ilvod_h : GCCBuiltin<"__builtin_msa_ilvod_h">,
1187  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1188def int_mips_ilvod_w : GCCBuiltin<"__builtin_msa_ilvod_w">,
1189  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1190def int_mips_ilvod_d : GCCBuiltin<"__builtin_msa_ilvod_d">,
1191  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1192
1193def int_mips_ilvr_b : GCCBuiltin<"__builtin_msa_ilvr_b">,
1194  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1195def int_mips_ilvr_h : GCCBuiltin<"__builtin_msa_ilvr_h">,
1196  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1197def int_mips_ilvr_w : GCCBuiltin<"__builtin_msa_ilvr_w">,
1198  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1199def int_mips_ilvr_d : GCCBuiltin<"__builtin_msa_ilvr_d">,
1200  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1201
1202def int_mips_insert_b : GCCBuiltin<"__builtin_msa_insert_b">,
1203  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty, llvm_i32_ty],
1204  [IntrNoMem]>;
1205def int_mips_insert_h : GCCBuiltin<"__builtin_msa_insert_h">,
1206  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty, llvm_i32_ty],
1207  [IntrNoMem]>;
1208def int_mips_insert_w : GCCBuiltin<"__builtin_msa_insert_w">,
1209  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty, llvm_i32_ty],
1210  [IntrNoMem]>;
1211def int_mips_insert_d : GCCBuiltin<"__builtin_msa_insert_d">,
1212  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty, llvm_i64_ty],
1213  [IntrNoMem]>;
1214
1215def int_mips_insve_b : GCCBuiltin<"__builtin_msa_insve_b">,
1216  Intrinsic<[llvm_v16i8_ty],
1217            [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty],
1218            [IntrNoMem]>;
1219def int_mips_insve_h : GCCBuiltin<"__builtin_msa_insve_h">,
1220  Intrinsic<[llvm_v8i16_ty],
1221            [llvm_v8i16_ty, llvm_i32_ty, llvm_v8i16_ty],
1222            [IntrNoMem]>;
1223def int_mips_insve_w : GCCBuiltin<"__builtin_msa_insve_w">,
1224  Intrinsic<[llvm_v4i32_ty],
1225            [llvm_v4i32_ty, llvm_i32_ty, llvm_v4i32_ty],
1226            [IntrNoMem]>;
1227def int_mips_insve_d : GCCBuiltin<"__builtin_msa_insve_d">,
1228  Intrinsic<[llvm_v2i64_ty],
1229            [llvm_v2i64_ty, llvm_i32_ty, llvm_v2i64_ty],
1230            [IntrNoMem]>;
1231
1232def int_mips_ld_b : GCCBuiltin<"__builtin_msa_ld_b">,
1233  Intrinsic<[llvm_v16i8_ty], [llvm_ptr_ty, llvm_i32_ty],
1234  [IntrReadArgMem]>;
1235def int_mips_ld_h : GCCBuiltin<"__builtin_msa_ld_h">,
1236  Intrinsic<[llvm_v8i16_ty], [llvm_ptr_ty, llvm_i32_ty],
1237  [IntrReadArgMem]>;
1238def int_mips_ld_w : GCCBuiltin<"__builtin_msa_ld_w">,
1239  Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty, llvm_i32_ty],
1240  [IntrReadArgMem]>;
1241def int_mips_ld_d : GCCBuiltin<"__builtin_msa_ld_d">,
1242  Intrinsic<[llvm_v2i64_ty], [llvm_ptr_ty, llvm_i32_ty],
1243  [IntrReadArgMem]>;
1244
1245def int_mips_ldx_b : GCCBuiltin<"__builtin_msa_ldx_b">,
1246  Intrinsic<[llvm_v16i8_ty], [llvm_ptr_ty, llvm_i32_ty],
1247  [IntrReadArgMem]>;
1248def int_mips_ldx_h : GCCBuiltin<"__builtin_msa_ldx_h">,
1249  Intrinsic<[llvm_v8i16_ty], [llvm_ptr_ty, llvm_i32_ty],
1250  [IntrReadArgMem]>;
1251def int_mips_ldx_w : GCCBuiltin<"__builtin_msa_ldx_w">,
1252  Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty, llvm_i32_ty],
1253  [IntrReadArgMem]>;
1254def int_mips_ldx_d : GCCBuiltin<"__builtin_msa_ldx_d">,
1255  Intrinsic<[llvm_v2i64_ty], [llvm_ptr_ty, llvm_i32_ty],
1256  [IntrReadArgMem]>;
1257
1258def int_mips_ldi_b : GCCBuiltin<"__builtin_msa_ldi_b">,
1259  Intrinsic<[llvm_v16i8_ty], [llvm_i32_ty], [IntrNoMem]>;
1260def int_mips_ldi_h : GCCBuiltin<"__builtin_msa_ldi_h">,
1261  Intrinsic<[llvm_v8i16_ty], [llvm_i32_ty], [IntrNoMem]>;
1262def int_mips_ldi_w : GCCBuiltin<"__builtin_msa_ldi_w">,
1263  Intrinsic<[llvm_v4i32_ty], [llvm_i32_ty], [IntrNoMem]>;
1264def int_mips_ldi_d : GCCBuiltin<"__builtin_msa_ldi_d">,
1265  Intrinsic<[llvm_v2i64_ty], [llvm_i32_ty], [IntrNoMem]>;
1266
1267def int_mips_madd_q_h : GCCBuiltin<"__builtin_msa_madd_q_h">,
1268  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty],
1269  [IntrNoMem]>;
1270def int_mips_madd_q_w : GCCBuiltin<"__builtin_msa_madd_q_w">,
1271  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
1272  [IntrNoMem]>;
1273
1274def int_mips_maddr_q_h : GCCBuiltin<"__builtin_msa_maddr_q_h">,
1275  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty],
1276  [IntrNoMem]>;
1277def int_mips_maddr_q_w : GCCBuiltin<"__builtin_msa_maddr_q_w">,
1278  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
1279  [IntrNoMem]>;
1280
1281def int_mips_maddv_b : GCCBuiltin<"__builtin_msa_maddv_b">,
1282  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty],
1283  [IntrNoMem]>;
1284def int_mips_maddv_h : GCCBuiltin<"__builtin_msa_maddv_h">,
1285  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty],
1286  [IntrNoMem]>;
1287def int_mips_maddv_w : GCCBuiltin<"__builtin_msa_maddv_w">,
1288  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
1289  [IntrNoMem]>;
1290def int_mips_maddv_d : GCCBuiltin<"__builtin_msa_maddv_d">,
1291  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty],
1292  [IntrNoMem]>;
1293
1294def int_mips_max_a_b : GCCBuiltin<"__builtin_msa_max_a_b">,
1295  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1296def int_mips_max_a_h : GCCBuiltin<"__builtin_msa_max_a_h">,
1297  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1298def int_mips_max_a_w : GCCBuiltin<"__builtin_msa_max_a_w">,
1299  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1300def int_mips_max_a_d : GCCBuiltin<"__builtin_msa_max_a_d">,
1301  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1302
1303def int_mips_max_s_b : GCCBuiltin<"__builtin_msa_max_s_b">,
1304  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1305def int_mips_max_s_h : GCCBuiltin<"__builtin_msa_max_s_h">,
1306  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1307def int_mips_max_s_w : GCCBuiltin<"__builtin_msa_max_s_w">,
1308  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1309def int_mips_max_s_d : GCCBuiltin<"__builtin_msa_max_s_d">,
1310  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1311
1312def int_mips_max_u_b : GCCBuiltin<"__builtin_msa_max_u_b">,
1313  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1314def int_mips_max_u_h : GCCBuiltin<"__builtin_msa_max_u_h">,
1315  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1316def int_mips_max_u_w : GCCBuiltin<"__builtin_msa_max_u_w">,
1317  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1318def int_mips_max_u_d : GCCBuiltin<"__builtin_msa_max_u_d">,
1319  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1320
1321def int_mips_maxi_s_b : GCCBuiltin<"__builtin_msa_maxi_s_b">,
1322  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
1323def int_mips_maxi_s_h : GCCBuiltin<"__builtin_msa_maxi_s_h">,
1324  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
1325def int_mips_maxi_s_w : GCCBuiltin<"__builtin_msa_maxi_s_w">,
1326  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
1327def int_mips_maxi_s_d : GCCBuiltin<"__builtin_msa_maxi_s_d">,
1328  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
1329
1330def int_mips_maxi_u_b : GCCBuiltin<"__builtin_msa_maxi_u_b">,
1331  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
1332def int_mips_maxi_u_h : GCCBuiltin<"__builtin_msa_maxi_u_h">,
1333  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
1334def int_mips_maxi_u_w : GCCBuiltin<"__builtin_msa_maxi_u_w">,
1335  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
1336def int_mips_maxi_u_d : GCCBuiltin<"__builtin_msa_maxi_u_d">,
1337  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
1338
1339def int_mips_min_a_b : GCCBuiltin<"__builtin_msa_min_a_b">,
1340  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1341def int_mips_min_a_h : GCCBuiltin<"__builtin_msa_min_a_h">,
1342  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1343def int_mips_min_a_w : GCCBuiltin<"__builtin_msa_min_a_w">,
1344  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1345def int_mips_min_a_d : GCCBuiltin<"__builtin_msa_min_a_d">,
1346  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1347
1348def int_mips_min_s_b : GCCBuiltin<"__builtin_msa_min_s_b">,
1349  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1350def int_mips_min_s_h : GCCBuiltin<"__builtin_msa_min_s_h">,
1351  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1352def int_mips_min_s_w : GCCBuiltin<"__builtin_msa_min_s_w">,
1353  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1354def int_mips_min_s_d : GCCBuiltin<"__builtin_msa_min_s_d">,
1355  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1356
1357def int_mips_min_u_b : GCCBuiltin<"__builtin_msa_min_u_b">,
1358  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1359def int_mips_min_u_h : GCCBuiltin<"__builtin_msa_min_u_h">,
1360  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1361def int_mips_min_u_w : GCCBuiltin<"__builtin_msa_min_u_w">,
1362  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1363def int_mips_min_u_d : GCCBuiltin<"__builtin_msa_min_u_d">,
1364  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1365
1366def int_mips_mini_s_b : GCCBuiltin<"__builtin_msa_mini_s_b">,
1367  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
1368def int_mips_mini_s_h : GCCBuiltin<"__builtin_msa_mini_s_h">,
1369  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
1370def int_mips_mini_s_w : GCCBuiltin<"__builtin_msa_mini_s_w">,
1371  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
1372def int_mips_mini_s_d : GCCBuiltin<"__builtin_msa_mini_s_d">,
1373  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
1374
1375def int_mips_mini_u_b : GCCBuiltin<"__builtin_msa_mini_u_b">,
1376  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
1377def int_mips_mini_u_h : GCCBuiltin<"__builtin_msa_mini_u_h">,
1378  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
1379def int_mips_mini_u_w : GCCBuiltin<"__builtin_msa_mini_u_w">,
1380  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
1381def int_mips_mini_u_d : GCCBuiltin<"__builtin_msa_mini_u_d">,
1382  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
1383
1384def int_mips_mod_s_b : GCCBuiltin<"__builtin_msa_mod_s_b">,
1385  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1386def int_mips_mod_s_h : GCCBuiltin<"__builtin_msa_mod_s_h">,
1387  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1388def int_mips_mod_s_w : GCCBuiltin<"__builtin_msa_mod_s_w">,
1389  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1390def int_mips_mod_s_d : GCCBuiltin<"__builtin_msa_mod_s_d">,
1391  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1392
1393def int_mips_mod_u_b : GCCBuiltin<"__builtin_msa_mod_u_b">,
1394  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1395def int_mips_mod_u_h : GCCBuiltin<"__builtin_msa_mod_u_h">,
1396  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1397def int_mips_mod_u_w : GCCBuiltin<"__builtin_msa_mod_u_w">,
1398  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1399def int_mips_mod_u_d : GCCBuiltin<"__builtin_msa_mod_u_d">,
1400  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1401
1402def int_mips_move_v : GCCBuiltin<"__builtin_msa_move_v">,
1403  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty], [IntrNoMem]>;
1404
1405def int_mips_msub_q_h : GCCBuiltin<"__builtin_msa_msub_q_h">,
1406  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty],
1407  [IntrNoMem]>;
1408def int_mips_msub_q_w : GCCBuiltin<"__builtin_msa_msub_q_w">,
1409  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
1410  [IntrNoMem]>;
1411
1412def int_mips_msubr_q_h : GCCBuiltin<"__builtin_msa_msubr_q_h">,
1413  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty],
1414  [IntrNoMem]>;
1415def int_mips_msubr_q_w : GCCBuiltin<"__builtin_msa_msubr_q_w">,
1416  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
1417  [IntrNoMem]>;
1418
1419def int_mips_msubv_b : GCCBuiltin<"__builtin_msa_msubv_b">,
1420  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty],
1421  [IntrNoMem]>;
1422def int_mips_msubv_h : GCCBuiltin<"__builtin_msa_msubv_h">,
1423  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty],
1424  [IntrNoMem]>;
1425def int_mips_msubv_w : GCCBuiltin<"__builtin_msa_msubv_w">,
1426  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
1427  [IntrNoMem]>;
1428def int_mips_msubv_d : GCCBuiltin<"__builtin_msa_msubv_d">,
1429  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty],
1430  [IntrNoMem]>;
1431
1432def int_mips_mul_q_h : GCCBuiltin<"__builtin_msa_mul_q_h">,
1433  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1434def int_mips_mul_q_w : GCCBuiltin<"__builtin_msa_mul_q_w">,
1435  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1436
1437def int_mips_mulr_q_h : GCCBuiltin<"__builtin_msa_mulr_q_h">,
1438  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1439def int_mips_mulr_q_w : GCCBuiltin<"__builtin_msa_mulr_q_w">,
1440  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1441
1442def int_mips_mulv_b : GCCBuiltin<"__builtin_msa_mulv_b">,
1443  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1444def int_mips_mulv_h : GCCBuiltin<"__builtin_msa_mulv_h">,
1445  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1446def int_mips_mulv_w : GCCBuiltin<"__builtin_msa_mulv_w">,
1447  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1448def int_mips_mulv_d : GCCBuiltin<"__builtin_msa_mulv_d">,
1449  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1450
1451def int_mips_nloc_b : GCCBuiltin<"__builtin_msa_nloc_b">,
1452  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty], [IntrNoMem]>;
1453def int_mips_nloc_h : GCCBuiltin<"__builtin_msa_nloc_h">,
1454  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty], [IntrNoMem]>;
1455def int_mips_nloc_w : GCCBuiltin<"__builtin_msa_nloc_w">,
1456  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty], [IntrNoMem]>;
1457def int_mips_nloc_d : GCCBuiltin<"__builtin_msa_nloc_d">,
1458  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty], [IntrNoMem]>;
1459
1460def int_mips_nlzc_b : GCCBuiltin<"__builtin_msa_nlzc_b">,
1461  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty], [IntrNoMem]>;
1462def int_mips_nlzc_h : GCCBuiltin<"__builtin_msa_nlzc_h">,
1463  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty], [IntrNoMem]>;
1464def int_mips_nlzc_w : GCCBuiltin<"__builtin_msa_nlzc_w">,
1465  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty], [IntrNoMem]>;
1466def int_mips_nlzc_d : GCCBuiltin<"__builtin_msa_nlzc_d">,
1467  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty], [IntrNoMem]>;
1468
1469def int_mips_nor_v : GCCBuiltin<"__builtin_msa_nor_v">,
1470  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1471
1472def int_mips_nori_b : GCCBuiltin<"__builtin_msa_nori_b">,
1473  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
1474
1475def int_mips_or_v : GCCBuiltin<"__builtin_msa_or_v">,
1476  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1477
1478def int_mips_ori_b : GCCBuiltin<"__builtin_msa_ori_b">,
1479  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
1480
1481def int_mips_pckev_b : GCCBuiltin<"__builtin_msa_pckev_b">,
1482  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1483def int_mips_pckev_h : GCCBuiltin<"__builtin_msa_pckev_h">,
1484  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1485def int_mips_pckev_w : GCCBuiltin<"__builtin_msa_pckev_w">,
1486  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1487def int_mips_pckev_d : GCCBuiltin<"__builtin_msa_pckev_d">,
1488  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1489
1490def int_mips_pckod_b : GCCBuiltin<"__builtin_msa_pckod_b">,
1491  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1492def int_mips_pckod_h : GCCBuiltin<"__builtin_msa_pckod_h">,
1493  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1494def int_mips_pckod_w : GCCBuiltin<"__builtin_msa_pckod_w">,
1495  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1496def int_mips_pckod_d : GCCBuiltin<"__builtin_msa_pckod_d">,
1497  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1498
1499def int_mips_pcnt_b : GCCBuiltin<"__builtin_msa_pcnt_b">,
1500  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty], [IntrNoMem]>;
1501def int_mips_pcnt_h : GCCBuiltin<"__builtin_msa_pcnt_h">,
1502  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty], [IntrNoMem]>;
1503def int_mips_pcnt_w : GCCBuiltin<"__builtin_msa_pcnt_w">,
1504  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty], [IntrNoMem]>;
1505def int_mips_pcnt_d : GCCBuiltin<"__builtin_msa_pcnt_d">,
1506  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty], [IntrNoMem]>;
1507
1508def int_mips_sat_s_b : GCCBuiltin<"__builtin_msa_sat_s_b">,
1509  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
1510def int_mips_sat_s_h : GCCBuiltin<"__builtin_msa_sat_s_h">,
1511  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
1512def int_mips_sat_s_w : GCCBuiltin<"__builtin_msa_sat_s_w">,
1513  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
1514def int_mips_sat_s_d : GCCBuiltin<"__builtin_msa_sat_s_d">,
1515  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
1516
1517def int_mips_sat_u_b : GCCBuiltin<"__builtin_msa_sat_u_b">,
1518  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
1519def int_mips_sat_u_h : GCCBuiltin<"__builtin_msa_sat_u_h">,
1520  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
1521def int_mips_sat_u_w : GCCBuiltin<"__builtin_msa_sat_u_w">,
1522  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
1523def int_mips_sat_u_d : GCCBuiltin<"__builtin_msa_sat_u_d">,
1524  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
1525
1526def int_mips_shf_b : GCCBuiltin<"__builtin_msa_shf_b">,
1527  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
1528def int_mips_shf_h : GCCBuiltin<"__builtin_msa_shf_h">,
1529  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
1530def int_mips_shf_w : GCCBuiltin<"__builtin_msa_shf_w">,
1531  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
1532
1533def int_mips_sld_b : GCCBuiltin<"__builtin_msa_sld_b">,
1534  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1535def int_mips_sld_h : GCCBuiltin<"__builtin_msa_sld_h">,
1536  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1537def int_mips_sld_w : GCCBuiltin<"__builtin_msa_sld_w">,
1538  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1539def int_mips_sld_d : GCCBuiltin<"__builtin_msa_sld_d">,
1540  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1541
1542def int_mips_sldi_b : GCCBuiltin<"__builtin_msa_sldi_b">,
1543  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
1544def int_mips_sldi_h : GCCBuiltin<"__builtin_msa_sldi_h">,
1545  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
1546def int_mips_sldi_w : GCCBuiltin<"__builtin_msa_sldi_w">,
1547  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
1548def int_mips_sldi_d : GCCBuiltin<"__builtin_msa_sldi_d">,
1549  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
1550
1551def int_mips_sll_b : GCCBuiltin<"__builtin_msa_sll_b">,
1552  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1553def int_mips_sll_h : GCCBuiltin<"__builtin_msa_sll_h">,
1554  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1555def int_mips_sll_w : GCCBuiltin<"__builtin_msa_sll_w">,
1556  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1557def int_mips_sll_d : GCCBuiltin<"__builtin_msa_sll_d">,
1558  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1559
1560def int_mips_slli_b : GCCBuiltin<"__builtin_msa_slli_b">,
1561  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
1562def int_mips_slli_h : GCCBuiltin<"__builtin_msa_slli_h">,
1563  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
1564def int_mips_slli_w : GCCBuiltin<"__builtin_msa_slli_w">,
1565  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
1566def int_mips_slli_d : GCCBuiltin<"__builtin_msa_slli_d">,
1567  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
1568
1569def int_mips_splat_b : GCCBuiltin<"__builtin_msa_splat_b">,
1570  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
1571def int_mips_splat_h : GCCBuiltin<"__builtin_msa_splat_h">,
1572  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
1573def int_mips_splat_w : GCCBuiltin<"__builtin_msa_splat_w">,
1574  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
1575def int_mips_splat_d : GCCBuiltin<"__builtin_msa_splat_d">,
1576  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
1577
1578def int_mips_splati_b : GCCBuiltin<"__builtin_msa_splati_b">,
1579  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
1580def int_mips_splati_h : GCCBuiltin<"__builtin_msa_splati_h">,
1581  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
1582def int_mips_splati_w : GCCBuiltin<"__builtin_msa_splati_w">,
1583  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
1584def int_mips_splati_d : GCCBuiltin<"__builtin_msa_splati_d">,
1585  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
1586
1587def int_mips_sra_b : GCCBuiltin<"__builtin_msa_sra_b">,
1588  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1589def int_mips_sra_h : GCCBuiltin<"__builtin_msa_sra_h">,
1590  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1591def int_mips_sra_w : GCCBuiltin<"__builtin_msa_sra_w">,
1592  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1593def int_mips_sra_d : GCCBuiltin<"__builtin_msa_sra_d">,
1594  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1595
1596def int_mips_srai_b : GCCBuiltin<"__builtin_msa_srai_b">,
1597  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
1598def int_mips_srai_h : GCCBuiltin<"__builtin_msa_srai_h">,
1599  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
1600def int_mips_srai_w : GCCBuiltin<"__builtin_msa_srai_w">,
1601  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
1602def int_mips_srai_d : GCCBuiltin<"__builtin_msa_srai_d">,
1603  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
1604
1605def int_mips_srar_b : GCCBuiltin<"__builtin_msa_srar_b">,
1606  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1607def int_mips_srar_h : GCCBuiltin<"__builtin_msa_srar_h">,
1608  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1609def int_mips_srar_w : GCCBuiltin<"__builtin_msa_srar_w">,
1610  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1611def int_mips_srar_d : GCCBuiltin<"__builtin_msa_srar_d">,
1612  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1613
1614def int_mips_srari_b : GCCBuiltin<"__builtin_msa_srari_b">,
1615  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
1616def int_mips_srari_h : GCCBuiltin<"__builtin_msa_srari_h">,
1617  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
1618def int_mips_srari_w : GCCBuiltin<"__builtin_msa_srari_w">,
1619  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
1620def int_mips_srari_d : GCCBuiltin<"__builtin_msa_srari_d">,
1621  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
1622
1623def int_mips_srl_b : GCCBuiltin<"__builtin_msa_srl_b">,
1624  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1625def int_mips_srl_h : GCCBuiltin<"__builtin_msa_srl_h">,
1626  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1627def int_mips_srl_w : GCCBuiltin<"__builtin_msa_srl_w">,
1628  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1629def int_mips_srl_d : GCCBuiltin<"__builtin_msa_srl_d">,
1630  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1631
1632def int_mips_srli_b : GCCBuiltin<"__builtin_msa_srli_b">,
1633  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
1634def int_mips_srli_h : GCCBuiltin<"__builtin_msa_srli_h">,
1635  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
1636def int_mips_srli_w : GCCBuiltin<"__builtin_msa_srli_w">,
1637  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
1638def int_mips_srli_d : GCCBuiltin<"__builtin_msa_srli_d">,
1639  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
1640
1641def int_mips_srlr_b : GCCBuiltin<"__builtin_msa_srlr_b">,
1642  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1643def int_mips_srlr_h : GCCBuiltin<"__builtin_msa_srlr_h">,
1644  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1645def int_mips_srlr_w : GCCBuiltin<"__builtin_msa_srlr_w">,
1646  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1647def int_mips_srlr_d : GCCBuiltin<"__builtin_msa_srlr_d">,
1648  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1649
1650def int_mips_srlri_b : GCCBuiltin<"__builtin_msa_srlri_b">,
1651  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
1652def int_mips_srlri_h : GCCBuiltin<"__builtin_msa_srlri_h">,
1653  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
1654def int_mips_srlri_w : GCCBuiltin<"__builtin_msa_srlri_w">,
1655  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
1656def int_mips_srlri_d : GCCBuiltin<"__builtin_msa_srlri_d">,
1657  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
1658
1659def int_mips_st_b : GCCBuiltin<"__builtin_msa_st_b">,
1660  Intrinsic<[], [llvm_v16i8_ty, llvm_ptr_ty, llvm_i32_ty],
1661  [IntrReadWriteArgMem]>;
1662def int_mips_st_h : GCCBuiltin<"__builtin_msa_st_h">,
1663  Intrinsic<[], [llvm_v8i16_ty, llvm_ptr_ty, llvm_i32_ty],
1664  [IntrReadWriteArgMem]>;
1665def int_mips_st_w : GCCBuiltin<"__builtin_msa_st_w">,
1666  Intrinsic<[], [llvm_v4i32_ty, llvm_ptr_ty, llvm_i32_ty],
1667  [IntrReadWriteArgMem]>;
1668def int_mips_st_d : GCCBuiltin<"__builtin_msa_st_d">,
1669  Intrinsic<[], [llvm_v2i64_ty, llvm_ptr_ty, llvm_i32_ty],
1670  [IntrReadWriteArgMem]>;
1671
1672def int_mips_stx_b : GCCBuiltin<"__builtin_msa_stx_b">,
1673  Intrinsic<[], [llvm_v16i8_ty, llvm_ptr_ty, llvm_i32_ty],
1674  [IntrReadWriteArgMem]>;
1675def int_mips_stx_h : GCCBuiltin<"__builtin_msa_stx_h">,
1676  Intrinsic<[], [llvm_v8i16_ty, llvm_ptr_ty, llvm_i32_ty],
1677  [IntrReadWriteArgMem]>;
1678def int_mips_stx_w : GCCBuiltin<"__builtin_msa_stx_w">,
1679  Intrinsic<[], [llvm_v4i32_ty, llvm_ptr_ty, llvm_i32_ty],
1680  [IntrReadWriteArgMem]>;
1681def int_mips_stx_d : GCCBuiltin<"__builtin_msa_stx_d">,
1682  Intrinsic<[], [llvm_v2i64_ty, llvm_ptr_ty, llvm_i32_ty],
1683  [IntrReadWriteArgMem]>;
1684
1685def int_mips_subs_s_b : GCCBuiltin<"__builtin_msa_subs_s_b">,
1686  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1687def int_mips_subs_s_h : GCCBuiltin<"__builtin_msa_subs_s_h">,
1688  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1689def int_mips_subs_s_w : GCCBuiltin<"__builtin_msa_subs_s_w">,
1690  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1691def int_mips_subs_s_d : GCCBuiltin<"__builtin_msa_subs_s_d">,
1692  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1693
1694def int_mips_subs_u_b : GCCBuiltin<"__builtin_msa_subs_u_b">,
1695  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1696def int_mips_subs_u_h : GCCBuiltin<"__builtin_msa_subs_u_h">,
1697  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1698def int_mips_subs_u_w : GCCBuiltin<"__builtin_msa_subs_u_w">,
1699  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1700def int_mips_subs_u_d : GCCBuiltin<"__builtin_msa_subs_u_d">,
1701  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1702
1703def int_mips_subsus_u_b : GCCBuiltin<"__builtin_msa_subsus_u_b">,
1704  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1705def int_mips_subsus_u_h : GCCBuiltin<"__builtin_msa_subsus_u_h">,
1706  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1707def int_mips_subsus_u_w : GCCBuiltin<"__builtin_msa_subsus_u_w">,
1708  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1709def int_mips_subsus_u_d : GCCBuiltin<"__builtin_msa_subsus_u_d">,
1710  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1711
1712def int_mips_subsuu_s_b : GCCBuiltin<"__builtin_msa_subsuu_s_b">,
1713  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1714def int_mips_subsuu_s_h : GCCBuiltin<"__builtin_msa_subsuu_s_h">,
1715  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1716def int_mips_subsuu_s_w : GCCBuiltin<"__builtin_msa_subsuu_s_w">,
1717  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1718def int_mips_subsuu_s_d : GCCBuiltin<"__builtin_msa_subsuu_s_d">,
1719  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1720
1721def int_mips_subv_b : GCCBuiltin<"__builtin_msa_subv_b">,
1722  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1723def int_mips_subv_h : GCCBuiltin<"__builtin_msa_subv_h">,
1724  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
1725def int_mips_subv_w : GCCBuiltin<"__builtin_msa_subv_w">,
1726  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
1727def int_mips_subv_d : GCCBuiltin<"__builtin_msa_subv_d">,
1728  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
1729
1730def int_mips_subvi_b : GCCBuiltin<"__builtin_msa_subvi_b">,
1731  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
1732def int_mips_subvi_h : GCCBuiltin<"__builtin_msa_subvi_h">,
1733  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
1734def int_mips_subvi_w : GCCBuiltin<"__builtin_msa_subvi_w">,
1735  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
1736def int_mips_subvi_d : GCCBuiltin<"__builtin_msa_subvi_d">,
1737  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
1738
1739def int_mips_vshf_b : GCCBuiltin<"__builtin_msa_vshf_b">,
1740  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty],
1741            [IntrNoMem]>;
1742def int_mips_vshf_h : GCCBuiltin<"__builtin_msa_vshf_h">,
1743  Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty],
1744            [IntrNoMem]>;
1745def int_mips_vshf_w : GCCBuiltin<"__builtin_msa_vshf_w">,
1746  Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
1747            [IntrNoMem]>;
1748def int_mips_vshf_d : GCCBuiltin<"__builtin_msa_vshf_d">,
1749  Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty],
1750            [IntrNoMem]>;
1751
1752def int_mips_xor_v : GCCBuiltin<"__builtin_msa_xor_v">,
1753  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
1754
1755def int_mips_xori_b : GCCBuiltin<"__builtin_msa_xori_b">,
1756  Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
1757}
1758