[mips][msa] Added insve
[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], [Commutative]>;
398 def int_mips_add_a_h : GCCBuiltin<"__builtin_msa_add_a_h">,
399   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
400 def int_mips_add_a_w : GCCBuiltin<"__builtin_msa_add_a_w">,
401   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
402 def int_mips_add_a_d : GCCBuiltin<"__builtin_msa_add_a_d">,
403   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
404
405 def int_mips_adds_a_b : GCCBuiltin<"__builtin_msa_adds_a_b">,
406   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
407 def int_mips_adds_a_h : GCCBuiltin<"__builtin_msa_adds_a_h">,
408   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
409 def int_mips_adds_a_w : GCCBuiltin<"__builtin_msa_adds_a_w">,
410   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
411 def int_mips_adds_a_d : GCCBuiltin<"__builtin_msa_adds_a_d">,
412   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
413
414 def int_mips_adds_s_b : GCCBuiltin<"__builtin_msa_adds_s_b">,
415   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
416 def int_mips_adds_s_h : GCCBuiltin<"__builtin_msa_adds_s_h">,
417   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
418 def int_mips_adds_s_w : GCCBuiltin<"__builtin_msa_adds_s_w">,
419   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
420 def int_mips_adds_s_d : GCCBuiltin<"__builtin_msa_adds_s_d">,
421   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
422
423 def int_mips_adds_u_b : GCCBuiltin<"__builtin_msa_adds_u_b">,
424   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
425 def int_mips_adds_u_h : GCCBuiltin<"__builtin_msa_adds_u_h">,
426   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
427 def int_mips_adds_u_w : GCCBuiltin<"__builtin_msa_adds_u_w">,
428   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
429 def int_mips_adds_u_d : GCCBuiltin<"__builtin_msa_adds_u_d">,
430   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
431
432 def int_mips_addv_b : GCCBuiltin<"__builtin_msa_addv_b">,
433   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
434 def int_mips_addv_h : GCCBuiltin<"__builtin_msa_addv_h">,
435   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
436 def int_mips_addv_w : GCCBuiltin<"__builtin_msa_addv_w">,
437   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
438 def int_mips_addv_d : GCCBuiltin<"__builtin_msa_addv_d">,
439   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
440
441 def int_mips_addvi_b : GCCBuiltin<"__builtin_msa_addvi_b">,
442   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [Commutative]>;
443 def int_mips_addvi_h : GCCBuiltin<"__builtin_msa_addvi_h">,
444   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [Commutative]>;
445 def int_mips_addvi_w : GCCBuiltin<"__builtin_msa_addvi_w">,
446   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [Commutative]>;
447 def int_mips_addvi_d : GCCBuiltin<"__builtin_msa_addvi_d">,
448   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [Commutative]>;
449
450 def int_mips_and_v : GCCBuiltin<"__builtin_msa_and_v">,
451   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
452
453 def int_mips_andi_b : GCCBuiltin<"__builtin_msa_andi_b">,
454   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
455
456 def int_mips_asub_s_b : GCCBuiltin<"__builtin_msa_asub_s_b">,
457   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
458 def int_mips_asub_s_h : GCCBuiltin<"__builtin_msa_asub_s_h">,
459   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
460 def int_mips_asub_s_w : GCCBuiltin<"__builtin_msa_asub_s_w">,
461   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
462 def int_mips_asub_s_d : GCCBuiltin<"__builtin_msa_asub_s_d">,
463   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
464
465 def int_mips_asub_u_b : GCCBuiltin<"__builtin_msa_asub_u_b">,
466   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
467 def int_mips_asub_u_h : GCCBuiltin<"__builtin_msa_asub_u_h">,
468   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
469 def int_mips_asub_u_w : GCCBuiltin<"__builtin_msa_asub_u_w">,
470   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
471 def int_mips_asub_u_d : GCCBuiltin<"__builtin_msa_asub_u_d">,
472   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
473
474 def int_mips_ave_s_b : GCCBuiltin<"__builtin_msa_ave_s_b">,
475   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
476 def int_mips_ave_s_h : GCCBuiltin<"__builtin_msa_ave_s_h">,
477   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
478 def int_mips_ave_s_w : GCCBuiltin<"__builtin_msa_ave_s_w">,
479   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
480 def int_mips_ave_s_d : GCCBuiltin<"__builtin_msa_ave_s_d">,
481   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
482
483 def int_mips_ave_u_b : GCCBuiltin<"__builtin_msa_ave_u_b">,
484   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
485 def int_mips_ave_u_h : GCCBuiltin<"__builtin_msa_ave_u_h">,
486   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
487 def int_mips_ave_u_w : GCCBuiltin<"__builtin_msa_ave_u_w">,
488   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
489 def int_mips_ave_u_d : GCCBuiltin<"__builtin_msa_ave_u_d">,
490   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
491
492 def int_mips_aver_s_b : GCCBuiltin<"__builtin_msa_aver_s_b">,
493   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
494 def int_mips_aver_s_h : GCCBuiltin<"__builtin_msa_aver_s_h">,
495   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
496 def int_mips_aver_s_w : GCCBuiltin<"__builtin_msa_aver_s_w">,
497   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
498 def int_mips_aver_s_d : GCCBuiltin<"__builtin_msa_aver_s_d">,
499   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
500
501 def int_mips_aver_u_b : GCCBuiltin<"__builtin_msa_aver_u_b">,
502   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
503 def int_mips_aver_u_h : GCCBuiltin<"__builtin_msa_aver_u_h">,
504   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
505 def int_mips_aver_u_w : GCCBuiltin<"__builtin_msa_aver_u_w">,
506   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
507 def int_mips_aver_u_d : GCCBuiltin<"__builtin_msa_aver_u_d">,
508   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
509
510 def int_mips_bclr_b : GCCBuiltin<"__builtin_msa_bclr_b">,
511   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
512 def int_mips_bclr_h : GCCBuiltin<"__builtin_msa_bclr_h">,
513   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
514 def int_mips_bclr_w : GCCBuiltin<"__builtin_msa_bclr_w">,
515   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
516 def int_mips_bclr_d : GCCBuiltin<"__builtin_msa_bclr_d">,
517   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
518
519 def int_mips_bclri_b : GCCBuiltin<"__builtin_msa_bclri_b">,
520   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
521 def int_mips_bclri_h : GCCBuiltin<"__builtin_msa_bclri_h">,
522   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
523 def int_mips_bclri_w : GCCBuiltin<"__builtin_msa_bclri_w">,
524   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
525 def int_mips_bclri_d : GCCBuiltin<"__builtin_msa_bclri_d">,
526   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
527
528 def int_mips_binsl_b : GCCBuiltin<"__builtin_msa_binsl_b">,
529   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
530 def int_mips_binsl_h : GCCBuiltin<"__builtin_msa_binsl_h">,
531   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
532 def int_mips_binsl_w : GCCBuiltin<"__builtin_msa_binsl_w">,
533   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
534 def int_mips_binsl_d : GCCBuiltin<"__builtin_msa_binsl_d">,
535   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
536
537 def int_mips_binsli_b : GCCBuiltin<"__builtin_msa_binsli_b">,
538   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
539 def int_mips_binsli_h : GCCBuiltin<"__builtin_msa_binsli_h">,
540   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
541 def int_mips_binsli_w : GCCBuiltin<"__builtin_msa_binsli_w">,
542   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
543 def int_mips_binsli_d : GCCBuiltin<"__builtin_msa_binsli_d">,
544   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
545
546 def int_mips_binsr_b : GCCBuiltin<"__builtin_msa_binsr_b">,
547   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
548 def int_mips_binsr_h : GCCBuiltin<"__builtin_msa_binsr_h">,
549   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
550 def int_mips_binsr_w : GCCBuiltin<"__builtin_msa_binsr_w">,
551   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
552 def int_mips_binsr_d : GCCBuiltin<"__builtin_msa_binsr_d">,
553   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
554
555 def int_mips_binsri_b : GCCBuiltin<"__builtin_msa_binsri_b">,
556   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
557 def int_mips_binsri_h : GCCBuiltin<"__builtin_msa_binsri_h">,
558   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
559 def int_mips_binsri_w : GCCBuiltin<"__builtin_msa_binsri_w">,
560   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
561 def int_mips_binsri_d : GCCBuiltin<"__builtin_msa_binsri_d">,
562   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
563
564 def int_mips_bmnz_v : GCCBuiltin<"__builtin_msa_bmnz_v">,
565   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
566
567 def int_mips_bmnzi_b : GCCBuiltin<"__builtin_msa_bmnzi_b">,
568   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
569
570 def int_mips_bmz_v : GCCBuiltin<"__builtin_msa_bmz_v">,
571   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
572
573 def int_mips_bmzi_b : GCCBuiltin<"__builtin_msa_bmzi_b">,
574   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
575
576 def int_mips_bneg_b : GCCBuiltin<"__builtin_msa_bneg_b">,
577   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
578 def int_mips_bneg_h : GCCBuiltin<"__builtin_msa_bneg_h">,
579   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
580 def int_mips_bneg_w : GCCBuiltin<"__builtin_msa_bneg_w">,
581   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
582 def int_mips_bneg_d : GCCBuiltin<"__builtin_msa_bneg_d">,
583   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
584
585 def int_mips_bnegi_b : GCCBuiltin<"__builtin_msa_bnegi_b">,
586   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
587 def int_mips_bnegi_h : GCCBuiltin<"__builtin_msa_bnegi_h">,
588   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
589 def int_mips_bnegi_w : GCCBuiltin<"__builtin_msa_bnegi_w">,
590   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
591 def int_mips_bnegi_d : GCCBuiltin<"__builtin_msa_bnegi_d">,
592   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
593
594 def int_mips_bsel_v : GCCBuiltin<"__builtin_msa_bsel_v">,
595   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
596
597 def int_mips_bseli_b : GCCBuiltin<"__builtin_msa_bseli_b">,
598   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
599 def int_mips_bseli_h : GCCBuiltin<"__builtin_msa_bseli_h">,
600   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
601 def int_mips_bseli_w : GCCBuiltin<"__builtin_msa_bseli_w">,
602   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
603 def int_mips_bseli_d : GCCBuiltin<"__builtin_msa_bseli_d">,
604   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
605
606 def int_mips_bset_b : GCCBuiltin<"__builtin_msa_bset_b">,
607   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
608 def int_mips_bset_h : GCCBuiltin<"__builtin_msa_bset_h">,
609   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
610 def int_mips_bset_w : GCCBuiltin<"__builtin_msa_bset_w">,
611   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
612 def int_mips_bset_d : GCCBuiltin<"__builtin_msa_bset_d">,
613   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
614
615 def int_mips_bseti_b : GCCBuiltin<"__builtin_msa_bseti_b">,
616   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
617 def int_mips_bseti_h : GCCBuiltin<"__builtin_msa_bseti_h">,
618   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
619 def int_mips_bseti_w : GCCBuiltin<"__builtin_msa_bseti_w">,
620   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
621 def int_mips_bseti_d : GCCBuiltin<"__builtin_msa_bseti_d">,
622   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
623
624 def int_mips_ceq_b : GCCBuiltin<"__builtin_msa_ceq_b">,
625   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
626 def int_mips_ceq_h : GCCBuiltin<"__builtin_msa_ceq_h">,
627   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
628 def int_mips_ceq_w : GCCBuiltin<"__builtin_msa_ceq_w">,
629   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
630 def int_mips_ceq_d : GCCBuiltin<"__builtin_msa_ceq_d">,
631   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
632
633 def int_mips_ceqi_b : GCCBuiltin<"__builtin_msa_ceqi_b">,
634   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
635 def int_mips_ceqi_h : GCCBuiltin<"__builtin_msa_ceqi_h">,
636   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
637 def int_mips_ceqi_w : GCCBuiltin<"__builtin_msa_ceqi_w">,
638   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
639 def int_mips_ceqi_d : GCCBuiltin<"__builtin_msa_ceqi_d">,
640   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
641
642 def int_mips_cle_s_b : GCCBuiltin<"__builtin_msa_cle_s_b">,
643   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
644 def int_mips_cle_s_h : GCCBuiltin<"__builtin_msa_cle_s_h">,
645   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
646 def int_mips_cle_s_w : GCCBuiltin<"__builtin_msa_cle_s_w">,
647   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
648 def int_mips_cle_s_d : GCCBuiltin<"__builtin_msa_cle_s_d">,
649   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
650
651 def int_mips_cle_u_b : GCCBuiltin<"__builtin_msa_cle_u_b">,
652   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
653 def int_mips_cle_u_h : GCCBuiltin<"__builtin_msa_cle_u_h">,
654   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
655 def int_mips_cle_u_w : GCCBuiltin<"__builtin_msa_cle_u_w">,
656   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
657 def int_mips_cle_u_d : GCCBuiltin<"__builtin_msa_cle_u_d">,
658   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
659
660 def int_mips_clei_s_b : GCCBuiltin<"__builtin_msa_clei_s_b">,
661   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
662 def int_mips_clei_s_h : GCCBuiltin<"__builtin_msa_clei_s_h">,
663   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
664 def int_mips_clei_s_w : GCCBuiltin<"__builtin_msa_clei_s_w">,
665   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
666 def int_mips_clei_s_d : GCCBuiltin<"__builtin_msa_clei_s_d">,
667   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
668
669 def int_mips_clei_u_b : GCCBuiltin<"__builtin_msa_clei_u_b">,
670   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
671 def int_mips_clei_u_h : GCCBuiltin<"__builtin_msa_clei_u_h">,
672   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
673 def int_mips_clei_u_w : GCCBuiltin<"__builtin_msa_clei_u_w">,
674   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
675 def int_mips_clei_u_d : GCCBuiltin<"__builtin_msa_clei_u_d">,
676   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
677
678 def int_mips_clt_s_b : GCCBuiltin<"__builtin_msa_clt_s_b">,
679   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
680 def int_mips_clt_s_h : GCCBuiltin<"__builtin_msa_clt_s_h">,
681   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
682 def int_mips_clt_s_w : GCCBuiltin<"__builtin_msa_clt_s_w">,
683   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
684 def int_mips_clt_s_d : GCCBuiltin<"__builtin_msa_clt_s_d">,
685   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
686
687 def int_mips_clt_u_b : GCCBuiltin<"__builtin_msa_clt_u_b">,
688   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
689 def int_mips_clt_u_h : GCCBuiltin<"__builtin_msa_clt_u_h">,
690   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
691 def int_mips_clt_u_w : GCCBuiltin<"__builtin_msa_clt_u_w">,
692   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
693 def int_mips_clt_u_d : GCCBuiltin<"__builtin_msa_clt_u_d">,
694   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
695
696 def int_mips_clti_s_b : GCCBuiltin<"__builtin_msa_clti_s_b">,
697   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
698 def int_mips_clti_s_h : GCCBuiltin<"__builtin_msa_clti_s_h">,
699   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
700 def int_mips_clti_s_w : GCCBuiltin<"__builtin_msa_clti_s_w">,
701   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
702 def int_mips_clti_s_d : GCCBuiltin<"__builtin_msa_clti_s_d">,
703   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
704
705 def int_mips_clti_u_b : GCCBuiltin<"__builtin_msa_clti_u_b">,
706   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
707 def int_mips_clti_u_h : GCCBuiltin<"__builtin_msa_clti_u_h">,
708   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
709 def int_mips_clti_u_w : GCCBuiltin<"__builtin_msa_clti_u_w">,
710   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
711 def int_mips_clti_u_d : GCCBuiltin<"__builtin_msa_clti_u_d">,
712   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
713
714 def int_mips_copy_s_b : GCCBuiltin<"__builtin_msa_copy_s_b">,
715   Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
716 def int_mips_copy_s_h : GCCBuiltin<"__builtin_msa_copy_s_h">,
717   Intrinsic<[llvm_i32_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
718 def int_mips_copy_s_w : GCCBuiltin<"__builtin_msa_copy_s_w">,
719   Intrinsic<[llvm_i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
720
721 def int_mips_copy_u_b : GCCBuiltin<"__builtin_msa_copy_u_b">,
722   Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
723 def int_mips_copy_u_h : GCCBuiltin<"__builtin_msa_copy_u_h">,
724   Intrinsic<[llvm_i32_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
725 def int_mips_copy_u_w : GCCBuiltin<"__builtin_msa_copy_u_w">,
726   Intrinsic<[llvm_i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
727
728 def int_mips_div_s_b : GCCBuiltin<"__builtin_msa_div_s_b">,
729   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
730 def int_mips_div_s_h : GCCBuiltin<"__builtin_msa_div_s_h">,
731   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
732 def int_mips_div_s_w : GCCBuiltin<"__builtin_msa_div_s_w">,
733   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
734 def int_mips_div_s_d : GCCBuiltin<"__builtin_msa_div_s_d">,
735   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
736
737 def int_mips_div_u_b : GCCBuiltin<"__builtin_msa_div_u_b">,
738   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
739 def int_mips_div_u_h : GCCBuiltin<"__builtin_msa_div_u_h">,
740   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
741 def int_mips_div_u_w : GCCBuiltin<"__builtin_msa_div_u_w">,
742   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
743 def int_mips_div_u_d : GCCBuiltin<"__builtin_msa_div_u_d">,
744   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
745
746 def int_mips_dotp_s_b : GCCBuiltin<"__builtin_msa_dotp_s_b">,
747   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
748 def int_mips_dotp_s_h : GCCBuiltin<"__builtin_msa_dotp_s_h">,
749   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
750 def int_mips_dotp_s_w : GCCBuiltin<"__builtin_msa_dotp_s_w">,
751   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
752 def int_mips_dotp_s_d : GCCBuiltin<"__builtin_msa_dotp_s_d">,
753   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
754
755 def int_mips_dotp_u_b : GCCBuiltin<"__builtin_msa_dotp_u_b">,
756   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
757 def int_mips_dotp_u_h : GCCBuiltin<"__builtin_msa_dotp_u_h">,
758   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
759 def int_mips_dotp_u_w : GCCBuiltin<"__builtin_msa_dotp_u_w">,
760   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
761 def int_mips_dotp_u_d : GCCBuiltin<"__builtin_msa_dotp_u_d">,
762   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
763
764 def int_mips_dpadd_s_h : GCCBuiltin<"__builtin_msa_dpadd_s_h">,
765   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v16i8_ty, llvm_v16i8_ty], []>;
766 def int_mips_dpadd_s_w : GCCBuiltin<"__builtin_msa_dpadd_s_w">,
767   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v8i16_ty, llvm_v8i16_ty], []>;
768 def int_mips_dpadd_s_d : GCCBuiltin<"__builtin_msa_dpadd_s_d">,
769   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v4i32_ty, llvm_v4i32_ty], []>;
770
771 def int_mips_dpadd_u_h : GCCBuiltin<"__builtin_msa_dpadd_u_h">,
772   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v16i8_ty, llvm_v16i8_ty], []>;
773 def int_mips_dpadd_u_w : GCCBuiltin<"__builtin_msa_dpadd_u_w">,
774   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v8i16_ty, llvm_v8i16_ty], []>;
775 def int_mips_dpadd_u_d : GCCBuiltin<"__builtin_msa_dpadd_u_d">,
776   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v4i32_ty, llvm_v4i32_ty], []>;
777
778 def int_mips_dpsub_s_h : GCCBuiltin<"__builtin_msa_dpsub_s_h">,
779   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v16i8_ty, llvm_v16i8_ty], []>;
780 def int_mips_dpsub_s_w : GCCBuiltin<"__builtin_msa_dpsub_s_w">,
781   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v8i16_ty, llvm_v8i16_ty], []>;
782 def int_mips_dpsub_s_d : GCCBuiltin<"__builtin_msa_dpsub_s_d">,
783   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v4i32_ty, llvm_v4i32_ty], []>;
784
785 def int_mips_dpsub_u_h : GCCBuiltin<"__builtin_msa_dpsub_u_h">,
786   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v16i8_ty, llvm_v16i8_ty], []>;
787 def int_mips_dpsub_u_w : GCCBuiltin<"__builtin_msa_dpsub_u_w">,
788   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v8i16_ty, llvm_v8i16_ty], []>;
789 def int_mips_dpsub_u_d : GCCBuiltin<"__builtin_msa_dpsub_u_d">,
790   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v4i32_ty, llvm_v4i32_ty], []>;
791
792 def int_mips_fadd_w : GCCBuiltin<"__builtin_msa_fadd_w">,
793   Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
794 def int_mips_fadd_d : GCCBuiltin<"__builtin_msa_fadd_d">,
795   Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
796
797 def int_mips_fceq_w : GCCBuiltin<"__builtin_msa_fceq_w">,
798   Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
799 def int_mips_fceq_d : GCCBuiltin<"__builtin_msa_fceq_d">,
800   Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
801
802 def int_mips_fcle_w : GCCBuiltin<"__builtin_msa_fcle_w">,
803   Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
804 def int_mips_fcle_d : GCCBuiltin<"__builtin_msa_fcle_d">,
805   Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
806
807 def int_mips_fclt_w : GCCBuiltin<"__builtin_msa_fclt_w">,
808   Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
809 def int_mips_fclt_d : GCCBuiltin<"__builtin_msa_fclt_d">,
810   Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
811
812 def int_mips_fclass_w : GCCBuiltin<"__builtin_msa_fclass_w">,
813   Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], []>;
814 def int_mips_fclass_d : GCCBuiltin<"__builtin_msa_fclass_d">,
815   Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty], []>;
816
817 def int_mips_fcge_w : GCCBuiltin<"__builtin_msa_fcge_w">,
818   Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
819 def int_mips_fcge_d : GCCBuiltin<"__builtin_msa_fcge_d">,
820   Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
821
822 def int_mips_fcgt_w : GCCBuiltin<"__builtin_msa_fcgt_w">,
823   Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
824 def int_mips_fcgt_d : GCCBuiltin<"__builtin_msa_fcgt_d">,
825   Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
826
827 def int_mips_fcne_w : GCCBuiltin<"__builtin_msa_fcne_w">,
828   Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
829 def int_mips_fcne_d : GCCBuiltin<"__builtin_msa_fcne_d">,
830   Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
831
832 def int_mips_fcun_w : GCCBuiltin<"__builtin_msa_fcun_w">,
833   Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
834 def int_mips_fcun_d : GCCBuiltin<"__builtin_msa_fcun_d">,
835   Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
836
837 def int_mips_fdiv_w : GCCBuiltin<"__builtin_msa_fdiv_w">,
838   Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
839 def int_mips_fdiv_d : GCCBuiltin<"__builtin_msa_fdiv_d">,
840   Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
841
842 def int_mips_fexdo_h : GCCBuiltin<"__builtin_msa_fexdo_h">,
843   Intrinsic<[llvm_v8f16_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
844 def int_mips_fexdo_w : GCCBuiltin<"__builtin_msa_fexdo_w">,
845   Intrinsic<[llvm_v4f32_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
846
847 def int_mips_fexp2_w : GCCBuiltin<"__builtin_msa_fexp2_w">,
848   Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4i32_ty], []>;
849 def int_mips_fexp2_d : GCCBuiltin<"__builtin_msa_fexp2_d">,
850   Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2i64_ty], []>;
851
852 def int_mips_fexupl_w : GCCBuiltin<"__builtin_msa_fexupl_w">,
853   Intrinsic<[llvm_v4f32_ty], [llvm_v8f16_ty], []>;
854 def int_mips_fexupl_d : GCCBuiltin<"__builtin_msa_fexupl_d">,
855   Intrinsic<[llvm_v2f64_ty], [llvm_v4f32_ty], []>;
856
857 def int_mips_fexupr_w : GCCBuiltin<"__builtin_msa_fexupr_w">,
858   Intrinsic<[llvm_v4f32_ty], [llvm_v8f16_ty], []>;
859 def int_mips_fexupr_d : GCCBuiltin<"__builtin_msa_fexupr_d">,
860   Intrinsic<[llvm_v2f64_ty], [llvm_v4f32_ty], []>;
861
862 def int_mips_ffint_s_w : GCCBuiltin<"__builtin_msa_ffint_s_w">,
863   Intrinsic<[llvm_v4f32_ty], [llvm_v4i32_ty], []>;
864 def int_mips_ffint_s_d : GCCBuiltin<"__builtin_msa_ffint_s_d">,
865   Intrinsic<[llvm_v2f64_ty], [llvm_v2i64_ty], []>;
866
867 def int_mips_ffint_u_w : GCCBuiltin<"__builtin_msa_ffint_u_w">,
868   Intrinsic<[llvm_v4f32_ty], [llvm_v4i32_ty], []>;
869 def int_mips_ffint_u_d : GCCBuiltin<"__builtin_msa_ffint_u_d">,
870   Intrinsic<[llvm_v2f64_ty], [llvm_v2i64_ty], []>;
871
872 def int_mips_ffql_w : GCCBuiltin<"__builtin_msa_ffql_w">,
873   Intrinsic<[llvm_v4f32_ty], [llvm_v8i16_ty], []>;
874 def int_mips_ffql_d : GCCBuiltin<"__builtin_msa_ffql_d">,
875   Intrinsic<[llvm_v2f64_ty], [llvm_v4i32_ty], []>;
876
877 def int_mips_ffqr_w : GCCBuiltin<"__builtin_msa_ffqr_w">,
878   Intrinsic<[llvm_v4f32_ty], [llvm_v8i16_ty], []>;
879 def int_mips_ffqr_d : GCCBuiltin<"__builtin_msa_ffqr_d">,
880   Intrinsic<[llvm_v2f64_ty], [llvm_v4i32_ty], []>;
881
882 def int_mips_fill_b : GCCBuiltin<"__builtin_msa_fill_b">,
883   Intrinsic<[llvm_v16i8_ty], [llvm_i32_ty], []>;
884 def int_mips_fill_h : GCCBuiltin<"__builtin_msa_fill_h">,
885   Intrinsic<[llvm_v8i16_ty], [llvm_i32_ty], []>;
886 def int_mips_fill_w : GCCBuiltin<"__builtin_msa_fill_w">,
887   Intrinsic<[llvm_v4i32_ty], [llvm_i32_ty], []>;
888
889 def int_mips_flog2_w : GCCBuiltin<"__builtin_msa_flog2_w">,
890   Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], []>;
891 def int_mips_flog2_d : GCCBuiltin<"__builtin_msa_flog2_d">,
892   Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], []>;
893
894 def int_mips_fmadd_w : GCCBuiltin<"__builtin_msa_fmadd_w">,
895   Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], []>;
896 def int_mips_fmadd_d : GCCBuiltin<"__builtin_msa_fmadd_d">,
897   Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], []>;
898
899 def int_mips_fmax_w : GCCBuiltin<"__builtin_msa_fmax_w">,
900   Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
901 def int_mips_fmax_d : GCCBuiltin<"__builtin_msa_fmax_d">,
902   Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
903
904 def int_mips_fmax_a_w : GCCBuiltin<"__builtin_msa_fmax_a_w">,
905   Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
906 def int_mips_fmax_a_d : GCCBuiltin<"__builtin_msa_fmax_a_d">,
907   Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
908
909 def int_mips_fmin_w : GCCBuiltin<"__builtin_msa_fmin_w">,
910   Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
911 def int_mips_fmin_d : GCCBuiltin<"__builtin_msa_fmin_d">,
912   Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
913
914 def int_mips_fmin_a_w : GCCBuiltin<"__builtin_msa_fmin_a_w">,
915   Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
916 def int_mips_fmin_a_d : GCCBuiltin<"__builtin_msa_fmin_a_d">,
917   Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
918
919 def int_mips_fmsub_w : GCCBuiltin<"__builtin_msa_fmsub_w">,
920   Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], []>;
921 def int_mips_fmsub_d : GCCBuiltin<"__builtin_msa_fmsub_d">,
922   Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], []>;
923
924 def int_mips_fmul_w : GCCBuiltin<"__builtin_msa_fmul_w">,
925   Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
926 def int_mips_fmul_d : GCCBuiltin<"__builtin_msa_fmul_d">,
927   Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
928
929 def int_mips_frint_w : GCCBuiltin<"__builtin_msa_frint_w">,
930   Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], []>;
931 def int_mips_frint_d : GCCBuiltin<"__builtin_msa_frint_d">,
932   Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], []>;
933
934 def int_mips_frcp_w : GCCBuiltin<"__builtin_msa_frcp_w">,
935   Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], []>;
936 def int_mips_frcp_d : GCCBuiltin<"__builtin_msa_frcp_d">,
937   Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], []>;
938
939 def int_mips_frsqrt_w : GCCBuiltin<"__builtin_msa_frsqrt_w">,
940   Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], []>;
941 def int_mips_frsqrt_d : GCCBuiltin<"__builtin_msa_frsqrt_d">,
942   Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], []>;
943
944 def int_mips_fseq_w : GCCBuiltin<"__builtin_msa_fseq_w">,
945   Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
946 def int_mips_fseq_d : GCCBuiltin<"__builtin_msa_fseq_d">,
947   Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
948
949 def int_mips_fsle_w : GCCBuiltin<"__builtin_msa_fsle_w">,
950   Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
951 def int_mips_fsle_d : GCCBuiltin<"__builtin_msa_fsle_d">,
952   Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
953
954 def int_mips_fslt_w : GCCBuiltin<"__builtin_msa_fslt_w">,
955   Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
956 def int_mips_fslt_d : GCCBuiltin<"__builtin_msa_fslt_d">,
957   Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
958
959 def int_mips_fsge_w : GCCBuiltin<"__builtin_msa_fsge_w">,
960   Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
961 def int_mips_fsge_d : GCCBuiltin<"__builtin_msa_fsge_d">,
962   Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
963
964 def int_mips_fsgt_w : GCCBuiltin<"__builtin_msa_fsgt_w">,
965   Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
966 def int_mips_fsgt_d : GCCBuiltin<"__builtin_msa_fsgt_d">,
967   Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
968
969 def int_mips_fsne_w : GCCBuiltin<"__builtin_msa_fsne_w">,
970   Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
971 def int_mips_fsne_d : GCCBuiltin<"__builtin_msa_fsne_d">,
972   Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
973
974 def int_mips_fsqrt_w : GCCBuiltin<"__builtin_msa_fsqrt_w">,
975   Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], []>;
976 def int_mips_fsqrt_d : GCCBuiltin<"__builtin_msa_fsqrt_d">,
977   Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], []>;
978
979 def int_mips_fsub_w : GCCBuiltin<"__builtin_msa_fsub_w">,
980   Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
981 def int_mips_fsub_d : GCCBuiltin<"__builtin_msa_fsub_d">,
982   Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
983
984 def int_mips_ftint_s_w : GCCBuiltin<"__builtin_msa_ftint_s_w">,
985   Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], []>;
986 def int_mips_ftint_s_d : GCCBuiltin<"__builtin_msa_ftint_s_d">,
987   Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty], []>;
988
989 def int_mips_ftint_u_w : GCCBuiltin<"__builtin_msa_ftint_u_w">,
990   Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], []>;
991 def int_mips_ftint_u_d : GCCBuiltin<"__builtin_msa_ftint_u_d">,
992   Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty], []>;
993
994 def int_mips_ftq_h : GCCBuiltin<"__builtin_msa_ftq_h">,
995   Intrinsic<[llvm_v8i16_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
996 def int_mips_ftq_w : GCCBuiltin<"__builtin_msa_ftq_w">,
997   Intrinsic<[llvm_v4i32_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
998
999 def int_mips_ilvev_b : GCCBuiltin<"__builtin_msa_ilvev_b">,
1000   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1001 def int_mips_ilvev_h : GCCBuiltin<"__builtin_msa_ilvev_h">,
1002   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1003 def int_mips_ilvev_w : GCCBuiltin<"__builtin_msa_ilvev_w">,
1004   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1005 def int_mips_ilvev_d : GCCBuiltin<"__builtin_msa_ilvev_d">,
1006   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1007
1008 def int_mips_ilvl_b : GCCBuiltin<"__builtin_msa_ilvl_b">,
1009   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1010 def int_mips_ilvl_h : GCCBuiltin<"__builtin_msa_ilvl_h">,
1011   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1012 def int_mips_ilvl_w : GCCBuiltin<"__builtin_msa_ilvl_w">,
1013   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1014 def int_mips_ilvl_d : GCCBuiltin<"__builtin_msa_ilvl_d">,
1015   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1016
1017 def int_mips_ilvod_b : GCCBuiltin<"__builtin_msa_ilvod_b">,
1018   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1019 def int_mips_ilvod_h : GCCBuiltin<"__builtin_msa_ilvod_h">,
1020   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1021 def int_mips_ilvod_w : GCCBuiltin<"__builtin_msa_ilvod_w">,
1022   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1023 def int_mips_ilvod_d : GCCBuiltin<"__builtin_msa_ilvod_d">,
1024   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1025
1026 def int_mips_ilvr_b : GCCBuiltin<"__builtin_msa_ilvr_b">,
1027   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1028 def int_mips_ilvr_h : GCCBuiltin<"__builtin_msa_ilvr_h">,
1029   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1030 def int_mips_ilvr_w : GCCBuiltin<"__builtin_msa_ilvr_w">,
1031   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1032 def int_mips_ilvr_d : GCCBuiltin<"__builtin_msa_ilvr_d">,
1033   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1034
1035 def int_mips_insert_b : GCCBuiltin<"__builtin_msa_insert_b">,
1036   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty, llvm_i32_ty], []>;
1037 def int_mips_insert_h : GCCBuiltin<"__builtin_msa_insert_h">,
1038   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty, llvm_i32_ty], []>;
1039 def int_mips_insert_w : GCCBuiltin<"__builtin_msa_insert_w">,
1040   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty, llvm_i32_ty], []>;
1041
1042 def int_mips_insve_b : GCCBuiltin<"__builtin_msa_insve_b">,
1043   Intrinsic<[llvm_v16i8_ty],
1044             [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty],
1045             [IntrNoMem]>;
1046 def int_mips_insve_h : GCCBuiltin<"__builtin_msa_insve_h">,
1047   Intrinsic<[llvm_v8i16_ty],
1048             [llvm_v8i16_ty, llvm_i32_ty, llvm_v8i16_ty],
1049             [IntrNoMem]>;
1050 def int_mips_insve_w : GCCBuiltin<"__builtin_msa_insve_w">,
1051   Intrinsic<[llvm_v4i32_ty],
1052             [llvm_v4i32_ty, llvm_i32_ty, llvm_v4i32_ty],
1053             [IntrNoMem]>;
1054 def int_mips_insve_d : GCCBuiltin<"__builtin_msa_insve_d">,
1055   Intrinsic<[llvm_v2i64_ty],
1056             [llvm_v2i64_ty, llvm_i32_ty, llvm_v2i64_ty],
1057             [IntrNoMem]>;
1058
1059 def int_mips_ldi_b : GCCBuiltin<"__builtin_msa_ldi_b">,
1060   Intrinsic<[llvm_v16i8_ty], [llvm_i32_ty], []>;
1061 def int_mips_ldi_h : GCCBuiltin<"__builtin_msa_ldi_h">,
1062   Intrinsic<[llvm_v8i16_ty], [llvm_i32_ty], []>;
1063 def int_mips_ldi_w : GCCBuiltin<"__builtin_msa_ldi_w">,
1064   Intrinsic<[llvm_v4i32_ty], [llvm_i32_ty], []>;
1065 def int_mips_ldi_d : GCCBuiltin<"__builtin_msa_ldi_d">,
1066   Intrinsic<[llvm_v2i64_ty], [llvm_i32_ty], []>;
1067
1068 def int_mips_madd_q_h : GCCBuiltin<"__builtin_msa_madd_q_h">,
1069   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty], []>;
1070 def int_mips_madd_q_w : GCCBuiltin<"__builtin_msa_madd_q_w">,
1071   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], []>;
1072
1073 def int_mips_maddr_q_h : GCCBuiltin<"__builtin_msa_maddr_q_h">,
1074   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty], []>;
1075 def int_mips_maddr_q_w : GCCBuiltin<"__builtin_msa_maddr_q_w">,
1076   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], []>;
1077
1078 def int_mips_maddv_b : GCCBuiltin<"__builtin_msa_maddv_b">,
1079   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty], []>;
1080 def int_mips_maddv_h : GCCBuiltin<"__builtin_msa_maddv_h">,
1081   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty], []>;
1082 def int_mips_maddv_w : GCCBuiltin<"__builtin_msa_maddv_w">,
1083   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], []>;
1084 def int_mips_maddv_d : GCCBuiltin<"__builtin_msa_maddv_d">,
1085   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], []>;
1086
1087 def int_mips_max_a_b : GCCBuiltin<"__builtin_msa_max_a_b">,
1088   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1089 def int_mips_max_a_h : GCCBuiltin<"__builtin_msa_max_a_h">,
1090   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1091 def int_mips_max_a_w : GCCBuiltin<"__builtin_msa_max_a_w">,
1092   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1093 def int_mips_max_a_d : GCCBuiltin<"__builtin_msa_max_a_d">,
1094   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1095
1096 def int_mips_max_s_b : GCCBuiltin<"__builtin_msa_max_s_b">,
1097   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1098 def int_mips_max_s_h : GCCBuiltin<"__builtin_msa_max_s_h">,
1099   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1100 def int_mips_max_s_w : GCCBuiltin<"__builtin_msa_max_s_w">,
1101   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1102 def int_mips_max_s_d : GCCBuiltin<"__builtin_msa_max_s_d">,
1103   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1104
1105 def int_mips_max_u_b : GCCBuiltin<"__builtin_msa_max_u_b">,
1106   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1107 def int_mips_max_u_h : GCCBuiltin<"__builtin_msa_max_u_h">,
1108   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1109 def int_mips_max_u_w : GCCBuiltin<"__builtin_msa_max_u_w">,
1110   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1111 def int_mips_max_u_d : GCCBuiltin<"__builtin_msa_max_u_d">,
1112   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1113
1114 def int_mips_maxi_s_b : GCCBuiltin<"__builtin_msa_maxi_s_b">,
1115   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
1116 def int_mips_maxi_s_h : GCCBuiltin<"__builtin_msa_maxi_s_h">,
1117   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
1118 def int_mips_maxi_s_w : GCCBuiltin<"__builtin_msa_maxi_s_w">,
1119   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
1120 def int_mips_maxi_s_d : GCCBuiltin<"__builtin_msa_maxi_s_d">,
1121   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
1122
1123 def int_mips_maxi_u_b : GCCBuiltin<"__builtin_msa_maxi_u_b">,
1124   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
1125 def int_mips_maxi_u_h : GCCBuiltin<"__builtin_msa_maxi_u_h">,
1126   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
1127 def int_mips_maxi_u_w : GCCBuiltin<"__builtin_msa_maxi_u_w">,
1128   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
1129 def int_mips_maxi_u_d : GCCBuiltin<"__builtin_msa_maxi_u_d">,
1130   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
1131
1132 def int_mips_min_a_b : GCCBuiltin<"__builtin_msa_min_a_b">,
1133   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1134 def int_mips_min_a_h : GCCBuiltin<"__builtin_msa_min_a_h">,
1135   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1136 def int_mips_min_a_w : GCCBuiltin<"__builtin_msa_min_a_w">,
1137   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1138 def int_mips_min_a_d : GCCBuiltin<"__builtin_msa_min_a_d">,
1139   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1140
1141 def int_mips_min_s_b : GCCBuiltin<"__builtin_msa_min_s_b">,
1142   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1143 def int_mips_min_s_h : GCCBuiltin<"__builtin_msa_min_s_h">,
1144   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1145 def int_mips_min_s_w : GCCBuiltin<"__builtin_msa_min_s_w">,
1146   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1147 def int_mips_min_s_d : GCCBuiltin<"__builtin_msa_min_s_d">,
1148   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1149
1150 def int_mips_min_u_b : GCCBuiltin<"__builtin_msa_min_u_b">,
1151   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1152 def int_mips_min_u_h : GCCBuiltin<"__builtin_msa_min_u_h">,
1153   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1154 def int_mips_min_u_w : GCCBuiltin<"__builtin_msa_min_u_w">,
1155   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1156 def int_mips_min_u_d : GCCBuiltin<"__builtin_msa_min_u_d">,
1157   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1158
1159 def int_mips_mini_s_b : GCCBuiltin<"__builtin_msa_mini_s_b">,
1160   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
1161 def int_mips_mini_s_h : GCCBuiltin<"__builtin_msa_mini_s_h">,
1162   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
1163 def int_mips_mini_s_w : GCCBuiltin<"__builtin_msa_mini_s_w">,
1164   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
1165 def int_mips_mini_s_d : GCCBuiltin<"__builtin_msa_mini_s_d">,
1166   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
1167
1168 def int_mips_mini_u_b : GCCBuiltin<"__builtin_msa_mini_u_b">,
1169   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
1170 def int_mips_mini_u_h : GCCBuiltin<"__builtin_msa_mini_u_h">,
1171   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
1172 def int_mips_mini_u_w : GCCBuiltin<"__builtin_msa_mini_u_w">,
1173   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
1174 def int_mips_mini_u_d : GCCBuiltin<"__builtin_msa_mini_u_d">,
1175   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
1176
1177 def int_mips_mod_s_b : GCCBuiltin<"__builtin_msa_mod_s_b">,
1178   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1179 def int_mips_mod_s_h : GCCBuiltin<"__builtin_msa_mod_s_h">,
1180   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1181 def int_mips_mod_s_w : GCCBuiltin<"__builtin_msa_mod_s_w">,
1182   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1183 def int_mips_mod_s_d : GCCBuiltin<"__builtin_msa_mod_s_d">,
1184   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1185
1186 def int_mips_mod_u_b : GCCBuiltin<"__builtin_msa_mod_u_b">,
1187   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1188 def int_mips_mod_u_h : GCCBuiltin<"__builtin_msa_mod_u_h">,
1189   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1190 def int_mips_mod_u_w : GCCBuiltin<"__builtin_msa_mod_u_w">,
1191   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1192 def int_mips_mod_u_d : GCCBuiltin<"__builtin_msa_mod_u_d">,
1193   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1194
1195 def int_mips_msub_q_h : GCCBuiltin<"__builtin_msa_msub_q_h">,
1196   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty], []>;
1197 def int_mips_msub_q_w : GCCBuiltin<"__builtin_msa_msub_q_w">,
1198   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], []>;
1199
1200 def int_mips_msubr_q_h : GCCBuiltin<"__builtin_msa_msubr_q_h">,
1201   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty], []>;
1202 def int_mips_msubr_q_w : GCCBuiltin<"__builtin_msa_msubr_q_w">,
1203   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], []>;
1204
1205 def int_mips_msubv_b : GCCBuiltin<"__builtin_msa_msubv_b">,
1206   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty], []>;
1207 def int_mips_msubv_h : GCCBuiltin<"__builtin_msa_msubv_h">,
1208   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty], []>;
1209 def int_mips_msubv_w : GCCBuiltin<"__builtin_msa_msubv_w">,
1210   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], []>;
1211 def int_mips_msubv_d : GCCBuiltin<"__builtin_msa_msubv_d">,
1212   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], []>;
1213
1214 def int_mips_mul_q_h : GCCBuiltin<"__builtin_msa_mul_q_h">,
1215   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1216 def int_mips_mul_q_w : GCCBuiltin<"__builtin_msa_mul_q_w">,
1217   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1218
1219 def int_mips_mulr_q_h : GCCBuiltin<"__builtin_msa_mulr_q_h">,
1220   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1221 def int_mips_mulr_q_w : GCCBuiltin<"__builtin_msa_mulr_q_w">,
1222   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1223
1224 def int_mips_mulv_b : GCCBuiltin<"__builtin_msa_mulv_b">,
1225   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1226 def int_mips_mulv_h : GCCBuiltin<"__builtin_msa_mulv_h">,
1227   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1228 def int_mips_mulv_w : GCCBuiltin<"__builtin_msa_mulv_w">,
1229   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1230 def int_mips_mulv_d : GCCBuiltin<"__builtin_msa_mulv_d">,
1231   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1232
1233 def int_mips_nloc_b : GCCBuiltin<"__builtin_msa_nloc_b">,
1234   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty], []>;
1235 def int_mips_nloc_h : GCCBuiltin<"__builtin_msa_nloc_h">,
1236   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty], []>;
1237 def int_mips_nloc_w : GCCBuiltin<"__builtin_msa_nloc_w">,
1238   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty], []>;
1239 def int_mips_nloc_d : GCCBuiltin<"__builtin_msa_nloc_d">,
1240   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty], []>;
1241
1242 def int_mips_nlzc_b : GCCBuiltin<"__builtin_msa_nlzc_b">,
1243   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty], []>;
1244 def int_mips_nlzc_h : GCCBuiltin<"__builtin_msa_nlzc_h">,
1245   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty], []>;
1246 def int_mips_nlzc_w : GCCBuiltin<"__builtin_msa_nlzc_w">,
1247   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty], []>;
1248 def int_mips_nlzc_d : GCCBuiltin<"__builtin_msa_nlzc_d">,
1249   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty], []>;
1250
1251 def int_mips_nor_v : GCCBuiltin<"__builtin_msa_nor_v">,
1252   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1253
1254 def int_mips_nori_b : GCCBuiltin<"__builtin_msa_nori_b">,
1255   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
1256
1257 def int_mips_or_v : GCCBuiltin<"__builtin_msa_or_v">,
1258   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1259
1260 def int_mips_ori_b : GCCBuiltin<"__builtin_msa_ori_b">,
1261   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
1262
1263 def int_mips_pckev_b : GCCBuiltin<"__builtin_msa_pckev_b">,
1264   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1265 def int_mips_pckev_h : GCCBuiltin<"__builtin_msa_pckev_h">,
1266   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1267 def int_mips_pckev_w : GCCBuiltin<"__builtin_msa_pckev_w">,
1268   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1269 def int_mips_pckev_d : GCCBuiltin<"__builtin_msa_pckev_d">,
1270   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1271
1272 def int_mips_pckod_b : GCCBuiltin<"__builtin_msa_pckod_b">,
1273   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1274 def int_mips_pckod_h : GCCBuiltin<"__builtin_msa_pckod_h">,
1275   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1276 def int_mips_pckod_w : GCCBuiltin<"__builtin_msa_pckod_w">,
1277   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1278 def int_mips_pckod_d : GCCBuiltin<"__builtin_msa_pckod_d">,
1279   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1280
1281 def int_mips_pcnt_b : GCCBuiltin<"__builtin_msa_pcnt_b">,
1282   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty], []>;
1283 def int_mips_pcnt_h : GCCBuiltin<"__builtin_msa_pcnt_h">,
1284   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty], []>;
1285 def int_mips_pcnt_w : GCCBuiltin<"__builtin_msa_pcnt_w">,
1286   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty], []>;
1287 def int_mips_pcnt_d : GCCBuiltin<"__builtin_msa_pcnt_d">,
1288   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty], []>;
1289
1290 def int_mips_sat_s_b : GCCBuiltin<"__builtin_msa_sat_s_b">,
1291   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
1292 def int_mips_sat_s_h : GCCBuiltin<"__builtin_msa_sat_s_h">,
1293   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
1294 def int_mips_sat_s_w : GCCBuiltin<"__builtin_msa_sat_s_w">,
1295   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
1296 def int_mips_sat_s_d : GCCBuiltin<"__builtin_msa_sat_s_d">,
1297   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
1298
1299 def int_mips_sat_u_b : GCCBuiltin<"__builtin_msa_sat_u_b">,
1300   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
1301 def int_mips_sat_u_h : GCCBuiltin<"__builtin_msa_sat_u_h">,
1302   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
1303 def int_mips_sat_u_w : GCCBuiltin<"__builtin_msa_sat_u_w">,
1304   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
1305 def int_mips_sat_u_d : GCCBuiltin<"__builtin_msa_sat_u_d">,
1306   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
1307
1308 def int_mips_shf_b : GCCBuiltin<"__builtin_msa_shf_b">,
1309   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
1310 def int_mips_shf_h : GCCBuiltin<"__builtin_msa_shf_h">,
1311   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
1312 def int_mips_shf_w : GCCBuiltin<"__builtin_msa_shf_w">,
1313   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
1314
1315 def int_mips_sld_b : GCCBuiltin<"__builtin_msa_sld_b">,
1316   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1317 def int_mips_sld_h : GCCBuiltin<"__builtin_msa_sld_h">,
1318   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1319 def int_mips_sld_w : GCCBuiltin<"__builtin_msa_sld_w">,
1320   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1321 def int_mips_sld_d : GCCBuiltin<"__builtin_msa_sld_d">,
1322   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1323
1324 def int_mips_sldi_b : GCCBuiltin<"__builtin_msa_sldi_b">,
1325   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
1326 def int_mips_sldi_h : GCCBuiltin<"__builtin_msa_sldi_h">,
1327   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
1328 def int_mips_sldi_w : GCCBuiltin<"__builtin_msa_sldi_w">,
1329   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
1330 def int_mips_sldi_d : GCCBuiltin<"__builtin_msa_sldi_d">,
1331   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
1332
1333 def int_mips_sll_b : GCCBuiltin<"__builtin_msa_sll_b">,
1334   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1335 def int_mips_sll_h : GCCBuiltin<"__builtin_msa_sll_h">,
1336   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1337 def int_mips_sll_w : GCCBuiltin<"__builtin_msa_sll_w">,
1338   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1339 def int_mips_sll_d : GCCBuiltin<"__builtin_msa_sll_d">,
1340   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1341
1342 def int_mips_slli_b : GCCBuiltin<"__builtin_msa_slli_b">,
1343   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
1344 def int_mips_slli_h : GCCBuiltin<"__builtin_msa_slli_h">,
1345   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
1346 def int_mips_slli_w : GCCBuiltin<"__builtin_msa_slli_w">,
1347   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
1348 def int_mips_slli_d : GCCBuiltin<"__builtin_msa_slli_d">,
1349   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
1350
1351 def int_mips_splat_b : GCCBuiltin<"__builtin_msa_splat_b">,
1352   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
1353 def int_mips_splat_h : GCCBuiltin<"__builtin_msa_splat_h">,
1354   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
1355 def int_mips_splat_w : GCCBuiltin<"__builtin_msa_splat_w">,
1356   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
1357 def int_mips_splat_d : GCCBuiltin<"__builtin_msa_splat_d">,
1358   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
1359
1360 def int_mips_splati_b : GCCBuiltin<"__builtin_msa_splati_b">,
1361   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
1362 def int_mips_splati_h : GCCBuiltin<"__builtin_msa_splati_h">,
1363   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
1364 def int_mips_splati_w : GCCBuiltin<"__builtin_msa_splati_w">,
1365   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
1366 def int_mips_splati_d : GCCBuiltin<"__builtin_msa_splati_d">,
1367   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
1368
1369 def int_mips_sra_b : GCCBuiltin<"__builtin_msa_sra_b">,
1370   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1371 def int_mips_sra_h : GCCBuiltin<"__builtin_msa_sra_h">,
1372   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1373 def int_mips_sra_w : GCCBuiltin<"__builtin_msa_sra_w">,
1374   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1375 def int_mips_sra_d : GCCBuiltin<"__builtin_msa_sra_d">,
1376   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1377
1378 def int_mips_srai_b : GCCBuiltin<"__builtin_msa_srai_b">,
1379   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
1380 def int_mips_srai_h : GCCBuiltin<"__builtin_msa_srai_h">,
1381   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
1382 def int_mips_srai_w : GCCBuiltin<"__builtin_msa_srai_w">,
1383   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
1384 def int_mips_srai_d : GCCBuiltin<"__builtin_msa_srai_d">,
1385   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
1386
1387 def int_mips_srl_b : GCCBuiltin<"__builtin_msa_srl_b">,
1388   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1389 def int_mips_srl_h : GCCBuiltin<"__builtin_msa_srl_h">,
1390   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1391 def int_mips_srl_w : GCCBuiltin<"__builtin_msa_srl_w">,
1392   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1393 def int_mips_srl_d : GCCBuiltin<"__builtin_msa_srl_d">,
1394   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1395
1396 def int_mips_srli_b : GCCBuiltin<"__builtin_msa_srli_b">,
1397   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
1398 def int_mips_srli_h : GCCBuiltin<"__builtin_msa_srli_h">,
1399   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
1400 def int_mips_srli_w : GCCBuiltin<"__builtin_msa_srli_w">,
1401   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
1402 def int_mips_srli_d : GCCBuiltin<"__builtin_msa_srli_d">,
1403   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
1404
1405 def int_mips_subs_s_b : GCCBuiltin<"__builtin_msa_subs_s_b">,
1406   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
1407 def int_mips_subs_s_h : GCCBuiltin<"__builtin_msa_subs_s_h">,
1408   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
1409 def int_mips_subs_s_w : GCCBuiltin<"__builtin_msa_subs_s_w">,
1410   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
1411 def int_mips_subs_s_d : GCCBuiltin<"__builtin_msa_subs_s_d">,
1412   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
1413
1414 def int_mips_subs_u_b : GCCBuiltin<"__builtin_msa_subs_u_b">,
1415   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
1416 def int_mips_subs_u_h : GCCBuiltin<"__builtin_msa_subs_u_h">,
1417   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
1418 def int_mips_subs_u_w : GCCBuiltin<"__builtin_msa_subs_u_w">,
1419   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
1420 def int_mips_subs_u_d : GCCBuiltin<"__builtin_msa_subs_u_d">,
1421   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
1422
1423 def int_mips_subsus_u_b : GCCBuiltin<"__builtin_msa_subsus_u_b">,
1424   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
1425 def int_mips_subsus_u_h : GCCBuiltin<"__builtin_msa_subsus_u_h">,
1426   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
1427 def int_mips_subsus_u_w : GCCBuiltin<"__builtin_msa_subsus_u_w">,
1428   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
1429 def int_mips_subsus_u_d : GCCBuiltin<"__builtin_msa_subsus_u_d">,
1430   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
1431
1432 def int_mips_subsuu_s_b : GCCBuiltin<"__builtin_msa_subsuu_s_b">,
1433   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
1434 def int_mips_subsuu_s_h : GCCBuiltin<"__builtin_msa_subsuu_s_h">,
1435   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
1436 def int_mips_subsuu_s_w : GCCBuiltin<"__builtin_msa_subsuu_s_w">,
1437   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
1438 def int_mips_subsuu_s_d : GCCBuiltin<"__builtin_msa_subsuu_s_d">,
1439   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
1440
1441 def int_mips_subv_b : GCCBuiltin<"__builtin_msa_subv_b">,
1442   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
1443 def int_mips_subv_h : GCCBuiltin<"__builtin_msa_subv_h">,
1444   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
1445 def int_mips_subv_w : GCCBuiltin<"__builtin_msa_subv_w">,
1446   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
1447 def int_mips_subv_d : GCCBuiltin<"__builtin_msa_subv_d">,
1448   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
1449
1450 def int_mips_subvi_b : GCCBuiltin<"__builtin_msa_subvi_b">,
1451   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [Commutative]>;
1452 def int_mips_subvi_h : GCCBuiltin<"__builtin_msa_subvi_h">,
1453   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [Commutative]>;
1454 def int_mips_subvi_w : GCCBuiltin<"__builtin_msa_subvi_w">,
1455   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [Commutative]>;
1456 def int_mips_subvi_d : GCCBuiltin<"__builtin_msa_subvi_d">,
1457   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [Commutative]>;
1458
1459 def int_mips_vshf_b : GCCBuiltin<"__builtin_msa_vshf_b">,
1460   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
1461 def int_mips_vshf_h : GCCBuiltin<"__builtin_msa_vshf_h">,
1462   Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
1463 def int_mips_vshf_w : GCCBuiltin<"__builtin_msa_vshf_w">,
1464   Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
1465 def int_mips_vshf_d : GCCBuiltin<"__builtin_msa_vshf_d">,
1466   Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
1467
1468 def int_mips_xor_v : GCCBuiltin<"__builtin_msa_xor_v">,
1469   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1470
1471 def int_mips_xori_b : GCCBuiltin<"__builtin_msa_xori_b">,
1472   Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
1473 }