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