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