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