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